diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2007-02-14 10:06:46 +0000 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2007-02-14 10:06:46 +0000 |
commit | 7b487ba942079101fdedf8fced7a6d90c2c62b0b (patch) | |
tree | a93007d0b748360f3e48d5c3268a17dd98c6d4c6 /winsup/cygwin/include | |
parent | 77da924b40fd4396e88df54bf6dc5d01db0907ee (diff) | |
download | cygnal-7b487ba942079101fdedf8fced7a6d90c2c62b0b.tar.gz cygnal-7b487ba942079101fdedf8fced7a6d90c2c62b0b.tar.bz2 cygnal-7b487ba942079101fdedf8fced7a6d90c2c62b0b.zip |
* Makefile.in (DLL_OFILES): Add posix_ipc.o.
* cygwin.din (mq_close): Export.
(mq_getattr): Export.
(mq_notify): Export.
(mq_open): Export.
(mq_receive): Export.
(mq_send): Export.
(mq_setattr): Export.
(mq_timedreceive): Export.
(mq_timedsend): Export.
(mq_unlink): Export.
* posix_ipc.cc: New file implementing the above functions. Move
shm_open and shm_unlink from syscalls.cc here.
* sysconf.cc (sca): Set value of _SC_MQ_OPEN_MAX to MQ_OPEN_MAX,
_SC_MQ_PRIO_MAX to MQ_PRIO_MAX, _SC_MESSAGE_PASSING to
_POSIX_MESSAGE_PASSING.
* include/limits.h (MQ_OPEN_MAX): Define.
(MQ_PRIO_MAX): Define.
* include/mqueue.h: New file.
* include/cygwin/version.h: Bump API minor number.
Diffstat (limited to 'winsup/cygwin/include')
-rw-r--r-- | winsup/cygwin/include/cygwin/version.h | 4 | ||||
-rw-r--r-- | winsup/cygwin/include/limits.h | 10 | ||||
-rw-r--r-- | winsup/cygwin/include/mqueue.h | 45 |
3 files changed, 52 insertions, 7 deletions
diff --git a/winsup/cygwin/include/cygwin/version.h b/winsup/cygwin/include/cygwin/version.h index 8ed2f7dff..fd9cf5aa3 100644 --- a/winsup/cygwin/include/cygwin/version.h +++ b/winsup/cygwin/include/cygwin/version.h @@ -303,12 +303,14 @@ details. */ if_nameindex, if_freenameindex. 163: Export posix_madvise, posix_memalign. 164: Export shm_open, shm_unlink. + 165: Export mq_close, mq_getattr, mq_notify, mq_open, mq_receive, + mq_send, mq_setattr, mq_timedreceive, mq_timedsend, mq_unlink. */ /* Note that we forgot to bump the api for ualarm, strtoll, strtoull */ #define CYGWIN_VERSION_API_MAJOR 0 -#define CYGWIN_VERSION_API_MINOR 164 +#define CYGWIN_VERSION_API_MINOR 165 /* There is also a compatibity version number associated with the shared memory regions. It is incremented when incompatible diff --git a/winsup/cygwin/include/limits.h b/winsup/cygwin/include/limits.h index 260e63a53..f7ae460e8 100644 --- a/winsup/cygwin/include/limits.h +++ b/winsup/cygwin/include/limits.h @@ -179,15 +179,13 @@ details. */ #undef LOGIN_NAME_MAX #define LOGIN_NAME_MAX 256 /* equal to UNLEN defined in w32api/lmcons.h */ -/* The maximum number of open message queue descriptors a process may hold. - Not yet implemented. */ +/* The maximum number of open message queue descriptors a process may hold. */ #undef MQ_OPEN_MAX -/* #define MQ_OPEN_MAX >= _POSIX_MQ_OPEN_MAX */ +#define MQ_OPEN_MAX OPEN_MAX -/* The maximum number of message priorities supported by the implementation. - Not yet implemented. */ +/* The maximum number of message priorities supported by the implementation. */ #undef MQ_PRIO_MAX -/* #define MQ_PRIO_MAX >= _POSIX_MQ_PRIO_MAX */ +#define MQ_PRIO_MAX INT_MAX /* # of open files per process. Actually it can be more since Cygwin grows the dtable as necessary. We define a reasonable limit here diff --git a/winsup/cygwin/include/mqueue.h b/winsup/cygwin/include/mqueue.h new file mode 100644 index 000000000..804a80919 --- /dev/null +++ b/winsup/cygwin/include/mqueue.h @@ -0,0 +1,45 @@ +/* mqueue.h: POSIX message queue interface + + Copyright 2007 Red Hat, Inc. + + This file is part of Cygwin. + + This software is a copyrighted work licensed under the terms of the + Cygwin license. Please consult the file "CYGWIN_LICENSE" for + details. */ + +#include <time.h> +#include <sys/types.h> +#include <sys/signal.h> +#include <sys/cdefs.h> + +#ifndef _MQUEUE_H +#define _MQUEUE_H + +__BEGIN_DECLS + +typedef void *mqd_t; + +struct mq_attr { + long mq_flags; /* Message queue flags */ + long mq_maxmsg; /* Max number of messages in queue */ + long mq_msgsize; /* Max message size */ + long mq_curmsgs; /* Current number of messages in queue */ +}; + +int mq_close (mqd_t); +int mq_getattr (mqd_t, struct mq_attr *); +int mq_notify (mqd_t, const struct sigevent *); +mqd_t mq_open (const char *, int, ...); +ssize_t mq_receive (mqd_t, char *, size_t, unsigned int *); +int mq_send (mqd_t, const char *, size_t, unsigned int); +int mq_setattr (mqd_t, const struct mq_attr *, struct mq_attr *); +ssize_t mq_timedreceive (mqd_t, char *, size_t, unsigned int *, + const struct timespec *); +int mq_timedsend (mqd_t, const char *, size_t, unsigned int, + const struct timespec *); +int mq_unlink (const char *name); + +__END_DECLS + +#endif /* _MQUEUE_H */ |