sys_zone_create sys_allocids sys_settaskid sys_zone_lookup sys_port \
sys_door
sysdep_headers += sys/feature_tests.h sys/mount.h sys/dirent.h sys/utime.h \
- sys/systeminfo.h sys/link.h sys/procfs_isa.h sys/frame.h sys/ttold.h \
+ sys/systeminfo.h sys/link.h sys/procfs_isa.h sys/ttold.h \
sys/priocntl.h sys/procset.h sys/ptyvar.h sys/synch.h sys/fork.h \
sys/sockio.h sys/ioccom.h sys/tty.h sys/trap.h sys/sysconfig.h \
sys/ptms.h sys/stack.h sys/regset.h sys/fault.h sys/processor.h \
- sys/pset.h sys/priv.h sys/priv_names.h sys/reg.h sys/siginfo.h \
- sys/bufmod.h sys/types32.h sys/isa_defs.h sys/elf.h sys/int_types.h \
- sys/machelf.h sys/inttypes.h sys/atomic.h sys/procfs.h sys/old_procfs.h \
- sys/machtypes.h
-sysdep_headers += priv.h bits/regset.h procfs.h nss_common.h \
+ sys/pset.h sys/reg.h sys/siginfo.h sys/types32.h sys/isa_defs.h sys/elf.h \
+ sys/int_types.h sys/machelf.h sys/inttypes.h sys/atomic.h sys/machtypes.h
+sysdep_headers += procfs.h nss_common.h \
rtld_db.h pcsample.h atomic.h bits/machtypes.h
headers := $(filter-out sys/sysinfo.h,$(headers))
+headers := $(filter-out sys/sysmacros.h,$(headers))
endif
ifeq ($(subdir),dirent)
#endif
};
+#ifdef _SYSCALL32
+
+# include <sys/types32.h>
+
+struct sigaction32
+ {
+ int32_t sa_flags;
+ union
+ {
+ caddr32_t _handler;
+ caddr32_t _sigaction;
+ } _funcptr;
+ sigset32_t sa_mask;
+ int32_t sa_resv[2];
+ };
+
+#endif
+
/* Bits in `sa_flags'. */
#define SA_NOCLDSTOP 0x00020000 /* Don't send SIGCHLD when children stop. */
#define SA_NOCLDWAIT 0x00010000 /* Don't send SIGCHLD when children stop. */
struct /* SIGSEGV, SIGBUS, SIGILL, SIGTRAP, SIGFPE */
{
- void *__addr;
+ void *__addr;
int __trapno;
char *__pc;
} __fault;
} __data;
} siginfo_t;
+# ifdef _SYSCALL32
+
+# include <sys/types32.h>
+
+typedef struct siginfo32
+{
+ int32_t si_signo;
+ int32_t si_code;
+ int32_t si_errno;
+ union
+ {
+ int32_t _pad[__SI_PAD_SIZE];
+
+ struct /* kill(), SIGCLD, siqqueue() */
+ {
+ pid32_t __pid; /* Sending process ID. */
+ union {
+ struct {
+ uid32_t __uid; /* Real user ID of sending process. */
+ union sigval32 __value;
+ } __kill;
+ struct {
+ clock32_t __utime;
+ int32_t __status;
+ clock32_t __stime;
+ } __cld;
+ } __pdata;
+ id32_t __ctid;
+ id32_t __zoneid;
+ } __proc;
+
+ struct /* SIGSEGV, SIGBUS, SIGILL, SIGTRAP, SIGFPE */
+ {
+ caddr32_t __addr;
+ int32_t __trapno;
+ caddr32_t __pc;
+ } __fault;
+
+ struct /* SIGPOLL, SIGXFSZ */
+ {
+ int32_t __fd;
+ int32_t __band;
+ } __file;
+
+ struct /* SIGPROF */
+ {
+ caddr32_t __faddr;
+ struct timespec32 __tstamp;
+ int16_t __syscall;
+ int8_t __nsysarg;
+ int8_t __fault;
+ int32_t __sysarg[8];
+ int32_t __mstate[10];
+ } __prof;
+
+ struct /* SI_RCTL */
+ {
+ int32_t __entity;
+ } __rctl;
+ } __data;
+} siginfo32_t;
+
+# endif /* _SYSCALL32 */
+
# ifdef __USE_MISC
typedef struct k_siginfo
unsigned int __sigbits[_SIGSET_NWORDS];
} __sigset_t;
+#ifdef _SYSCALL32
+
+# include <sys/types32.h>
+
+typedef struct
+ {
+ uint32_t __sigbits[4];
+ } sigset32_t;
+
+#endif
+
typedef struct
{
unsigned int __sigbits[2];
int ss_onstack; /* Nonzero if executing on this stack. */
};
+#ifdef _SYSCALL32
+
+# include <sys/types32.h>
+
+typedef struct sigaltstack32
+ {
+ caddr32_t ss_sp;
+ size32_t ss_size;
+ int32_t ss_flags;
+ } stack32_t;
+
+#endif
+
/* Possible values for `ss_flags.'. */
enum
#include <inline-syscall.h>
#include <privP.h>
-#include <priv.h>
#include <sys/priocntl.h>
#include <string.h>
#include <assert.h>
/* First call: get header. */
priv_impl_info_t _info;
- int res = INLINE_SYSCALL (privsys, 5, PRIVSYS_GETIMPLINFO, 0, 0, &_info,
+ int res = INLINE_SYSCALL (privsys, 5, SYS_SUB_getimplinfo, 0, 0, &_info,
sizeof(_info));
if (res == 0)
{
size_t info_size = PRIV_IMPL_INFO_SIZE (&_info);
__info = malloc (info_size);
assert (__info);
- res = INLINE_SYSCALL (privsys, 5, PRIVSYS_GETIMPLINFO, 0, 0, __info,
+ res = INLINE_SYSCALL (privsys, 5, SYS_SUB_getimplinfo, 0, 0, __info,
info_size);
assert (res == 0);
}
if (setn == -1)
return -1;
- return INLINE_SYSCALL (privsys, 5, PRIVSYS_GETPPRIV, 0, (priv_ptype_t)setn,
+ return INLINE_SYSCALL (privsys, 5, SYS_SUB_getppriv, 0, (priv_ptype_t)setn,
(void *)set, __PRIVSETSIZE);
}
if (setn == -1)
return -1;
- return INLINE_SYSCALL (privsys, 5, PRIVSYS_GETPPRIV, op, (priv_ptype_t)setn,
+ return INLINE_SYSCALL (privsys, 5, SYS_SUB_setppriv, op, (priv_ptype_t)setn,
(void *)set, __PRIVSETSIZE);
}
02111-1307 USA. */
#include <privP.h>
-#include <priv.h>
#include <bits/libc-lock.h>
__libc_lock_define_recursive (extern, __priv_lock);
#ifndef _PRIVP_H
#define _PRIVP_H
-#include <priv.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
typedef struct priv_data
{
priv_chunk_t *pd_basicprivs;
} priv_data_t;
-extern const priv_data_t * __priv_parse_data_cached (void);
+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 __NPRIVBITS (8 * sizeof (priv_chunk_t))
#define __PRIVELT(pr) ((pr) / __NPRIVBITS)
#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 *);
+
#endif /* _PRIVP_H */
#include <bits/regset.h>
#include <time.h>
#include <bits/wordsize.h>
-#include <sys/isa_defs.h>
+#include <sys/procfs_isa.h>
/* control codes for ctl and lwpctl */
#define PCNULL 0
#define __need_stack_t
#include <bits/sigstack.h>
#include <bits/sigset.h>
-#include <bits/regset.h>
+#include <sys/regset.h>
#include <features.h>
typedef struct ucontext
#include <unistd.h>
#include <ucredP.h>
#include <auditP.h>
+#include <privP.h>
#include <errno.h>
-#include <priv.h>
#include <assert.h>
DECLARE_INLINE_SYSCALL (int, getpeerucred, int fd, ucred_t *ucred);
}
-#define MAKE_PRCRED_T_CALL(field, type) \
- type ucred_get##field (const ucred_t *uc) \
- { \
- if (uc->uc_credoff == 0) \
- { \
- __set_errno(EINVAL); \
- return (type)-1; \
- } \
- return (type)((prcred_t *)((char *)uc + uc->uc_credoff))->pr_##field; \
- }
-
-MAKE_PRCRED_T_CALL (euid, uid_t)
-MAKE_PRCRED_T_CALL (ruid, uid_t)
-MAKE_PRCRED_T_CALL (suid, uid_t)
-MAKE_PRCRED_T_CALL (egid, gid_t)
-MAKE_PRCRED_T_CALL (rgid, gid_t)
-MAKE_PRCRED_T_CALL (sgid, gid_t)
+uid_t ucred_geteuid (const ucred_t *uc)
+{
+ if (uc->uc_credoff == 0)
+ {
+ __set_errno (EINVAL);
+ return (uid_t)-1;
+ }
+
+ return (uid_t)((prcred_t *)((char *)uc + uc->uc_credoff))->pr_euid;
+}
+
+
+uid_t ucred_getruid (const ucred_t *uc)
+{
+ if (uc->uc_credoff == 0)
+ {
+ __set_errno (EINVAL);
+ return (uid_t)-1;
+ }
+
+ return (uid_t)((prcred_t *)((char *)uc + uc->uc_credoff))->pr_ruid;
+}
+
+
+uid_t ucred_getsuid (const ucred_t *uc)
+{
+ if (uc->uc_credoff == 0)
+ {
+ __set_errno (EINVAL);
+ return (uid_t)-1;
+ }
+
+ return (uid_t)((prcred_t *)((char *)uc + uc->uc_credoff))->pr_suid;
+}
+
+
+gid_t ucred_getegid (const ucred_t *uc)
+{
+ if (uc->uc_credoff == 0)
+ {
+ __set_errno (EINVAL);
+ return (gid_t)-1;
+ }
+
+ return (gid_t)((prcred_t *)((char *)uc + uc->uc_credoff))->pr_egid;
+}
+
+
+gid_t ucred_getrgid (const ucred_t *uc)
+{
+ if (uc->uc_credoff == 0)
+ {
+ __set_errno (EINVAL);
+ return (gid_t)-1;
+ }
+
+ return (gid_t)((prcred_t *)((char *)uc + uc->uc_credoff))->pr_rgid;
+}
+
+
+gid_t ucred_getsgid (const ucred_t *uc)
+{
+ if (uc->uc_credoff == 0)
+ {
+ __set_errno(EINVAL); \
+ return (gid_t)-1; \
+ }
+
+ return (gid_t)((prcred_t *)((char *)uc + uc->uc_credoff))->pr_sgid;
+}
int ucred_getgroups (const ucred_t *uc, const gid_t **groups)
#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
{
#define _SYS_PROCFS_ISA_H
#include <sys/regset.h>
+#include <sys/isa_defs.h>
-#ifdef __i386__
-# define R_PC EIP
-# define R_PS EFL
-# define R_SP UESP
-# define R_FP EBP
-# define R_R0 EAX
-# define R_R1 EDX
+#define PR_MODEL_UNKNOWN 0
+#define PR_MODEL_ILP32 1
+#define PR_MODEL_LP64 2
+
+#ifdef _LP64
+# define PR_MODEL_NATIVE PR_MODEL_LP64
#else
+# define PR_MODEL_NATIVE PR_MODEL_ILP32
+#endif
+
+typedef unsigned char instr_t;
+
+#define prgregset_t gregset_t
+#define prfpregset_t fpregset_t
+#define prgreg_t greg_t
+#define prfpregset fpu
+
+#define NPRGREG _NGREG
+
+#ifdef _SYSCALL32
+
+typedef unsigned char instr32_t;
+
+# if defined(__amd64)
+# define NPRGREG32 _NGREG32
+# define prgreg32_t greg32_t
+# define prgregset32_t gregset32_t
+# define prfpregset32 fpu32
+# define prfpregset32_t fpregset32_t
+# else
+# define NPRGREG32 _NGREG
+# define prgreg32_t greg_t
+# define prgregset32_t gregset_t
+# define prfpregset32 fpu
+# define prfpregset32_t fpregset_t
+# endif
+
+#endif /* _SYSCALL32 */
+
+#ifdef __amd64__
# define R_PC REG_RIP
# define R_PS REG_RFL
# define R_SP REG_RSP
# define R_FP REG_RBP
# define R_R0 REG_RAX
# define R_R1 REG_RDX
+#else
+# define R_PC EIP
+# define R_PS EFL
+# define R_SP UESP
+# define R_FP EBP
+# define R_R0 EAX
+# define R_R1 EDX
#endif
#endif /* _SYS_PROCFS_ISA_H */
#define _SYS_REGSET_H 1
#include <features.h>
+#include <bits/types.h>
#ifdef __USE_MISC
-#include <bits/regset.h>
+# ifdef __amd64__
+# define REG_R15 0
+# define REG_R14 1
+# define REG_R13 2
+# define REG_R12 3
+# define REG_R11 4
+# define REG_R10 5
+# define REG_R9 6
+# define REG_R8 7
+# define REG_RDI 8
+# define REG_RSI 9
+# define REG_RBP 10
+# define REG_RBX 11
+# define REG_RDX 12
+# define REG_RCX 13
+# define REG_RAX 14
+# define REG_TRAPNO 15
+# define REG_ERR 16
+# define REG_RIP 17
+# define REG_CS 18
+# define REG_RFL 19
+# define REG_RSP 20
+# define REG_SS 21
+# define REG_FS 22
+# define REG_GS 23
+# define REG_ES 24
+# define REG_DS 25
+# define REG_FSBASE 26
+# define REG_GSBASE 27
+# define REG_PC REG_RIP
+# define REG_FP REG_RBP
+# define REG_SP REG_RSP
+# define REG_PS REG_RFL
+# define REG_R0 REG_RAX
+# define REG_R1 REG_RDX
+# else /* __i386__ */
+# define GS 0
+# define FS 1
+# define ES 2
+# define DS 3
+# define EDI 4
+# define ESI 5
+# define EBP 6
+# define ESP 7
+# define EBX 8
+# define EDX 9
+# define ECX 10
+# define EAX 11
+# define TRAPNO 12
+# define ERR 13
+# define EIP 14
+# define CS 15
+# define EFL 16
+# define UESP 17
+# define SS 18
+# define REG_PC EIP
+# define REG_FP EBP
+# define REG_SP UESP
+# define REG_PS EFL
+# define REG_R0 EAX
+# define REG_R1 EDX
+# endif /* __amd64__ */
+
+#endif /* __USE_MISC */
+
+typedef struct __fpu
+ {
+ union
+ {
+ struct __fpchip_state
+ {
+ __uint32_t __state[27];
+ __uint32_t __status;
+ __uint32_t __mxcsr;
+ __uint32_t __xstatus;
+ __uint32_t __pad[2];
+ __uint32_t __xmm[4][8];
+ } __fpchip_state;
+ struct __fp_emul_space
+ {
+ __uint8_t __fp_emul[246];
+ __uint8_t __fp_epad[2];
+ } __fp_emul_space;
+ __uint32_t __f_fpregs[95];
+ } __fp_reg_set;
+ } fpregset_t;
+
+#ifdef __amd64
+# define _NGREG 28
+#else
+# define _NGREG 19
+#endif
+#define NGREG _NGREG
-#ifdef __amd64__
+typedef int greg_t;
+
+#if defined (_SYSCALL32)
+typedef int32_t greg32_t;
+typedef int64_t greg64_t;
+#endif
+
+typedef greg_t gregset_t[_NGREG];
-# define REG_R15 0
-# define REG_R14 1
-# define REG_R13 2
-# define REG_R12 3
-# define REG_R11 4
-# define REG_R10 5
-# define REG_R9 6
-# define REG_R8 7
-# define REG_RDI 8
-# define REG_RSI 9
-# define REG_RBP 10
-# define REG_RBX 11
-# define REG_RDX 12
-# define REG_RCX 13
-# define REG_RAX 14
-# define REG_TRAPNO 15
-# define REG_ERR 16
-# define REG_RIP 17
-# define REG_CS 18
-# define REG_RFL 19
-# define REG_RSP 20
-# define REG_SS 21
-# define REG_FS 22
-# define REG_GS 23
-# define REG_ES 24
-# define REG_DS 25
-# define REG_FSBASE 26
-# define REG_GSBASE 27
-
-# define REG_PC REG_RIP
-# define REG_FP REG_RBP
-# define REG_SP REG_RSP
-# define REG_PS REG_RFL
-# define REG_R0 REG_RAX
-# define REG_R1 REG_RDX
-
-#else /* __i386__ */
-
-# define GS 0
-# define FS 1
-# define ES 2
-# define DS 3
-# define EDI 4
-# define ESI 5
-# define EBP 6
-# define ESP 7
-# define EBX 8
-# define EDX 9
-# define ECX 10
-# define EAX 11
-# define TRAPNO 12
-# define ERR 13
-# define EIP 14
-# define CS 15
-# define EFL 16
-# define UESP 17
-# define SS 18
-
-# define REG_PC EIP
-# define REG_FP EBP
-# define REG_SP UESP
-# define REG_PS EFL
-# define REG_R0 EAX
-# define REG_R1 EDX
-
-#endif /* __amd64__ */
+typedef struct
+ {
+ gregset_t gregs;
+ fpregset_t fpregs;
+ } mcontext_t;
+#ifdef __USE_MISC
+
+struct fxsave_state
+ {
+ __uint16_t fx_fcw;
+ __uint16_t fx_fsw;
+ __uint16_t fx_fctw;
+ __uint16_t fx_fop;
+#ifdef __amd64__
+ __uint64_t fx_rip;
+ __uint64_t fx_rdp;
+#else
+ __uint32_t fx_eip;
+ __uint16_t fx_cs;
+ __uint16_t __fx_ign0;
+ __uint32_t fx_dp;
+ __uint16_t fx_ds;
+ __uint16_t __fx_ign1;
+#endif
+ __uint32_t fx_mxcsr;
+ __uint32_t fx_mxcsr_mask;
+ union
+ {
+ __uint16_t fpr_16[5];
+ unsigned long long fpr_mmx;
+ __uint32_t __fpr_pad[4];
+ } fx_st[8];
+#if defined(__amd64)
+ upad128_t fx_xmm[16]; /* 128-bit registers */
+ upad128_t __fx_ign2[6];
+#else
+ upad128_t fx_xmm[8]; /* 128-bit registers */
+ upad128_t __fx_ign2[14];
#endif
+ };
+
+struct fnsave_state
+ {
+ __uint16_t f_fcw;
+ __uint16_t __f_ign0;
+ __uint16_t f_fsw;
+ __uint16_t __f_ign1;
+ __uint16_t f_ftw;
+ __uint16_t __f_ign2;
+ __uint32_t f_eip;
+ __uint16_t f_cs;
+ __uint16_t f_fop;
+ __uint32_t f_dp;
+ __uint16_t f_ds;
+ __uint16_t __f_ign3;
+ union
+ {
+ __uint16_t fpr_16[5];
+ } f_st[8];
+ };
+
+typedef struct
+ {
+ union _kfpu_u
+ {
+ struct fxsave_state kfpu_fx;
+#ifdef __i386__
+ struct fnsave_state kfpu_fn;
+#endif
+ } kfpu_u;
+ __uint32_t kfpu_status;
+ __uint32_t kfpu_xstatus;
+ } kfpu_t;
+
+#endif /* __USE_MISC */
#endif /* _SYS_REGSET_H */