Changeset e5a1f82f in mainline for libc/generic
- Timestamp:
- 2006-03-17T18:09:15Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 81e55099
- Parents:
- 11a4fbf
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libc/generic/thread.c
r11a4fbf re5a1f82f 29 29 #include <thread.h> 30 30 #include <libc.h> 31 #include <stdlib.h> 31 32 #include <arch/faddr.h> 33 #include <kernel/proc/uarg.h> 32 34 33 typedef void (* voidfunc_t)(void); 35 void thread_main(uspace_arg_t *uarg) 36 { 37 uarg->uspace_thread_function(uarg->uspace_thread_arg); 38 free(uarg->uspace_stack); 39 free(uarg); 40 thread_exit(0); 41 } 34 42 35 int thread_create(void (* function)(void *), void *arg, void *stack,char *name)43 int thread_create(void (* function)(void *), void *arg, char *name) 36 44 { 37 return __SYSCALL4(SYS_THREAD_CREATE, (sysarg_t) FADDR((voidfunc_t) function), (sysarg_t) arg, (sysarg_t) stack, (sysarg_t) name); 45 char *stack; 46 uspace_arg_t *uarg; 47 48 stack = (char *) malloc(getpagesize()); 49 if (!stack) 50 return -1; 51 52 uarg = (uspace_arg_t *) malloc(sizeof(uspace_arg_t)); 53 if (!uarg) { 54 free(stack); 55 return -1; 56 } 57 uarg->uspace_entry = (void *) FADDR(__thread_entry); 58 uarg->uspace_stack = (void *) stack; 59 uarg->uspace_thread_function = (void *) FADDR(function); 60 uarg->uspace_thread_arg = arg; 61 uarg->uspace_uarg = uarg; 62 63 return __SYSCALL2(SYS_THREAD_CREATE, (sysarg_t) uarg, (sysarg_t) name); 38 64 } 39 65 … … 42 68 __SYSCALL1(SYS_THREAD_EXIT, (sysarg_t) status); 43 69 } 44
Note:
See TracChangeset
for help on using the changeset viewer.