mqueue.h
来自「俄罗斯高人Mamaich的Pocket gcc编译器(运行在PocketPC上)」· C头文件 代码 · 共 102 行
H
102 行
/***************************************************************************** * * POSIX Message Queue library implemented using memory mapped files * *****************************************************************************/#ifndef __mqueue_h#define __mqueue_h#include <sys/types.h>#include <pthread.h>#define WIN32#if defined(WIN32)#include <sys/wcebase.h>#include <sys/wcethread.h>#endif#include <fcntl.h>#if !defined(LINUX)union sigval{ int sival_int; /* integer value */ void *sival_ptr; /* pointer value */};struct sigevent{ int sigev_notify; /* notification type */ int sigev_signo; /* signal number */ union sigval sigev_value; /* signal value */};#else#include <signal.h>#endif/*****************************************************************************/typedef struct mq_info *mqd_t; /* opaque datatype */struct mq_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 */};/* one mq_hdr{} per queue, at beginning of mapped file */struct mq_hdr{ struct mq_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() */#if !defined(WIN32) pthread_mutex_t mqh_lock; /* mutex lock */ pthread_cond_t mqh_wait; /* and condition variable */#endif};/* one msg_hdr{} at the front of each message in the mapped file */struct msg_hdr{ long msg_next; /* index of next on linked list */ /* msg_next must be first member in struct */ ssize_t msg_len; /* actual length */ unsigned int msg_prio; /* priority */};/* one mq_info{} malloc'ed per process per mq_open() */struct mq_info{#if defined(WIN32) HANDLE lock; HANDLE wait; HANDLE signal; HANDLE mqi_fmap; /* file mapping object */#endif struct mq_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/* size of message in file is rounded up for alignment */#define MSGSIZE(i) ((((i) + sizeof(long)-1) / sizeof(long)) * sizeof(long))/* message queue functions */extern int mq_msgcnt(mqd_t);extern int mq_close(mqd_t);extern int mq_getattr(mqd_t, struct mq_attr *);extern int mq_notify(mqd_t, const struct sigevent *);extern int mq_signal(mqd_t, int);extern mqd_t mq_open(const char *, int, ...);extern ssize_t mq_receive(mqd_t, char *, size_t, unsigned int *);extern int mq_send(mqd_t, const char *, size_t, unsigned int);extern int mq_setattr(mqd_t, const struct mq_attr *, struct mq_attr *);extern int mq_unlink(const char *name);#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?