]> sourceware.org Git - newlib-cygwin.git/blame - winsup/cygwin/cygserver_ipc.h
* Merge in cygwin-64bit-branch.
[newlib-cygwin.git] / winsup / cygwin / cygserver_ipc.h
CommitLineData
e217832c
CV
1/* cygserver_ipc.h
2
61522196 3 Copyright 2002, 2003, 2004, 2012, 2013 Red Hat, Inc.
e217832c
CV
4
5This file is part of Cygwin.
6
7This software is a copyrighted work licensed under the terms of the
8Cygwin license. Please consult the file "CYGWIN_LICENSE" for
9details. */
10
11#ifndef __CYGSERVER_IPC_H__
12#define __CYGSERVER_IPC_H__
13
e217832c 14/*
a6df500f 15 * Datastructure which is part of any IPC input parameter block.
e217832c 16 */
a6df500f
CV
17struct vmspace {
18 void *vm_map; /* UNUSED */
19 struct shmmap_state *vm_shm;
20};
21
22struct proc {
23 pid_t cygpid;
24 DWORD winpid;
61522196
CV
25 uid_t uid;
26 gid_t gid;
a6df500f 27 int gidcnt;
61522196 28 gid_t *gidlist;
a6df500f
CV
29 bool is_admin;
30 struct vmspace *p_vmspace;
2a566ac3 31 HANDLE signal_arrived;
a6df500f
CV
32};
33
34#ifdef __INSIDE_CYGWIN__
33a6952b 35#include "sigproc.h"
c3a46349 36extern inline void
a6df500f
CV
37ipc_set_proc_info (proc &blk)
38{
39 blk.cygpid = getpid ();
40 blk.winpid = GetCurrentProcessId ();
41 blk.uid = geteuid32 ();
42 blk.gid = getegid32 ();
43 blk.gidcnt = 0;
44 blk.gidlist = NULL;
45 blk.is_admin = false;
962f9a2c 46 _my_tls.set_signal_arrived (true, blk.signal_arrived);
a6df500f
CV
47}
48#endif /* __INSIDE_CYGWIN__ */
49
50#ifndef __INSIDE_CYGWIN__
51class ipc_retval {
52private:
53 union {
54 int i;
61522196
CV
55 ssize_t ssz;
56 size_t sz;
a6df500f
CV
57 vm_offset_t off;
58 vm_object_t obj;
e217832c
CV
59 };
60
a6df500f
CV
61public:
62 ipc_retval (int ni) { i = ni; }
e217832c 63
a6df500f
CV
64 operator int () const { return i; }
65 int operator = (int ni) { return i = ni; }
e217832c 66
61522196
CV
67#ifndef __x86_64__
68 /* On x86_64: size_t == vm_offset_t == unsigned long */
69 operator size_t () const { return sz; }
70 size_t operator = (size_t nsz) { return sz = nsz; }
71#else
72 /* On i686: ssize_t == long == int */
73 operator ssize_t () const { return ssz; }
74 ssize_t operator = (ssize_t nssz) { return ssz = nssz; }
75#endif
e217832c 76
a6df500f
CV
77 operator vm_offset_t () const { return off; }
78 vm_offset_t operator = (vm_offset_t noff) { return off = noff; }
e217832c 79
a6df500f
CV
80 operator vm_object_t () const { return obj; }
81 vm_object_t operator = (vm_object_t nobj) { return obj = nobj; }
82};
e217832c 83
a6df500f
CV
84struct thread {
85 class process *client;
86 proc *ipcblk;
87 ipc_retval td_retval[2];
88};
89#define td_proc ipcblk
90#define p_pid cygpid
91#endif
e217832c
CV
92
93#endif /* __CYGSERVER_IPC_H__ */
This page took 3.20306 seconds and 5 git commands to generate.