mirror of
https://git.nju.edu.cn/oslab2023/oslab.git
synced 2024-06-13 04:44:31 +08:00
25 lines
366 B
C
25 lines
366 B
C
#ifndef __SEM_H__
|
|
#define __SEM_H__
|
|
|
|
#include "klib.h"
|
|
|
|
typedef struct sem {
|
|
int value;
|
|
list_t wait_list;
|
|
} sem_t;
|
|
|
|
void sem_init(sem_t *sem, int value);
|
|
void sem_p(sem_t *sem);
|
|
void sem_v(sem_t *sem);
|
|
|
|
typedef struct usem {
|
|
sem_t sem;
|
|
int ref;
|
|
} usem_t;
|
|
|
|
usem_t *usem_alloc(int value);
|
|
usem_t *usem_dup(usem_t *usem);
|
|
void usem_close(usem_t *usem);
|
|
|
|
#endif
|