- Timestamp:
- 2007-04-07T20:06:52Z (18 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7e58979
- Parents:
- 6adbe3c2
- Location:
- uspace
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/libc/generic/thread.c
r6adbe3c2 r201abde 125 125 * @param arg Argument to be passed to thread. 126 126 * @param name Symbolic name of the thread. 127 * 128 * @return TID of the new thread on success or -1 on failure. 129 */ 130 int thread_create(void (* function)(void *), void *arg, char *name) 127 * @param tid Thread ID of the newly created thread. 128 * 129 * @return Zero on success or a code from @ref errno.h on failure. 130 */ 131 int thread_create(void (* function)(void *), void *arg, char *name, thread_id_t *tid) 131 132 { 132 133 char *stack; … … 149 150 uarg->uspace_uarg = uarg; 150 151 151 return __SYSCALL 2(SYS_THREAD_CREATE, (sysarg_t) uarg, (sysarg_t) name);152 return __SYSCALL3(SYS_THREAD_CREATE, (sysarg_t) uarg, (sysarg_t) name, (sysarg_t) tid); 152 153 } 153 154 … … 167 168 * @param thread TID. 168 169 */ 169 void thread_detach( int thread)170 void thread_detach(thread_id_t thread) 170 171 { 171 172 } … … 179 180 * @return Thread exit status. 180 181 */ 181 int thread_join( int thread)182 int thread_join(thread_id_t thread) 182 183 { 183 184 } … … 187 188 * @return Current thread ID. 188 189 */ 189 int thread_get_id(void) 190 { 191 return __SYSCALL0(SYS_THREAD_GET_ID); 190 thread_id_t thread_get_id(void) 191 { 192 thread_id_t thread_id; 193 194 (void) __SYSCALL1(SYS_THREAD_GET_ID, (sysarg_t) &thread_id); 195 196 return thread_id; 192 197 } 193 198 -
uspace/libc/include/thread.h
r6adbe3c2 r201abde 40 40 #include <types.h> 41 41 42 typedef uint64_t thread_id_t; 43 42 44 extern void __thread_entry(void); 43 45 extern void __thread_main(uspace_arg_t *uarg); 44 46 45 extern int thread_create(void (* function)(void * arg), void *arg, char *name);47 extern int thread_create(void (* function)(void *), void *arg, char *name, thread_id_t *tid); 46 48 extern void thread_exit(int status); 47 extern void thread_detach( int thread);48 extern int thread_join( int thread);49 extern int thread_get_id(void);49 extern void thread_detach(thread_id_t thread); 50 extern int thread_join(thread_id_t thread); 51 extern thread_id_t thread_get_id(void); 50 52 extern tcb_t * __make_tls(void); 51 53 extern tcb_t * __alloc_tls(void **data, size_t size); -
uspace/tester/thread/thread1.c
r6adbe3c2 r201abde 46 46 while (atomic_get(&finish)) { 47 47 if (!sh_quiet) 48 printf("% d", thread_get_id());48 printf("%llu ", thread_get_id()); 49 49 usleep(100000); 50 50 } … … 61 61 62 62 for (i = 0; i < THREADS; i++) { 63 int t; 64 if ((t = thread_create(threadtest, NULL, "threadtest")) < 0) { 63 if (thread_create(threadtest, NULL, "threadtest", NULL) < 0) { 65 64 if (!quiet) 66 65 printf("Could not create thread %d\n", i);
Note:
See TracChangeset
for help on using the changeset viewer.