Changes in kernel/test/mm/slab1.c [0f4f1b2:abf6c01] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/test/mm/slab1.c
r0f4f1b2 rabf6c01 31 31 #include <proc/thread.h> 32 32 #include <arch.h> 33 #include <mem w.h>33 #include <mem.h> 34 34 35 35 #define VAL_COUNT 1024 … … 121 121 static void *thr_data[THREADS][THR_MEM_COUNT]; 122 122 static slab_cache_t *thr_cache; 123 static semaphore_t thr_sem; 123 124 124 125 static void slabtest(void *data) … … 126 127 int offs = (int) (sysarg_t) data; 127 128 int i, j; 129 130 thread_detach(THREAD); 128 131 129 132 TPRINTF("Starting thread #%" PRIu64 "...\n", THREAD->tid); … … 141 144 142 145 TPRINTF("Thread #%" PRIu64 " finished\n", THREAD->tid); 146 147 semaphore_up(&thr_sem); 143 148 } 144 149 145 150 static void testthreads(void) 146 151 { 152 thread_t *t; 153 int i; 154 147 155 thr_cache = slab_cache_create("thread_cache", THR_MEM_SIZE, 0, NULL, NULL, 148 156 SLAB_CACHE_NOMAGAZINE); 149 157 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 { 158 semaphore_initialize(&thr_sem, 0); 159 for (i = 0; i < THREADS; i++) { 160 if (!(t = thread_create(slabtest, (void *) (sysarg_t) i, TASK, THREAD_FLAG_NONE, "slabtest"))) { 158 161 TPRINTF("Could not create thread %d\n", i); 159 } 162 } else 163 thread_ready(t); 160 164 } 161 165 162 for (int i = 0; i < THREADS; i++) { 163 if (threads[i] != NULL) 164 thread_join(threads[i]); 165 } 166 for (i = 0; i < THREADS; i++) 167 semaphore_down(&thr_sem); 166 168 167 169 slab_cache_destroy(thr_cache);
Note:
See TracChangeset
for help on using the changeset viewer.