|
|
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) / 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) / 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: int sleeptime = iwait % 8;
45:
46: kprintf ("waiter #%d: waiting for signal\n", iwait);
47: wait (isem);
48: kprintf ("waiter #%d: my semaphorer was signalled\n", iwait);
49: kprintf ("waiter #%d: about to sleep %d seconds\n", iwait, sleeptime);
50: sleep (sleeptime);
51: kprintf ("waiter #%d: finished sleeping\n", iwait);
52: }
53:
54: signaler(isem, iwait)
55: int isem, iwait;
56: {
57: int sleeptime = iwait % 4;
58:
59: kprintf ("signaler #%d: about to sleep %d seconds\n", iwait, sleeptime);
60: sleep (sleeptime);
61: kprintf ("signaler #%d: about to signal and die\n", iwait);
62: signal (isem);
63: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.