OSDN Git Service

* select.cc (select_stuff::wait): Temporarily disallow APCS.
[pf3gnuchains/pf3gnuchains4x.git] / winsup / cygwin / cygserver_ipc.h
1 /* cygserver_ipc.h
2
3    Copyright 2002, 2003, 2004 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 inline void
36 ipc_set_proc_info (proc &blk)
37 {
38   blk.cygpid = getpid ();
39   blk.winpid = GetCurrentProcessId ();
40   blk.uid = geteuid32 ();
41   blk.gid = getegid32 ();
42   blk.gidcnt = 0;
43   blk.gidlist = NULL;
44   blk.is_admin = false;
45   blk.signal_arrived = signal_arrived;
46 }
47 #endif /* __INSIDE_CYGWIN__ */
48
49 #ifndef __INSIDE_CYGWIN__
50 class ipc_retval {
51 private:
52   union {
53     int i;
54     unsigned int u;
55     vm_offset_t off;
56     vm_object_t obj;
57   };
58
59 public:
60   ipc_retval (int ni) { i = ni; }
61
62   operator int () const { return i; }
63   int operator = (int ni) { return i = ni; }
64
65   operator unsigned int () const { return u; }
66   unsigned int operator = (unsigned int nu) { return u = nu; }
67
68   operator vm_offset_t () const { return off; }
69   vm_offset_t operator = (vm_offset_t noff) { return off = noff; }
70
71   operator vm_object_t () const { return obj; }
72   vm_object_t operator = (vm_object_t nobj) { return obj = nobj; }
73 };
74
75 struct thread {
76   class process *client;
77   proc *ipcblk;
78   ipc_retval td_retval[2];
79 };
80 #define td_proc ipcblk
81 #define p_pid cygpid
82 #endif
83
84 #endif /* __CYGSERVER_IPC_H__ */