Subversion Repositories HelenOS

Rev

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

Rev 762 Rev 777
Line 49... Line 49...
49
#include <arch/interrupt.h>
49
#include <arch/interrupt.h>
50
#include <smp/ipi.h>
50
#include <smp/ipi.h>
51
#include <arch/faddr.h>
51
#include <arch/faddr.h>
52
#include <arch/atomic.h>
52
#include <arch/atomic.h>
53
#include <memstr.h>
53
#include <memstr.h>
-
 
54
#include <print.h>
54
 
55
 
55
char *thread_states[] = {"Invalid", "Running", "Sleeping", "Ready", "Entering", "Exiting"}; /**< Thread states */
56
char *thread_states[] = {"Invalid", "Running", "Sleeping", "Ready", "Entering", "Exiting"}; /**< Thread states */
56
 
57
 
57
SPINLOCK_INITIALIZE(threads_lock);  /**< Lock protecting threads_head list. For locking rules, see declaration thereof. */
58
SPINLOCK_INITIALIZE(threads_lock);  /**< Lock protecting threads_head list. For locking rules, see declaration thereof. */
58
LIST_INITIALIZE(threads_head);      /**< List of all threads. */
59
LIST_INITIALIZE(threads_head);      /**< List of all threads. */
Line 316... Line 317...
316
    THREAD->call_me = call_me;
317
    THREAD->call_me = call_me;
317
    THREAD->call_me_with = call_me_with;
318
    THREAD->call_me_with = call_me_with;
318
    spinlock_unlock(&THREAD->lock);
319
    spinlock_unlock(&THREAD->lock);
319
    interrupts_restore(ipl);
320
    interrupts_restore(ipl);
320
}
321
}
-
 
322
 
-
 
323
/** Print list of threads debug info */
-
 
324
void thread_print_list(void)
-
 
325
{
-
 
326
    link_t *cur;
-
 
327
    thread_t *t;
-
 
328
    ipl_t ipl;
-
 
329
   
-
 
330
    /* Messing with thread structures, avoid deadlock */
-
 
331
    ipl = interrupts_disable();
-
 
332
    spinlock_lock(&threads_lock);
-
 
333
 
-
 
334
    for (cur=threads_head.next; cur!=&threads_head; cur=cur->next) {
-
 
335
        t = list_get_instance(cur, thread_t, threads_link);
-
 
336
        printf("Thr: %d(%s) ", t->tid, thread_states[t->state]);
-
 
337
        if (t->cpu)
-
 
338
            printf("cpu%d ", t->cpu->id);
-
 
339
       
-
 
340
        printf("\n");
-
 
341
    }
-
 
342
 
-
 
343
    spinlock_unlock(&threads_lock);
-
 
344
    interrupts_enable();
-
 
345
}