Annotation of xinu/sys/suspend.c, revision 1.1.1.1

1.1       root        1: /* suspend.c - suspend */
                      2: 
                      3: #include <conf.h>
                      4: #include <kernel.h>
                      5: #include <proc.h>
                      6: 
                      7: /*------------------------------------------------------------------------
                      8:  *  suspend  --  suspend a process, placing it in hibernation
                      9:  *------------------------------------------------------------------------
                     10:  */
                     11: SYSCALL        suspend(pid)
                     12:        int     pid;                    /* id of process to suspend     */
                     13: {
                     14:        struct  pentry  *pptr;          /* pointer to proc. tab. entry  */
                     15:        PStype  ps;                     /* saved processor status       */
                     16:        int     prio;                   /* priority returned            */
                     17: 
                     18:        disable(ps);
                     19:        if (isbadpid(pid) || pid==NULLPROC ||
                     20:         ((pptr= &proctab[pid])->pstate!=PRCURR && pptr->pstate!=PRREADY)) {
                     21:                restore(ps);
                     22:                return(SYSERR);
                     23:        }
                     24:        if (pptr->pstate == PRREADY) {
                     25:                dequeue(pid);
                     26:                pptr->pstate = PRSUSP;
                     27:        } else {
                     28:                pptr->pstate = PRSUSP;
                     29:                resched();
                     30:        }
                     31:        prio = pptr->pprio;
                     32:        restore(ps);
                     33:        return(prio);
                     34: }

unix.superglobalmegacorp.com

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