summaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/door.h
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/door.h')
-rw-r--r--sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/door.h143
1 files changed, 143 insertions, 0 deletions
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/door.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/door.h
new file mode 100644
index 0000000000..7673293bc7
--- /dev/null
+++ b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/door.h
@@ -0,0 +1,143 @@
+/* Declarations of privilege functions and types.
+ Copyright (C) 2008 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#ifndef _SYS_DOOR_H
+#define _SYS_DOOR_H
+
+#include <sys/types.h>
+#include <sys/isa_defs.h>
+
+#define DOOR_CREATE 0
+#define DOOR_REVOKE 1
+#define DOOR_INFO 2
+#define DOOR_CALL 3
+#define DOOR_BIND 6
+#define DOOR_UNBIND 7
+#define DOOR_UNREFSYS 8
+#define DOOR_UCRED 9
+#define DOOR_RETURN 10
+#define DOOR_GETPARAM 11
+#define DOOR_SETPARAM 12
+
+#define DOOR_INVAL -1
+#define DOOR_UNREF_DATA ((void *)1)
+
+#define DOOR_QUERY -2
+
+#define DOOR_UNREF 0x01
+#define DOOR_PRIVATE 0x02
+#define DOOR_UNREF_MULTI 0x10
+#define DOOR_REFUSE_DESC 0x40
+#define DOOR_NO_CANCEL 0x80
+
+#define DOOR_LOCAL 0x04
+#define DOOR_REVOKED 0x08
+#define DOOR_IS_UNREF 0x20
+
+#define DOOR_CREATE_MASK (DOOR_UNREF | DOOR_PRIVATE | \
+ DOOR_UNREF_MULTI | DOOR_REFUSE_DESC | DOOR_NO_CANCEL)
+#define DOOR_KI_CREATE_MASK (DOOR_UNREF | DOOR_UNREF_MULTI)
+
+#define DOOR_ATTR_MASK (DOOR_CREATE_MASK | DOOR_LOCAL | DOOR_REVOKED | \
+ DOOR_IS_UNREF)
+
+#define DOOR_DESCRIPTOR 0x10000
+#define DOOR_RELEASE 0x40000
+#define DOOR_DELAY 0x80000
+#define DOOR_UNREF_ACTIVE 0x100000
+
+#define DOOR_PARAM_DESC_MAX 1
+#define DOOR_PARAM_DATA_MAX 2
+#define DOOR_PARAM_DATA_MIN 3
+
+typedef unsigned long long door_ptr_t;
+typedef unsigned int door_attr_t;
+typedef unsigned long long door_id_t;
+
+#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
+# pragma pack(4)
+#endif
+
+typedef struct door_info
+ {
+ pid_t di_target;
+ door_ptr_t di_proc;
+ door_ptr_t di_data;
+ door_attr_t di_attributes;
+ door_id_t di_uniquifier;
+ int di_resv[4];
+ } door_info_t;
+
+typedef struct door_desc
+ {
+ door_attr_t d_attributes;
+ union
+ {
+ struct
+ {
+ int d_descriptor;
+ door_id_t d_id;
+ } d_desc;
+ int d_resv[5];
+ } d_data;
+} door_desc_t;
+
+#if _LONG_LONG_ALIGNMENT == 8 && _LONG_LONG_ALIGNMENT_32 == 4
+# pragma pack()
+#endif
+
+typedef struct door_cred
+ {
+ uid_t dc_euid;
+ gid_t dc_egid;
+ uid_t dc_ruid;
+ gid_t dc_rgid;
+ pid_t dc_pid;
+ int dc_resv[4];
+ } door_cred_t;
+
+typedef struct door_arg
+ {
+ char *data_ptr;
+ size_t data_size;
+ door_desc_t *desc_ptr;
+ unsigned int desc_num;
+ char *rbuf;
+ size_t rsize;
+ } door_arg_t;
+
+struct door_results
+ {
+ void *cookie;
+ char *data_ptr;
+ size_t data_size;
+ door_desc_t *desc_ptr;
+ size_t desc_num;
+ void (*pc)(void);
+ int nservers;
+ door_info_t *door_info;
+ };
+
+typedef struct door_return_desc
+ {
+ door_desc_t *desc_ptr;
+ unsigned int desc_num;
+ } door_return_desc_t;
+
+#endif /* _SYS_DOOR_H */