Changeset 96348adc in mainline for kernel/test/synch/semaphore1.c
- Timestamp:
- 2006-12-12T17:24:58Z (17 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 7e13972
- Parents:
- 34db7fa
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/test/synch/semaphore1.c
r34db7fa r96348adc 46 46 static atomic_t items_consumed; 47 47 48 static void consumer(void *arg);49 static void producer(void *arg);50 static void failed(void);51 52 48 static void producer(void *arg) 53 49 { … … 74 70 } 75 71 76 static void failed(void) 77 { 78 printf("Test failed prematurely.\n"); 79 thread_exit(); 80 } 81 82 void test_semaphore1(void) 72 char * test_semaphore1(void) 83 73 { 84 74 int i, j, k; 85 75 int consumers, producers; 86 76 87 printf("Semaphore test #1\n");88 89 77 waitq_initialize(&can_start); 90 78 semaphore_initialize(&sem, AT_ONCE); 91 79 92 93 for (i=1; i<=3; i++) { 80 for (i = 1; i <= 3; i++) { 94 81 thread_t *thrd; 95 82 … … 98 85 99 86 consumers = i * CONSUMERS; 100 producers = (4 -i) * PRODUCERS;87 producers = (4 - i) * PRODUCERS; 101 88 102 89 printf("Creating %d consumers and %d producers...", consumers, producers); 103 90 104 for (j =0; j<(CONSUMERS+PRODUCERS)/2; j++) {105 for (k =0; k<i; k++) {91 for (j = 0; j < (CONSUMERS + PRODUCERS) / 2; j++) { 92 for (k = 0; k < i; k++) { 106 93 thrd = thread_create(consumer, NULL, TASK, 0, "consumer"); 107 94 if (thrd) 108 95 thread_ready(thrd); 109 96 else 110 failed();97 printf("could not create consumer %d\n", i); 111 98 } 112 for (k =0; k<(4-i); k++) {99 for (k = 0; k < (4 - i); k++) { 113 100 thrd = thread_create(producer, NULL, TASK, 0, "producer"); 114 101 if (thrd) 115 102 thread_ready(thrd); 116 103 else 117 failed();104 printf("could not create producer %d\n", i); 118 105 } 119 106 } … … 124 111 waitq_wakeup(&can_start, WAKEUP_ALL); 125 112 126 while ( items_consumed.count != consumers || items_produced.count != producers) {113 while ((items_consumed.count != consumers) || (items_produced.count != producers)) { 127 114 printf("%d consumers remaining, %d producers remaining\n", consumers - items_consumed.count, producers - items_produced.count); 128 115 thread_sleep(1); 129 116 } 130 117 } 131 printf("Test passed.\n"); 118 119 return NULL; 132 120 }
Note:
See TracChangeset
for help on using the changeset viewer.