]> sourceware.org Git - newlib-cygwin.git/blob - winsup/cygwin/cygserver_ipc.h
* cygwait.cc (cancelable_wait): Mimic old cygwait behavior more closely wrt
[newlib-cygwin.git] / winsup / cygwin / cygserver_ipc.h
1 /* cygserver_ipc.h
2
3 Copyright 2002, 2003, 2004, 2012 Red Hat, Inc.
4
5 This file is part of Cygwin.
6
7 This software is a copyrighted work licensed under the terms of the
8 Cygwin license. Please consult the file "CYGWIN_LICENSE" for
9 details. */
10
11 #ifndef __CYGSERVER_IPC_H__
12 #define __CYGSERVER_IPC_H__
13
14 /*
15 * Datastructure which is part of any IPC input parameter block.
16 */
17 struct vmspace {
18 void *vm_map; /* UNUSED */
19 struct shmmap_state *vm_shm;
20 };
21
22 struct proc {
23 pid_t cygpid;
24 DWORD winpid;
25 __uid32_t uid;
26 __gid32_t gid;
27 int gidcnt;
28 __gid32_t *gidlist;
29 bool is_admin;
30 struct vmspace *p_vmspace;
31 HANDLE signal_arrived;
32 };
33
34 #ifdef __INSIDE_CYGWIN__
35 #include "sigproc.h"
36 inline void
37 ipc_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;
46 blk.signal_arrived = _my_tls.signal_arrived;
47 }
48 #endif /* __INSIDE_CYGWIN__ */
49
50 #ifndef __INSIDE_CYGWIN__
51 class ipc_retval {
52 private:
53 union {
54 int i;
55 unsigned int u;
56 vm_offset_t off;
57 vm_object_t obj;
58 };
59
60 public:
61 ipc_retval (int ni) { i = ni; }
62
63 operator int () const { return i; }
64 int operator = (int ni) { return i = ni; }
65
66 operator unsigned int () const { return u; }
67 unsigned int operator = (unsigned int nu) { return u = nu; }
68
69 operator vm_offset_t () const { return off; }
70 vm_offset_t operator = (vm_offset_t noff) { return off = noff; }
71
72 operator vm_object_t () const { return obj; }
73 vm_object_t operator = (vm_object_t nobj) { return obj = nobj; }
74 };
75
76 struct thread {
77 class process *client;
78 proc *ipcblk;
79 ipc_retval td_retval[2];
80 };
81 #define td_proc ipcblk
82 #define p_pid cygpid
83 #endif
84
85 #endif /* __CYGSERVER_IPC_H__ */
This page took 0.036103 seconds and 5 git commands to generate.