Rev 2131 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2131 | Rev 2307 | ||
---|---|---|---|
Line 122... | Line 122... | ||
122 | * stack and userspace argument structure for it. |
122 | * stack and userspace argument structure for it. |
123 | * |
123 | * |
124 | * @param function Function implementing the thread. |
124 | * @param function Function implementing the thread. |
125 | * @param arg Argument to be passed to thread. |
125 | * @param arg Argument to be passed to thread. |
126 | * @param name Symbolic name of the thread. |
126 | * @param name Symbolic name of the thread. |
- | 127 | * @param tid Thread ID of the newly created thread. |
|
127 | * |
128 | * |
128 | * @return TID of the new thread on success or -1 on failure. |
129 | * @return Zero on success or a code from @ref errno.h on failure. |
129 | */ |
130 | */ |
130 | int thread_create(void (* function)(void *), void *arg, char *name) |
131 | int thread_create(void (* function)(void *), void *arg, char *name, thread_id_t *tid) |
131 | { |
132 | { |
132 | char *stack; |
133 | char *stack; |
133 | uspace_arg_t *uarg; |
134 | uspace_arg_t *uarg; |
134 | 135 | ||
135 | stack = (char *) malloc(getpagesize() * THREAD_INITIAL_STACK_PAGES_NO); |
136 | stack = (char *) malloc(getpagesize() * THREAD_INITIAL_STACK_PAGES_NO); |
Line 146... | Line 147... | ||
146 | uarg->uspace_stack = (void *) stack; |
147 | uarg->uspace_stack = (void *) stack; |
147 | uarg->uspace_thread_function = function; |
148 | uarg->uspace_thread_function = function; |
148 | uarg->uspace_thread_arg = arg; |
149 | uarg->uspace_thread_arg = arg; |
149 | uarg->uspace_uarg = uarg; |
150 | uarg->uspace_uarg = uarg; |
150 | 151 | ||
151 | return __SYSCALL2(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 | ||
154 | /** Terminate current thread. |
155 | /** Terminate current thread. |
155 | * |
156 | * |
156 | * @param status Exit status. Currently not used. |
157 | * @param status Exit status. Currently not used. |
Line 158... | Line 159... | ||
158 | void thread_exit(int status) |
159 | void thread_exit(int status) |
159 | { |
160 | { |
160 | __SYSCALL1(SYS_THREAD_EXIT, (sysarg_t) status); |
161 | __SYSCALL1(SYS_THREAD_EXIT, (sysarg_t) status); |
161 | } |
162 | } |
162 | 163 | ||
- | 164 | /** Detach thread. |
|
- | 165 | * |
|
- | 166 | * Currently not implemented. |
|
- | 167 | * |
|
- | 168 | * @param thread TID. |
|
- | 169 | */ |
|
- | 170 | void thread_detach(thread_id_t thread) |
|
- | 171 | { |
|
- | 172 | } |
|
- | 173 | ||
- | 174 | /** Join thread. |
|
- | 175 | * |
|
- | 176 | * Currently not implemented. |
|
- | 177 | * |
|
- | 178 | * @param thread TID. |
|
- | 179 | * |
|
- | 180 | * @return Thread exit status. |
|
- | 181 | */ |
|
- | 182 | int thread_join(thread_id_t thread) |
|
- | 183 | { |
|
- | 184 | } |
|
- | 185 | ||
- | 186 | /** Get current thread ID. |
|
- | 187 | * |
|
- | 188 | * @return Current thread ID. |
|
- | 189 | */ |
|
- | 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; |
|
- | 197 | } |
|
- | 198 | ||
163 | /** @} |
199 | /** @} |
164 | */ |
200 | */ |