|
|
1.1 root 1: /* pdelete.c - pdelete */
2:
3: #include <conf.h>
4: #include <kernel.h>
5: #include <mark.h>
6: #include <ports.h>
7:
8: /*------------------------------------------------------------------------
9: * pdelete -- delete a port, freeing waiting processes and messages
10: *------------------------------------------------------------------------
11: */
12: SYSCALL pdelete(portid, dispose)
13: int portid;
14: int (*dispose)();
15: {
16: struct pt *ptptr;
17:
1.1.1.2 ! root 18: #ifdef DEBUG
! 19: dotrace("pdelete", &portid, 2);
! 20: #endif
! 21: disable();
1.1 root 22: if ( isbadport(portid) ||
23: #ifdef MEMMARK
24: unmarked(ptmark) ||
25: #endif
26: (ptptr= &ports[portid])->ptstate != PTALLOC ) {
1.1.1.2 ! root 27: restore();
1.1 root 28: return(SYSERR);
29: }
30: _ptclear(ptptr, PTFREE, dispose);
1.1.1.2 ! root 31: restore();
1.1 root 32: return(OK);
33: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.