Annotation of xinu/sys/TEST/test.c.sleepsem, revision 1.1.1.1

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: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.