Rev 2188 | Rev 2436 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2188 | Rev 2216 | ||
---|---|---|---|
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 164... | Line 165... | ||
164 | * |
165 | * |
165 | * Currently not implemented. |
166 | * Currently not implemented. |
166 | * |
167 | * |
167 | * @param thread TID. |
168 | * @param thread TID. |
168 | */ |
169 | */ |
169 | void thread_detach(int thread) |
170 | void thread_detach(thread_id_t thread) |
170 | { |
171 | { |
171 | } |
172 | } |
172 | 173 | ||
173 | /** Join thread. |
174 | /** Join thread. |
174 | * |
175 | * |
Line 176... | Line 177... | ||
176 | * |
177 | * |
177 | * @param thread TID. |
178 | * @param thread TID. |
178 | * |
179 | * |
179 | * @return Thread exit status. |
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 | } |
184 | 185 | ||
185 | /** Get current thread ID. |
186 | /** Get current thread ID. |
186 | * |
187 | * |
187 | * @return Current thread ID. |
188 | * @return Current thread ID. |
188 | */ |
189 | */ |
189 | int thread_get_id(void) |
190 | thread_id_t thread_get_id(void) |
190 | { |
191 | { |
- | 192 | thread_id_t thread_id; |
|
- | 193 | ||
191 | return __SYSCALL0(SYS_THREAD_GET_ID); |
194 | (void) __SYSCALL1(SYS_THREAD_GET_ID, (sysarg_t) &thread_id); |
- | 195 | ||
- | 196 | return thread_id; |
|
192 | } |
197 | } |
193 | 198 | ||
194 | /** @} |
199 | /** @} |
195 | */ |
200 | */ |