Subversion Repositories HelenOS-historic

Rev

Rev 1060 | Rev 1066 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1060 Rev 1062
Line 246... Line 246...
246
 *
246
 *
247
 * @param func  Thread's implementing function.
247
 * @param func  Thread's implementing function.
248
 * @param arg   Thread's implementing function argument.
248
 * @param arg   Thread's implementing function argument.
249
 * @param task  Task to which the thread belongs.
249
 * @param task  Task to which the thread belongs.
250
 * @param flags Thread flags.
250
 * @param flags Thread flags.
-
 
251
 * @param name  Symbolic name.
251
 *
252
 *
252
 * @return New thread's structure on success, NULL on failure.
253
 * @return New thread's structure on success, NULL on failure.
253
 *
254
 *
254
 */
255
 */
255
thread_t *thread_create(void (* func)(void *), void *arg, task_t *task, int flags)
256
thread_t *thread_create(void (* func)(void *), void *arg, task_t *task, int flags, char *name)
256
{
257
{
257
    thread_t *t;
258
    thread_t *t;
258
    ipl_t ipl;
259
    ipl_t ipl;
259
   
260
   
260
    t = (thread_t *) slab_alloc(thread_slab, 0);
261
    t = (thread_t *) slab_alloc(thread_slab, 0);
Line 277... Line 278...
277
   
278
   
278
    ipl = interrupts_disable();
279
    ipl = interrupts_disable();
279
    t->saved_context.ipl = interrupts_read();
280
    t->saved_context.ipl = interrupts_read();
280
    interrupts_restore(ipl);
281
    interrupts_restore(ipl);
281
   
282
   
-
 
283
    t->name = name;
282
    t->thread_code = func;
284
    t->thread_code = func;
283
    t->thread_arg = arg;
285
    t->thread_arg = arg;
284
    t->ticks = -1;
286
    t->ticks = -1;
285
    t->priority = -1;       /* start in rq[0] */
287
    t->priority = -1;       /* start in rq[0] */
286
    t->cpu = NULL;
288
    t->cpu = NULL;
Line 407... Line 409...
407
    ipl = interrupts_disable();
409
    ipl = interrupts_disable();
408
    spinlock_lock(&threads_lock);
410
    spinlock_lock(&threads_lock);
409
 
411
 
410
    for (cur=threads_head.next; cur!=&threads_head; cur=cur->next) {
412
    for (cur=threads_head.next; cur!=&threads_head; cur=cur->next) {
411
        t = list_get_instance(cur, thread_t, threads_link);
413
        t = list_get_instance(cur, thread_t, threads_link);
412
        printf("Thr: %d(%s) ", t->tid, thread_states[t->state]);
414
        printf("%s: address=%P, tid=%d, state=%s, task=%P, code=%P, stack=%P, cpu=",
-
 
415
            t->name, t, t->tid, thread_states[t->state], t->task, t->thread_code, t->kstack);
413
        if (t->cpu)
416
        if (t->cpu)
414
            printf("cpu%d ", t->cpu->id);
417
            printf("cpu%d ", t->cpu->id);
-
 
418
        else
-
 
419
            printf("none");
415
        printf("\n");
420
        printf("\n");
416
    }
421
    }
417
 
422
 
418
    spinlock_unlock(&threads_lock);
423
    spinlock_unlock(&threads_lock);
419
    interrupts_restore(ipl);
424
    interrupts_restore(ipl);