0181e40dbc0b8ed5a56296ce263457e75855710b
[kopensolaris-gnu/glibc.git] / sysdeps / unix / sysv / solaris2 / kopensolaris-gnu / doorP.h
1 /* Copyright (C) 2008 Free Software Foundation, Inc.
2    This file is part of the GNU C Library.
3    Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
4
5    The GNU C Library is free software; you can redistribute it and/or
6    modify it under the terms of the GNU Lesser General Public
7    License as published by the Free Software Foundation; either
8    version 2.1 of the License, or (at your option) any later version.
9
10    The GNU C Library is distributed in the hope that it will be useful,
11    but WITHOUT ANY WARRANTY; without even the implied warranty of
12    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13    Lesser General Public License for more details.
14
15    You should have received a copy of the GNU Lesser General Public
16    License along with the GNU C Library; if not, write to the Free
17    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18    02111-1307 USA.  */
19
20 #ifndef _DOORP_H
21 #define _DOORP_H
22
23 #define DOOR_UNREF              0x01
24 #define DOOR_PRIVATE            0x02
25 #define DOOR_LOCAL              0x04
26 #define DOOR_REVOKED            0x08
27 #define DOOR_UNREF_MULTI        0x10
28 #define DOOR_IS_UNREF           0x20
29 #define DOOR_REFUSE_DESC        0x40
30 #define DOOR_NO_CANCEL          0x80
31
32 /* The default stack size is 1-2M so reserving 16K is reasonable.  */
33 #define DOOR_MIN_STACKSIZE      16384
34
35 #ifndef __ASSEMBLER__
36
37 #include <sys/types.h>
38
39 typedef struct door_desc door_desc_t;
40 typedef struct door_info door_info_t;
41 typedef struct door_arg door_arg_t;
42 typedef void door_server_func_t (door_info_t *);
43
44 typedef struct door_cred
45   {
46         uid_t dc_euid;
47         gid_t dc_egid;
48         uid_t dc_ruid;
49         gid_t dc_rgid;
50         pid_t dc_pid;
51         int dc_resv[4];
52   } door_cred_t;
53
54 typedef struct door_return_desc
55   {
56         door_desc_t *desc_ptr;
57         unsigned int desc_num;
58   } door_return_desc_t;
59
60 struct door_results
61   {
62         void *cookie;
63         char *data_ptr;
64         size_t data_size;
65         door_desc_t *desc_ptr;
66         size_t desc_num;
67         void (*pc)(void);
68         int nservers;
69         door_info_t *door_info;
70   };
71
72 int __door_return (long, long, long, long, long, long);
73
74 #endif /* __ASSEMBLER__ */
75
76 #endif /* _DOORP_H */