Add headers for OpenSolaris extensions that glibc implements
authorDavid Bartley <dtbartle@glibc.(none)>
Sun, 1 Feb 2009 04:09:51 +0000 (04:09 +0000)
committerDavid Bartley <dtbartle@glibc.(none)>
Sun, 1 Feb 2009 04:09:51 +0000 (04:09 +0000)
54 files changed:
sysdeps/generic/ldsodefs.h
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/Makefile
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/auditP.h
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/deflt.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/defltP.h
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/door.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/doorP.h
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/ldsodefs.h
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/port.c
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/port.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/portP.h
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/priv.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/privP.h
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/priv_str.c
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/procfs.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/psetP.h [deleted file]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/pset_getloadavg.c
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/rctl.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/rctlP.h
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/reboot.c
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/swapoff.c
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/swapon.c
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/acct.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/acctctl.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/corectl.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/door.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/exacct.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/mount.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/old_procfs.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/port.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/priv.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/priv_names.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/processor.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/procfs.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/pset.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/rctl.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/task.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/uadmin.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/utssys.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/vfstab.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/zone.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/uadminP.h [deleted file]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/ucred.c
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/ucred.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/ucredP.h
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/ustat.c
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/ustatP.h [deleted file]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/vfsent.c [deleted file]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/vfsentP.h [deleted file]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/vfstab.c [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/x86/door-offsets.sym
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/zone.c
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/zone.h [new file with mode: 0644]
sysdeps/unix/sysv/solaris2/kopensolaris-gnu/zoneP.h [deleted file]

index da5fbab..fe3811d 100644 (file)
@@ -57,6 +57,10 @@ __BEGIN_DECLS
 # define D_PTR(map, i) (map)->i->d_un.d_ptr
 #endif
 
+#ifndef TLS_STATIC_EXTRA_SURPLUS
+# define TLS_STATIC_EXTRA_SURPLUS 0
+#endif
+
 /* Result of the lookup functions and how to retrieve the base address.  */
 typedef struct link_map *lookup_t;
 #define LOOKUP_VALUE(map) map
index 2e3373a..b04d5dc 100644 (file)
@@ -35,7 +35,7 @@ sysdep_routines +=  gethrtime mount umount umount2 systeminfo resolvepath \
     _so_socket _so_socketpair _sysconfig rctl atomic door __door_return \
     getexecname is_system_labeled privP modctl acl facl lltostr ulltostr \
     _getauthnam _getauthattr deflt _getprofnam _getprofattr _getusernam \
-    _getuserattr _getauuserent _getauusernam _getexecattr vfsent fdwalk \
+    _getuserattr _getauuserent _getauusernam _getexecattr vfstab fdwalk \
     closefrom ipsecalg gethostent sigsendset sigsend stack_getbounds \
     thr_sighndlrinfo _getexecprof _fgetuserattr priv_str _sbrk_grow_aligned \
     cftime ascftime inet_ntoa_r
@@ -47,11 +47,15 @@ sysdep_routines += sys_fdsync sys_brk sys_fcntl sys_utssys sys_lwp_private \
 sysdep_headers += sys/feature_tests.h sys/dirent.h sys/utime.h sys/machelf.h \
     sys/systeminfo.h sys/link.h sys/procfs_isa.h sys/ttold.h sys/procset.h \
     sys/synch.h sys/fork.h sys/sockio.h sys/ioccom.h sys/tty.h sys/priocntl.h \
-    sys/trap.h sys/sysconfig.h sys/ptms.h sys/stack.h sys/regset.h bits/regset.h sys/fault.h \
+    sys/trap.h sys/sysconfig.h sys/ptms.h sys/stack.h sys/regset.h \
+    bits/regset.h sys/priv.h sys/priv_names.h sys/uadmin.h sys/vfstab.h \
+    sys/fault.h sys/door.h sys/mount.h sys/procfs.h sys/old_procfs.h sys/port.h \
     sys/reg.h sys/siginfo.h sys/types32.h sys/isa_defs.h sys/int_types.h \
     sys/inttypes.h sys/atomic.h sys/machtypes.h sys/elf.h sys/mkdev.h \
-    sys/klog.h
-sysdep_headers += rtld_db.h pcsample.h atomic.h bits/machtypes.h
+    sys/klog.h sys/zone.h sys/processor.h sys/pset.h sys/rctl.h sys/task.h \
+    sys/exacct.h sys/acct.h sys/acctctl.h sys/utssys.h sys/corectl.h
+sysdep_headers += rtld_db.h pcsample.h atomic.h bits/machtypes.h door.h \
+    ucred.h priv.h zone.h port.h deflt.h procfs.h rctl.h
 headers := $(filter-out sys/sysinfo.h, $(headers))
 endif
 
index 634cbf2..34144be 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <sys/types.h>
 #include <nss/nss.h>
+#include <ucred.h>
 
 #define NSS_BUFLEN_AUDITUSER 1024
 
@@ -62,7 +63,6 @@ typedef struct au_user_str_s
        char *au_never;
   } au_user_str_t;
 
-typedef struct _mac_label_impl m_label_t;
 typedef m_label_t bslabel_t;
 
 #define AU_NOAUDITID   ((au_id_t)-2)
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/deflt.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/deflt.h
new file mode 100644 (file)
index 0000000..326ba7e
--- /dev/null
@@ -0,0 +1,41 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   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 _DEFLT_H
+#define _DEFLT_H
+
+#include <features.h>
+
+#define DC_GETFLAGS    0
+#define DC_SETFLAGS    1
+
+#define DC_CASE                0x01
+#define DC_NOREWIND    0x02
+#define DC_STRIP_QUOTES        0x04
+#define DC_STD         DC_CASE
+
+__BEGIN_DECLS
+
+extern int defopen (char *);
+extern char *defread (char *);
+extern int defcntl (int, int);
+
+__END_DECLS
+
+#endif /* _DEFLT_H */
index 6217dd8..2505c44 100644 (file)
 #ifndef _DEFLTP_H
 #define _DEFLTP_H
 
-#define _DEFLT_BUFSIZE 1024
-
-#define DC_GETFLAGS    0
-#define DC_SETFLAGS    1
+#include <deflt.h>
 
-#define DC_CASE                0x01
-#define DC_NOREWIND    0x02
-#define DC_STRIP_QUOTES        0x04
-#define DC_STD         DC_CASE
+#define _DEFLT_BUFSIZE 1024
 
 #endif /* _DEFLTP_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/door.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/door.h
new file mode 100644 (file)
index 0000000..90b2fd3
--- /dev/null
@@ -0,0 +1,47 @@
+/* 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 _DOOR_H
+#define _DOOR_H
+
+#include <sys/door.h>
+#include <ucred.h>
+#include <features.h>
+
+typedef void door_server_func_t (door_info_t *);
+
+__BEGIN_DECLS
+
+extern int door_create (void (*)(void *, char *, size_t, door_desc_t *, uint_t),
+    void *, uint_t);
+extern int door_revoke (int);
+extern int door_info (int, door_info_t *);
+extern int door_call (int, door_arg_t *);
+extern int door_return (char *, size_t, door_desc_t *, uint_t);
+extern int door_cred (door_cred_t *);
+extern int door_ucred (ucred_t **);
+extern int door_bind (int);
+extern int door_unbind (void);
+extern int door_getparam (int, int, size_t *);
+extern int door_setparam (int, int, size_t);
+extern door_server_func_t *door_server_create (door_server_func_t *);
+
+__END_DECLS
+
+#endif /* _DOOR_H */
index 0181e40..40c1dea 100644 (file)
 #ifndef _DOORP_H
 #define _DOORP_H
 
-#define DOOR_UNREF             0x01
-#define DOOR_PRIVATE           0x02
-#define DOOR_LOCAL             0x04
-#define DOOR_REVOKED           0x08
-#define DOOR_UNREF_MULTI       0x10
-#define DOOR_IS_UNREF          0x20
-#define DOOR_REFUSE_DESC       0x40
-#define DOOR_NO_CANCEL         0x80
+#include <door.h>
 
 /* The default stack size is 1-2M so reserving 16K is reasonable.  */
 #define DOOR_MIN_STACKSIZE     16384
 
-#ifndef __ASSEMBLER__
-
-#include <sys/types.h>
-
-typedef struct door_desc door_desc_t;
-typedef struct door_info door_info_t;
-typedef struct door_arg door_arg_t;
-typedef void door_server_func_t (door_info_t *);
-
-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_return_desc
-  {
-       door_desc_t *desc_ptr;
-       unsigned int desc_num;
-  } door_return_desc_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;
-  };
-
 int __door_return (long, long, long, long, long, long);
 
-#endif /* __ASSEMBLER__ */
-
 #endif /* _DOORP_H */
index 734a6c6..c4b6aa2 100644 (file)
@@ -28,9 +28,7 @@ extern const char * _dl_sun_execname;
 extern int _dl_malloc_prot_exec;
 
 /* Since we use __thread in a few places in libc, we need a bit more surplus.  */
-#include <deflt.h>
-#include <vfsentP.h>
-#define TLS_STATIC_EXTRA_SURPLUS       (2 * (_DEFLT_BUFSIZE + VFS_LINE_MAX + 32))
+#define TLS_STATIC_EXTRA_SURPLUS       4096
 
 /* Get the real definitions.  */
 #include_next <ldsodefs.h>
index 9a4f3e0..72a0bcc 100644 (file)
@@ -18,9 +18,8 @@
    02111-1307 USA.  */
 
 #include <inline-syscall.h>
-#include <sys/types.h>
-#include <sys/param.h>
 #include <portP.h>
+#include <port.h>
 
 /* SYS_port returns a 64-bit int but the port_* calls return a 32-bit int, so
    we can't implement these directly in syscalls.list.  Whenever the 2nd
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/port.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/port.h
new file mode 100644 (file)
index 0000000..37915d7
--- /dev/null
@@ -0,0 +1,35 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   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 _PORT_H
+#define _PORT_H
+
+#include <sys/types.h>
+#include <sys/port.h>
+
+int port_create (void);
+int port_associate (int, int, uintptr_t, int, void *);
+int port_dissociate (int, int, uintptr_t);
+int port_send (int, int, void *);
+int port_sendn (int [], int [], uint_t, int, void *);
+int port_get (int, port_event_t *, struct timespec *);
+int port_getn (int, port_event_t [], uint_t, uint_t *, struct timespec *);
+int port_alert (int, int, int, void *);
+
+#endif /* _PORT_H */
index 5c04608..43b329c 100644 (file)
 #ifndef _PORTP_H
 #define _PORTP_H
 
-#include <sys/types.h>
-
 #define PORT_SYS_NOPORT                0x100
-
-#define PORT_MAX_LIST  8192
-
-typedef struct port_event
-  {
-       int portev_events;
-       unsigned short portev_source;
-       unsigned short portev_pad;
-       uintptr_t portev_object;
-       void *portev_user;
-  } port_event_t;
+#define PORT_MAX_LIST          8192
 
 #endif /* _PORTP_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/priv.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/priv.h
new file mode 100644 (file)
index 0000000..6232991
--- /dev/null
@@ -0,0 +1,75 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   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 _PRIV_H
+#define _PRIV_H
+
+#include <sys/priv.h>
+#include <features.h>
+
+#define PRIV_STR_PORT  0x00
+#define PRIV_STR_LIT   0x01
+#define PRIV_STR_SHORT 0x02
+
+#define PRIV_ALLSETS   (priv_ptype_t)0
+
+__BEGIN_DECLS
+
+extern int setppriv (priv_op_t, priv_ptype_t, const priv_set_t *);
+extern int getppriv (priv_ptype_t, priv_set_t *);
+extern int setpflags (unsigned int, unsigned int);
+extern unsigned int getpflags (unsigned int);
+extern const priv_impl_info_t *getprivimplinfo (void);
+
+extern int priv_set (priv_op_t, priv_ptype_t, ...);
+extern boolean_t priv_ineffect(const char *);
+
+extern priv_set_t *priv_str_to_set (const char *, const char *, const char **);
+extern char *priv_set_to_str (const priv_set_t *, char, int);
+
+extern int priv_getbyname (const char *);
+extern const char *priv_getbynum (int);
+extern int priv_getsetbyname (const char *);
+extern const char *priv_getsetbynum (int);
+
+extern char *priv_gettext (const char *);
+
+extern priv_set_t *priv_allocset (void);
+extern void priv_freeset (priv_set_t *);
+
+extern void priv_emptyset (priv_set_t *);
+extern void priv_fillset (priv_set_t *);
+
+extern boolean_t priv_isemptyset (const priv_set_t *);
+extern boolean_t priv_isfullset (const priv_set_t *);
+extern boolean_t priv_isequalset (const priv_set_t *, const priv_set_t *);
+extern boolean_t priv_issubset (const priv_set_t *, const priv_set_t *);
+extern boolean_t priv_ismember (const priv_set_t *, const char *);
+
+extern void priv_intersect (const priv_set_t *, priv_set_t *);
+extern void priv_union (const priv_set_t *, priv_set_t *);
+extern void priv_inverse (priv_set_t *);
+
+extern int priv_addset (priv_set_t *, const char *);
+extern void priv_copyset (const priv_set_t *, priv_set_t *);
+extern int priv_delset (priv_set_t *, const char *);
+
+__END_DECLS
+
+#endif /* _PRIV_H */
index 1b178ba..3804524 100644 (file)
 #ifndef _PRIVP_H
 #define _PRIVP_H
 
-#include <sys/types.h>
-#include <stdint.h>
-
-typedef uint32_t priv_chunk_t;
-typedef struct priv_set priv_set_t;
-typedef const char *priv_ptype_t;
-
-typedef struct prpriv
-  {
-       uint32_t pr_nsets;
-       uint32_t pr_setsize;
-       uint32_t pr_infosize;
-       priv_chunk_t pr_sets[1];
-  } prpriv_t;
-
-typedef struct priv_impl_info
-  {
-       uint32_t priv_headersize;
-       uint32_t priv_flags;
-       uint32_t priv_nsets;
-       uint32_t priv_setsize;
-       uint32_t priv_max;
-       uint32_t priv_infosize;
-       uint32_t priv_globalinfosize;
-  } priv_impl_info_t;
-
-#define PRIV_IMPL_INFO_SIZE(p) \
-       ((p)->priv_headersize + (p)->priv_globalinfosize)
-
-typedef struct priv_info
-  {
-       uint32_t priv_info_type;
-       uint32_t priv_info_size;
-  } priv_info_t;
-
-typedef struct priv_info_uint
-  {
-       priv_info_t info;
-       unsigned int val;
-  } priv_info_uint_t;
-
-typedef struct priv_info_set
-  {
-       priv_info_t info;
-       priv_chunk_t set[1];
-  } priv_info_set_t;
-
-typedef struct priv_info_names
-  {
-       priv_info_t info;
-       int cnt;
-       char names[1];
-  } priv_info_names_t;
-
-#define PRIV_INFO_SETNAMES     1
-#define PRIV_INFO_PRIVNAMES    2
-#define PRIV_INFO_BASICPRIVS   3
-#define PRIV_INFO_FLAGS                4
+#include <priv.h>
 
 typedef struct priv_data
   {
@@ -89,22 +32,7 @@ typedef struct priv_data
        priv_set_t *pd_basicprivs;
   } priv_data_t;
 
-typedef enum priv_op
-{
-       PRIV_ON,
-       PRIV_OFF,
-       PRIV_SET
-} priv_op_t;
-
-#define PRIV_EFFECTIVE         "Effective"
-#define PRIV_INHERITABLE       "Inheritable"
-#define PRIV_PERMITTED         "Permitted"
-#define PRIV_LIMIT             "Limit"
-
-#define PU_RESETGROUPS         0x01
-#define PU_LIMITPRIVS          0x02
-#define PU_INHERITPRIVS                0x04
-#define PU_CLEARLIMITSET       0x08
+extern const priv_data_t * __priv_parse_data_cached (void);
 
 #define __NPRIVBITS    (8 * sizeof (priv_chunk_t))
 #define __PRIVELT(pr)  ((pr) / __NPRIVBITS)
@@ -112,21 +40,9 @@ typedef enum priv_op
 #define __PRIVSETCHUNKS        (getprivimplinfo()->priv_setsize)
 #define __PRIVSETSIZE  (__PRIVSETCHUNKS * sizeof (priv_chunk_t))
 
-extern const priv_data_t * __priv_parse_data_cached (void);
-extern const priv_impl_info_t *getprivimplinfo (void);
-extern int setppriv (priv_op_t, priv_ptype_t, const priv_set_t *);
-extern int getppriv (priv_ptype_t, priv_set_t *);
-extern int priv_getsetbyname (const char *);
-extern priv_set_t *priv_allocset (void);
-extern void priv_freeset (priv_set_t *sp);
-extern void priv_union (const priv_set_t *src, priv_set_t *dst);
-extern void priv_intersect (const priv_set_t *src, priv_set_t *dst);
-extern void priv_emptyset (priv_set_t *sp);
-extern void priv_fillset (priv_set_t *sp);
-extern int priv_addset (priv_set_t *sp, const char *priv);
-extern int priv_delset (priv_set_t *sp, const char *priv);
-extern void priv_copyset (const priv_set_t *src, priv_set_t *dst);
-extern boolean_t priv_issubset (const priv_set_t *src, const priv_set_t *dst);
-extern int priv_getbyname (const char *privname);
+#define PU_RESETGROUPS         0x01
+#define PU_LIMITPRIVS          0x02
+#define PU_INHERITPRIVS                0x04
+#define PU_CLEARLIMITSET       0x08
 
 #endif /* _PRIVP_H */
index cc58b71..10e615a 100644 (file)
@@ -18,7 +18,8 @@
    02111-1307 USA.  */
 
 #include <privP.h>
-#include <zoneP.h>
+#include <priv.h>
+#include <zone.h>
 #include <string.h>
 #include <stdlib.h>
 #include <errno.h>
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/procfs.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/procfs.h
new file mode 100644 (file)
index 0000000..6b06e5b
--- /dev/null
@@ -0,0 +1,30 @@
+/* Include file for getting new procfs API
+   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 _PROCFS_H
+#define _PROCFS_H
+
+#ifdef _STRUCTURED_PROC
+# undef _STRUCTURED_PROC
+#endif
+#define _STRUCTURED_PROC    1
+
+#include <sys/procfs.h>
+
+#endif /* _PROCFS_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/psetP.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/psetP.h
deleted file mode 100644 (file)
index 8826e03..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/* Declarations of processor sets.
-   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 _PSETP_H
-#define _PSETP_H
-
-typedef int psetid_t;
-
-#endif /* _PSETP_H */
index bceb573..b88bb90 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307 USA.  */
 
 #include <inline-syscall.h>
-#include <psetP.h>
+#include <sys/pset.h>
 
 DECLARE_INLINE_SYSCALL (int, pset_getloadavg, int *buf, int nelem);
 
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/rctl.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/rctl.h
new file mode 100644 (file)
index 0000000..c7d1793
--- /dev/null
@@ -0,0 +1,48 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   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 _RCTL_H
+#define _RCTL_H
+
+#include <sys/rctl.h>
+#include <sys/types.h>
+#include <features.h>
+
+__BEGIN_DECLS
+
+int rctl_walk(int (*)(const char *, void *), void *);
+
+hrtime_t rctlblk_get_firing_time (rctlblk_t *);
+unsigned int rctlblk_get_global_action (rctlblk_t *);
+unsigned int rctlblk_get_global_flags (rctlblk_t *);
+unsigned int rctlblk_get_local_action (rctlblk_t *, int *);
+unsigned int rctlblk_get_local_flags (rctlblk_t *);
+rctl_priv_t rctlblk_get_privilege (rctlblk_t *);
+id_t rctlblk_get_recipient_pid (rctlblk_t *);
+rctl_qty_t rctlblk_get_value(rctlblk_t *);
+rctl_qty_t rctlblk_get_enforced_value (rctlblk_t *);
+void rctlblk_set_local_action (rctlblk_t *, unsigned int, int);
+void rctlblk_set_local_flags (rctlblk_t *, unsigned int);
+void rctlblk_set_privilege (rctlblk_t *, rctl_priv_t);
+void rctlblk_set_recipient_pid (rctlblk_t *, id_t);
+size_t rctlblk_size (void);
+
+__END_DECLS
+
+#endif /* _RCTL_H */
index fad849d..8caa812 100644 (file)
 #ifndef _RCTLP_H
 #define _RCTLP_H
 
-#include <sys/types.h>
-
-#define RCTL_GLOBAL_ACTION_MASK        0xFFFF0000
-#define RCTL_LOCAL_ACTION_MASK 0xFFFF0000
-
-typedef unsigned long long rctl_qty_t;
-typedef int rctl_priv_t;
-typedef struct rctlblk rctlblk_t;
+#include <sys/rctl.h>
 
 typedef struct rctl_opaque
   {
index cf811ce..29f11a5 100644 (file)
@@ -21,7 +21,7 @@
 
 #include <sys/types.h>
 #include <sys/reboot.h>
-#include <uadminP.h>
+#include <sys/uadmin.h>
 #include <bp-checks.h>
 
 int
index b18eca9..fd03701 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307 USA.  */
 
 #include <sys/swap.h>
-#include <uadminP.h>
+#include <sys/uadmin.h>
 #include <errno.h>
 
 int
index f70f98f..3ddbf01 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307 USA.  */
 
 #include <sys/swap.h>
-#include <uadminP.h>
+#include <sys/uadmin.h>
 #include <errno.h>
 
 int
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/acct.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/acct.h
new file mode 100644 (file)
index 0000000..32fef42
--- /dev/null
@@ -0,0 +1,62 @@
+/* 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_ACCT_H
+#define _SYS_ACCT_H
+
+#include <features.h>
+#include <sys/types.h>
+#include <sys/types32.h>
+
+#define AFORK          0001
+#define ASU            0002
+#ifdef SUN_SRC_COMPAT
+# define ACOMPAT       0004
+# define ACORE         0010
+# define AXSIG         0020
+#endif
+#define AEXPND         0040
+#define ACCTF          0300
+
+typedef unsigned short comp_t;
+
+struct acct
+  {
+       char ac_flag;
+       char ac_stat;
+       uid32_t ac_uid;
+       gid32_t ac_gid;
+       dev32_t ac_tty;
+       time32_t ac_btime;
+       comp_t ac_utime;
+       comp_t ac_stime;
+       comp_t ac_etime;
+       comp_t ac_mem;
+       comp_t ac_io;
+       comp_t ac_rw;
+       char ac_comm[8];
+};
+
+__BEGIN_DECLS
+
+extern int acct (const char *);
+
+__END_DECLS
+
+#endif /* _SYS_ACCT_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/acctctl.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/acctctl.h
new file mode 100644 (file)
index 0000000..f3664c1
--- /dev/null
@@ -0,0 +1,155 @@
+/* Declarations of acctlctl function 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_ACCTCTL_H
+#define _SYS_ACCTCTL_H
+
+#include <sys/types.h>
+#include <features.h>
+
+#define AC_PROC                (0x1 << 28)
+#define AC_TASK                (0x2 << 28)
+#define AC_FLOW                (0x4 << 28)
+#define AC_MODE(x)     ((x) & 0xf0000000)
+
+#define AC_FILE_SET    0x01
+#define AC_FILE_GET    0x02
+#define AC_RES_SET     0x04
+#define AC_RES_GET     0x08
+#define AC_STATE_SET   0x10
+#define AC_STATE_GET   0x20
+#define AC_OPTION(x)   ((x) & 0x0fffffff)
+
+enum
+  {
+       AC_NONE = 0,
+#define AC_NONE                        AC_NONE
+       AC_PROC_PID = 1,
+#define AC_PROC_PID            AC_PROC_PID
+       AC_PROC_UID = 2,
+#define AC_PROC_UID            AC_PROC_UID
+       AC_PROC_GID = 3,
+#define AC_PROC_GID            AC_PROC_GID
+       AC_PROC_PROJID = 4,
+#define AC_PROC_PROJID         AC_PROC_PROJID
+       AC_PROC_TASKID = 5,
+#define AC_PROC_TASKID         AC_PROC_TASKID
+       AC_PROC_CPU = 6,
+#define AC_PROC_CPU            AC_PROC_CPU
+       AC_PROC_TIME = 7,
+#define AC_PROC_TIME           AC_PROC_TIME
+       AC_PROC_COMMAND = 8,
+#define AC_PROC_COMMAND                AC_PROC_COMMAND
+       AC_PROC_TTY = 9,
+#define AC_PROC_TTY            AC_PROC_TTY
+       AC_PROC_HOSTNAME = 10,
+#define AC_PROC_HOSTNAME       AC_PROC_HOSTNAME
+       AC_PROC_MICROSTATE = 11,
+#define AC_PROC_MICROSTATE     AC_PROC_MICROSTATE
+       AC_PROC_FLAG = 12,
+#define AC_PROC_FLAG           AC_PROC_FLAG
+       AC_PROC_ANCPID = 13,
+#define AC_PROC_ANCPID         AC_PROC_ANCPID
+       AC_PROC_WAIT_STATUS = 14,
+#define AC_PROC_WAIT_STATUS    AC_PROC_WAIT_STATUS
+       AC_PROC_ZONENAME = 15,
+#define AC_PROC_ZONENAME       AC_PROC_ZONENAME
+       AC_PROC_MEM = 16,
+#define AC_PROC_MEM            AC_PROC_MEM
+       AC_PROC_MAX_RES = 17
+#define AC_PROC_MAX_RES                AC_PROC_MAX_RES
+  };
+
+enum
+  {
+       AC_TASK_TASKID = 1,
+#define AC_TASK_TASKID         AC_TASK_TASKID
+       AC_TASK_PROJID = 2,
+#define AC_TASK_PROJID         AC_TASK_PROJID
+       AC_TASK_CPU = 3,
+#define AC_TASK_CPU            AC_TASK_CPU
+       AC_TASK_TIME = 4,
+#define AC_TASK_TIME           AC_TASK_TIME
+       AC_TASK_HOSTNAME = 5,
+#define AC_TASK_HOSTNAME       AC_TASK_HOSTNAME
+       AC_TASK_MICROSTATE = 6,
+#define AC_TASK_MICROSTATE     AC_TASK_MICROSTATE
+       AC_TASK_ANCTASKID = 7,
+#define AC_TASK_ANCTASKID      AC_TASK_ANCTASKID
+       AC_TASK_ZONENAME = 8
+#define AC_TASK_ZONENAME       AC_TASK_ZONENAME
+#define A_TASK_MAX_RES         AC_TASK_ZONENAME
+  };
+
+enum
+  {
+       AC_FLOW_SADDR = 1,
+#define AC_FLOW_SADDR          AC_FLOW_SADDR
+       AC_FLOW_DADDR = 2,
+#define AC_FLOW_DADDR          AC_FLOW_DADDR
+       AC_FLOW_SPORT = 3,
+#define AC_FLOW_SPORT          AC_FLOW_DPORT
+       AC_FLOW_DPORT =  4,
+#define AC_FLOW_DPORT          AC_FLOW_DPORT
+       AC_FLOW_PROTOCOL = 5,
+#define AC_FLOW_PROTOCOL       AC_FLOW_PROTOCOL
+       AC_FLOW_DSFIELD = 6,
+#define AC_FLOW_DSFIELD                AC_FLOW_DSFIELD
+       AC_FLOW_CTIME = 7,
+#define AC_FLOW_CTIME          AC_FLOW_CTIME
+       AC_FLOW_LSEEN = 8,
+#define AC_FLOW_LSEEN          AC_FLOW_LSEEN
+       AC_FLOW_NBYTES = 9,
+#define AC_FLOW_NBYTES         AC_FLOW_NBYTES
+       AC_FLOW_NPKTS = 10,
+#define AC_FLOW_NPKTS          AC_FLOW_NPKTS
+       AC_FLOW_PROJID = 11,
+#define AC_FLOW_PROJID         AC_FLOW_PROJID
+       AC_FLOW_UID = 12,
+#define AC_FLOW_UID            AC_FLOW_UID
+       AC_FLOW_ANAME = 13
+#define AC_FLOW_ANAME          AC_FLOW_ANAME
+#define AC_FLOW_MAX_RES                AC_FLOW_ANAME
+  };
+
+#define AC_MAX_RES_TMP MAX (AC_PROC_MAX_RES, AC_TASK_MAX_RES)
+#define AC_MAX_RES     MAX (AC_MAX_RES_TMP, AC_FLOW_MAX_RES)
+#define AC_MASK_SZ     BT_BITOUL (AC_MAX_RES + 1)
+
+enum
+  {
+       AC_OFF = 0,
+#define AC_OFF         AC_OFF
+       AC_ON = 1
+#define AC_ON          AC_ON
+  };
+
+typedef struct ac_res
+  {
+       int ar_id;
+       int ar_state;
+  } ac_res_t;
+
+__BEGIN_DECLS
+
+extern int acctctl (int, void *, size_t);
+
+__END_DECLS
+
+#endif /* _SYS_ACCTCTL_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/corectl.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/corectl.h
new file mode 100644 (file)
index 0000000..0b00da4
--- /dev/null
@@ -0,0 +1,76 @@
+/* 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_CORECTL_H
+#define _SYS_CORECTL_H
+
+#include <sys/types.h>
+#include <features.h>
+
+typedef unsigned long long core_content_t;
+
+/* Options.  */
+#define CC_GLOBAL_PATH         0x01
+#define CC_PROCESS_PATH                0x02
+#define CC_GLOBAL_SETID                0x04
+#define CC_PROCESS_SETID       0x08
+#define CC_GLOBAL_LOG          0x10
+
+/* core_content_t values.  */
+#define CC_CONTENT_STACK       0x0001ULL
+#define CC_CONTENT_HEAP                0x0002ULL
+#define CC_CONTENT_SHFILE      0x0004ULL
+#define CC_CONTENT_SHANON      0x0008ULL
+#define CC_CONTENT_TEXT                0x0010ULL
+#define CC_CONTENT_DATA                0x0020ULL
+#define CC_CONTENT_RODATA      0x0040ULL
+#define CC_CONTENT_ANON                0x0080ULL
+#define CC_CONTENT_SHM         0x0100ULL
+#define CC_CONTENT_ISM         0x0200ULL
+#define CC_CONTENT_DISM                0x0400ULL
+#define CC_CONTENT_CTF         0x0800ULL
+#define CC_CONTENT_SYMTAB      0x1000ULL
+#define CC_CONTENT_ALL         0x1FFFULL
+#define CC_CONTENT_NONE                0x0000ULL
+#define CC_CONTENT_DEFAULT \
+       (CC_CONTENT_STACK | CC_CONTENT_HEAP | CC_CONTENT_ISM | \
+        CC_CONTENT_DISM | CC_CONTENT_SHM | CC_CONTENT_SHANON | \
+        CC_CONTENT_TEXT | CC_CONTENT_DATA | CC_CONTENT_RODATA | \
+        CC_CONTENT_ANON | CC_CONTENT_CTF)
+#define CC_CONTENT_INVALID  (-1ULL)
+
+__BEGIN_DECLS
+
+extern  int core_set_options (int);
+extern  int core_get_options (void);
+extern  int core_set_global_path (const char *, size_t);
+extern  int core_get_global_path (char *, size_t);
+extern  int core_set_default_path (const char *, size_t);
+extern  int core_get_default_path (char *, size_t);
+extern  int core_set_process_path (const char *, size_t, pid_t);
+extern  int core_get_process_path (char *, size_t, pid_t);
+extern  int core_set_global_content (const core_content_t *);
+extern  int core_get_global_content (core_content_t *);
+extern  int core_set_default_content (const core_content_t *);
+extern  int core_get_default_content (core_content_t *);
+extern  int core_set_process_content (const core_content_t *, pid_t);
+extern  int core_get_process_content (core_content_t *, pid_t);
+
+__END_DECLS
+
+#endif /* _SYS_CORECTL_H */
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 (file)
index 0000000..7673293
--- /dev/null
@@ -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 */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/exacct.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/exacct.h
new file mode 100644 (file)
index 0000000..0c1481f
--- /dev/null
@@ -0,0 +1,134 @@
+/* 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_EXACCT_H
+#define _SYS_EXACCT_H
+
+#include <sys/types.h>
+#include <sys/procset.h>
+#include <sys/task.h>
+#include <sys/proc.h>
+#include <features.h>
+
+#define EXACCT_VERSION 1
+
+#define EUP_ALLOC      0x00
+#define EUP_NOALLOC    0x01
+#define EUP_ALLOC_MASK 0x02
+
+#define EW_PARTIAL     0x01
+#define EW_INTERVAL    0x02
+#define EW_FINAL       0x04
+
+enum
+  {
+       EP_RAW = 0,
+#define EP_RAW EP_RAW
+       EP_EXACCT_OBJECT = 1
+#define EP_EXACCT_OBJECT       EP_EXACCT_OBJECT
+  };
+
+enum
+  {
+       EXR_OK = 0,
+#define EXR_OK EXR_OK
+       EXR_SYSCALL_FAIL = 1,
+#define EXR_SYSCALL_FAIL       EXR_SYSCALL_FAIL
+       EXR_CORRUPT_FILE = 2,
+#define EXR_CORRUPT_FILE       EXR_CORRUPT_FILE
+       EXR_EOF = 3,
+#define EXR_EOF        EXR_EOF
+       EXR_NO_CREATOR = 4,
+#define EXR_NO_CREATOR EXR_NO_CREATOR
+       EXR_INVALID_BUF = 5,
+#define EXR_INVALID_BUF        EXR_INVALID_BUF
+       EXR_NOTSUPP = 6,
+#define EXR_NOTSUPP    EXR_NOTSUPP
+       EXR_UNKN_VERSION = 7,
+#define EXR_UNKN_VERSION       EXR_UNKN_VERSION
+       EXR_INVALID_OBJ = 8
+#define EXR_INVALID_OBJ        EXR_INVALID_OBJ
+  };
+
+typedef enum
+  {
+       EO_ERROR = -1,
+       EO_NONE = 0,
+       EO_GROUP = 1,
+       EO_ITEM = 2
+  } ea_object_type_t;
+
+#define EXACCT_MAX_BUFSIZE     (64 * 1024) /* 64 kb */
+
+typedef uint64_t ea_size_t;
+typedef uint32_t ea_catalog_t;
+
+typedef struct ea_item
+  {
+       union
+         {
+               uint8_t ei_u_uint8;
+               uint16_t ei_u_uint16;
+               uint32_t ei_u_uint32;
+               uint64_t ei_u_uint64;
+               double ei_u_double;
+               char *ei_u_string;
+               void *ei_u_object;
+               void *ei_u_raw;
+         } ei_u;
+       ea_size_t ei_size;
+  } ea_item_t;
+#define ei_uint8       ei_u.ei_u_uint8
+#define ei_uint16      ei_u.ei_u_uint16
+#define ei_uint32      ei_u.ei_u_uint32
+#define ei_uint64      ei_u.ei_u_uint64
+#define ei_double      ei_u.ei_u_double
+#define ei_string      ei_u.ei_u_string
+#define ei_object      ei_u.ei_u_object
+#define ei_raw         ei_u.ei_u_raw
+
+typedef struct ea_group
+  {
+       uint32_t eg_nobjs;
+       struct ea_object *eg_objs;
+  } ea_group_t;
+
+typedef struct ea_object
+  {
+       ea_object_type_t    eo_type;
+       union
+         {
+               ea_group_t eo_u_group;
+               ea_item_t eo_u_item;
+         } eo_u;
+       struct ea_object *eo_next;
+       ea_catalog_t eo_catalog;
+  } ea_object_t;
+#define eo_group       eo_u.eo_u_group
+#define eo_item                eo_u.eo_u_item
+
+__BEGIN_DECLS
+
+size_t getacct (idtype_t, id_t, void *, size_t);
+int putacct (idtype_t, id_t, void *, size_t, int);
+int wracct (idtype_t, id_t, int);
+
+__END_DECLS
+
+#endif /* _SYS_EXACCT_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/mount.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/mount.h
new file mode 100644 (file)
index 0000000..45c3851
--- /dev/null
@@ -0,0 +1,69 @@
+/* Header file for mounting/unmount OpenSolaris filesystems.
+   Copyright (C) 1996,1997,1998,1999,2000,2004,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.  */
+
+/* This is taken from /usr/include/linux/fs.h.  */
+
+#ifndef _SYS_MOUNT_H
+#define _SYS_MOUNT_H   1
+
+#include <features.h>
+#include <sys/ioctl.h>
+
+
+/* These are the fs-independent mount-flags: up to 16 flags are
+   supported  */
+#define MS_RDONLY      0x0001 /* Mount read-only.  */
+#define MS_FSS         0x0002 /* Old mount.  */
+#define MS_DATA                0x0004 /* 6-argument mount.  */
+#define MS_SYSSPACE    0x0008 /* In kernel space.  */
+#define MS_NOSUID      0x0010 /* Ignore suid and sgid bits.  */
+#define MS_REMOUNT     0x0020 /* Alter flags of a mounted FS.  */
+#define MS_NOTRUNC     0x0040 /* Return ENAMETOOLONG for long filenames.  */
+#define MS_OVERLAY     0x0080 /* Allow overlay mounts.  */
+#define MS_OPTIONSTR   0x0100 /* Data is a an in/out option string.  */
+#define MS_GLOBAL      0x0200 /* Clustering: Mount into global name space.  */
+#define MS_FORCE       0x0400 /* Forced unmount.  */
+#define MS_NOMNTTAB    0x0800 /* Don't show mount in mnttab.  */
+#define MS_SYSSPACE    0x1000
+#define MS_NOCHECK     0x2000
+
+#define MS_MASK                (MS_RDONLY | MS_FSS | MS_DATA | MS_NOSUID | \
+                       MS_REMOUNT | MS_NOTRUNC | MS_OVERLAY | MS_OPTIONSTR | \
+                       MS_GLOBAL | MS_NOMNTTAB)
+#define MS_UMOUNT_MASK (MS_FORCE)
+
+#define MAX_MNTOPT_STR 1024
+
+__BEGIN_DECLS
+
+/* Mount a filesystem.  */
+extern int mount (__const char *__spec, __const char *__dir,
+                 int __mflag_, __const char *__fstype, __const void *__dataptr,
+                 int __datalen, char *__optptr, int __optlen) __THROW;
+
+/* Unmount a filesystem.  */
+extern int umount (__const char *__file) __THROW;
+
+/* Unmount a filesystem.  Force unmounting if FLAG is set to MS_FORCE.  */
+extern int umount2 (__const char *__file, int __flag) __THROW;
+
+__END_DECLS
+
+#endif /* _SYS_MOUNT_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/old_procfs.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/old_procfs.h
new file mode 100644 (file)
index 0000000..e5f9833
--- /dev/null
@@ -0,0 +1,338 @@
+/* Declarations of old procfs structures.
+   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_OLD_PROCFS_H
+#define _SYS_OLD_PROCFS_H      1
+
+#if _STRUCTURED_PROC == 0
+
+#include <sys/types.h>
+#include <sys/procset.h>
+#include <sys/ucontext.h>
+#include <sys/signal.h>
+#include <sys/fault.h>
+
+#define        PIOC            ('q'<<8)
+#define        PIOCSTATUS      (PIOC|1)
+#define        PIOCSTOP        (PIOC|2)
+#define        PIOCWSTOP       (PIOC|3)
+#define        PIOCRUN         (PIOC|4)
+#define        PIOCGTRACE      (PIOC|5)
+#define        PIOCSTRACE      (PIOC|6)
+#define        PIOCSSIG        (PIOC|7)
+#define        PIOCKILL        (PIOC|8)
+#define        PIOCUNKILL      (PIOC|9)
+#define        PIOCGHOLD       (PIOC|10)
+#define        PIOCSHOLD       (PIOC|11)
+#define        PIOCMAXSIG      (PIOC|12)
+#define        PIOCACTION      (PIOC|13)
+#define        PIOCGFAULT      (PIOC|14)
+#define        PIOCSFAULT      (PIOC|15)
+#define        PIOCCFAULT      (PIOC|16)
+#define        PIOCGENTRY      (PIOC|17)
+#define        PIOCSENTRY      (PIOC|18)
+#define        PIOCGEXIT       (PIOC|19)
+#define        PIOCSEXIT       (PIOC|20)
+#define        PIOCSFORK       (PIOC|21)
+#define        PIOCRFORK       (PIOC|22)
+#define        PIOCSRLC        (PIOC|23)
+#define        PIOCRRLC        (PIOC|24)
+#define        PIOCGREG        (PIOC|25)
+#define        PIOCSREG        (PIOC|26)
+#define        PIOCGFPREG      (PIOC|27)
+#define        PIOCSFPREG      (PIOC|28)
+#define        PIOCNICE        (PIOC|29)
+#define        PIOCPSINFO      (PIOC|30)
+#define        PIOCNMAP        (PIOC|31)
+#define        PIOCMAP         (PIOC|32)
+#define        PIOCOPENM       (PIOC|33)
+#define        PIOCCRED        (PIOC|34)
+#define        PIOCGROUPS      (PIOC|35)
+#define        PIOCGETPR       (PIOC|36)
+#define        PIOCGETU        (PIOC|37)
+#define        PIOCSET         (PIOC|38)
+#define        PIOCRESET       (PIOC|39)
+#define        PIOCUSAGE       (PIOC|43)
+#define        PIOCOPENPD      (PIOC|44)
+#define        PIOCLWPIDS      (PIOC|45)
+#define        PIOCOPENLWP     (PIOC|46)
+#define        PIOCLSTATUS     (PIOC|47)
+#define        PIOCLUSAGE      (PIOC|48)
+#define        PIOCNAUXV       (PIOC|49)
+#define        PIOCAUXV        (PIOC|50)
+#define        PIOCGXREGSIZE   (PIOC|51)
+#define        PIOCGXREG       (PIOC|52)
+#define        PIOCSXREG       (PIOC|53)
+
+#define        PIOCNLDT        (PIOC|103)
+#define        PIOCLDT         (PIOC|104)
+
+#define PRCLSZ         8
+#define PRSYSARGS      8
+
+#endif /* _STRUCTURED_PROC == 0 */
+
+typedef struct prstatus
+  {
+       int pr_flags;
+       short pr_why;
+       short pr_what;
+       siginfo_t pr_info;
+       short pr_cursig;
+       unsigned short pr_nlwp;
+       sigset_t pr_sigpend;
+       sigset_t pr_sighold;
+       struct sigaltstack pr_altstack;
+       struct sigaction pr_action;
+       pid_t pr_pid;
+       pid_t pr_ppid;
+       pid_t pr_pgrp;
+       pid_t pr_sid;
+       struct timespec pr_utime;
+       struct timespec pr_stime;
+       struct timespec pr_cutime;
+       struct timespec pr_cstime;
+       char pr_clname[PRCLSZ];
+       short pr_syscall;
+       short pr_nsysarg;
+       long pr_sysarg[PRSYSARGS];
+       id_t pr_who;
+       sigset_t pr_lwppend;
+       struct ucontext *pr_oldcontext;
+       caddr_t pr_brkbase;
+       size_t pr_brksize;
+       caddr_t pr_stkbase;
+       size_t pr_stksize;
+       short pr_processor;
+       short pr_bind;
+       long pr_instr;
+       prgregset_t pr_reg;
+  } prstatus_t;
+
+#if _STRUCTURED_PROC == 0
+
+#define        PR_STOPPED      0x0001
+#define        PR_ISTOP        0x0002
+#define        PR_DSTOP        0x0004
+#define        PR_ASLEEP       0x0008
+#define        PR_FORK         0x0010
+#define        PR_RLC          0x0020
+#define        PR_PTRACE       0x0040
+#define        PR_PCINVAL      0x0080
+#define        PR_ISSYS        0x0100
+#define        PR_STEP         0x0200
+#define        PR_KLC          0x0400
+#define        PR_ASYNC        0x0800
+#define        PR_PCOMPAT      0x1000
+#define        PR_MSACCT       0x2000
+#define        PR_BPTADJ       0x4000
+#define        PR_ASLWP        0x8000
+
+#define        PR_REQUESTED    1
+#define        PR_SIGNALLED    2
+#define        PR_SYSENTRY     3
+#define        PR_SYSEXIT      4
+#define        PR_JOBCONTROL   5
+#define        PR_FAULTED      6
+#define        PR_SUSPENDED    7
+#define        PR_CHECKPOINT   8
+
+#define        PRFNSZ          16
+#define        PRARGSZ         80
+
+#endif /* _STRUCTURED_PROC == 0 */
+
+typedef struct prpsinfo
+  {
+       char pr_state;
+       char pr_sname;
+       char pr_zomb;
+       char pr_nice;
+       unsigned int pr_flag;
+       uid_t pr_uid;
+       gid_t pr_gid;
+       pid_t pr_pid;
+       pid_t pr_ppid;
+       pid_t pr_pgrp;
+       pid_t pr_sid;
+       caddr_t pr_addr;
+       size_t pr_size;
+       size_t pr_rssize;
+       caddr_t pr_wchan;
+       struct timespec pr_start;
+       struct timespec pr_time;
+       int pr_pri;
+       char pr_oldpri;
+       char pr_cpu;
+       o_dev_t pr_ottydev;
+       dev_t pr_lttydev;
+       char pr_clname[PRCLSZ];
+       char pr_fname[PRFNSZ];
+       char pr_psargs[PRARGSZ];
+       short pr_syscall;
+       short pr_fill;
+       struct timespec pr_ctime;
+       size_t pr_bysize;
+       size_t pr_byrssize;
+       int pr_argc;
+       char    **pr_argv;
+       char    **pr_envp;
+       int pr_wstat;
+       unsigned short pr_pctcpu;
+       unsigned short pr_pctmem;
+       uid_t pr_euid;
+       gid_t pr_egid;
+       id_t pr_aslwpid;
+       char pr_dmodel;
+       char pr_pad[3];
+       int pr_filler[6];
+  } prpsinfo_t;
+
+#if _STRUCTURED_PROC == 0
+
+typedef struct prrun
+  {
+       int pr_flags;
+       sigset_t pr_trace;
+       sigset_t pr_sighold;
+       fltset_t pr_fault;
+       caddr_t pr_vaddr;
+       int pr_filler[8];
+  } prrun_t;
+
+#define        PRCSIG          0x001
+#define        PRCFAULT        0x002
+#define        PRSTRACE        0x004
+#define        PRSHOLD         0x008
+#define        PRSFAULT        0x010
+#define        PRSVADDR        0x020
+#define        PRSTEP          0x040
+#define        PRSABORT        0x080
+#define        PRSTOP          0x100
+
+typedef struct prmap
+  {
+       caddr_t pr_vaddr;
+       size_t pr_size;
+       off_t pr_off;
+       unsigned int pr_mflags;
+       unsigned int pr_pagesize;
+       long pr_filler[3];
+  } prmap_t;
+
+#define        MA_READ         0x04
+#define        MA_WRITE        0x02
+#define        MA_EXEC         0x01
+#define        MA_SHARED       0x08
+#define        MA_BREAK        0x10
+#define        MA_STACK        0x20
+
+typedef struct prcred
+  {
+       uid_t pr_euid;
+       uid_t pr_ruid;
+       uid_t pr_suid;
+       gid_t pr_egid;
+       gid_t pr_rgid;
+       gid_t pr_sgid;
+       unsigned int pr_ngroups;
+  } prcred_t;
+
+typedef struct prusage
+  {
+       id_t pr_lwpid;
+       int pr_count;
+       struct timespec pr_tstamp;
+       struct timespec pr_create;
+       struct timespec pr_term;
+       struct timespec pr_rtime;
+       struct timespec pr_utime;
+       struct timespec pr_stime;
+       struct timespec pr_ttime;
+       struct timespec pr_tftime;
+       struct timespec pr_dftime;
+       struct timespec pr_kftime;
+       struct timespec pr_ltime;
+       struct timespec pr_slptime;
+       struct timespec pr_wtime;
+       struct timespec pr_stoptime;
+       struct timespec filltime[6];
+       unsigned long pr_minf;
+       unsigned long pr_majf;
+       unsigned long pr_nswap;
+       unsigned long pr_inblk;
+       unsigned long pr_oublk;
+       unsigned long pr_msnd;
+       unsigned long pr_mrcv;
+       unsigned long pr_sigs;
+       unsigned long pr_vctx;
+       unsigned long pr_ictx;
+       unsigned long pr_sysc;
+       unsigned long pr_ioch;
+       unsigned long   filler[10];
+  } prusage_t;
+
+typedef struct prpageheader
+  {
+       struct timespec pr_tstamp;
+       unsigned long pr_nmap;
+       unsigned long pr_npage;
+  } prpageheader_t;
+
+typedef struct prasmap
+  {
+       caddr_t pr_vaddr;
+       size_t pr_npage;
+       off_t pr_off;
+       unsigned int pr_mflags;
+       unsigned int pr_pagesize;
+       long pr_filler[3];
+  } prasmap_t;
+
+#define        PG_REFERENCED   0x02
+#define        PG_MODIFIED     0x01
+#define        PG_HWMAPPED     0x04
+
+/* based on sig*set */
+
+#define prfillset(set) \
+       { int __cnt = sizeof (*set) / sizeof (uint32_t); \
+       while (--__cnt >= 0) ((uint32_t *)(set))[__cnt] = 0xFFFFFFFF; }
+
+#define premptyset(set) \
+       { int __cnt = sizeof (*set) / sizeof (uint32_t); \
+       while (--__cnt >= 0) ((uint32_t *)(set))[__cnt] = 0; }
+
+#define __prmask(flag) \
+  (((uint32_t) 1) << (((flag) - 1) % (8 * (int)sizeof (uint32_t))))
+
+# define __prword(flag)        (((flag) - 1) / (8 * (int)sizeof (uint32_t)))
+
+#define praddset(set, flag) \
+    (((uint32_t *)(set))[__prword (flag)] |= __prmask (flag))
+
+#define prdelset(set, flag) \
+    (((uint32_t *)(set))[__prword (flag)] &= ~__prmask (flag))
+
+#define prismember(set, flag) \
+       ((((uint32_t *)(set))[__prword (flag)] & __prmask (flag)) ? 1 : 0)
+
+#endif /* _STRUCTURED_PROC == 0 */
+
+#endif /* _SYS_OLD_PROCFS_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/port.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/port.h
new file mode 100644 (file)
index 0000000..a96ff62
--- /dev/null
@@ -0,0 +1,77 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   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_PORT_H
+#define _SYS_PORT_H
+
+#include <sys/types.h>
+
+#define PORT_SOURCE_AIO                1
+#define PORT_SOURCE_TIMER      2
+#define PORT_SOURCE_USER       3
+#define PORT_SOURCE_FD         4
+#define PORT_SOURCE_ALERT      5
+#define PORT_SOURCE_MQ         6
+#define PORT_SOURCE_FILE       7
+
+typedef struct port_event
+  {
+       int portev_events;
+       unsigned short portev_source;
+       unsigned short portev_pad;
+       uintptr_t portev_object;
+       void *portev_user;
+  } port_event_t;
+
+typedef struct  port_notify
+  {
+       int portnfy_port;
+       void *portnfy_user;
+  } port_notify_t;
+
+typedef struct file_obj
+  {
+       struct timespec fo_atime;
+    struct timespec fo_mtime;
+    struct timespec fo_ctime;
+    uintptr_t fo_pad[3];
+    char *fo_name;
+  } file_obj_t;
+
+#define PORT_ALERT_SET         0x01
+#define PORT_ALERT_UPDATE      0x02
+#define PORT_ALERT_INVALID     (PORT_ALERT_SET | PORT_ALERT_UPDATE)
+
+#define FILE_ACCESS            0x00000001
+#define FILE_MODIFIED          0x00000002
+#define FILE_ATTRIB            0x00000004
+#define FILE_NOFOLLOW          0x10000000
+
+#define FILE_DELETE            0x00000010
+#define FILE_RENAME_TO         0x00000020
+#define FILE_RENAME_FROM       0x00000040
+
+#define UNMOUNTED      0x20000000
+
+#define MOUNTEDOVER    0x40000000
+
+#define FILE_EXCEPTION (UNMOUNTED | FILE_DELETE | FILE_RENAME_TO | \
+       FILE_RENAME_FROM | MOUNTEDOVER)
+
+#endif /* _SYS_PORT_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/priv.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/priv.h
new file mode 100644 (file)
index 0000000..1da00b6
--- /dev/null
@@ -0,0 +1,115 @@
+/* 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_PRIV_H
+#define _SYS_PRIV_H
+
+#include <sys/types.h>
+#include <sys/priv_names.h>
+
+/* privsys codes */
+#define        PRIVSYS_SETPPRIV        0
+#define        PRIVSYS_GETPPRIV        1
+#define        PRIVSYS_GETIMPLINFO     2
+#define        PRIVSYS_SETPFLAGS       3
+#define        PRIVSYS_GETPFLAGS       4
+#define        PRIVSYS_ISSETUGID       5
+#define        PRIVSYS_KLPD_REG        6
+#define        PRIVSYS_KLPD_UNREG      7
+
+typedef enum priv_op
+{
+       PRIV_ON,
+       PRIV_OFF,
+       PRIV_SET
+} priv_op_t;
+
+typedef uint32_t priv_chunk_t;
+typedef struct priv_set priv_set_t;
+typedef const char *priv_ptype_t;
+typedef const char *priv_t;
+
+typedef struct priv_impl_info
+{
+       uint32_t priv_headersize;
+       uint32_t priv_flags;
+       uint32_t priv_nsets;
+       uint32_t priv_setsize;
+       uint32_t priv_max;
+       uint32_t priv_infosize;
+       uint32_t priv_globalinfosize;
+} priv_impl_info_t;
+
+#define PRIV_DEBUG             0x0001
+#define PRIV_AWARE             0x0002
+#define PRIV_AWARE_INHERIT     0x0004
+#define __PROC_PROTECT         0x0008
+#define NET_MAC_AWARE          0x0010
+#define NET_MAC_AWARE_INHERIT  0x0020
+#define PRIV_XPOLICY           0x0080
+#define PRIV_USER              (PRIV_DEBUG | NET_MAC_AWARE | \
+       NET_MAC_AWARE_INHERIT |  PRIV_XPOLICY)
+
+#define PRIV_IMPL_INFO_SIZE(p) \
+       ((p)->priv_headersize + (p)->priv_globalinfosize)
+
+typedef struct priv_info
+{
+       uint32_t priv_info_type;
+       uint32_t priv_info_size;
+} priv_info_t;
+
+typedef struct priv_info_uint
+{
+       priv_info_t info;
+       uint_t val;
+} priv_info_uint_t;
+
+typedef struct priv_info_set
+{
+       priv_info_t info;
+       priv_chunk_t set[1];
+} priv_info_set_t;
+
+typedef struct priv_info_names
+{
+       priv_info_t info;
+       int cnt;
+       char names[1];
+} priv_info_names_t;
+
+#define PRIV_PRPRIV_INFO_OFFSET(p) \
+       (sizeof (prpriv_t) + sizeof (priv_chunk_t)) * \
+       ((p)->pr_nsets * (p)->pr_setsize - 1)
+
+#define PRIV_PRPRIV_SIZE(p) \
+       (PRIV_PRPRIV_INFO_OFFSET(p) + (p)->pr_infosize)
+
+#define PRIV_ALL       (-1)
+#define PRIV_MULTIPLE  (-2)
+#define PRIV_NONE      (-3)
+#define PRIV_ALLZONE   (-4)
+#define PRIV_GLOBAL    (-5)
+
+#define PRIV_INFO_SETNAMES     1
+#define PRIV_INFO_PRIVNAMES    2
+#define PRIV_INFO_BASICPRIVS   3
+#define PRIV_INFO_FLAGS                4
+
+#endif /* _SYS_PRIV_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/priv_names.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/priv_names.h
new file mode 100644 (file)
index 0000000..70c4f07
--- /dev/null
@@ -0,0 +1,101 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   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_PRIV_NAMES_H
+#define _SYS_PRIV_NAMES_H
+
+#define        PRIV_CONTRACT_EVENT     ((const char *)"contract_event")
+#define        PRIV_CONTRACT_IDENTITY  ((const char *)"contract_identity")
+#define        PRIV_CONTRACT_OBSERVER  ((const char *)"contract_observer")
+#define        PRIV_CPC_CPU            ((const char *)"cpc_cpu")
+#define        PRIV_DTRACE_KERNEL      ((const char *)"dtrace_kernel")
+#define        PRIV_DTRACE_PROC        ((const char *)"dtrace_proc")
+#define        PRIV_DTRACE_USER        ((const char *)"dtrace_user")
+#define        PRIV_FILE_CHOWN         ((const char *)"file_chown")
+#define        PRIV_FILE_CHOWN_SELF    ((const char *)"file_chown_self")
+#define        PRIV_FILE_DAC_EXECUTE   ((const char *)"file_dac_execute")
+#define        PRIV_FILE_DAC_READ      ((const char *)"file_dac_read")
+#define        PRIV_FILE_DAC_SEARCH    ((const char *)"file_dac_search")
+#define        PRIV_FILE_DAC_WRITE     ((const char *)"file_dac_write")
+#define        PRIV_FILE_DOWNGRADE_SL  ((const char *)"file_downgrade_sl")
+#define        PRIV_FILE_LINK_ANY      ((const char *)"file_link_any")
+#define        PRIV_FILE_OWNER         ((const char *)"file_owner")
+#define        PRIV_FILE_SETID         ((const char *)"file_setid")
+#define        PRIV_FILE_UPGRADE_SL    ((const char *)"file_upgrade_sl")
+#define        PRIV_FILE_FLAG_SET      ((const char *)"file_flag_set")
+#define        PRIV_GRAPHICS_ACCESS    ((const char *)"graphics_access")
+#define        PRIV_GRAPHICS_MAP       ((const char *)"graphics_map")
+#define        PRIV_IPC_DAC_READ       ((const char *)"ipc_dac_read")
+#define        PRIV_IPC_DAC_WRITE      ((const char *)"ipc_dac_write")
+#define        PRIV_IPC_OWNER          ((const char *)"ipc_owner")
+#define        PRIV_NET_BINDMLP        ((const char *)"net_bindmlp")
+#define        PRIV_NET_ICMPACCESS     ((const char *)"net_icmpaccess")
+#define        PRIV_NET_MAC_AWARE      ((const char *)"net_mac_aware")
+#define        PRIV_NET_PRIVADDR       ((const char *)"net_privaddr")
+#define        PRIV_NET_RAWACCESS      ((const char *)"net_rawaccess")
+#define        PRIV_PROC_AUDIT         ((const char *)"proc_audit")
+#define        PRIV_PROC_CHROOT        ((const char *)"proc_chroot")
+#define        PRIV_PROC_CLOCK_HIGHRES ((const char *)"proc_clock_highres")
+#define        PRIV_PROC_EXEC          ((const char *)"proc_exec")
+#define        PRIV_PROC_FORK          ((const char *)"proc_fork")
+#define        PRIV_PROC_INFO          ((const char *)"proc_info")
+#define        PRIV_PROC_LOCK_MEMORY   ((const char *)"proc_lock_memory")
+#define        PRIV_PROC_OWNER         ((const char *)"proc_owner")
+#define        PRIV_PROC_PRIOCNTL      ((const char *)"proc_priocntl")
+#define        PRIV_PROC_SESSION       ((const char *)"proc_session")
+#define        PRIV_PROC_SETID         ((const char *)"proc_setid")
+#define        PRIV_PROC_TASKID        ((const char *)"proc_taskid")
+#define        PRIV_PROC_ZONE          ((const char *)"proc_zone")
+#define        PRIV_SYS_ACCT           ((const char *)"sys_acct")
+#define        PRIV_SYS_ADMIN          ((const char *)"sys_admin")
+#define        PRIV_SYS_AUDIT          ((const char *)"sys_audit")
+#define        PRIV_SYS_CONFIG         ((const char *)"sys_config")
+#define        PRIV_SYS_DEVICES        ((const char *)"sys_devices")
+#define        PRIV_SYS_IPC_CONFIG     ((const char *)"sys_ipc_config")
+#define        PRIV_SYS_LINKDIR        ((const char *)"sys_linkdir")
+#define        PRIV_SYS_MOUNT          ((const char *)"sys_mount")
+#define        PRIV_SYS_IP_CONFIG      ((const char *)"sys_ip_config")
+#define        PRIV_SYS_NET_CONFIG     ((const char *)"sys_net_config")
+#define        PRIV_SYS_NFS            ((const char *)"sys_nfs")
+#define        PRIV_SYS_RES_CONFIG     ((const char *)"sys_res_config")
+#define        PRIV_SYS_RESOURCE       ((const char *)"sys_resource")
+#define        PRIV_SYS_SMB            ((const char *)"sys_smb")
+#define        PRIV_SYS_SUSER_COMPAT   ((const char *)"sys_suser_compat")
+#define        PRIV_SYS_TIME           ((const char *)"sys_time")
+#define        PRIV_SYS_TRANS_LABEL    ((const char *)"sys_trans_label")
+#define        PRIV_VIRT_MANAGE        ((const char *)"virt_manage")
+#define        PRIV_WIN_COLORMAP       ((const char *)"win_colormap")
+#define        PRIV_WIN_CONFIG         ((const char *)"win_config")
+#define        PRIV_WIN_DAC_READ       ((const char *)"win_dac_read")
+#define        PRIV_WIN_DAC_WRITE      ((const char *)"win_dac_write")
+#define        PRIV_WIN_DEVICES        ((const char *)"win_devices")
+#define        PRIV_WIN_DGA            ((const char *)"win_dga")
+#define        PRIV_WIN_DOWNGRADE_SL   ((const char *)"win_downgrade_sl")
+#define        PRIV_WIN_FONTPATH       ((const char *)"win_fontpath")
+#define        PRIV_WIN_MAC_READ       ((const char *)"win_mac_read")
+#define        PRIV_WIN_MAC_WRITE      ((const char *)"win_mac_write")
+#define        PRIV_WIN_SELECTION      ((const char *)"win_selection")
+#define        PRIV_WIN_UPGRADE_SL     ((const char *)"win_upgrade_sl")
+#define        PRIV_XVM_CONTROL        ((const char *)"xvm_control")
+#define        PRIV_EFFECTIVE          ((const char *)"Effective")
+#define        PRIV_INHERITABLE        ((const char *)"Inheritable")
+#define        PRIV_PERMITTED          ((const char *)"Permitted")
+#define        PRIV_LIMIT              ((const char *)"Limit")
+
+#endif /* _SYS_PRIV_NAMES_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/processor.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/processor.h
new file mode 100644 (file)
index 0000000..b8f941e
--- /dev/null
@@ -0,0 +1,83 @@
+/* Declarations of processor-related types/macros.
+   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_PROCESSOR_H
+#define _SYS_PROCESSOR_H
+
+#include <features.h>
+#include <sys/procset.h>
+
+typedef int processorid_t;
+
+typedef struct
+{
+       int pi_state;
+#define PI_TYPELEN     16
+       char pi_processor_type[PI_TYPELEN];
+#define PI_FPUTYPE     32
+       char pi_fputypes[PI_FPUTYPE];
+       int pi_clock;
+} processor_info_t;
+
+/* p_online flag values */
+enum
+{
+       P_OFFLINE = 1,
+#define P_OFFLINE      P_OFFLINE
+       P_ONLINE = 2,
+#define P_ONLINE       P_ONLINE
+       P_STATUS = 3,
+#define P_STATUS       P_STATUS
+       P_FAULTED = 4,
+#define P_FAULTED      P_FAULTED
+#define P_BAD          P_FAULTED
+       P_POWEROFF = 5,
+#define P_POWEROFF     P_POWEROFF
+       P_NOINTR = 6,
+#define P_NOINTR       P_NOINTR
+       P_SPARE = 7,
+#define P_SPARE                P_SPARE
+       P_FORCED = 0x10000000
+#define P_FORCED       P_FORCED
+};
+
+#define PS_OFFLINE     "off-line"
+#define PS_ONLINE      "on-line"
+#define PS_FAULTED     "faulted"
+#define PS_POWEROFF    "powered-off"
+#define PS_NOINTR      "no-intr"
+#define PS_SPARE       "spare"
+
+#define PBIND_NONE     -1
+#define PBIND_QUERY    -2
+#define PBIND_HARD     -3
+#define PBIND_SOFT     -4
+#define PBIND_QUERY_TYPE       -5
+
+__BEGIN_DECLS
+
+extern int processor_info (processorid_t processorid, processor_info_t *infop);
+extern int processor_bind (idtype_t idtype, id_t id, processorid_t processorid,
+     processorid_t *obind);
+extern int p_online (processorid_t processorid, int flag);
+extern processorid_t getcpuid (void);
+
+__END_DECLS
+
+#endif /* _SYS_PROCESSOR_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/procfs.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/procfs.h
new file mode 100644 (file)
index 0000000..7344015
--- /dev/null
@@ -0,0 +1,487 @@
+/* Declarations of procfs structures.
+   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_PROCFS_H
+#define _SYS_PROCFS_H  1
+
+#ifndef _STRUCTURED_PROC
+# define _STRUCTURED_PROC      0
+#endif
+
+#if _STRUCTURED_PROC == 0
+
+# include <sys/old_procfs.h>
+
+#else
+
+#include <sys/types.h>
+#include <sys/signal.h>
+#include <sys/fault.h>
+#include <sys/syscall.h>
+#include <sys/processor.h>
+#include <sys/pset.h>
+#include <sys/priv.h>
+#include <bits/regset.h>
+#include <time.h>
+#include <bits/wordsize.h>
+#include <sys/procfs_isa.h>
+
+/* control codes for ctl and lwpctl */
+#define PCNULL         0
+#define PCSTOP         1
+#define PCDSTOP                2
+#define PCWSTOP                3
+#define PCTWSTOP       4
+#define PCRUN          5
+#define PCCSIG         6
+#define PCCFAULT       7
+#define PCSSIG         8
+#define PCKILL         9
+#define PCUNKILL       10
+#define PCSHOLD                11
+#define PCSTRACE       12
+#define PCSFAULT       13
+#define PCSENTRY       14
+#define PCSEXIT                15
+#define PCSET          16
+#define PCUNSET                17
+#define PCSREG         18
+#define PCSFPREG       19
+#define PCSXREG                20
+#define PCNICE         21
+#define PCSVADDR       22
+#define PCWATCH                23
+#define PCAGENT                24
+#define PCREAD         25
+#define PCWRITE                26
+#define PCSCRED                27
+#define PCSASRS                28
+#define PCSPRIV                29
+#define PCSZONE                30
+#define PCSCREDX       31
+
+/* PCRUN codes */
+#define PRCSIG         0x01
+#define PRCFAULT       0x02
+#define PRSTEP         0x04
+#define PRSABORT       0x08
+#define PRSTOP         0x10
+
+/* /proc/<pid>/lwp/<lwpid>/lwpstatus */
+typedef struct lwpstatus
+{
+       int     pr_flags;
+       id_t pr_lwpid;
+       short pr_why;
+       short pr_what;
+       short pr_cursig;
+       short pr_pad1;
+       siginfo_t pr_info;
+       sigset_t pr_lwppend;
+       sigset_t pr_lwphold;
+       struct sigaction pr_action;
+       stack_t pr_altstack;
+       uintptr_t pr_oldcontext;
+       short pr_syscall;
+       short pr_nsysarg;
+       int     pr_errno;
+#define        PRSYSARGS       8
+       long pr_sysarg[PRSYSARGS];
+       long pr_rval1;
+       long pr_rval2;
+#define        PRCLSZ          8
+       char pr_clname[PRCLSZ];
+       struct timespec pr_tstamp;
+       struct timespec pr_utime;
+       struct timespec pr_stime;
+       int     pr_filler[11 - 2 * sizeof (struct timespec) / sizeof (int)];
+       int     pr_errpriv;
+       uintptr_t pr_ustack;
+       unsigned long pr_instr;
+       prgregset_t pr_reg;
+       prfpregset_t pr_fpreg;
+} lwpstatus_t;
+
+/* /proc/<pid>/status */
+typedef struct pstatus
+{
+       int     pr_flags;
+       int     pr_nlwp;
+       pid_t pr_pid;
+       pid_t pr_ppid;
+       pid_t pr_pgid;
+       pid_t pr_sid;
+       id_t pr_aslwpid;
+       id_t pr_agentid;
+       sigset_t pr_sigpend;
+       uintptr_t pr_brkbase;
+       size_t pr_brksize;
+       uintptr_t pr_stkbase;
+       size_t pr_stksize;
+       struct timespec pr_utime;
+       struct timespec pr_stime;
+       struct timespec pr_cutime;
+       struct timespec pr_cstime;
+       sigset_t pr_sigtrace;
+       fltset_t pr_flttrace;
+       sysset_t pr_sysentry;
+       sysset_t pr_sysexit;
+       char pr_dmodel;
+       char pr_pad[3];
+       taskid_t pr_taskid;
+       projid_t pr_projid;
+       int pr_nzomb;
+       zoneid_t pr_zoneid;
+       int pr_filler[15];
+       lwpstatus_t pr_lwp;
+} pstatus_t;
+
+/* pr_flags */
+#define        PR_STOPPED              0x00000001
+#define        PR_ISTOP                0x00000002
+#define        PR_DSTOP                0x00000004
+#define        PR_STEP                 0x00000008
+#define        PR_ASLEEP               0x00000010
+#define        PR_PCINVAL              0x00000020
+#define        PR_ASLWP                0x00000040
+#define        PR_AGENT                0x00000080
+#define        PR_DETACH               0x00000100
+#define        PR_DAEMON               0x00000200
+#define        PR_IDLE                 0x00000400
+#define        PR_ISSYS                0x00001000
+#define        PR_VFORKP               0x00002000
+#define        PR_ORPHAN               0x00004000
+#define        PR_NOSIGCHLD    0x00008000
+#define        PR_WAITPID          0x00010000
+#define        PR_FORK                 0x00100000
+#define        PR_RLC                  0x00200000
+#define        PR_KLC                  0x00400000
+#define        PR_ASYNC                0x00800000
+#define        PR_MSACCT               0x01000000
+#define        PR_BPTADJ               0x02000000
+#define        PR_PTRACE               0x04000000
+#define        PR_MSFORK               0x08000000
+
+/* pr_why */
+enum
+{
+       PR_REQUESTED = 1,
+#define        PR_REQUESTED PR_REQUESTED
+       PR_SIGNALLED = 2,
+#define        PR_SIGNALLED PR_SIGNALLED
+       PR_SYSENTRY = 3,
+#define        PR_SYSENTRY PR_SYSENTRY
+       PR_SYSEXIT = 4,
+#define        PR_SYSEXIT PR_SYSEXIT
+       PR_JOBCONTROL = 5,
+#define        PR_JOBCONTROL PR_JOBCONTROL
+       PR_FAULTED = 6,
+#define        PR_FAULTED PR_FAULTED
+       PR_SUSPENDED = 7,
+#define        PR_SUSPENDED PR_SUSPENDED
+       PR_CHECKPOINT = 8
+#define        PR_CHECKPOINT PR_CHECKPOINT
+};
+
+/* /proc/<pid>/lwp/<lwpid>/lwpsinfo */
+typedef struct lwpsinfo
+{
+       int     pr_flag;
+       id_t    pr_lwpid;
+       uintptr_t pr_addr;
+       uintptr_t pr_wchan;
+       char pr_stype;
+       char pr_state;
+       char pr_sname;
+       char pr_nice;
+       short pr_syscall;
+       char pr_oldpri;
+       char pr_cpu;
+       int     pr_pri;
+       unsigned short pr_pctcpu;
+       unsigned short pr_pad;
+       struct timespec pr_start;
+       struct timespec pr_time;
+#define        PRFNSZ          16
+       char pr_clname[PRCLSZ];
+       char pr_name[PRFNSZ];
+       processorid_t pr_onpro;
+       processorid_t pr_bindpro;
+       psetid_t pr_bindpset;
+       int     pr_lgrp;
+       int     pr_filler[4];
+} lwpsinfo_t;
+
+/* pr_ttydev: non-existent device */
+#define        PRNODEV (dev_t)(-1)
+
+/* /proc/<pid>/psinfo */
+typedef struct psinfo
+{
+       int     pr_flag;
+       int     pr_nlwp;
+       pid_t pr_pid;
+       pid_t pr_ppid;
+       pid_t pr_pgid;
+       pid_t pr_sid;
+       uid_t pr_uid;
+       uid_t pr_euid;
+       gid_t pr_gid;
+       gid_t pr_egid;
+       uintptr_t pr_addr;
+       size_t pr_size;
+       size_t pr_rssize;
+       size_t pr_pad1;
+       dev_t pr_ttydev;
+       unsigned short pr_pctcpu;
+       unsigned short pr_pctmem;
+       struct timespec pr_start;
+       struct timespec pr_time;
+       struct timespec pr_ctime;
+       char pr_fname[PRFNSZ];
+#define        PRARGSZ         80
+       char pr_psargs[PRARGSZ];
+       int pr_wstat;
+       int pr_argc;
+       uintptr_t pr_argv;
+       uintptr_t pr_envp;
+       char pr_dmodel;
+       char pr_pad2[3];
+       taskid_t pr_taskid;
+       projid_t pr_projid;
+       int pr_nzomb;
+       poolid_t pr_poolid;
+       zoneid_t pr_zoneid;
+       id_t pr_contract;
+       int pr_filler[1];
+       lwpsinfo_t pr_lwp;
+} psinfo_t;
+
+/* /proc/<pid>/map, /proc/<pid>/rmap */
+typedef struct prmap
+{
+       uintptr_t pr_vaddr;
+       size_t pr_size;
+#define        PRMAPSZ 64
+       char pr_mapname[PRMAPSZ];
+       offset_t pr_offset;
+       int pr_mflags;
+       int pr_pagesize;
+       int pr_shmid;
+       int pr_filler[1];
+} prmap_t;
+
+/* pr_mflags values */
+#define        MA_EXEC                 0x0001
+#define        MA_WRITE                0x0002
+#define        MA_READ                 0x0004
+#define        MA_SHARED               0x0008
+#define        MA_BREAK                0x0010
+#define        MA_STACK                0x0020
+#define        MA_ANON                 0x0040
+#define        MA_ISM                  0x0080
+#define        MA_NORESERVE    0x0100
+#define        MA_SHM                  0x0200
+#define        MA_RESERVED1    0x0400
+
+/* /proc/<pid>/xmap */
+typedef struct prxmap
+{
+       uintptr_t pr_vaddr;
+       size_t pr_size;
+       char pr_mapname[PRMAPSZ];
+       offset_t pr_offset;
+       int pr_mflags;
+       int pr_pagesize;
+       int pr_shmid;
+       dev_t pr_dev;
+       uint64_t pr_ino;
+       size_t pr_rss;
+       size_t pr_anon;
+       size_t pr_locked;
+       size_t pr_pad;
+       uint64_t pr_hatpagesize;
+#if __WORDSIZE == 32
+       unsigned long pr_filler[6];
+#else
+       unsigned long pr_filler[7];
+#endif
+} prxmap_t;
+
+/* pr_mflags */
+#define MA_EXEC                        0x0001
+#define MA_WRITE               0x0002
+#define MA_READ                        0x0004
+#define MA_SHARED              0x0008
+#define MA_ANON                        0x0040
+#define MA_ISM                 0x0080
+#define MA_NORESERVE   0x0100
+#define MA_SHM                 0x0200
+#define MA_RESERVED1   0x0400
+
+/* /proc/<pid>/cred */
+typedef struct prcred
+{
+       uid_t pr_euid;
+       uid_t pr_ruid;
+       uid_t pr_suid;
+       gid_t pr_egid;
+       gid_t pr_rgid;
+       gid_t pr_sgid;
+       int pr_ngroups;
+       gid_t pr_groups[1];
+} prcred_t;
+
+/* /proc/<pid>/priv */
+typedef struct prpriv
+{
+       uint32_t pr_nsets;
+       uint32_t pr_setsize;
+       uint32_t pr_infosize;
+       priv_chunk_t pr_sets[1];
+} prpriv_t;
+
+/* /proc/<pid>/watch */
+typedef struct prwatch
+{
+       uintptr_t pr_vaddr;
+       size_t pr_size;
+       int pr_wflags;
+       int pr_pad;
+} prwatch_t;
+
+/* pr_wflags */
+#define WA_EXEC                        0x01
+#define WA_WRITE               0x02
+#define WA_READ                        0x04
+#define WA_TRAPAFTER   0x08
+
+typedef struct priovec {
+       void *pio_base;
+       size_t pio_len;
+       off_t pio_offset;
+} priovec_t;
+
+/* /proc/<pid>/usage, /proc/<pid>/lwp/<lwpid>/lwpusage */
+typedef struct prusage
+{
+       id_t pr_lwpid;
+       int pr_count;
+       struct timespec pr_tstamp;
+       struct timespec pr_create;
+       struct timespec pr_term;
+       struct timespec pr_rtime;
+       struct timespec pr_utime;
+       struct timespec pr_stime;
+       struct timespec pr_ttime;
+       struct timespec pr_tftime;
+       struct timespec pr_dftime;
+       struct timespec pr_kftime;
+       struct timespec pr_ltime;
+       struct timespec pr_slptime;
+       struct timespec pr_wtime;
+       struct timespec pr_stoptime;
+       struct timespec filltime[6];
+       unsigned long pr_minf;
+       unsigned long pr_majf;
+       unsigned long pr_nswap;
+       unsigned long pr_inblk;
+       unsigned long pr_oublk;
+       unsigned long pr_msnd;
+       unsigned long pr_mrcv;
+       unsigned long pr_sigs;
+       unsigned long pr_vctx;
+       unsigned long pr_ictx;
+       unsigned long pr_sysc;
+       unsigned long pr_ioch;
+       unsigned long filler[10];
+} prusage_t;
+
+/* /proc/<pid>/pagedata file header */
+typedef struct prpageheader
+{
+       struct timespec pr_tstamp;
+       long pr_nmap;
+       long pr_npage;
+} prpageheader_t;
+
+/* /proc/<pid>/pagedata mapping header */
+typedef struct prasmap
+{
+       uintptr_t pr_vaddr;
+       size_t pr_npage;
+       char pr_mapname[PRMAPSZ];
+       offset_t pr_offset;
+       int pr_mflags;
+       int pr_pagesize;
+       int pr_shmid;
+       int pr_filler[1];
+} prasmap_t;
+
+/* pr_npage-long byte array (plus 8-byte alignment) of the following flags */
+#define        PG_REFERENCED   0x02
+#define        PG_MODIFIED             0x01
+#define        PG_HWMAPPED             0x04
+
+/* /proc/<pid>/lstatus, /proc/<pid>/lpsinfo, /proc/<pid>/lusage header */
+typedef struct prheader
+{
+       long pr_nent;
+       long pr_entsize;
+} prheader_t;
+
+/* based on sig*set */
+
+#define prfillset(set) \
+       { int __cnt = sizeof (*set) / sizeof (uint32_t); \
+       while (--__cnt >= 0) ((uint32_t *)(set))[__cnt] = 0xFFFFFFFF; }
+
+#define premptyset(set) \
+       { int __cnt = sizeof (*set) / sizeof (uint32_t); \
+       while (--__cnt >= 0) ((uint32_t *)(set))[__cnt] = 0; }
+
+#define __prmask(flag) \
+  (((uint32_t) 1) << (((flag) - 1) % (8 * (int)sizeof (uint32_t))))
+
+# define __prword(flag)        (((flag) - 1) / (8 * (int)sizeof (uint32_t)))
+
+#define praddset(set, flag) \
+    (((uint32_t *)(set))[__prword (flag)] |= __prmask (flag))
+
+#define prdelset(set, flag) \
+    (((uint32_t *)(set))[__prword (flag)] &= ~__prmask (flag))
+
+#define prismember(set, flag) \
+       ((((uint32_t *)(set))[__prword (flag)] & __prmask (flag)) ? 1 : 0)
+
+/* Data models.  */
+#define PR_MODEL_UNKNOWN       0
+#define PR_MODEL_ILP32 1
+#define PR_MODEL_LP64   2
+#if defined(_LP64)
+# define PR_MODEL_NATIVE       PR_MODEL_LP64
+#elif defined(_ILP32)
+# define PR_MODEL_NATIVE       PR_MODEL_ILP32
+#else
+# error Unknown data model
+#endif
+
+#endif /* _STRUCTURED_PROC == 0 */
+
+#endif /* _SYS_PROCFS_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/pset.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/pset.h
new file mode 100644 (file)
index 0000000..b5d326f
--- /dev/null
@@ -0,0 +1,67 @@
+/* Declarations of processor sets.
+   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_PSET_H
+#define _SYS_PSET_H
+
+#include <sys/processor.h>
+#include <features.h>
+
+typedef int psetid_t;
+
+/* Syscall sub-call numbers.  */
+#define PSET_CREATE            0
+#define PSET_DESTROY           1
+#define PSET_ASSIGN            2
+#define PSET_INFO              3
+#define PSET_BIND              4
+#define PSET_GETLOADAVG                5
+#define PSET_LIST              6
+#define PSET_SETATTR           7
+#define PSET_GETATTR           8
+#define PSET_ASSIGN_FORCED     9
+
+#define PS_NONE                -1
+#define PS_QUERY       -2
+#define PS_MYID                -3
+#define PS_SOFT                -4
+#define PS_HARD                -5
+#define PS_QUERY_TYPE  -6
+
+/* types of processor sets */
+#define PS_SYSTEM      1
+#define PS_PRIVATE     2
+
+__BEGIN_DECLS
+
+extern int  pset_create (psetid_t *newpset);
+extern int  pset_destroy (psetid_t pset);
+extern int  pset_assign (psetid_t pset, processorid_t cpu, psetid_t *opset);
+extern int  pset_info (psetid_t pset, int *type, unsigned int *numcpus,
+    processorid_t *cpulist);
+extern int  pset_bind (psetid_t pset, idtype_t idtype, id_t id,
+    psetid_t *opset);
+extern int  pset_getloadavg (psetid_t pset, double loadavg[], int nelem);
+extern int  pset_list (psetid_t *psetlist, unsigned int *numpsets);
+extern int  pset_setattr (psetid_t pset, unsigned int attr);
+extern int  pset_getattr (psetid_t pset, unsigned int *attr);
+
+__END_DECLS
+
+#endif /* _SYS_PSET_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/rctl.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/rctl.h
new file mode 100644 (file)
index 0000000..c9b4c3e
--- /dev/null
@@ -0,0 +1,93 @@
+/* Declarations of rctl 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_RCTL_H
+#define _SYS_RCTL_H
+
+#include <features.h>
+
+#define RCTL_LOCAL_NOACTION    0x00000000
+#define RCTL_LOCAL_SIGNAL      0x00000001
+#define RCTL_LOCAL_DENY                0x00000002
+#define RCTL_LOCAL_MAXIMAL     0x80000000
+#define RCTL_LOCAL_PROJDB      0x40000000
+#define RCTL_LOCAL_ACTION_MASK 0xFFFF0000
+#define RCTL_LOCAL_MASK                0xC0000003
+
+#define RCTL_GLOBAL_NOACTION           0x00000000
+#define RCTL_GLOBAL_SYSLOG             0x00000001
+#define RCTL_GLOBAL_NOBASIC            0x80000000
+#define RCTL_GLOBAL_LOWERABLE          0x40000000
+#define RCTL_GLOBAL_DENY_ALWAYS                0x20000000
+#define RCTL_GLOBAL_DENY_NEVER         0x10000000
+#define RCTL_GLOBAL_FILE_SIZE          0x08000000
+#define RCTL_GLOBAL_CPU_TIME           0x04000000
+#define RCTL_GLOBAL_SIGNAL_NEVER       0x02000000
+#define RCTL_GLOBAL_NOLOCALACTION      RCTL_GLOBAL_SIGNAL_NEVER
+#define RCTL_GLOBAL_INFINITE           0x01000000
+#define RCTL_GLOBAL_UNOBSERVABLE       0x00800000
+#define RCTL_GLOBAL_SYSLOG_NEVER       0x00080000
+#define RCTL_GLOBAL_BYTES              0x00400000
+#define RCTL_GLOBAL_SECONDS            0x00200000
+#define RCTL_GLOBAL_COUNT              0x00100000
+#define RCTL_GLOBAL_ACTION_MASK                0xFFFF0000
+#define RCTL_GLOBAL_MASK               0xFFF80001
+
+#define RCTL_FIRST     0x00000000
+#define RCTL_NEXT      0x00000001
+#define RCTL_USAGE     0x00000002
+
+#define RCTL_INSERT    0x00000000
+#define RCTL_DELETE    0x00000001
+#define RCTL_REPLACE   0x00000002
+
+#define RCTL_USE_RECIPIENT_PID  0x10000000
+
+#define RCTLSYS_ACTION_MASK    0xFFFF0000
+#define RCTLSYS_MASK           0x10000003
+
+#define RCPRIV_BASIC           0x01000000
+#define RCPRIV_PRIVILEGED      0x04000000
+#define RCPRIV_SYSTEM          0x07000000
+
+typedef enum
+  {
+    RCENTITY_PROCESS,
+    RCENTITY_TASK,
+    RCENTITY_PROJECT,
+    RCENTITY_ZONE
+  } rctl_entity_t;
+#define RC_MAX_ENTITY  RCENTITY_ZONE
+
+typedef unsigned long long rctl_qty_t;
+typedef int rctl_priv_t;
+typedef struct rctlblk rctlblk_t;
+typedef struct rctl_set rctl_set_t;
+
+__BEGIN_DECLS
+
+int setrctl (const char *controlname, rctlblk_t *old_blk, rctlblk_t *new_blk,
+    unsigned int flags);
+
+int getrctl (const char *controlname, rctlblk_t *old_blk, rctlblk_t *new_blk,
+    unsigned int flags);
+
+__END_DECLS
+
+#endif /* _SYS_RCTL_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/task.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/task.h
new file mode 100644 (file)
index 0000000..ab51c85
--- /dev/null
@@ -0,0 +1,44 @@
+/* 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_TASK_H
+#define _SYS_TASK_H
+
+#include <sys/types.h>
+#include <sys/rctl.h>
+#include <sys/param.h>
+#include <features.h>
+
+#define TASK_NORMAL    0x00
+#define TASK_FINAL     0x01
+#define TASK_MASK      0x01
+
+#define TASK_PROJ_PURGE        0x00100000
+#define TASK_PROJ_MASK 0x00100000
+
+struct task;
+
+__BEGIN_DECLS
+
+extern taskid_t settaskid (projid_t, unsigned int);
+extern taskid_t gettaskid (void);
+
+__END_DECLS
+
+#endif /* _SYS_TASK_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/uadmin.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/uadmin.h
new file mode 100644 (file)
index 0000000..c495021
--- /dev/null
@@ -0,0 +1,65 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   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 _UADMINP_H
+#define _UADMINP_H
+
+#include <sys/types.h>
+
+/* uadmin cmd's.  */
+#define        A_REBOOT        1
+#define        A_SHUTDOWN      2
+#define        A_FREEZE        3
+#define        A_REMOUNT       4
+#define        A_DUMP          5
+#define        A_FTRACE        15
+#define        A_SWAPCTL       16
+#define A_SDTTEST      22
+
+/* Shutdown-related fcn's.  */
+#define        AD_HALT         0
+#define        AD_BOOT         1
+#define        AD_IBOOT        2
+#define        AD_SBOOT        3
+#define        AD_SIBOOT       4
+#define        AD_POWEROFF     6
+#define        AD_NOSYNC       7
+#define AD_FASTREBOOT  8
+#define AD_FASTREBOOT_DRYRUN   9
+
+/* Freeze-related fcn's.  */
+#define AD_COMPRESS    0
+#define AD_FORCE       1
+#define AD_CHECK       2
+#define AD_REUSEINIT   3
+#define AD_REUSABLE    4
+#define AD_REUSEFINI   5
+#define AD_SUSPEND_TO_DISK     AD_COMPRESS
+#define AD_CHECK_SUSPEND_TO_DISK       AD_CHECK
+#define AD_SUSPEND_TO_RAM      20
+#define AD_CHECK_SUSPEND_TO_RAM        21
+
+#define AD_FTRACE_START        1
+#define AD_FTRACE_STOP 2
+
+#define BOOTARGS_MAX   256
+
+extern int uadmin (int, int, uintptr_t);
+
+#endif /* _UADMINP_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/utssys.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/utssys.h
new file mode 100644 (file)
index 0000000..885b477
--- /dev/null
@@ -0,0 +1,81 @@
+/* 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_UTSSYS_H
+#define _SYS_UTSSYS_H
+
+#include <sys/types.h>
+
+#define UTS_UNAME      0x00
+#define        UTS_USTAT       0x02
+#define        UTS_FUSERS      0x03
+
+/* UTS_FUSERS flags.  */
+#define F_FILE_ONLY    0x01
+#define F_CONTAINED    0x02
+#define F_NBMANDLIST   0x04
+#define F_DEVINFO      0x08
+#define F_KINFO_COUNT  0x10
+
+typedef struct f_user
+  {
+       int fu_flags;   /* see below */
+       union
+         {
+               struct
+                 {
+                       pid_t u_pid;
+            uid_t u_uid;
+                 } u_info;
+        struct
+                 {
+                       int k_modid;
+                       int k_instance;
+                       int k_minor;
+                 } k_info;
+         } fu_info;
+  } f_user_t;
+
+#define fu_pid         fu_info.u_info.u_pid
+#define fu_uid         fu_info.u_info.u_uid
+#define fu_modid       fu_info.k_info.k_modid
+#define fu_instance    fu_info.k_info.k_instance
+#define fu_minor       fu_info.k_info.k_minor
+
+/* fu_flags values.  */
+#define F_CDIR         0x01
+#define F_RDIR         0x02
+#define F_TEXT         0x04
+#define F_MAP          0x08
+#define F_OPEN         0x10
+#define F_TRACE                0x20
+#define F_TTY          0x40
+#define F_NBM          0x80
+#define F_KERNEL       0x80000000
+
+typedef struct fu_data
+  {
+       int fud_user_max;
+       int fud_user_count;
+       struct f_user fud_user[1];
+  } fu_data_t;
+
+#define fu_data_size(x) (sizeof(fu_data_t) - sizeof(f_user_t) + \
+       ((x) * sizeof(f_user_t)))
+
+#endif /* _SYS_UTSSYS_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/vfstab.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/vfstab.h
new file mode 100644 (file)
index 0000000..c5decd1
--- /dev/null
@@ -0,0 +1,54 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   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_VFSTAB_H
+#define _SYS_VFSTAB_H
+
+#include <features.h>
+#include <stdio.h>
+
+struct vfstab
+  {
+       char *vfs_special;
+       char *vfs_fsckdev;
+       char *vfs_mountp;
+       char *vfs_fstype;
+       char *vfs_fsckpass;
+       char *vfs_automnt;
+       char *vfs_mntopts;
+  };
+
+#define VFS_LINE_MAX   1024
+
+#define VFS_TOOLONG    1
+#define VFS_TOOMANY    2
+#define VFS_TOOFEW     3
+
+__BEGIN_DECLS
+
+extern int getvfsent (FILE *, struct vfstab *);
+extern int getvfsspec (FILE *, struct vfstab *, char *);
+extern int getvfsfile (FILE *, struct vfstab *, char *);
+extern int getvfsany (FILE *, struct vfstab *, struct vfstab *);
+extern void vfsnull (FILE *, struct vfstab *);
+extern void putvfsent (FILE *, struct vfstab *);
+
+__END_DECLS
+
+#endif /* _SYS_VFSTAB_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/zone.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/sys/zone.h
new file mode 100644 (file)
index 0000000..d096ebd
--- /dev/null
@@ -0,0 +1,168 @@
+/* Declarations of zone 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_ZONE_H
+#define _SYS_ZONE_H
+
+#include <sys/types.h>
+#include <sys/priv.h>
+#include <sys/uadmin.h>
+#include <sys/param.h>
+
+typedef struct _mac_label_impl m_label_t;
+typedef m_label_t bslabel_t;
+
+/* Subcall numbers.  */
+#define ZONE_CREATE    0
+#define ZONE_DESTROY   1
+#define ZONE_GETATTR   2
+#define ZONE_ENTER     3
+#define ZONE_LIST      4
+#define ZONE_SHUTDOWN  5
+#define ZONE_LOOKUP    6
+#define ZONE_BOOT      7
+#define ZONE_VERSION   8
+#define ZONE_SETATTR   9
+#define ZONE_ADD_DATALINK      10
+#define ZONE_DEL_DATALINK      11
+#define ZONE_CHECK_DATALINK    12
+#define ZONE_LIST_DATALINK     13
+
+/* Miscellaneous.  */
+#define GLOBAL_ZONEID  0
+#define GLOBAL_ZONENAME        "global"
+#define MIN_ZONEID     0
+#define MIN_USERZONEID 1
+#define MAX_ZONEID     9999
+#define ZONEID_WIDTH   4
+#define ALL_ZONES      (-1)
+#define ZONENAME_MAX   64
+#define ZONENAME_REGEXP        "[a-zA-Z0-9][-_.a-zA-Z0-9]{0,62}"
+#define ZONES_TMPDIR   "/var/run/zones"
+#define ZONE_DOOR_PATH ZONES_TMPDIR "/%s.zoneadmd_door"
+
+/* Zone attributes.  */
+#define ZONE_ATTR_ROOT         1
+#define ZONE_ATTR_NAME         2
+#define ZONE_ATTR_STATUS       3
+#define ZONE_ATTR_PRIVSET      4
+#define ZONE_ATTR_UNIQID       5
+#define ZONE_ATTR_POOLID       6
+#define ZONE_ATTR_INITPID      7
+#define ZONE_ATTR_SLBL         8
+#define ZONE_ATTR_INITNAME     9
+#define ZONE_ATTR_BOOTARGS     10
+#define ZONE_ATTR_BRAND                11
+#define ZONE_ATTR_PHYS_MCAP    12
+#define ZONE_ATTR_SCHED_CLASS  13
+#define ZONE_ATTR_FLAGS                14
+#define ZONE_ATTR_BRAND_ATTRS  32768
+
+/* Zone event strings. */
+#define ZONE_EVENT_CHANNEL             "com.sun:zones:status"
+#define ZONE_EVENT_STATUS_CLASS                "status"
+#define ZONE_EVENT_STATUS_SUBCLASS     "change"
+#define ZONE_EVENT_UNINITIALIZED       "uninitialized"
+#define ZONE_EVENT_INITIALIZED         "initialized"
+#define ZONE_EVENT_READY               "ready"
+#define ZONE_EVENT_RUNNING             "running"
+#define ZONE_EVENT_SHUTTING_DOWN       "shutting_down"
+
+#define ZONE_CB_NAME           "zonename"
+#define ZONE_CB_NEWSTATE       "newstate"
+#define ZONE_CB_OLDSTATE       "oldstate"
+#define ZONE_CB_TIMESTAMP      "when"
+#define ZONE_CB_ZONEID         "zoneid"
+
+/* Zone flags.  */
+#define ZF_HASHED_LABEL        0x2
+#define ZF_IS_SCRATCH  0x4
+#define ZF_NET_EXCL    0x8
+
+/* Zone create flags.  */
+#define ZCF_NET_EXCL   0x1
+
+/* Exit values.  */
+#define ZONE_SUBPROC_OK                        0
+#define ZONE_SUBPROC_USAGE             253
+#define ZONE_SUBPROC_NOTCOMPLETE       254
+#define ZONE_SUBPROC_FATAL             255
+
+typedef enum
+  {
+       ZONE_IS_UNINITIALIZED = 0,
+       ZONE_IS_INITIALIZED,
+       ZONE_IS_READY,
+       ZONE_IS_BOOTING,
+       ZONE_IS_RUNNING,
+       ZONE_IS_SHUTTING_DOWN,
+       ZONE_IS_EMPTY,
+       ZONE_IS_DOWN,
+       ZONE_IS_DYING,
+       ZONE_IS_DEAD
+  } zone_status_t;
+#define ZONE_MIN_STATE ZONE_IS_UNINITIALIZED
+#define ZONE_MAX_STATE ZONE_IS_DEAD
+
+typedef struct
+  {
+       const char *zone_name;
+       const char *zone_root;
+       const struct priv_set *zone_privs;
+       size_t zone_privssz;
+       const char *rctlbuf;
+       size_t rctlbufsz;
+       int *extended_error;
+       const char *zfsbuf;
+       size_t zfsbufsz;
+       int match;
+       uint32_t doi;
+       const bslabel_t *label;
+       int flags;
+  } zone_def;
+
+typedef enum zone_cmd
+  {
+       Z_READY,
+       Z_BOOT,
+       Z_FORCEBOOT,
+       Z_REBOOT,
+       Z_HALT,
+       Z_NOTE_UNINSTALLING,
+       Z_MOUNT,
+       Z_FORCEMOUNT,
+       Z_UNMOUNT
+  } zone_cmd_t;
+
+typedef struct zone_cmd_arg
+  {
+       uint64_t uniqid;
+       zone_cmd_t cmd;
+       uint32_t _pad;
+       char locale[MAXPATHLEN];
+       char bootbuf[BOOTARGS_MAX];
+  } zone_cmd_arg_t;
+
+typedef struct zone_cmd_rval
+  {
+       int rval;
+       char errbuf[1];
+  } zone_cmd_rval_t;
+
+#endif /* _SYS_ZONE_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/uadminP.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/uadminP.h
deleted file mode 100644 (file)
index 7f56872..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/* Copyright (C) 2008 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
-
-   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 _UADMINP_H
-#define _UADMINP_H
-
-#include <sys/types.h>
-
-/* uadmin cmd's.  */
-#define        A_REBOOT        1
-#define        A_SHUTDOWN      2
-#define        A_FREEZE        3
-#define        A_REMOUNT       4
-#define        A_DUMP          5
-#define        A_FTRACE        15
-#define        A_SWAPCTL       16
-
-/* Shutdown-related fcn's.  */
-#define        AD_HALT         0
-#define        AD_BOOT         1
-#define        AD_IBOOT        2
-#define        AD_SBOOT        3
-#define        AD_SIBOOT       4
-#define        AD_POWEROFF     6
-#define        AD_NOSYNC       7
-
-extern int uadmin (int, int, uintptr_t);
-
-#endif /* _UADMINP_H */
index 976bce6..9da4419 100644 (file)
@@ -21,7 +21,8 @@
 #include <unistd.h>
 #include <ucredP.h>
 #include <auditP.h>
-#include <privP.h>
+#include <priv.h>
+#include <procfs.h>
 #include <errno.h>
 #include <assert.h>
 
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/ucred.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/ucred.h
new file mode 100644 (file)
index 0000000..69aeda1
--- /dev/null
@@ -0,0 +1,55 @@
+/* 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 _UCRED_H
+#define _UCRED_H
+
+#include <features.h>
+#include <sys/types.h>
+#include <sys/priv.h>
+
+typedef struct _mac_label_impl m_label_t;
+
+typedef struct ucred_s ucred_t;
+
+__BEGIN_DECLS
+
+extern ucred_t *ucred_get (pid_t pid);
+extern void ucred_free (ucred_t *uc);
+extern size_t ucred_size (void);
+
+extern uid_t ucred_geteuid (const ucred_t *uc);
+extern uid_t ucred_getruid (const ucred_t *uc);
+extern uid_t ucred_getsuid (const ucred_t *uc);
+extern gid_t ucred_getegid (const ucred_t *uc);
+extern gid_t ucred_getrgid (const ucred_t *uc);
+extern gid_t ucred_getsgid (const ucred_t *uc);
+extern pid_t ucred_getpid (const ucred_t *uc);
+extern projid_t ucred_getprojid (const ucred_t *uc);
+extern zoneid_t ucred_getzoneid (const ucred_t *uc);
+
+extern int ucred_getgroups (const ucred_t *uc, const gid_t **groups);
+extern const priv_set_t *ucred_getprivset (const ucred_t *uc, const char *set);
+extern unsigned int ucred_getpflags (const ucred_t *uc, unsigned int flags);
+extern m_label_t *ucred_getlabel (const ucred_t *uc);
+
+extern int getpeerucred (int fd, ucred_t **ucred);
+
+__END_DECLS
+
+#endif /* _UCRED_H */
index 55faf1e..0e8721e 100644 (file)
 #define _UCREDP_H
 
 #include <sys/types.h>
-#include <auditP.h>
-#include <privP.h>
 
-typedef struct prcred
-  {
-       uid_t pr_euid;
-       uid_t pr_ruid;
-       uid_t pr_suid;
-       gid_t pr_egid;
-       gid_t pr_rgid;
-       gid_t pr_sgid;
-       int pr_ngroups;
-       gid_t pr_groups[1];
-  } prcred_t;
-
-typedef struct ucred_s
+struct ucred_s
   {
        uint32_t uc_size;
        uint32_t uc_credoff;
@@ -46,17 +32,12 @@ typedef struct ucred_s
        zoneid_t uc_zoneid;
        projid_t uc_projid;
        uint32_t uc_labeloff;
-  } ucred_t;
+  };
+
+#include <ucred.h>
 
 #define BSLABEL_T_SIZE         36
 
 extern ucred_t *_ucred_alloc (void);
-extern void ucred_free (ucred_t *);
-extern size_t ucred_size (void);
-extern uid_t ucred_geteuid (const ucred_t *uc);
-extern uid_t ucred_getruid (const ucred_t *uc);
-extern gid_t ucred_getegid (const ucred_t *uc);
-extern gid_t ucred_getrgid (const ucred_t *uc);
-extern pid_t ucred_getpid (const ucred_t *uc);
 
 #endif /* _UCREDP_H */
index 989fabe..9cfd8ed 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307 USA.  */
 
 #include <inline-syscall.h>
-#include <ustatP.h>
+#include <ustat.h>
 #include <sys/types.h>
 #include <unistd.h>
 
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/ustatP.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/ustatP.h
deleted file mode 100644 (file)
index 699c3cc..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/* Copyright (C) 2008 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
-
-   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 _USTATP_H
-#define _USTATP_H
-
-#include <sys/types.h>
-
-struct ustat
-  {
-       daddr_t f_tfree;
-       ino_t f_tinode;
-       char f_fname[6];
-       char f_fpack[6];
-  };
-
-extern int ustat (dev_t, struct ustat *);
-
-#endif /* _USTATP_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/vfsent.c b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/vfsent.c
deleted file mode 100644 (file)
index a4f74c9..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Copyright (C) 2008 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
-
-   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.  */
-
-#include <stdio.h>
-#include <vfsentP.h>
-#include <string.h>
-
-#define _VFS_DELIM             " \t"
-#define _VFS_CMP(x, y, f)      (!y->f || (y->f && strcmp (x->f, y->f) == 0))
-
-static __thread char vfs_buf[VFS_LINE_MAX + 2];
-
-
-static int vfs_strtok_r (char *str, const char *delim,
-      char **saveptr, char **strt)
-{
-  int ret = (*strt = strtok_r (str, delim, saveptr)) ? 1 : 0;
-  if (*strt && strcmp (*strt, "-") == 0)
-    *strt = NULL;
-  return ret;
-}
-
-
-int getvfsent (FILE *fp, struct vfstab *vp)
-{
-  while (fgets (vfs_buf, VFS_LINE_MAX + 2, fp) != NULL)
-    {
-      /* Check for long lines.  */
-      size_t len = strlen (vfs_buf);
-      if (len > VFS_LINE_MAX)
-        return VFS_TOOLONG;
-
-      /* Trim leading spaces/tabs.  */
-      char *bufp = vfs_buf;
-      while (*bufp == ' ' || *bufp == '\t')
-        bufp++;
-      len = strlen (bufp);
-
-      /* Ignore empty lines and lines starting with #.  */
-      if (len && (bufp[0] == '\n' || bufp[0] == '#'))
-        continue;
-
-      bufp[len - 1] = '\0';
-
-      /* Tokenize.  */
-      char *tokp = NULL;
-      if (!vfs_strtok_r (bufp, _VFS_DELIM, &tokp, &vp->vfs_special) ||
-          !vfs_strtok_r (NULL, _VFS_DELIM, &tokp, &vp->vfs_fsckdev) ||
-          !vfs_strtok_r (NULL, _VFS_DELIM, &tokp, &vp->vfs_mountp) ||
-          !vfs_strtok_r (NULL, _VFS_DELIM, &tokp, &vp->vfs_fstype) ||
-          !vfs_strtok_r (NULL, _VFS_DELIM, &tokp, &vp->vfs_fsckpass) ||
-          !vfs_strtok_r (NULL, _VFS_DELIM, &tokp, &vp->vfs_automnt) ||
-          !vfs_strtok_r (NULL, _VFS_DELIM, &tokp, &vp->vfs_mntopts))
-        return VFS_TOOFEW;
-
-      /* If we can still tokenize the line is too long.  */
-      if (strtok_r (NULL, _VFS_DELIM, &tokp))
-        return VFS_TOOMANY;
-
-      return 0;
-    }
-
-  return -1;
-}
-
-
-int getvfsany (FILE *fp, struct vfstab *vp, struct vfstab *vpref)
-{
-  int res;
-  while ((res = getvfsent (fp, vp)) == 0)
-    {
-      if (_VFS_CMP (vp, vpref, vfs_special) &&
-          _VFS_CMP (vp, vpref, vfs_fsckdev) &&
-          _VFS_CMP (vp, vpref, vfs_mountp) &&
-          _VFS_CMP (vp, vpref, vfs_fstype) &&
-          _VFS_CMP (vp, vpref, vfs_fsckpass) &&
-          _VFS_CMP (vp, vpref, vfs_automnt) &&
-          _VFS_CMP (vp, vpref, vfs_mntopts))
-        return 0;
-    }
-
-  return res;
-}
-
-
-int getvfsfile (FILE *fp, struct vfstab *vp, char *file)
-{
-  struct vfstab vref = {
-   .vfs_mountp = file
-  };
-  return getvfsany (fp, vp, &vref);
-}
-
-
-int getvfsspec (FILE *fp, struct vfstab *vp, char *spec)
-{
-  struct vfstab vref = {
-    .vfs_special = spec
-  };
-  return getvfsany (fp, vp, &vref);
-}
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/vfsentP.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/vfsentP.h
deleted file mode 100644 (file)
index f4ea729..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Copyright (C) 2008 Free Software Foundation, Inc.
-   This file is part of the GNU C Library.
-   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
-
-   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 _VFSENTP_H
-#define _VFSENTP_H
-
-struct vfstab
-  {
-       char *vfs_special;
-       char *vfs_fsckdev;
-       char *vfs_mountp;
-       char *vfs_fstype;
-       char *vfs_fsckpass;
-       char *vfs_automnt;
-       char *vfs_mntopts;
-  };
-
-#define VFS_LINE_MAX   1024
-
-#define VFS_TOOLONG    1
-#define VFS_TOOMANY    2
-#define VFS_TOOFEW     3
-
-#endif /* _VFSENTP_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/vfstab.c b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/vfstab.c
new file mode 100644 (file)
index 0000000..97d72a3
--- /dev/null
@@ -0,0 +1,117 @@
+/* Copyright (C) 2008 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by David Bartley <dtbartle@csclub.uwaterloo.ca>, 2008.
+
+   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.  */
+
+#include <stdio.h>
+#include <sys/vfstab.h>
+#include <string.h>
+
+#define _VFS_DELIM             " \t"
+#define _VFS_CMP(x, y, f)      (!y->f || (y->f && strcmp (x->f, y->f) == 0))
+
+static __thread char vfs_buf[VFS_LINE_MAX + 2];
+
+
+static int vfs_strtok_r (char *str, const char *delim,
+      char **saveptr, char **strt)
+{
+  int ret = (*strt = strtok_r (str, delim, saveptr)) ? 1 : 0;
+  if (*strt && strcmp (*strt, "-") == 0)
+    *strt = NULL;
+  return ret;
+}
+
+
+int getvfsent (FILE *fp, struct vfstab *vp)
+{
+  while (fgets (vfs_buf, VFS_LINE_MAX + 2, fp) != NULL)
+    {
+      /* Check for long lines.  */
+      size_t len = strlen (vfs_buf);
+      if (len > VFS_LINE_MAX)
+        return VFS_TOOLONG;
+
+      /* Trim leading spaces/tabs.  */
+      char *bufp = vfs_buf;
+      while (*bufp == ' ' || *bufp == '\t')
+        bufp++;
+      len = strlen (bufp);
+
+      /* Ignore empty lines and lines starting with #.  */
+      if (len && (bufp[0] == '\n' || bufp[0] == '#'))
+        continue;
+
+      bufp[len - 1] = '\0';
+
+      /* Tokenize.  */
+      char *tokp = NULL;
+      if (!vfs_strtok_r (bufp, _VFS_DELIM, &tokp, &vp->vfs_special) ||
+          !vfs_strtok_r (NULL, _VFS_DELIM, &tokp, &vp->vfs_fsckdev) ||
+          !vfs_strtok_r (NULL, _VFS_DELIM, &tokp, &vp->vfs_mountp) ||
+          !vfs_strtok_r (NULL, _VFS_DELIM, &tokp, &vp->vfs_fstype) ||
+          !vfs_strtok_r (NULL, _VFS_DELIM, &tokp, &vp->vfs_fsckpass) ||
+          !vfs_strtok_r (NULL, _VFS_DELIM, &tokp, &vp->vfs_automnt) ||
+          !vfs_strtok_r (NULL, _VFS_DELIM, &tokp, &vp->vfs_mntopts))
+        return VFS_TOOFEW;
+
+      /* If we can still tokenize the line is too long.  */
+      if (strtok_r (NULL, _VFS_DELIM, &tokp))
+        return VFS_TOOMANY;
+
+      return 0;
+    }
+
+  return -1;
+}
+
+
+int getvfsany (FILE *fp, struct vfstab *vp, struct vfstab *vpref)
+{
+  int res;
+  while ((res = getvfsent (fp, vp)) == 0)
+    {
+      if (_VFS_CMP (vp, vpref, vfs_special) &&
+          _VFS_CMP (vp, vpref, vfs_fsckdev) &&
+          _VFS_CMP (vp, vpref, vfs_mountp) &&
+          _VFS_CMP (vp, vpref, vfs_fstype) &&
+          _VFS_CMP (vp, vpref, vfs_fsckpass) &&
+          _VFS_CMP (vp, vpref, vfs_automnt) &&
+          _VFS_CMP (vp, vpref, vfs_mntopts))
+        return 0;
+    }
+
+  return res;
+}
+
+
+int getvfsfile (FILE *fp, struct vfstab *vp, char *file)
+{
+  struct vfstab vref = {
+   .vfs_mountp = file
+  };
+  return getvfsany (fp, vp, &vref);
+}
+
+
+int getvfsspec (FILE *fp, struct vfstab *vp, char *spec)
+{
+  struct vfstab vref = {
+    .vfs_special = spec
+  };
+  return getvfsany (fp, vp, &vref);
+}
index 40cdfcf..325a4dd 100644 (file)
@@ -1,5 +1,5 @@
 #include <sysdep.h>
-#include <doorP.h>
+#include <sys/door.h>
 
 oDOOR_RESULTS_PC       offsetof (struct door_results, pc)
 oDOOR_RESULTS_NSERVERS offsetof (struct door_results, nservers)
index 40ff2d6..a62c63b 100644 (file)
@@ -18,7 +18,7 @@
    02111-1307 USA.  */
 
 #include <inline-syscall.h>
-#include <zoneP.h>
+#include <zone.h>
 #include <privP.h>
 #include <dlfcn.h>
 #include <streams/stropts.h>
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/zone.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/zone.h
new file mode 100644 (file)
index 0000000..164f00f
--- /dev/null
@@ -0,0 +1,55 @@
+/* Declarations of zone 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 _ZONE_H
+#define _ZONE_H
+
+#include <features.h>
+#include <sys/types.h>
+#include <sys/zone.h>
+
+__BEGIN_DECLS
+
+/* Public interfaces.  */
+extern zoneid_t getzoneid (void);
+extern zoneid_t getzoneidbyname (const char *);
+extern ssize_t getzonenamebyid (zoneid_t, char *, size_t);
+
+/* Private interfaces.  */
+extern int zonept (int, zoneid_t);
+extern int zone_get_id (const char *, zoneid_t *);
+extern zoneid_t zone_create (const char *, const char *,
+    const struct priv_set *, const char *, size_t, const char *, size_t, int *,
+    int, int, const bslabel_t *, int);
+extern int  zone_boot (zoneid_t);
+extern int  zone_destroy (zoneid_t);
+extern ssize_t  zone_getattr (zoneid_t, int, void *, size_t);
+extern int  zone_setattr (zoneid_t, int, void *, size_t);
+extern int  zone_enter (zoneid_t);
+extern int  zone_list (zoneid_t *, uint_t *);
+extern int  zone_shutdown (zoneid_t);
+extern int  zone_version (int *);
+extern int  zone_add_datalink (zoneid_t, char *);
+extern int  zone_remove_datalink (zoneid_t, char *);
+extern int  zone_check_datalink (zoneid_t *, char *);
+extern int  zone_list_datalink (zoneid_t, int *, char *);
+
+__END_DECLS
+
+#endif /* _ZONE_H */
diff --git a/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/zoneP.h b/sysdeps/unix/sysv/solaris2/kopensolaris-gnu/zoneP.h
deleted file mode 100644 (file)
index 2db237e..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Declarations of zone 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 _ZONEP_H
-#define _ZONEP_H
-
-#include <sys/types.h>
-#include <auditP.h>
-#include <privP.h>
-
-#define ZONE_ATTR_NAME 2
-
-typedef struct
-  {
-       const char *zone_name;
-       const char *zone_root;
-       const struct priv_set *zone_privs;
-       size_t zone_privssz;
-       const char *rctlbuf;
-       size_t rctlbufsz;
-       int *extended_error;
-       const char *zfsbuf;
-       size_t zfsbufsz;
-       int match;
-       uint32_t doi;
-       const bslabel_t *label;
-       int flags;
-  } zone_def;
-
-extern zoneid_t getzoneid (void);
-extern ssize_t zone_getattr (zoneid_t, int, void *, size_t);
-
-#define ZONE_ATTR_PRIVSET      4
-
-#endif /* _ZONEP_H */