相关系统调用

对于我们的实验,要实现下面这些系统调用,分别对应了信号量的创建,V操作,P操作,信号量销毁。

sem_init

sem_init系统调用用于初始化信号量,其中参数value用于指定信号量的初始值,初始化成功则返回0,指针sem指向初始化成功的信号量,否则返回-1

int sem_init(sem_t *sem, uint32_t value);

sem_post

sem_post系统调用对应信号量的V操作,其使得sem指向的信号量的value增一,若value取值不大于0,则释放一个阻塞在该信号量上进程(即将该进程设置为就绪态),若操作成功则返回0,否则返回-1

int sem_post(sem_t *sem);

sem_wait

sem_wait系统调用对应信号量的P操作,其使得sem指向的信号量的value减一,若value取值小于0,则阻塞自身,否则进程继续执行,若操作成功则返回0,否则返回-1

int sem_wait(sem_t *sem);

sem_destroy

sem_destroy系统调用用于销毁sem指向的信号量,销毁成功则返回0,否则返回-1,若尚有进程阻塞在该信号量上,可带来未知错误

int sem_destroy(sem_t *sem);

Last updated