550W Document
550W, a high-end OS
sync.h
浏览该文件的文档.
1 #pragma once
2 
3 #include <lib/list.h>
4 
5 #define COMM_NUM 32
6 #define MBOX_NAME_LEN 64
7 #define MBOX_MSG_MAX_LEN 128
8 #define MBOX_MAX_USER 10
9 
10 #define PCB_MBOX_MAX_MSG_NUM 16
11 #define PCB_MBOX_MSG_MAX_LEN 256
12 
13 typedef struct basic_info {
14  int id;
17 
18 typedef struct Semaphore {
20  int sem;
23 
24 typedef struct cond {
26  int num_wait;
29 
30 typedef struct barrier {
32  int count;
33  int total;
34  // int mutex_id;
35  int cond_id;
37 
38 typedef struct mbox {
40  int id[2];
44  // int mutex_id;
48 
49 typedef struct mbox_arg {
50  void *msg;
54 
55 typedef struct pcb_mbox {
56  int pcb_i;
61 
62 int k_commop(void *key_id, void *arg, int op);
63 
64 int k_semaphore_init(int *key, int sem);
65 int k_semaphore_p(int key);
66 int k_semaphore_v(int key);
67 int k_semaphore_destroy(int *key);
68 
69 int k_cond_init(int *key);
70 // int k_cond_wait(int key, int lock_id);
71 int k_cond_wait(int key);
72 int k_cond_signal(int key);
73 int k_cond_broadcast(int key);
74 int k_cond_destroy(int *key);
75 
76 int k_barrier_init(int *key, int total);
77 int k_barrier_wait(int key);
78 int k_barrier_destroy(int *key);
79 
80 int k_mbox_open(int id_1, int id_2);
82 int k_mbox_send(int key, mbox_t *target, mbox_arg_t *arg);
83 int k_mbox_recv(int key, mbox_t *target, mbox_arg_t *arg);
84 int k_mbox_try_send(int key, mbox_arg_t *arg);
85 int k_mbox_try_recv(int key, mbox_arg_t *arg);
86 
87 void k_pcb_mbox_init(pcb_mbox_t *target, int owner_id);
88 int sys_mailread(void *buf, int len);
89 int sys_mailwrite(int pid, void *buf, int len);
Definition: sync.h:18
list_head wait_queue
Definition: sync.h:21
int sem
Definition: sync.h:20
basic_info_t sem_info
Definition: sync.h:19
Definition: sync.h:30
int cond_id
Definition: sync.h:35
basic_info_t barrier_info
Definition: sync.h:31
int count
Definition: sync.h:32
int total
Definition: sync.h:33
Definition: sync.h:13
int initialized
Definition: sync.h:15
int id
Definition: sync.h:14
Definition: virtio.h:78
Definition: sync.h:24
basic_info_t cond_info
Definition: sync.h:25
list_head wait_queue
Definition: sync.h:27
int num_wait
Definition: sync.h:26
Definition: list.h:7
Definition: sync.h:49
int sleep_operation
Definition: sync.h:52
void * msg
Definition: sync.h:50
int msg_length
Definition: sync.h:51
Definition: sync.h:38
char buff[MBOX_MSG_MAX_LEN]
Definition: sync.h:41
int used_units
Definition: sync.h:43
int read_head
Definition: sync.h:42
int write_tail
Definition: sync.h:42
int full_cond_id
Definition: sync.h:45
int empty_cond_id
Definition: sync.h:46
basic_info_t mailbox_info
Definition: sync.h:39
Definition: sync.h:55
int pcb_i
Definition: sync.h:56
char buff[PCB_MBOX_MAX_MSG_NUM][PCB_MBOX_MSG_MAX_LEN]
Definition: sync.h:57
int write_head
Definition: sync.h:58
int used_units
Definition: sync.h:59
int read_head
Definition: sync.h:58
struct cond cond_t
int k_semaphore_destroy(int *key)
Definition: sync.c:155
struct mbox_arg mbox_arg_t
int k_cond_broadcast(int key)
Definition: sync.c:211
int k_mbox_try_send(int key, mbox_arg_t *arg)
Definition: sync.c:387
struct mbox mbox_t
int k_mbox_open(int id_1, int id_2)
Definition: sync.c:282
int k_semaphore_p(int key)
Definition: sync.c:132
struct pcb_mbox pcb_mbox_t
int k_cond_init(int *key)
Definition: sync.c:164
int k_cond_wait(int key)
Definition: sync.c:190
void k_pcb_mbox_init(pcb_mbox_t *target, int owner_id)
Definition: sync.c:407
int k_barrier_wait(int key)
Definition: sync.c:259
struct barrier barrier_t
int k_cond_destroy(int *key)
Definition: sync.c:222
int k_mbox_send(int key, mbox_t *target, mbox_arg_t *arg)
Definition: sync.c:325
#define PCB_MBOX_MAX_MSG_NUM
Definition: sync.h:10
int k_mbox_close()
int k_mbox_try_recv(int key, mbox_arg_t *arg)
Definition: sync.c:397
int k_mbox_recv(int key, mbox_t *target, mbox_arg_t *arg)
Definition: sync.c:354
#define PCB_MBOX_MSG_MAX_LEN
Definition: sync.h:11
int sys_mailread(void *buf, int len)
Definition: sync.c:412
int k_cond_signal(int key)
Definition: sync.c:200
struct Semaphore Semaphore_t
struct basic_info basic_info_t
#define MBOX_MSG_MAX_LEN
Definition: sync.h:7
int k_semaphore_v(int key)
Definition: sync.c:144
int k_semaphore_init(int *key, int sem)
Definition: sync.c:106
int sys_mailwrite(int pid, void *buf, int len)
Definition: sync.c:430
int k_barrier_destroy(int *key)
Definition: sync.c:272
int k_barrier_init(int *key, int total)
Definition: sync.c:231
int k_commop(void *key_id, void *arg, int op)
Definition: sync.c:63