Changes in kernel/test/mm/slab1.c [0f4f1b2:b169619] in mainline


Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/test/mm/slab1.c

    r0f4f1b2 rb169619  
    121121static void *thr_data[THREADS][THR_MEM_COUNT];
    122122static slab_cache_t *thr_cache;
     123static semaphore_t thr_sem;
    123124
    124125static void slabtest(void *data)
     
    141142
    142143        TPRINTF("Thread #%" PRIu64 " finished\n", THREAD->tid);
     144
     145        semaphore_up(&thr_sem);
    143146}
    144147
    145148static void testthreads(void)
    146149{
     150        thread_t *t;
     151        int i;
     152
    147153        thr_cache = slab_cache_create("thread_cache", THR_MEM_SIZE, 0, NULL, NULL,
    148154            SLAB_CACHE_NOMAGAZINE);
    149155
    150         thread_t *threads[THREADS] = { };
    151 
    152         for (int i = 0; i < THREADS; i++) {
    153                 threads[i] = thread_create(slabtest, (void *) (sysarg_t) i,
    154                     TASK, THREAD_FLAG_NONE, "slabtest");
    155                 if (threads[i]) {
    156                         thread_start(threads[i]);
    157                 } else {
     156        semaphore_initialize(&thr_sem, 0);
     157        for (i = 0; i < THREADS; i++) {
     158                if (!(t = thread_create(slabtest, (void *) (sysarg_t) i, TASK, THREAD_FLAG_NONE, "slabtest"))) {
    158159                        TPRINTF("Could not create thread %d\n", i);
    159                 }
     160                } else
     161                        thread_ready(t);
    160162        }
    161163
    162         for (int i = 0; i < THREADS; i++) {
    163                 if (threads[i] != NULL)
    164                         thread_join(threads[i]);
    165         }
     164        for (i = 0; i < THREADS; i++)
     165                semaphore_down(&thr_sem);
    166166
    167167        slab_cache_destroy(thr_cache);
Note: See TracChangeset for help on using the changeset viewer.