Rev 1787 | Rev 2028 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 1787 | Rev 2022 | ||
|---|---|---|---|
| Line 47... | Line 47... | ||
| 47 | 47 | ||
| 48 | static void consumer(void *arg); |
48 | static void consumer(void *arg); |
| 49 | static void producer(void *arg); |
49 | static void producer(void *arg); |
| 50 | static void failed(void); |
50 | static void failed(void); |
| 51 | 51 | ||
| 52 | void producer(void *arg) |
52 | static void producer(void *arg) |
| 53 | { |
53 | { |
| 54 | thread_detach(THREAD); |
54 | thread_detach(THREAD); |
| 55 | 55 | ||
| 56 | waitq_sleep(&can_start); |
56 | waitq_sleep(&can_start); |
| 57 | 57 | ||
| Line 59... | Line 59... | ||
| 59 | atomic_inc(&items_produced); |
59 | atomic_inc(&items_produced); |
| 60 | thread_usleep(250); |
60 | thread_usleep(250); |
| 61 | semaphore_up(&sem); |
61 | semaphore_up(&sem); |
| 62 | } |
62 | } |
| 63 | 63 | ||
| 64 | void consumer(void *arg) |
64 | static void consumer(void *arg) |
| 65 | { |
65 | { |
| 66 | thread_detach(THREAD); |
66 | thread_detach(THREAD); |
| 67 | 67 | ||
| 68 | waitq_sleep(&can_start); |
68 | waitq_sleep(&can_start); |
| 69 | 69 | ||
| Line 71... | Line 71... | ||
| 71 | atomic_inc(&items_consumed); |
71 | atomic_inc(&items_consumed); |
| 72 | thread_usleep(500); |
72 | thread_usleep(500); |
| 73 | semaphore_up(&sem); |
73 | semaphore_up(&sem); |
| 74 | } |
74 | } |
| 75 | 75 | ||
| 76 | void failed(void) |
76 | static void failed(void) |
| 77 | { |
77 | { |
| 78 | printf("Test failed prematurely.\n"); |
78 | printf("Test failed prematurely.\n"); |
| 79 | thread_exit(); |
79 | thread_exit(); |
| 80 | } |
80 | } |
| 81 | 81 | ||
| 82 | void test(void) |
82 | void test_semaphore1(void) |
| 83 | { |
83 | { |
| 84 | int i, j, k; |
84 | int i, j, k; |
| 85 | int consumers, producers; |
85 | int consumers, producers; |
| 86 | 86 | ||
| 87 | printf("Semaphore test #1\n"); |
87 | printf("Semaphore test #1\n"); |