/** * Create and initialize a semaphore, returning its ID. * @param count resources available. * @return new semaphore ID on success, SYSERR on failure */ semaphore semcreate(int count) { register semaphore sem; irqmask im; im = disable(); /* disable interrupts */ sem = semalloc(); /* request new semaphore */ if (sem != SYSERR && count >= 0) /* safety check */ { semtab[sem].count = count; /* initialize count */ restore(im); /* restore interrupts */ return sem; /* return semaphore id */ } restore(im); return SYSERR; }
int mutalloc(key_t key){ return semalloc(key, 1); }