Changeset c5613b7 in mainline for test/mm/slab2/test.c
- Timestamp:
- 2006-02-04T01:59:42Z (19 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 10e16a7
- Parents:
- 81e52f2a
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
test/mm/slab2/test.c
r81e52f2a rc5613b7 74 74 }while(1); 75 75 printf("done.\n"); 76 slab_print_list();77 76 /* We do not have memory - now deallocate cache2 */ 78 77 printf("Deallocating cache2..."); … … 84 83 printf("done.\n"); 85 84 86 slab_print_list();87 85 printf("Allocating to cache1...\n"); 88 86 for (i=0; i<30; i++) { … … 95 93 olddata1 = data1; 96 94 } 97 slab_print_list();98 95 while (1) { 99 96 data1 = slab_alloc(cache1, FRAME_ATOMIC); … … 105 102 olddata1 = data1; 106 103 } 107 slab_print_list();108 104 printf("Deallocating cache1..."); 109 105 while (olddata1) { … … 118 114 } 119 115 116 slab_cache_t *thr_cache; 117 semaphore_t thr_sem; 118 119 #define THREADS 8 120 121 static void thread(void *priv) 122 { 123 void *data=NULL, *new; 124 125 printf("Starting thread #%d...\n",THREAD->tid); 126 127 /* Alloc all */ 128 printf("Thread #%d allocating...\n", THREAD->tid); 129 while (1) { 130 /* Call with atomic to detect end of memory */ 131 new = slab_alloc(thr_cache, FRAME_ATOMIC); 132 if (!new) 133 break; 134 *((void **)new) = data; 135 data = new; 136 } 137 printf("Thread #%d releasing...\n", THREAD->tid); 138 while (data) { 139 new = *((void **)data); 140 slab_free(thr_cache, data); 141 data = new; 142 } 143 printf("Thread #%d allocating...\n", THREAD->tid); 144 while (1) { 145 /* Call with atomic to detect end of memory */ 146 new = slab_alloc(thr_cache, FRAME_ATOMIC); 147 if (!new) 148 break; 149 *((void **)new) = data; 150 data = new; 151 } 152 printf("Thread #%d releasing...\n", THREAD->tid); 153 while (data) { 154 new = *((void **)data); 155 slab_free(thr_cache, data); 156 data = new; 157 } 158 159 160 printf("Thread #%d finished\n", THREAD->tid); 161 slab_print_list(); 162 semaphore_up(&thr_sem); 163 } 164 165 166 static void multitest(int size) 167 { 168 /* Start 8 threads that just allocate as much as possible, 169 * then release everything, then again allocate, then release 170 */ 171 thread_t *t; 172 int i; 173 174 printf("Running stress test with size %d\n", size); 175 thr_cache = slab_cache_create("thread_cache", size, 0, 176 NULL, NULL, 177 0); 178 semaphore_initialize(&thr_sem,0); 179 for (i=0; i<THREADS; i++) { 180 if (!(t = thread_create(thread, NULL, TASK, 0))) 181 panic("could not create thread\n"); 182 thread_ready(t); 183 } 184 185 for (i=0; i<THREADS; i++) 186 semaphore_down(&thr_sem); 187 188 slab_cache_destroy(thr_cache); 189 printf("Stress test complete.\n"); 190 } 191 120 192 void test(void) 121 193 { 122 printf("Running reclaim test .. pass1\n");194 printf("Running reclaim single-thread test .. pass1\n"); 123 195 totalmemtest(); 124 printf("Running reclaim test .. pass2\n");196 printf("Running reclaim single-thread test .. pass2\n"); 125 197 totalmemtest(); 126 198 printf("Reclaim test OK.\n"); 127 } 199 200 multitest(128); 201 multitest(2048); 202 printf("All done.\n"); 203 }
Note:
See TracChangeset
for help on using the changeset viewer.