#include "mt_os.h" #include "minithread.h" #include "synch.h" #include minithread_t minithread_fork(proc_t proc, arg_t arg) { minithread_t mt; mt = (minithread_t)syscall(MT_ENTRY, MT_MINITHREAD_FORK, proc, arg, NULL); return(mt); } minithread_t minithread_self() { return (minithread_t)syscall(MT_ENTRY, MT_MINITHREAD_SELF, NULL, NULL, NULL); } void minithread_die() { syscall(MT_ENTRY, MT_MINITHREAD_DIE, NULL, NULL, NULL); } void minithread_yield() { syscall(MT_ENTRY, MT_MINITHREAD_YIELD, NULL, NULL, NULL); } semaphore_t semaphore_create() { semaphore_t sem; sem = (semaphore_t) syscall (MT_ENTRY,MT_SEMAPHORE_CREATE, NULL, NULL, NULL); return sem; } void semaphore_initialize(semaphore_t sem, int cnt) { syscall(MT_ENTRY,MT_SEMAPHORE_INITIALIZE,sem,cnt, NULL); } void semaphore_destroy(semaphore_t sem) { syscall(MT_ENTRY,MT_SEMAPHORE_DESTROY,sem, NULL, NULL); } void semaphore_P(semaphore_t sem) { syscall(MT_ENTRY,MT_SEMAPHORE_P,sem, NULL, NULL); } void semaphore_V(semaphore_t sem) { syscall(MT_ENTRY,MT_SEMAPHORE_V,sem, NULL, NULL); }