📄 mqueue.h
字号:
/* include mqueueh */typedef struct mymq_info *mymqd_t; /* opaque datatype */struct mymq_attr { long mq_flags; /* message queue flag: O_NONBLOCK */ long mq_maxmsg; /* max number of messages allowed on queue */ long mq_msgsize; /* max size of a message (in bytes) */ long mq_curmsgs; /* number of messages currently on queue */}; /* 4one mymq_hdr{} per queue, at beginning of mapped file */struct mymq_hdr { struct mymq_attr mqh_attr; /* the queue's attributes */ long mqh_head; /* index of first message */ long mqh_free; /* index of first free message */ long mqh_nwait; /* #threads blocked in mq_receive() */ pid_t mqh_pid; /* nonzero PID if mqh_event set */ struct sigevent mqh_event; /* for mq_notify() */ pthread_mutex_t mqh_lock; /* mutex lock */ pthread_cond_t mqh_wait; /* and condition variable */}; /* 4one mymsg_hdr{} at the front of each message in the mapped file */struct mymsg_hdr { long msg_next; /* index of next on linked list */ /* 4msg_next must be first member in struct */ ssize_t msg_len; /* actual length */ unsigned int msg_prio; /* priority */}; /* 4one mymq_info{} malloc'ed per process per mq_open() */struct mymq_info { struct mymq_hdr *mqi_hdr; /* start of mmap'ed region */ long mqi_magic; /* magic number if open */ int mqi_flags; /* flags for this process */};#define MQI_MAGIC 0x98765432 /* 4size of message in file is rounded up for alignment */#define MSGSIZE(i) ((((i) + sizeof(long)-1) / sizeof(long)) * sizeof(long))/* end mqueueh */ /* 4our functions */int mymq_close(mymqd_t);int mymq_getattr(mymqd_t, struct mymq_attr *);int mymq_notify(mymqd_t, const struct sigevent *);mymqd_t mymq_open(const char *, int, ...);ssize_t mymq_receive(mymqd_t, char *, size_t, unsigned int *);int mymq_send(mymqd_t, const char *, size_t, unsigned int);int mymq_setattr(mymqd_t, const struct mymq_attr *, struct mymq_attr *);int mymq_unlink(const char *name); /* 4and the corresponding wrapper functions */void Mymq_close(mymqd_t);void Mymq_getattr(mymqd_t, struct mymq_attr *);void Mymq_notify(mymqd_t, const struct sigevent *);mymqd_t Mymq_open(const char *, int, ...);ssize_t Mymq_receive(mymqd_t, char *, size_t, unsigned int *);void Mymq_send(mymqd_t, const char *, size_t, unsigned int);void Mymq_setattr(mymqd_t, const struct mymq_attr *, struct mymq_attr *);void Mymq_unlink(const char *name);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -