|
|
1.1 root 1: /* pinit.c - pinit */
2:
3: #include <conf.h>
4: #include <kernel.h>
5: #include <mark.h>
6: #include <ports.h>
7:
8: #ifdef MEMMARK
9: MARKER ptmark;
10: #endif
11: struct ptnode *ptfree; /* list of free queue nodes */
12: struct pt ports[NPORTS];
13: int ptnextp;
14:
15: /*------------------------------------------------------------------------
16: * pinit -- initialize all ports
17: *------------------------------------------------------------------------
18: */
19: SYSCALL pinit(maxmsgs)
20: int maxmsgs;
21: {
22: int i;
23: struct ptnode *next, *prev;
24:
25: ptfree = (struct ptnode *) getmem(maxmsgs*sizeof(struct ptnode));
26: if ( (int)ptfree == SYSERR )
27: panic("pinit: no memory");
28: for (i=0 ; i<NPORTS ; i++) {
29: ports[i].ptstate = PTFREE;
30: ports[i].ptseq = 0;
31: }
32: ptnextp = NPORTS - 1;
33:
34: /* link up free list of message pointer nodes */
35:
36: for ( prev=next=ptfree ; --maxmsgs > 0 ; prev=next )
37: prev->ptnext = ++next;
38: prev->ptnext = (struct ptnode *)NULL;
39: return(OK);
40: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.