SYSCALL preset(int portid, int (*dispose)()) { STATWORD ps; struct pt *ptptr; disable(ps); if ( isbadport(portid) || #ifdef MEMMARK unmarked(ptmark) || #endif (ptptr= &ports[portid])->ptstate != PTALLOC ) { restore(ps); return(SYSERR); } _ptclear(ptptr, PTALLOC, dispose); restore(ps); return(OK); }
/*------------------------------------------------------------------------ * pdelete -- delete a port, freeing waiting processes and messages *------------------------------------------------------------------------ */ SYSCALL pdelete(int portid, void (*dispose)()) { STATWORD ps; struct pt *ptptr; disable(ps); if ( isbadport(portid) || #ifdef MEMMARK unmarked(ptmark) || #endif (ptptr= &ports[portid])->ptstate != PTALLOC ) { restore(ps); return SYSERR; } _ptclear(ptptr, PTFREE, dispose); restore(ps); return OK; }