unsigned long SysWaitEventSem(unsigned char *name, unsigned long numargs, RXSTRING args[], char *queuename, RXSTRING *retstr) { unsigned long rc; unsigned long timeout = SEM_INDEFINITE_WAIT; /* timeout value default */ HEV handle = NULL; /* mutex handle */ #ifdef DLOGGING logmessage(__func__); #endif if (numargs < 1 || numargs > 2 || !RXVALIDSTRING(args[0])) return INVALID_ROUTINE; if (numargs == 2) { if (!string2ulong(args[1].strptr, &timeout)) return INVALID_ROUTINE; } if (!string2ulong(args[0].strptr, &handle)) return INVALID_ROUTINE; rc = DosWaitEventSem(handle, timeout); RETVAL(rc) }
unsigned long SysPostEventSem(unsigned char *name, unsigned long numargs, RXSTRING args[], char *queuename, RXSTRING *retstr) { unsigned long rc; HEV handle = NULL; /* mutex handle */ if (numargs != 1) return INVALID_ROUTINE; /* Only one argument accepted */ if (!string2ulong(args[0].strptr, &handle)) return INVALID_ROUTINE; rc = DosPostEventSem(handle); RETVAL(rc) }
unsigned long SysCloseEventSem(unsigned char *name, unsigned long numargs, RXSTRING args[], char *queuename, RXSTRING *retstr) { unsigned long rc; HEV handle = NULL; /* mutex handle */ #ifdef DLOGGING logmessage(__func__); #endif if (numargs != 1) return INVALID_ROUTINE; /* Only one argument accepted */ if (!string2ulong(args[0].strptr, &handle)) return INVALID_ROUTINE; rc = DosCloseEventSem(handle); RETVAL(rc) }