|
|
1.1 root 1: /* test.c - main */
2:
3: #include <conf.h>
4: #include <kernel.h>
5:
6: /*------------------------------------------------------------------------
7: * main -- current test routines
8: *------------------------------------------------------------------------
9: */
10: main()
11: {
12: int prhello(), waiter(), signaler();
13: int isem, i;
14:
15: if ((isem = screate (0)) == SYSERR)
16: kprintf ("waiter: cannot get semaphore\n");
17: else {
18: for (i=0; i<NPROC-2; i++) {
19: resume (
20: create (waiter, 12000, 20, "waiter", 2, isem, i)
21: );
22: if (!(i % 5)) {
23: resume (
24: create (signaler,12000,20,"sigler",2,isem,i)
25: );
26: }
27: }
28: for (i=0; i<NPROC-2; i++)
29: if (i % 5)
30: resume (
31: create (signaler,12000,20,"sigler",2,isem,i)
32: );
33: }
34: }
35:
36: prhello()
37: {
38: kprintf("hello world\n");
39: }
40:
41: waiter(isem, iwait)
42: int isem, iwait;
43: {
44: kprintf ("waiter #%d: waiting for signal\n", iwait);
45: wait (isem);
46: kprintf ("waiter #%d: my semaphorer was signalled\n", iwait);
47: }
48:
49: signaler(isem, iwait)
50: int isem, iwait;
51: {
52: kprintf ("signaler #%d: about to signal and die\n", iwait);
53: signal (isem);
54: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.