diff options
author | Corinna Vinschen <corinna@vinschen.de> | 2022-08-04 17:58:50 +0300 |
---|---|---|
committer | Corinna Vinschen <corinna@vinschen.de> | 2022-08-05 13:02:11 +0300 |
commit | 007e23d6390af11582e55453269b7a51c723d2dd (patch) | |
tree | 8e8cff3ca23f5e56d9766a5ee6c6abb366611b07 /winsup/cygwin/local_includes/cygserver_msg.h | |
parent | 1e428bee1c5ef7c76ba4e46e6693b913edc9bbf3 (diff) |
Cygwin: Reorganize cygwin source dir
Create subdirs and move files accordingly:
- DevDocs: doc files
- fhandler: fhandler sources, split fhandler.cc into base.cc and null.cc
- local_includes: local include files
- scripts: scripts called during build
- sec: security sources
Signed-off-by: Corinna Vinschen <corinna@vinschen.de>
Diffstat (limited to 'winsup/cygwin/local_includes/cygserver_msg.h')
-rw-r--r-- | winsup/cygwin/local_includes/cygserver_msg.h | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/winsup/cygwin/local_includes/cygserver_msg.h b/winsup/cygwin/local_includes/cygserver_msg.h new file mode 100644 index 000000000..b9fa7d77b --- /dev/null +++ b/winsup/cygwin/local_includes/cygserver_msg.h @@ -0,0 +1,89 @@ +/* cygserver_msg.h: Single unix specification IPC interface for Cygwin. + +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. */ + +#ifndef __CYGSERVER_MSG_H__ +#define __CYGSERVER_MSG_H__ + +#include <sys/types.h> +#include <sys/sysproto.h> +#ifndef _KERNEL +#define _KERNEL 1 +#endif +#include <cygwin/msg.h> + +#include "cygserver.h" +#include "cygserver_ipc.h" + +#ifndef __INSIDE_CYGWIN__ +class transport_layer_base; +class process_cache; +#endif + +class client_request_msg : public client_request +{ + friend class client_request; + +public: + enum msgop_t + { + MSGOP_msgctl, + MSGOP_msgget, + MSGOP_msgrcv, + MSGOP_msgsnd + }; + +private: + union + { + struct + { + msgop_t msgop; + proc ipcblk; + union + { + struct msgctl_args ctlargs; + struct msgget_args getargs; + struct msgrcv_args rcvargs; + struct msgsnd_args sndargs; + }; + } in; + + union { + int ret; + ssize_t rcv; + } out; + } _parameters; + +#ifndef __INSIDE_CYGWIN__ + client_request_msg (); + virtual void serve (transport_layer_base *, process_cache *); +#endif + +public: + +#ifdef __INSIDE_CYGWIN__ + client_request_msg (int, int, struct msqid_ds *); // msgctl + client_request_msg (key_t, int); // msgget + client_request_msg (int, void *, size_t, long, int); // msgrcv + client_request_msg (int, const void *, size_t, int); // msgsnd +#endif + + int retval () const { return msglen () ? _parameters.out.ret : -1; } + ssize_t rcvval () const { return _parameters.out.rcv; } +}; + +#ifndef __INSIDE_CYGWIN__ +int msginit (); +int msgunload (); +int msgctl (struct thread *, struct msgctl_args *); +int msgget (struct thread *, struct msgget_args *); +int msgsnd (struct thread *, struct msgsnd_args *); +int msgrcv (struct thread *, struct msgrcv_args *); +#endif + +#endif /* __CYGSERVER_MSG_H__ */ |