Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-08-04 09:28:52

0001 
0002 /*--------------------------------------------------------------------*/
0003 /*--- Solaris-specific kernel interface.             vki-solaris.h ---*/
0004 /*--------------------------------------------------------------------*/
0005 
0006 /*
0007    This file is part of Valgrind, a dynamic binary instrumentation
0008    framework.
0009 
0010    Copyright (C) 2011-2017 Petr Pavlu
0011       setup@dagobah.cz
0012 
0013    This program is free software; you can redistribute it and/or
0014    modify it under the terms of the GNU General Public License as
0015    published by the Free Software Foundation; either version 3 of the
0016    License, or (at your option) any later version.
0017 
0018    This program is distributed in the hope that it will be useful, but
0019    WITHOUT ANY WARRANTY; without even the implied warranty of
0020    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0021    General Public License for more details.
0022 
0023    You should have received a copy of the GNU General Public License
0024    along with this program; if not, see <http://www.gnu.org/licenses/>.
0025 
0026    The GNU General Public License is contained in the file COPYING.
0027 */
0028 
0029 /* Copyright 2013-2017, Ivo Raisr <ivosh@ivosh.net> */
0030 
0031 /* Copyright 2013, OmniTI Computer Consulting, Inc. All rights reserved. */
0032 
0033 /* The purpose of this file is described in vki-linux.h.
0034 
0035    To avoid any copyright issues, vki-solaris.h follows the same approach as
0036    vki-darwin.h (not copying anything from kernel header files but instead
0037    just including them).
0038  */
0039 
0040 #ifndef __VKI_SOLARIS_H
0041 #define __VKI_SOLARIS_H
0042 
0043 #include "config.h"
0044 
0045 /* _XOPEN_SOURCE equal to at least '500' is required so that various system
0046    structures have all necessary attributes (for example struct msghdr). */
0047 #if !defined(_XOPEN_SOURCE)
0048 /* Compiler versions c99 and higher require _XOPEN_SOURCE at least '600'. */
0049 #   if (__STDC_VERSION__ - 0 >= 199901L)
0050 #      define _XOPEN_SOURCE 600
0051 #   else
0052 #      define _XOPEN_SOURCE 500
0053 #   endif
0054 #elif (_XOPEN_SOURCE - 0 != 500) && (_XOPEN_SOURCE - 0 != 600) && (_XOPEN_SOURCE - 0 != 700)
0055 #   error "Compiler or options invalid for including this header file."
0056 #endif /* _XOPEN_SOURCE */
0057 
0058 #define __EXTENSIONS__ 1
0059 /* assert _FILE_OFFSET_BITS == 32 */
0060 
0061 #define VKI_PAGE_SHIFT 12
0062 #define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT)
0063 #define VKI_PAGEMASK (~VKI_PAGEOFFSET)
0064 #define VKI_PAGEOFFSET (VKI_PAGE_SIZE - 1)
0065 #define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT
0066 #define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE
0067 
0068 
0069 #include <sys/types.h>
0070 #define VKI_UINT_MAX UINT_MAX
0071 #define VKI_UINTPTR_MAX UINTPTR_MAX
0072 #define vki_boolean_t boolean_t
0073 #define vki_datalink_id_t datalink_id_t
0074 #define vki_uint_t uint_t
0075 #define vki_uint32_t uint32_t
0076 #define vki_uint64_t uint64_t
0077 #define vki_ulong_t ulong_t
0078 #define vki_caddr_t caddr_t
0079 #define vki_dev_t dev_t
0080 #define vki_off_t off_t
0081 #define vki_id_t id_t
0082 #define vki_key_t key_t
0083 #define vki_mode_t mode_t
0084 #define vki_o_dev_t o_dev_t
0085 #define vki_projid_t projid_t
0086 #define vki_uid_t uid_t
0087 #define vki_gid_t gid_t
0088 #define vki_pid_t pid_t
0089 #define vki_size_t size_t
0090 #define vki_time_t time_t
0091 #define vki_timer_t timer_t
0092 #define vki_uchar_t uchar_t
0093 
0094 typedef uint32_t vki_u32;
0095 
0096 
0097 #include <sys/types32.h>
0098 #define vki_size32_t size32_t
0099 
0100 
0101 #include <fcntl.h>
0102 #define VKI_SEEK_SET SEEK_SET
0103 #define VKI_AT_SYMLINK_NOFOLLOW AT_SYMLINK_NOFOLLOW
0104 
0105 
0106 #include <limits.h>
0107 #define VKI_NGROUPS_MAX NGROUPS_MAX
0108 #define VKI_PATH_MAX PATH_MAX
0109 /* Used in launcher-linux.c which we share with Linux port. */
0110 #define VKI_BINPRM_BUF_SIZE VKI_PATH_MAX
0111 
0112 
0113 #include <ucred.h>
0114 #define vki_ucred_t ucred_t
0115 
0116 
0117 #include <unistd.h>
0118 #define VKI_R_OK R_OK
0119 #define VKI_W_OK W_OK
0120 #define VKI_X_OK X_OK
0121 
0122 
0123 #include <bsm/audit.h>
0124 #define VKI_A_GETAMASK A_GETAMASK
0125 #define VKI_A_GETCAR A_GETCAR
0126 #define VKI_A_GETCLASS A_GETCLASS
0127 #define VKI_A_GETCOND A_GETCOND
0128 #define VKI_A_GETCWD A_GETCWD
0129 #define VKI_A_GETKAUDIT A_GETKAUDIT
0130 #define VKI_A_GETKMASK A_GETKMASK
0131 #define VKI_A_GETPINFO A_GETPINFO
0132 #define VKI_A_GETPINFO_ADDR A_GETPINFO_ADDR
0133 #define VKI_A_GETPOLICY A_GETPOLICY
0134 #define VKI_A_GETQCTRL A_GETQCTRL
0135 #if defined(SOLARIS_AUDITON_STAT)
0136 #define VKI_A_GETSTAT A_GETSTAT
0137 #define VKI_A_SETSTAT A_SETSTAT
0138 #endif /* SOLARIS_AUDITON_STAT */
0139 #define VKI_A_SETAMASK A_SETAMASK
0140 #define VKI_A_SETCLASS A_SETCLASS
0141 #define VKI_A_SETCOND A_SETCOND
0142 #define VKI_A_SETKAUDIT A_SETKAUDIT
0143 #define VKI_A_SETKMASK A_SETKMASK
0144 #define VKI_A_SETPMASK A_SETPMASK
0145 #define VKI_A_SETPOLICY A_SETPOLICY
0146 #define VKI_A_SETQCTRL A_SETQCTRL
0147 #define VKI_A_SETSMASK A_SETSMASK
0148 #define VKI_A_SETUMASK A_SETUMASK
0149 #define VKI_BSM_AUDIT BSM_AUDIT
0150 #define VKI_BSM_AUDITCTL BSM_AUDITCTL
0151 #define VKI_BSM_AUDITDOOR BSM_AUDITDOOR
0152 #define VKI_BSM_GETAUDIT BSM_GETAUDIT
0153 #define VKI_BSM_GETAUDIT_ADDR BSM_GETAUDIT_ADDR
0154 #define VKI_BSM_GETAUID BSM_GETAUID
0155 #define VKI_BSM_SETAUDIT BSM_SETAUDIT
0156 #define VKI_BSM_SETAUDIT_ADDR BSM_SETAUDIT_ADDR
0157 #define VKI_BSM_SETAUID BSM_SETAUID
0158 #define vki_au_evclass_map_t au_evclass_map_t
0159 #define vki_au_id_t au_id_t
0160 #define vki_au_mask_t au_mask_t
0161 #define vki_au_qctrl au_qctrl
0162 #define vki_auditinfo_t auditinfo_t
0163 #define vki_auditinfo_addr_t auditinfo_addr_t
0164 #define vki_auditpinfo auditpinfo
0165 #define vki_auditpinfo_addr auditpinfo_addr
0166 #if defined(SOLARIS_AUDITON_STAT)
0167 #define vki_au_stat_t au_stat_t
0168 #endif /* SOLARIS_AUDITON_STAT */
0169 
0170 
0171 #include <sys/psw.h>
0172 #define VKI_PSL_USER PSL_USER
0173 
0174 
0175 #include <ia32/sys/trap.h>
0176 #define VKI_T_BPTFLT T_BPTFLT
0177 
0178 
0179 /* From <libc/inc/libc_int.h> which is consolidation private. */
0180 #define VKI_CI_BIND_GUARD 4
0181 #define VKI_CI_BIND_CLEAR 5
0182 #define VKI_THR_FLG_RTLD 0x01
0183 
0184 typedef struct {
0185    int ci_tag;
0186    union {
0187       int (*ci_func)(int);
0188       long ci_val;
0189       char *ci_ptr;
0190    } vki_ci_un;
0191 } vki_Lc_interface;
0192 
0193 
0194 /* From <libc/port/gen/getxby_door.h> which is consolidation private. */
0195 #if defined(SOLARIS_NSCD_DOOR_SYSTEM_VOLATILE)
0196 #define VKI_NAME_SERVICE_DOOR "/system/volatile/name_service_door"
0197 #else
0198 #define VKI_NAME_SERVICE_DOOR "/var/run/name_service_door"
0199 #endif /* SOLARIS_NSCD_DOOR_SYSTEM_VOLATILE */
0200 
0201 
0202 #include <nfs/nfs.h>
0203 #include <nfs/nfssys.h>
0204 #define VKI_NFS_REVAUTH NFS_REVAUTH
0205 #define vki_nfs_revauth_args nfs_revauth_args
0206 
0207 
0208 #include <net/if.h>
0209 #define vki_ifconf ifconf
0210 #define vki_ifreq ifreq
0211 #define vki_lifconf lifconf
0212 #define vki_lifnum lifnum
0213 #define vki_lifreq lifreq
0214 
0215 
0216 #include <netinet/in.h>
0217 #define VKI_IPPROTO_TCP IPPROTO_TCP
0218 #define vki_in_addr in_addr
0219 #define vki_sockaddr_in sockaddr_in
0220 #define vki_sockaddr_in6 sockaddr_in6
0221 
0222 #include <netinet/tcp.h>
0223 #define VKI_TCP_NODELAY TCP_NODELAY
0224 
0225 
0226 /* Do not include nss_dbdefs.h if a C++ compiler is used to build a file
0227    which includes vki-solaris.h. This cannot be done because the nss_dbdefs.h
0228    header file uses 'delete' keyword as a method name. */
0229 #if !defined(__cplusplus)
0230 #include <nss_dbdefs.h>
0231 #define VKI_NSCD_CALLCAT_APP NSCD_CALLCAT_APP
0232 #define VKI_NSCDV2CATMASK NSCDV2CATMASK
0233 #define vki_nss_dbd_t nss_dbd_t
0234 #define vki_nss_pheader_t nss_pheader_t
0235 #endif /* !__cplusplus */
0236 
0237 
0238 /* From <repcache_protocol.h> which is consolidation private. */
0239 #include "vki-solaris-repcache.h"
0240 
0241 #include <sys/acl.h>
0242 #define vki_aclent_t aclent_t
0243 #define vki_ace_t ace_t
0244 #define VKI_GETACL GETACL
0245 #define VKI_SETACL SETACL
0246 #define VKI_GETACLCNT GETACLCNT
0247 #define VKI_ACE_GETACL ACE_GETACL
0248 #define VKI_ACE_SETACL ACE_SETACL
0249 #define VKI_ACE_GETACLCNT ACE_GETACLCNT
0250 
0251 
0252 #include <sys/auxv.h>
0253 #define vki_auxv_t auxv_t
0254 #define VKI_AT_NULL AT_NULL
0255 #define VKI_AT_PHDR AT_PHDR
0256 #define VKI_AT_PAGESZ AT_PAGESZ
0257 #define VKI_AT_BASE AT_BASE
0258 #define VKI_AT_FLAGS AT_FLAGS
0259 #define VKI_AT_ENTRY AT_ENTRY
0260 #define VKI_AT_SUN_PLATFORM AT_SUN_PLATFORM
0261 #define VKI_AT_SUN_HWCAP AT_SUN_HWCAP
0262 #define VKI_AT_SUN_EXECNAME AT_SUN_EXECNAME
0263 #define VKI_AT_SUN_AUXFLAGS AT_SUN_AUXFLAGS
0264 #if defined(SOLARIS_RESERVE_SYSSTAT_ADDR)
0265 #define VKI_AT_SUN_SYSSTAT_ADDR AT_SUN_SYSSTAT_ADDR
0266 #endif
0267 #if defined(SOLARIS_RESERVE_SYSSTAT_ZONE_ADDR)
0268 #define VKI_AT_SUN_SYSSTAT_ZONE_ADDR AT_SUN_SYSSTAT_ZONE_ADDR
0269 #endif
0270 
0271 #define VKI_AF_SUN_HWCAPVERIFY AF_SUN_HWCAPVERIFY
0272 
0273 
0274 #include <sys/auxv_386.h>
0275 #define VKI_AV_386_FPU AV_386_FPU
0276 #define VKI_AV_386_TSC AV_386_TSC
0277 #define VKI_AV_386_CX8 AV_386_CX8
0278 #define VKI_AV_386_SEP AV_386_SEP
0279 #define VKI_AV_386_AMD_SYSC AV_386_AMD_SYSC
0280 #define VKI_AV_386_CMOV AV_386_CMOV
0281 #define VKI_AV_386_MMX AV_386_MMX
0282 #define VKI_AV_386_FXSR AV_386_FXSR
0283 #define VKI_AV_386_SSE AV_386_SSE
0284 #define VKI_AV_386_SSE2 AV_386_SSE2
0285 #define VKI_AV_386_SSE3 AV_386_SSE3
0286 #define VKI_AV_386_CX16 AV_386_CX16
0287 #define VKI_AV_386_AHF AV_386_AHF
0288 #define VKI_AV_386_TSCP AV_386_TSCP
0289 #define VKI_AV_386_POPCNT AV_386_POPCNT
0290 #define VKI_AV_386_AMD_LZCNT AV_386_AMD_LZCNT
0291 #define VKI_AV_386_SSSE3 AV_386_SSSE3
0292 #define VKI_AV_386_SSE4_1 AV_386_SSE4_1
0293 #define VKI_AV_386_SSE4_2 AV_386_SSE4_2
0294 #define VKI_AV_386_AES AV_386_AES
0295 #define VKI_AV_386_PCLMULQDQ AV_386_PCLMULQDQ
0296 #define VKI_AV_386_XSAVE AV_386_XSAVE
0297 
0298 
0299 #include <sys/corectl.h>
0300 #define VKI_CC_CONTENT_ANON CC_CONTENT_ANON
0301 #define VKI_CC_CONTENT_DATA CC_CONTENT_DATA
0302 #define VKI_CC_CONTENT_DISM CC_CONTENT_DISM
0303 #define VKI_CC_CONTENT_HEAP CC_CONTENT_HEAP
0304 #define VKI_CC_CONTENT_ISM CC_CONTENT_ISM
0305 #define VKI_CC_CONTENT_RODATA CC_CONTENT_RODATA
0306 #define VKI_CC_CONTENT_SHANON CC_CONTENT_SHANON
0307 #define VKI_CC_CONTENT_SHM CC_CONTENT_SHM
0308 #define VKI_CC_CONTENT_STACK CC_CONTENT_STACK
0309 #define VKI_CC_CONTENT_TEXT CC_CONTENT_TEXT
0310 #define vki_core_content_t core_content_t
0311 
0312 
0313 /* From <sys/crypto/elfsign.h> which is consolidation private. */
0314 #define VKI__PATH_KCFD_DOOR "/system/volatile/kcfd_door"
0315 typedef enum vki_ELFsign_status_e {
0316    VKI_ELFSIGN_UNKNOWN,
0317    VKI_ELFSIGN_SUCCESS,
0318    VKI_ELFSIGN_FAILED,
0319    VKI_ELFSIGN_NOTSIGNED,
0320    VKI_ELFSIGN_INVALID_CERTPATH,
0321    VKI_ELFSIGN_INVALID_ELFOBJ,
0322    VKI_ELFSIGN_UNAVAILABLE
0323 } vki_ELFsign_status_t;
0324 typedef struct vki_kcf_door_arg_s {
0325    short         da_version;
0326    vki_boolean_t da_iskernel;
0327    union {
0328       char filename[MAXPATHLEN];    /* For request */
0329 
0330       struct vki_kcf_door_result_s {    /* For response */
0331          vki_ELFsign_status_t status;
0332          vki_uint32_t         siglen;
0333          vki_uchar_t          signature[1];
0334       } result;
0335    } vki_da_u;
0336 } vki_kcf_door_arg_t;
0337 
0338 // https://bugs.kde.org/show_bug.cgi?id=512291
0339 // crypto ioctl removed from Solaris late 2025
0340 #if defined(HAVE_SYS_CRYPTO_IOCTL_H)
0341 #include <sys/crypto/ioctl.h>
0342 #define VKI_CRYPTO_SUCCESS CRYPTO_SUCCESS
0343 #define VKI_CRYPTO_GET_PROVIDER_LIST CRYPTO_GET_PROVIDER_LIST
0344 #define vki_crypto_provider_id_t crypto_provider_id_t
0345 #define vki_crypto_provider_entry_t crypto_provider_entry_t
0346 #define vki_crypto_get_provider_list_t crypto_get_provider_list_t
0347 #endif
0348 
0349 #include <sys/dditypes.h>
0350 #include <sys/devinfo_impl.h>
0351 #define VKI_DINFOUSRLD DINFOUSRLD
0352 #define VKI_DINFOIDENT DINFOIDENT
0353 
0354 
0355 #include <sys/dirent.h>
0356 #define VKI_MAXGETDENTS_SIZE MAXGETDENTS_SIZE
0357 #define vki_dirent dirent
0358 #define vki_dirent64 dirent64
0359 
0360 
0361 #include <sys/door.h>
0362 #define vki_door_desc_t door_desc_t
0363 #define vki_door_info_t door_info_t
0364 #define vki_door_arg_t door_arg_t
0365 #define vki_door_results door_results
0366 #define vki_door_return_desc_t door_return_desc_t
0367 
0368 #define VKI_DOOR_CREATE DOOR_CREATE
0369 #define VKI_DOOR_REVOKE DOOR_REVOKE
0370 #define VKI_DOOR_INFO DOOR_INFO
0371 #define VKI_DOOR_CALL DOOR_CALL
0372 #define VKI_DOOR_BIND DOOR_BIND
0373 #define VKI_DOOR_UNBIND DOOR_UNBIND
0374 #define VKI_DOOR_UNREFSYS DOOR_UNREFSYS
0375 #define VKI_DOOR_UCRED DOOR_UCRED
0376 #define VKI_DOOR_RETURN DOOR_RETURN
0377 #define VKI_DOOR_GETPARAM DOOR_GETPARAM
0378 #define VKI_DOOR_SETPARAM DOOR_SETPARAM
0379 
0380 
0381 #include <sys/dtrace.h>
0382 #define VKI_DTRACEHIOC_REMOVE DTRACEHIOC_REMOVE
0383 #define VKI_DTRACEHIOC_ADDDOF DTRACEHIOC_ADDDOF
0384 #define vki_dof_helper_t dof_helper_t
0385 
0386 
0387 #include <sys/elf.h>
0388 #define VKI_EI_CLASS EI_CLASS
0389 #define VKI_EI_DATA EI_DATA
0390 #define VKI_EI_MAG0 EI_MAG0
0391 #define VKI_EI_MAG1 EI_MAG1
0392 #define VKI_EI_MAG2 EI_MAG2
0393 #define VKI_EI_MAG3 EI_MAG3
0394 #define VKI_EI_VERSION EI_VERSION
0395 #define VKI_ELFMAG ELFMAG
0396 #define VKI_ELFMAG ELFMAG
0397 #define VKI_ELFMAG0 ELFMAG0
0398 #define VKI_ELFMAG1 ELFMAG1
0399 #define VKI_ELFMAG2 ELFMAG2
0400 #define VKI_ELFMAG3 ELFMAG3
0401 #define VKI_ET_CORE ET_CORE
0402 #define VKI_ET_DYN ET_DYN
0403 #define VKI_ET_EXEC ET_EXEC
0404 #define VKI_EV_CURRENT EV_CURRENT
0405 #define VKI_NT_AUXV NT_AUXV
0406 #define VKI_NT_CONTENT NT_CONTENT
0407 #define VKI_NT_LWPSINFO NT_LWPSINFO
0408 #define VKI_NT_LWPSTATUS NT_LWPSTATUS
0409 #define VKI_NT_PLATFORM NT_PLATFORM
0410 #define VKI_NT_PRCRED NT_PRCRED
0411 #define VKI_NT_PRFPREG NT_PRFPREG
0412 #define VKI_NT_PRPRIV NT_PRPRIV
0413 #define VKI_NT_PRPRIVINFO NT_PRPRIVINFO
0414 #define VKI_NT_PRPSINFO NT_PRPSINFO
0415 #define VKI_NT_PRSTATUS NT_PRSTATUS
0416 #define VKI_NT_PRXREG NT_PRXREG
0417 #define VKI_NT_PSINFO NT_PSINFO
0418 #define VKI_NT_PSTATUS NT_PSTATUS
0419 #define VKI_NT_UTSNAME NT_UTSNAME
0420 #define VKI_NT_ZONENAME NT_ZONENAME
0421 #define VKI_PF_R PF_R
0422 #define VKI_PF_W PF_W
0423 #define VKI_PF_X PF_X
0424 #define VKI_PN_XNUM PN_XNUM
0425 #define VKI_PT_LOAD PT_LOAD
0426 #define VKI_PT_SUNWBSS PT_SUNWBSS
0427 #define VKI_SELFMAG SELFMAG
0428 
0429 #if VG_WORDSIZE == 8
0430 #define VKI_ESZ(x) Elf64_##x
0431 #elif   VG_WORDSIZE == 4
0432 #define VKI_ESZ(x) Elf32_##x
0433 #else
0434 #error VG_WORDSIZE needs to ==4 or ==8
0435 #endif
0436 
0437 
0438 #include <sys/errno.h>
0439 #define VKI_EPERM EPERM
0440 #define VKI_ENOENT ENOENT
0441 #define VKI_ESRCH ESRCH
0442 #define VKI_EINTR EINTR
0443 #define VKI_EIO EIO
0444 #define VKI_ENXIO ENXIO
0445 #define VKI_E2BIG E2BIG
0446 #define VKI_EBADF EBADF
0447 #define VKI_ECHILD ECHILD
0448 #define VKI_ENOEXEC ENOEXEC
0449 #define VKI_EAGAIN EAGAIN
0450 #define VKI_ENOMEM ENOMEM
0451 #define VKI_EACCES EACCES
0452 #define VKI_EFAULT EFAULT
0453 #define VKI_ENOTBLK ENOTBLK
0454 #define VKI_EBUSY EBUSY
0455 #define VKI_EEXIST EEXIST
0456 #define VKI_EXDEV EXDEV
0457 #define VKI_ENODEV ENODEV
0458 #define VKI_ENOTDIR ENOTDIR
0459 #define VKI_EISDIR EISDIR
0460 #define VKI_EINVAL EINVAL
0461 #define VKI_ENFILE ENFILE
0462 #define VKI_EMFILE EMFILE
0463 #define VKI_ENOTTY ENOTTY
0464 #define VKI_ETXTBSY ETXTBSY
0465 #define VKI_EFBIG EFBIG
0466 #define VKI_ENOSPC ENOSPC
0467 #define VKI_ESPIPE ESPIPE
0468 #define VKI_EROFS EROFS
0469 #define VKI_EMLINK EMLINK
0470 #define VKI_EPIPE EPIPE
0471 #define VKI_EDOM EDOM
0472 #define VKI_ERANGE ERANGE
0473 #define VKI_ENOTSUP ENOTSUP
0474 #define VKI_ENODATA ENODATA
0475 #define VKI_EOVERFLOW EOVERFLOW
0476 #define VKI_ENOSYS ENOSYS
0477 #define VKI_ERESTART ERESTART
0478 #define VKI_EADDRINUSE EADDRINUSE
0479 
0480 
0481 #if defined(SOLARIS_EXECVE_SYSCALL_TAKES_FLAGS)
0482 #include <sys/execx.h>
0483 #define VKI_EXEC_DESCRIPTOR EXEC_DESCRIPTOR
0484 #endif /* SOLARIS_EXECVE_SYSCALL_TAKES_FLAGS */
0485 
0486 
0487 #include <sys/fasttrap.h>
0488 #define VKI_PT_SUNWDTRACE_SIZE PT_SUNWDTRACE_SIZE
0489 
0490 
0491 #include <sys/fcntl.h>
0492 #define VKI_O_RDONLY O_RDONLY
0493 #define VKI_O_WRONLY O_WRONLY
0494 #define VKI_O_RDWR O_RDWR
0495 #define VKI_O_APPEND O_APPEND
0496 #define VKI_O_NONBLOCK O_NONBLOCK
0497 
0498 #define VKI_O_CREAT O_CREAT
0499 #define VKI_O_TRUNC O_TRUNC
0500 #define VKI_O_EXCL O_EXCL
0501 #define VKI_O_LARGEFILE O_LARGEFILE
0502 
0503 #define VKI_F_DUPFD F_DUPFD
0504 #define VKI_F_DUPFD_CLOEXEC F_DUPFD_CLOEXEC
0505 #define VKI_F_GETFD F_GETFD
0506 #define VKI_F_SETFD F_SETFD
0507 #define VKI_F_GETFL F_GETFL
0508 #define VKI_F_GETXFL F_GETXFL
0509 #define VKI_F_SETFL F_SETFL
0510 
0511 /* SVR3 rfs compatibility const, declared only if _KERNEL or _KMEMUSER is
0512    defined. */
0513 #if 0
0514 #define VKI_F_O_GETLK F_O_GETLK
0515 #endif // 0
0516 
0517 #define VKI_F_DUP2FD F_DUP2FD
0518 
0519 /* Mostly unused and kernel-unimplemented commands. In case of F_GETOWN and
0520    F_GETOWN, they are translated by libc in __fcntl() into other syscalls,
0521    that means these two values are never passed to the fcntl handler in the
0522    kernel. F_HASREMOTELOCKS is also special, the fcntl kernel handler doesn't
0523    know about it but it's used inside the kernel. */
0524 #if 0
0525 #define VKI_F_ISSTREAM F_ISSTREAM
0526 #define VKI_F_PRIV F_PRIV
0527 #define VKI_F_NPRIV F_NPRIV
0528 #define VKI_F_QUATACTL F_QUOTACTL
0529 #define VKI_F_BLOCKS F_BLOCKS
0530 #define VKI_F_BLKSIZE F_BLKSIZE
0531 #define VKI_F_GETOWN F_GETOWN
0532 #define VKI_F_SETOWN F_SETOWN
0533 #define VKI_F_REVOKE F_REVOKE
0534 #define VKI_F_HASREMOTELOCKS F_HASREMOTELOCKS
0535 #endif // 0
0536 
0537 #define VKI_F_SETLK F_SETLK
0538 #define VKI_F_SETLKW F_SETLKW
0539 #define VKI_F_ALLOCSP F_ALLOCSP
0540 #define VKI_F_FREESP F_FREESP
0541 #define VKI_F_GETLK F_GETLK
0542 #define VKI_F_SETLK_NBMAND F_SETLK_NBMAND
0543 #if defined(VGP_x86_solaris)
0544 #define VKI_F_SETLK64 F_SETLK64
0545 #define VKI_F_SETLKW64 F_SETLKW64
0546 #define VKI_F_ALLOCSP64 F_ALLOCSP64
0547 #define VKI_F_FREESP64 F_FREESP64
0548 #define VKI_F_GETLK64 F_GETLK64
0549 #define VKI_F_SETLK64_NBMAND F_SETLK64_NBMAND
0550 #endif // defined(VGP_x86_solaris)
0551 
0552 #define VKI_F_SHARE F_SHARE
0553 #define VKI_F_UNSHARE F_UNSHARE
0554 #define VKI_F_SHARE_NBMAND F_SHARE_NBMAND
0555 
0556 #define VKI_F_BADFD F_BADFD
0557 
0558 #define vki_flock flock
0559 #if defined(VGP_x86_solaris)
0560 #define vki_flock64 flock64
0561 #endif // defined(VGP_x86_solaris)
0562 
0563 #define VKI_FD_CLOEXEC FD_CLOEXEC
0564 
0565 #define vki_fshare fshare
0566 
0567 #define VKI_AT_FDCWD AT_FDCWD
0568 
0569 
0570 #include <sys/filio.h>
0571 #define VKI_FIOSETOWN FIOSETOWN
0572 #define VKI_FIOGETOWN FIOGETOWN
0573 
0574 
0575 #include <sys/fs/namenode.h>
0576 #define vki_namefd namefd
0577 
0578 
0579 #include <sys/fstyp.h>
0580 #define VKI_FSTYPSZ FSTYPSZ
0581 #define VKI_GETFSIND GETFSIND
0582 #define VKI_GETFSTYP GETFSTYP
0583 #define VKI_GETNFSTYP GETNFSTYP
0584 
0585 
0586 #include <sys/ioccom.h>
0587 #define _VKI_IOC_DIR(x) ((x) & (IOC_VOID | IOC_OUT | IOC_IN))
0588 #define _VKI_IOC_SIZE(x) (((x) >> 16) & IOCPARM_MASK)
0589 #define _VKI_IOC_NONE 0
0590 #define _VKI_IOC_READ IOC_OUT
0591 #define _VKI_IOC_WRITE IOC_IN
0592 
0593 
0594 #include <sys/ipc.h>
0595 #include <sys/ipc_impl.h>
0596 #define VKI_IPC_RMID IPC_RMID
0597 #define VKI_IPC_SET IPC_SET
0598 #define VKI_IPC_SET64 IPC_SET64
0599 #define VKI_IPC_STAT IPC_STAT
0600 #define VKI_IPC_STAT64 IPC_STAT64
0601 #if defined(SOLARIS_SHM_NEW)
0602 #define VKI_IPC_XSTAT64 IPC_XSTAT64
0603 #endif /* SOLARIS_SHM_NEW */
0604 
0605 #define vki_semid64_ds semid_ds64
0606 
0607 
0608 #include <sys/lgrp_user.h>
0609 #if defined(HAVE_SYS_LGRP_USER_IMPL_H)
0610 /* Include implementation specific header file on newer Solaris. */
0611 #include <sys/lgrp_user_impl.h>
0612 #endif /* HAVE_SYS_LGRP_USER_IMPL_H */
0613 #define VKI_LGRP_SYS_MEMINFO LGRP_SYS_MEMINFO
0614 #define VKI_LGRP_SYS_GENERATION LGRP_SYS_GENERATION
0615 #define VKI_LGRP_SYS_VERSION LGRP_SYS_VERSION
0616 #define VKI_LGRP_SYS_SNAPSHOT LGRP_SYS_SNAPSHOT
0617 #define VKI_LGRP_SYS_AFFINITY_GET LGRP_SYS_AFFINITY_GET
0618 #define VKI_LGRP_SYS_AFFINITY_SET LGRP_SYS_AFFINITY_SET
0619 #define VKI_LGRP_SYS_LATENCY LGRP_SYS_LATENCY
0620 #define VKI_LGRP_SYS_HOME LGRP_SYS_HOME
0621 #define VKI_LGRP_SYS_AFF_INHERIT_GET LGRP_SYS_AFF_INHERIT_GET
0622 #define VKI_LGRP_SYS_AFF_INHERIT_SET LGRP_SYS_AFF_INHERIT_SET
0623 #define VKI_LGRP_SYS_DEVICE_LGRPS LGRP_SYS_DEVICE_LGRPS
0624 #define VKI_LGRP_SYS_MAXSOCKETS_GET LGRP_SYS_MAXSOCKETS_GET
0625 #define vki_lgrp_view_t lgrp_view_t
0626 
0627 
0628 #include <sys/loadavg.h>
0629 #define VKI_LOADAVG_NSTATS LOADAVG_NSTATS
0630 
0631 
0632 #include <sys/lwp.h>
0633 #define VKI_LWP_DAEMON LWP_DAEMON
0634 #define VKI_LWP_FSBASE _LWP_FSBASE
0635 #define VKI_LWP_GSBASE _LWP_GSBASE
0636 #define VKI_LWP_SETPRIVATE _LWP_SETPRIVATE
0637 #define VKI_LWP_GETPRIVATE _LWP_GETPRIVATE
0638 
0639 
0640 #include <sys/mman.h>
0641 #define VKI_PROT_READ PROT_READ
0642 #define VKI_PROT_WRITE PROT_WRITE
0643 #define VKI_PROT_EXEC PROT_EXEC
0644 #define VKI_PROT_NONE PROT_NONE
0645 
0646 #define VKI_MAP_SHARED MAP_SHARED
0647 #define VKI_MAP_PRIVATE MAP_PRIVATE
0648 #define VKI_MAP_FIXED MAP_FIXED
0649 #define VKI_MAP_ANONYMOUS MAP_ANONYMOUS
0650 #define VKI_MAP_ALIGN MAP_ALIGN
0651 #define VKI_MAP_TEXT MAP_TEXT
0652 #define VKI_MAP_INITDATA MAP_INITDATA
0653 
0654 #define VKI_MMOBJ_ALL_FLAGS MMOBJ_ALL_FLAGS
0655 #define VKI_MMOBJ_INTERPRET MMOBJ_INTERPRET
0656 #define VKI_MMOBJ_PADDING MMOBJ_PADDING
0657 #define VKI_MR_PADDING MR_PADDING
0658 #define VKI_MR_HDR_ELF MR_HDR_ELF
0659 #define VKI_MR_GET_TYPE(val) MR_GET_TYPE(val)
0660 #define vki_mmapobj_result_t mmapobj_result_t
0661 
0662 #define vki_memcntl_mha memcntl_mha
0663 #define VKI_MC_LOCKAS MC_LOCKAS
0664 #define VKI_MC_UNLOCKAS MC_UNLOCKAS
0665 #define VKI_MC_HAT_ADVISE MC_HAT_ADVISE
0666 
0667 #define vki_meminfo_t meminfo_t
0668 
0669 #if defined(HAVE_MREMAP)
0670 #define VKI_MREMAP_FIXED MREMAP_FIXED
0671 #define VKI_MREMAP_MAYMOVE MREMAP_MAYMOVE
0672 #endif /* HAVE_MREMAP */
0673 
0674 
0675 #include <sys/mntio.h>
0676 #define VKI_MNTIOC_GETEXTMNTENT MNTIOC_GETEXTMNTENT
0677 #define VKI_MNTIOC_GETMNTANY MNTIOC_GETMNTANY
0678 
0679 
0680 #include <sys/mnttab.h>
0681 #define vki_extmnttab extmnttab
0682 #define vki_mntentbuf mntentbuf
0683 #define vki_mnttab mnttab
0684 
0685 
0686 #include <sys/modctl.h>
0687 #define VKI_MODLOAD MODLOAD
0688 #define VKI_MODUNLOAD MODUNLOAD
0689 #define VKI_MODINFO MODINFO
0690 
0691 #if defined(SOLARIS_MODCTL_MODNVL)
0692 #define VKI_MODNVL_DEVLINKSYNC MODNVL_DEVLINKSYNC
0693 #define VKI_MODDEVINFO_CACHE_TS MODDEVINFO_CACHE_TS
0694 #if !defined(HAVE_SYS_SYSNVL_H)
0695 #define VKI_MODCTL_NVL_OP_GET MODCTL_NVL_OP_GET
0696 #define VKI_MODCTL_NVL_OP_UPDATE MODCTL_NVL_OP_UPDATE
0697 #endif /* !HAVE_SYS_SYSNVL_H */
0698 #endif /* SOLARIS_MODCTL_MODNVL */
0699 
0700 #define vki_modid_t int
0701 #define vki_modinfo modinfo
0702 
0703 
0704 #include <sys/mount.h>
0705 #define VKI_MS_DATA MS_DATA
0706 #define VKI_MS_OPTIONSTR MS_OPTIONSTR
0707 
0708 
0709 #include <sys/poll.h>
0710 #define vki_pollfd pollfd
0711 #define vki_pollfd_t pollfd_t
0712 #define vki_nfds_t nfds_t
0713 
0714 
0715 #include <sys/pool_impl.h>
0716 #define VKI_POOL_STATUSQ POOL_STATUSQ
0717 #define vki_pool_status_t pool_status_t
0718 
0719 
0720 #include <sys/port.h>
0721 #include <sys/port_impl.h>
0722 #define VKI_PORT_SOURCE_FD PORT_SOURCE_FD
0723 #define VKI_PORT_SOURCE_FILE PORT_SOURCE_FILE
0724 
0725 #define vki_port_event_t port_event_t
0726 #define vki_port_notify_t port_notify_t
0727 #define vki_file_obj file_obj
0728 
0729 #define VKI_PORT_CREATE PORT_CREATE
0730 #define VKI_PORT_ASSOCIATE PORT_ASSOCIATE
0731 #define VKI_PORT_DISSOCIATE PORT_DISSOCIATE
0732 #define VKI_PORT_SEND PORT_SEND
0733 #define VKI_PORT_SENDN PORT_SENDN
0734 #define VKI_PORT_GET PORT_GET
0735 #define VKI_PORT_GETN PORT_GETN
0736 #define VKI_PORT_ALERT PORT_ALERT
0737 #define VKI_PORT_DISPATCH PORT_DISPATCH
0738 
0739 #define VKI_PORT_SYS_NOPORT PORT_SYS_NOPORT
0740 #define VKI_PORT_CODE_MASK PORT_CODE_MASK
0741 
0742 
0743 #include <sys/priocntl.h>
0744 #include <sys/rtpriocntl.h>
0745 #include <sys/tspriocntl.h>
0746 #include <sys/iapriocntl.h>
0747 #include <sys/fsspriocntl.h>
0748 #include <sys/fxpriocntl.h>
0749 #define VKI_PC_GETCID PC_GETCID
0750 #define VKI_PC_GETCLINFO PC_GETCLINFO
0751 #define VKI_PC_SETPARMS PC_SETPARMS
0752 #define VKI_PC_GETPARMS PC_GETPARMS
0753 #define VKI_PC_ADMIN PC_ADMIN
0754 #define VKI_PC_GETPRIRANGE PC_GETPRIRANGE
0755 #define VKI_PC_DONICE PC_DONICE
0756 #define VKI_PC_SETXPARMS PC_SETXPARMS
0757 #define VKI_PC_GETXPARMS PC_GETXPARMS
0758 #define VKI_PC_SETDFLCL PC_SETDFLCL
0759 #define VKI_PC_GETDFLCL PC_GETDFLCL
0760 #define VKI_PC_DOPRIO PC_DOPRIO
0761 
0762 #define VKI_PC_CLNMSZ PC_CLNMSZ
0763 
0764 #define VKI_PC_GETNICE PC_GETNICE
0765 #define VKI_PC_SETNICE PC_SETNICE
0766 
0767 #define VKI_PC_GETPRIO PC_GETPRIO
0768 #define VKI_PC_SETPRIO PC_SETPRIO
0769 
0770 #define vki_pcinfo_t pcinfo_t
0771 #define vki_rtinfo_t rtinfo_t
0772 #define vki_tsinfo_t tsinfo_t
0773 #define vki_iainfo_t iainfo_t
0774 #define vki_fssinfo_t fssinfo_t
0775 #define vki_fxinfo_t fxinfo_t
0776 
0777 #define vki_pcparms_t pcparms_t
0778 #define vki_pcnice_t pcnice_t
0779 #define vki_pcprio_t pcprio_t
0780 #define vki_pc_vaparm_t pc_vaparm_t
0781 #define vki_pc_vaparms_t pc_vaparms_t
0782 #define vki_pcpri_t pcpri_t
0783 
0784 #define VKI_PC_KY_CLNAME PC_KY_CLNAME
0785 #define VKI_RT_KY_PRI RT_KY_PRI
0786 #define VKI_RT_KY_TQSECS RT_KY_TQSECS
0787 #define VKI_RT_KY_TQNSECS RT_KY_TQNSECS
0788 #define VKI_RT_KY_TQSIG RT_KY_TQSIG
0789 #define VKI_TS_KY_UPRILIM TS_KY_UPRILIM
0790 #define VKI_TS_KY_UPRI TS_KY_UPRI
0791 #define VKI_IA_KY_UPRILIM IA_KY_UPRILIM
0792 #define VKI_IA_KY_UPRI IA_KY_UPRI
0793 #define VKI_IA_KY_MODE IA_KY_MODE
0794 #define VKI_FSS_KY_UPRILIM FSS_KY_UPRILIM
0795 #define VKI_FSS_KY_UPRI FSS_KY_UPRI
0796 #define VKI_FX_KY_UPRILIM FX_KY_UPRILIM
0797 #define VKI_FX_KY_UPRI FX_KY_UPRI
0798 #define VKI_FX_KY_TQSECS FX_KY_TQSECS
0799 #define VKI_FX_KY_TQNSECS FX_KY_TQNSECS
0800 
0801 
0802 #include <sys/priv.h>
0803 #define vki_priv_impl_info_t priv_impl_info_t
0804 
0805 
0806 #include <sys/proc.h>
0807 #define VKI_SRUN SRUN
0808 #define VKI_SSLEEP SSLEEP
0809 #define VKI_SZOMB SZOMB
0810 
0811 
0812 #include <sys/processor.h>
0813 #define vki_processorid_t processorid_t
0814 
0815 
0816 /* We want the new /proc definitions. */
0817 #define _STRUCTURED_PROC 1
0818 #include <sys/procfs.h>
0819 #define VKI_MA_READ MA_READ
0820 #define VKI_MA_WRITE MA_WRITE
0821 #define VKI_MA_EXEC MA_EXEC
0822 #define VKI_PRNODEV PRNODEV
0823 #define VKI_PR_PCINVAL PR_PCINVAL
0824 #define vki_lwpsinfo_t lwpsinfo_t
0825 #define vki_lwpstatus_t lwpstatus_t
0826 #define vki_prcred_t prcred_t
0827 #define vki_prmap_t prmap_t
0828 #define vki_prpriv_t prpriv_t
0829 #define vki_prxmap_t prxmap_t
0830 #define vki_pstatus_t pstatus_t
0831 #define vki_psinfo_t psinfo_t
0832 
0833 
0834 #include <sys/procfs_isa.h>
0835 #if defined(SOLARIS_PRXREGSET_T)
0836 #define vki_prxregset_t prxregset_t
0837 #endif /* SOLARIS_PRXREGSET_T */
0838 
0839 
0840 #include <sys/procset.h>
0841 #define vki_idtype_t idtype_t
0842 #define VKI_P_PID P_PID
0843 #define VKI_P_PGID P_PGID
0844 #define VKI_P_ALL P_ALL
0845 #define VKI_POP_AND POP_AND
0846 #define vki_procset_t procset_t
0847 
0848 
0849 #include <sys/pset.h>
0850 #define VKI_PSET_CREATE PSET_CREATE
0851 #define VKI_PSET_DESTROY PSET_DESTROY
0852 #define VKI_PSET_ASSIGN PSET_ASSIGN
0853 #define VKI_PSET_INFO PSET_INFO
0854 #define VKI_PSET_BIND PSET_BIND
0855 #define VKI_PSET_GETLOADAVG PSET_GETLOADAVG
0856 #define VKI_PSET_LIST PSET_LIST
0857 #define VKI_PSET_SETATTR PSET_SETATTR
0858 #define VKI_PSET_GETATTR PSET_GETATTR
0859 #define VKI_PSET_ASSIGN_FORCED PSET_ASSIGN_FORCED
0860 #define VKI_PSET_BIND_LWP PSET_BIND_LWP
0861 #if defined(SOLARIS_PSET_GET_NAME)
0862 #define VKI_PSET_GET_NAME PSET_GET_NAME
0863 #endif /* SOLARIS_PSET_GET_NAME */
0864 #define vki_psetid_t psetid_t
0865 
0866 
0867 #include <sys/regset.h>
0868 #define vki_prgregset_t prgregset_t
0869 
0870 
0871 #include <sys/resource.h>
0872 #define VKI_RLIMIT_DATA RLIMIT_DATA
0873 #define VKI_RLIMIT_STACK RLIMIT_STACK
0874 #define VKI_RLIMIT_CORE RLIMIT_CORE
0875 #define VKI_RLIMIT_NOFILE RLIMIT_NOFILE
0876 #define VKI__RUSAGESYS_GETRUSAGE _RUSAGESYS_GETRUSAGE
0877 #define VKI__RUSAGESYS_GETRUSAGE_CHLD _RUSAGESYS_GETRUSAGE_CHLD
0878 #define VKI__RUSAGESYS_GETRUSAGE_LWP _RUSAGESYS_GETRUSAGE_LWP
0879 #define VKI__RUSAGESYS_GETVMUSAGE _RUSAGESYS_GETVMUSAGE
0880 #define vki_rlimit rlimit
0881 #define vki_rlimit64 rlimit64
0882 #define vki_rusage rusage
0883 
0884 
0885 #include <sys/schedctl.h>
0886 #define vki_sc_shared sc_shared
0887 
0888 
0889 #include <sys/segments.h>
0890 #define VKI_GDT_LWPGS GDT_LWPGS
0891 #if defined(VGP_amd64_solaris)
0892 /* Values VKI_UCS_SEL/VKI_UDS_SEL can be used only on amd64. On x86, correct
0893    %cs/%ds values for a client need to be obtained from the host registers
0894    because they are different depending on the running kernel (x86 or amd64).
0895  */
0896 #define VKI_UCS_SEL UCS_SEL
0897 #define VKI_UDS_SEL UDS_SEL
0898 #endif
0899 #define VKI_LWPGS_SEL LWPGS_SEL
0900 
0901 
0902 #include <sys/select.h>
0903 #define vki_fd_set fd_set
0904 
0905 
0906 #include <sys/priv.h>
0907 /* Define _KMEMUSER so priv_set is pulled in. */
0908 #define _KMEMUSER
0909 #include <sys/priv_impl.h>
0910 #undef _KMEMUSER
0911 #define vki_priv_set_t priv_set_t
0912 #define vki_priv_ptype_t priv_ptype_t
0913 #define vki_priv_op_t priv_op_t
0914 
0915 #define VKI_PRIVSYS_SETPPRIV PRIVSYS_SETPPRIV
0916 #define VKI_PRIVSYS_GETPPRIV PRIVSYS_GETPPRIV
0917 #define VKI_PRIVSYS_GETIMPLINFO PRIVSYS_GETIMPLINFO
0918 #define VKI_PRIVSYS_SETPFLAGS PRIVSYS_SETPFLAGS
0919 #define VKI_PRIVSYS_GETPFLAGS PRIVSYS_GETPFLAGS
0920 #define VKI_PRIVSYS_ISSETUGID PRIVSYS_ISSETUGID
0921 #define VKI_PRIVSYS_PFEXEC_REG PRIVSYS_PFEXEC_REG
0922 #define VKI_PRIVSYS_PFEXEC_UNREG PRIVSYS_PFEXEC_UNREG
0923 
0924 #define vki_priv_impl_info_t priv_impl_info_t
0925 
0926 
0927 #include <sys/sem.h>
0928 #include <sys/sem_impl.h>
0929 #define VKI_GETALL GETALL
0930 #define VKI_GETPID GETPID
0931 #define VKI_GETNCNT GETNCNT
0932 #define VKI_GETZCNT GETZCNT
0933 #define VKI_GETVAL GETVAL
0934 #define VKI_SEMCTL SEMCTL
0935 #define VKI_SEMGET SEMGET
0936 #define VKI_SEMIDS SEMIDS
0937 #define VKI_SEMOP SEMOP
0938 #define VKI_SEMTIMEDOP SEMTIMEDOP
0939 #define VKI_SETALL SETALL
0940 #define VKI_SETVAL SETVAL
0941 
0942 #define vki_semid_ds semid_ds
0943 #define vki_sembuf sembuf
0944 
0945 /* The semun union has to be explicitly declared by the application program
0946    (see semctl(2)). */
0947 union vki_semun {
0948    int val;
0949    struct semid_ds *buf;
0950    ushort_t *array;
0951 };
0952 
0953 
0954 #include <sys/sendfile.h>
0955 #define VKI_SENDFILEV SENDFILEV
0956 #define VKI_SENDFILEV64 SENDFILEV64
0957 #define VKI_SFV_FD_SELF SFV_FD_SELF
0958 #define vki_sendfilevec sendfilevec
0959 #define vki_sendfilevec64 sendfilevec64
0960 
0961 
0962 #include <sys/shm.h>
0963 #include <sys/shm_impl.h>
0964 #define VKI_SHMAT SHMAT
0965 #define VKI_SHMCTL SHMCTL
0966 #define VKI_SHMDT SHMDT
0967 #define VKI_SHMGET SHMGET
0968 #define VKI_SHMIDS SHMIDS
0969 #if defined(SOLARIS_SHM_NEW)
0970 #define VKI_SHMADV SHMADV
0971 #define VKI_SHMGET_OSM SHMGET_OSM
0972 #define VKI_SHM_ADV_GET SHM_ADV_GET
0973 #define VKI_SHM_ADV_SET SHM_ADV_SET
0974 #endif /* SOLARIS_SHM_NEW */
0975 #define VKI_SHM_LOCK SHM_LOCK
0976 #define VKI_SHM_RDONLY SHM_RDONLY
0977 #define VKI_SHM_UNLOCK SHM_UNLOCK
0978 /* Should be correct, but not really neat. */
0979 #define VKI_SHMLBA VKI_PAGE_SIZE
0980 
0981 #define vki_shmid_ds shmid_ds
0982 #define vki_shmid_ds64 shmid_ds64
0983 #define vki_shmid_xds64 shmid_xds64
0984 
0985 
0986 #include <sys/siginfo.h>
0987 /* This section also contains items defined in sys/machsig.h, this file
0988    is directly included in sys/siginfo.h. */
0989 #define vki_sigevent sigevent
0990 #define vki_siginfo_t siginfo_t
0991 
0992 #define VKI_SI_LWP SI_LWP
0993 #define VKI_SI_USER SI_USER
0994 #define VKI_SIGEV_PORT SIGEV_PORT
0995 #define VKI_SIGEV_THREAD SIGEV_THREAD
0996 
0997 /* SIGTRAP signal codes */
0998 #define VKI_TRAP_BRKPT TRAP_BRKPT
0999 
1000 /* SIGCLD signal codes */
1001 #define VKI_CLD_EXITED CLD_EXITED
1002 #define VKI_CLD_KILLED CLD_KILLED
1003 #define VKI_CLD_DUMPED CLD_DUMPED
1004 #define VKI_CLD_TRAPPED CLD_TRAPPED
1005 #define VKI_CLD_STOPPED CLD_STOPPED
1006 #define VKI_CLD_CONTINUED CLD_CONTINUED
1007 
1008 /* SIGILL signal codes */
1009 #define VKI_ILL_ILLOPC ILL_ILLOPC
1010 #define VKI_ILL_ILLOPN ILL_ILLOPN
1011 #define VKI_ILL_ILLADR ILL_ILLADR
1012 #define VKI_ILL_ILLTRP ILL_ILLTRP
1013 #define VKI_ILL_PRVOPC ILL_PRVOPC
1014 #define VKI_ILL_PRVREG ILL_PRVREG
1015 #define VKI_ILL_COPROC ILL_COPROC
1016 #define VKI_ILL_BADSTK ILL_BADSTK
1017 
1018 /* SIGFPE signal codes */
1019 #define VKI_FPE_INTDIV FPE_INTDIV
1020 #define VKI_FPE_INTOVF FPE_INTOVF
1021 #define VKI_FPE_FLTDIV FPE_FLTDIV
1022 #define VKI_FPE_FLTOVF FPE_FLTOVF
1023 #define VKI_FPE_FLTUND FPE_FLTUND
1024 #define VKI_FPE_FLTRES FPE_FLTRES
1025 #define VKI_FPE_FLTINV FPE_FLTINV
1026 #define VKI_FPE_FLTSUB FPE_FLTSUB
1027 #define VKI_FPE_FLTDEN FPE_FLTDEN
1028 
1029 /* SIGSEV signal codes */
1030 #define VKI_SEGV_MAPERR SEGV_MAPERR
1031 #define VKI_SEGV_ACCERR SEGV_ACCERR
1032 
1033 /* SIGBUS signal codes */
1034 #define VKI_BUS_ADRALN BUS_ADRALN
1035 #define VKI_BUS_ADRERR BUS_ADRERR
1036 #define VKI_BUS_OBJERR BUS_OBJERR
1037 
1038 
1039 #include <sys/signal.h>
1040 /* This section also contains items defined in sys/iso/signal_iso.h, this file
1041    is directly included in sys/signal.h. */
1042 
1043 /* Next three constants describe the internal representation of sigset_t,
1044    there are checks in coregrind/m_vki.c to make sure they are correct. */
1045 #define _VKI_NSIG 128
1046 #define _VKI_MAXSIG MAXSIG
1047 #define _VKI_NSIG_BPW 32
1048 #define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW)
1049 #define vki_sigset_t sigset_t
1050 #define vki_sigaltstack sigaltstack
1051 /* sigset_t accessor */
1052 #define sig __sigbits
1053 
1054 /* On Solaris we use the same type for passing sigactions to
1055    and from the kernel. Hence: */
1056 typedef struct sigaction vki_sigaction_toK_t;
1057 typedef struct sigaction vki_sigaction_fromK_t;
1058 /* sigaction_t accessor */
1059 #define ksa_handler sa_handler
1060 
1061 #define VKI_SA_ONSTACK SA_ONSTACK
1062 #define VKI_SA_ONESHOT SA_RESETHAND
1063 #define VKI_SA_NOMASK SA_NODEFER
1064 
1065 #define VKI_MINSIGSTKSZ MINSIGSTKSZ
1066 
1067 #define VKI_SS_ONSTACK SS_ONSTACK
1068 #define VKI_SS_DISABLE SS_DISABLE
1069 
1070 #define vki_stack_t stack_t
1071 
1072 #define VKI_SA_NOCLDSTOP SA_NOCLDSTOP
1073 #define VKI_SA_RESTART SA_RESTART
1074 #define VKI_SA_SIGINFO SA_SIGINFO
1075 #define VKI_SA_NOCLDWAIT SA_NOCLDWAIT
1076 #define VKI_SA_RESTORER 0 /* Solaris doesn't have this */
1077 
1078 #define VKI_SIGHUP SIGHUP               /*  1 */
1079 #define VKI_SIGINT SIGINT               /*  2 */
1080 #define VKI_SIGQUIT SIGQUIT             /*  3 */
1081 #define VKI_SIGILL SIGILL               /*  4 */
1082 #define VKI_SIGTRAP SIGTRAP             /*  5 */
1083 #define VKI_SIGABRT SIGABRT             /*  6 */
1084 #define VKI_SIGEMT SIGEMT               /*  7 */
1085 #define VKI_SIGFPE SIGFPE               /*  8 */
1086 #define VKI_SIGKILL SIGKILL             /*  9 */
1087 #define VKI_SIGBUS SIGBUS               /* 10 */
1088 #define VKI_SIGSEGV SIGSEGV             /* 11 */
1089 #define VKI_SIGSYS SIGSYS               /* 12 */
1090 #define VKI_SIGPIPE SIGPIPE             /* 13 */
1091 #define VKI_SIGALRM SIGALRM             /* 14 */
1092 #define VKI_SIGTERM SIGTERM             /* 15 */
1093 #define VKI_SIGUSR1 SIGUSR1             /* 16 */
1094 #define VKI_SIGUSR2 SIGUSR2             /* 17 */
1095 #define VKI_SIGCHLD SIGCHLD             /* 18 */
1096 #define VKI_SIGPWR SIGPWR               /* 19 */
1097 #define VKI_SIGWINCH SIGWINCH           /* 20 */
1098 #define VKI_SIGURG SIGURG               /* 21 */
1099 #define VKI_SIGIO SIGIO                 /* 22 */
1100 #define VKI_SIGSTOP SIGSTOP             /* 23 */
1101 #define VKI_SIGTSTP SIGTSTP             /* 24 */
1102 #define VKI_SIGCONT SIGCONT             /* 25 */
1103 #define VKI_SIGTTIN SIGTTIN             /* 26 */
1104 #define VKI_SIGTTOU SIGTTOU             /* 27 */
1105 #define VKI_SIGVTALRM SIGVTALRM         /* 28 */
1106 #define VKI_SIGPROF SIGPROF             /* 29 */
1107 #define VKI_SIGXCPU SIGXCPU             /* 30 */
1108 #define VKI_SIGXFSZ SIGXFSZ             /* 31 */
1109 #define VKI_SIGWAITING SIGWAITING       /* 32 */
1110 #define VKI_SIGLWP SIGLWP               /* 33 */
1111 #define VKI_SIGFREEZE SIGFREEZE         /* 34 */
1112 #define VKI_SIGTHAW SIGTHAW             /* 35 */
1113 #define VKI_SIGCANCEL SIGCANCEL         /* 36 */
1114 #define VKI_SIGLOST SIGLOST             /* 37 */
1115 #define VKI_SIGXRES SIGXRES             /* 38 */
1116 #define VKI_SIGJVM1 SIGJVM1             /* 39 */
1117 #define VKI_SIGJVM2 SIGJVM2             /* 40 */
1118 /* Note that SIGRTMIN and SIGRTMAX are actually macros calling into
1119    libc's sysconf() which in turn calls into kernel. And it returns
1120    these _SIGRTM* values. So we are safe until someone rebuilds Solaris
1121    kernel with different values... */
1122 #define VKI_SIGRTMIN _SIGRTMIN          /* 41 */
1123 #define VKI_SIGRTMAX _SIGRTMAX          /* 72 */
1124 
1125 #define VKI_SIG_DFL SIG_DFL
1126 #define VKI_SIG_IGN SIG_IGN
1127 
1128 #define VKI_SIG_BLOCK SIG_BLOCK
1129 #define VKI_SIG_UNBLOCK SIG_UNBLOCK
1130 #define VKI_SIG_SETMASK SIG_SETMASK
1131 
1132 
1133 #include <sys/socket.h>
1134 #define vki_sa_family_t sa_family_t
1135 #define vki_sockaddr sockaddr
1136 
1137 #define vki_socklen_t socklen_t
1138 
1139 #define VKI_SOCK_STREAM SOCK_STREAM
1140 
1141 #define VKI_SO_TYPE SO_TYPE
1142 #define VKI_SCM_RIGHTS SCM_RIGHTS
1143 #define VKI_SOL_SOCKET SOL_SOCKET
1144 
1145 #define VKI_AF_UNIX AF_UNIX
1146 #define VKI_AF_INET AF_INET
1147 #define VKI_AF_INET6 AF_INET6
1148 
1149 #define vki_msghdr msghdr
1150 #define vki_cmsghdr cmsghdr
1151 
1152 #define VKI_CMSG_ALIGN(a) _CMSG_DATA_ALIGN(a)
1153 #define VKI_CMSG_DATA(cmsg) CMSG_DATA(cmsg)
1154 #define VKI_CMSG_FIRSTHDR(mhdr) CMSG_FIRSTHDR(mhdr)
1155 #define VKI_CMSG_NXTHDR(mhdr, cmsg) CMSG_NXTHDR(mhdr, cmsg)
1156 
1157 
1158 #include <sys/socketvar.h>
1159 #define VKI_SOV_DEFAULT SOV_DEFAULT
1160 
1161 
1162 #include <sys/sockio.h>
1163 #define VKI_SIOCGIFCONF SIOCGIFCONF
1164 #define VKI_SIOCGIFFLAGS SIOCGIFFLAGS
1165 #define VKI_SIOCGIFNETMASK SIOCGIFNETMASK
1166 #define VKI_SIOCGIFNUM SIOCGIFNUM
1167 #define VKI_SIOCGLIFBRDADDR SIOCGLIFBRDADDR
1168 #define VKI_SIOCGLIFCONF SIOCGLIFCONF
1169 #define VKI_SIOCGLIFFLAGS SIOCGLIFFLAGS
1170 #define VKI_SIOCGLIFNETMASK SIOCGLIFNETMASK
1171 #define VKI_SIOCGLIFNUM SIOCGLIFNUM
1172 
1173 
1174 #if defined(SOLARIS_SPAWN_SYSCALL)
1175 #include <sys/spawn_impl.h>
1176 #define VKI_FA_CHDIR FA_CHDIR
1177 #define VKI_FA_CLOSE FA_CLOSE
1178 #define VKI_FA_CLOSEFROM FA_CLOSEFROM
1179 #define VKI_FA_DUP2 FA_DUP2
1180 #define VKI_FA_OPEN FA_OPEN
1181 #define VKI_POSIX_SPAWN_NOEXECERR_NP POSIX_SPAWN_NOEXECERR_NP
1182 #define VKI_POSIX_SPAWN_NOSIGCHLD_NP POSIX_SPAWN_NOSIGCHLD_NP
1183 #define VKI_POSIX_SPAWN_RESETIDS POSIX_SPAWN_RESETIDS
1184 #define VKI_POSIX_SPAWN_SETPGROUP POSIX_SPAWN_SETPGROUP
1185 #define VKI_POSIX_SPAWN_SETSCHEDPARAM POSIX_SPAWN_SETSCHEDPARAM
1186 #define VKI_POSIX_SPAWN_SETSCHEDULER POSIX_SPAWN_SETSCHEDULER
1187 #define VKI_POSIX_SPAWN_SETSID_NP POSIX_SPAWN_SETSID_NP
1188 #define VKI_POSIX_SPAWN_SETSIGDEF POSIX_SPAWN_SETSIGDEF
1189 #define VKI_POSIX_SPAWN_SETSIGIGN_NP POSIX_SPAWN_SETSIGIGN_NP
1190 #define VKI_POSIX_SPAWN_SETSIGMASK POSIX_SPAWN_SETSIGMASK
1191 #define VKI_POSIX_SPAWN_SETVAMASK_NP POSIX_SPAWN_SETVAMASK_NP
1192 #define VKI_POSIX_SPAWN_WAITPID_NP POSIX_SPAWN_WAITPID_NP
1193 #define VKI_SPAWN_VERSION SPAWN_VERSION
1194 #define vki_kfile_attr_t kfile_attr_t
1195 #define vki_kspawn_attr_t kspawn_attr_t
1196 #define vki_spawn_attr_t spawn_attr_t
1197 #endif /* SOLARIS_SPAWN_SYSCALL */
1198 
1199 
1200 #include <sys/stat.h>
1201 #define vki_stat stat
1202 #define vki_stat64 stat64
1203 
1204 #define st_atime_nsec st_atim.tv_nsec
1205 #define st_mtime_nsec st_mtim.tv_nsec
1206 #define st_ctime_nsec st_ctim.tv_nsec
1207 
1208 #define VKI_S_IFIFO S_IFIFO
1209 #define VKI_S_ISUID S_ISUID
1210 #define VKI_S_ISGID S_ISGID
1211 
1212 #define VKI_S_IRUSR S_IRUSR
1213 #define VKI_S_IWUSR S_IWUSR
1214 #define VKI_S_IXUSR S_IXUSR
1215 #define VKI_S_IRGRP S_IRGRP
1216 #define VKI_S_IWGRP S_IWGRP
1217 #define VKI_S_IXGRP S_IXGRP
1218 #define VKI_S_IROTH S_IROTH
1219 #define VKI_S_IWOTH S_IWOTH
1220 #define VKI_S_IXOTH S_IXOTH
1221 
1222 #define VKI_S_ISCHR S_ISCHR
1223 #define VKI_S_ISDIR S_ISDIR
1224 #define VKI_S_ISBLK S_ISBLK
1225 #define VKI_S_ISREG S_ISREG
1226 #define VKI_S_ISLNK S_ISLNK
1227 
1228 
1229 #include <sys/statfs.h>
1230 #define vki_statfs statfs
1231 
1232 
1233 #include <sys/statvfs.h>
1234 #define vki_statvfs statvfs
1235 #define vki_statvfs64 statvfs64
1236 
1237 
1238 #include <sys/stropts.h>
1239 #define VKI_I_CANPUT I_CANPUT
1240 #define VKI_I_FIND I_FIND
1241 #define VKI_I_FLUSH I_FLUSH
1242 #define VKI_I_PEEK I_PEEK
1243 #define VKI_I_PUSH I_PUSH
1244 #define VKI_I_STR I_STR
1245 #define vki_strbuf strbuf
1246 #define vki_strioctl strioctl
1247 #define vki_strpeek strpeek
1248 
1249 
1250 #include <sys/synch.h>
1251 #define vki_lwp_mutex_t lwp_mutex_t
1252 #define vki_lwp_cond_t lwp_cond_t
1253 #define vki_lwp_sema_t lwp_sema_t
1254 #define vki_lwp_rwlock_t lwp_rwlock_t
1255 
1256 /* Defines from the private sys/synch32.h header. */
1257 #define vki_mutex_flag flags.flag1
1258 #define vki_mutex_type flags.mbcp_type_un.mtype_rcount.count_type1
1259 #define vki_mutex_rcount flags.mbcp_type_un.mtype_rcount.count_type2
1260 #define vki_mutex_owner data
1261 #define vki_mutex_lockw lock.lock64.pad[7]
1262 #define vki_mutex_waiters lock.lock64.pad[6]
1263 #define vki_mutex_ownerpid lock.lock32.ownerpid
1264 
1265 #define vki_cond_type flags.type
1266 #define vki_cond_waiters_kernel flags.flag[3]
1267 
1268 #define vki_sema_count count
1269 #define vki_sema_type type
1270 #define vki_sema_waiters flags[7]
1271 
1272 #define vki_rwlock_readers readers
1273 #define vki_rwlock_type type
1274 #define vki_rwlock_owner readercv.data
1275 #define vki_rwlock_ownerpid writercv.data
1276 
1277 
1278 #include <sys/sysconfig.h>
1279 #define VKI_CONFIG_OPEN_FILES _CONFIG_OPEN_FILES
1280 
1281 
1282 #include <sys/sysi86.h>
1283 #define VKI_SI86FPSTART SI86FPSTART
1284 
1285 
1286 #if defined(HAVE_SYS_SYSNVL_H)
1287 #include <sys/sysnvl.h>
1288 #define VKI_SYSNVL_OP_GET SYSNVL_OP_GET
1289 #define VKI_SYSNVL_OP_UPDATE SYSNVL_OP_UPDATE
1290 #endif /* HAVE_SYS_SYSNVL_H */
1291 
1292 
1293 #include <sys/systeminfo.h>
1294 #define VKI_SI_SYSNAME SI_SYSNAME
1295 #define VKI_SI_HOSTNAME SI_HOSTNAME
1296 #define VKI_SI_RELEASE SI_RELEASE
1297 #define VKI_SI_VERSION SI_VERSION
1298 #define VKI_SI_MACHINE SI_MACHINE
1299 #define VKI_SI_ARCHITECTURE SI_ARCHITECTURE
1300 #define VKI_SI_HW_SERIAL SI_HW_SERIAL
1301 #define VKI_SI_HW_PROVIDER SI_HW_PROVIDER
1302 #define VKI_SI_SRPC_DOMAIN SI_SRPC_DOMAIN
1303 
1304 #define VKI_SI_SET_HOSTNAME SI_SET_HOSTNAME
1305 #define VKI_SI_SET_SRCP_DOMAIN SI_SET_SRPC_DOMAIN
1306 
1307 #define VKI_SI_PLATFORM SI_PLATFORM
1308 #define VKI_SI_ISALIST SI_ISALIST
1309 #define VKI_SI_DHCP_CACHE SI_DHCP_CACHE
1310 #define VKI_SI_ARCHITECTURE_32 SI_ARCHITECTURE_32
1311 #define VKI_SI_ARCHITECTURE_64 SI_ARCHITECTURE_64
1312 #define VKI_SI_ARCHITECTURE_K SI_ARCHITECTURE_K
1313 #define VKI_SI_ARCHITECTURE_NATIVE SI_ARCHITECTURE_NATIVE
1314 
1315 
1316 #include <sys/termio.h>
1317 #define vki_termio termio
1318 
1319 
1320 #include <sys/termios.h>
1321 #define vki_termios termios
1322 #define VKI_TCGETA TCGETA
1323 #define VKI_TCGETS TCGETS
1324 #define VKI_TCSETS TCSETS
1325 #define VKI_TCSETSF TCSETSF
1326 #define VKI_TCSETSW TCSETSW
1327 #define VKI_TIOCGPGRP TIOCGPGRP
1328 #define VKI_TIOCGSID TIOCGSID
1329 #define VKI_TIOCGWINSZ TIOCGWINSZ
1330 #define VKI_TIOCNOTTY TIOCNOTTY
1331 #define VKI_TIOCSCTTY TIOCSCTTY
1332 #define VKI_TIOCSPGRP TIOCSPGRP
1333 #define VKI_TIOCSWINSZ TIOCSWINSZ
1334 #define vki_winsize winsize
1335 
1336 
1337 #include <sys/time.h>
1338 #define VKI_CLOCK_MONOTONIC CLOCK_MONOTONIC
1339 #define VKI_CLOCK_THREAD_CPUTIME_ID CLOCK_THREAD_CPUTIME_ID
1340 
1341 #define vki_clockid_t clockid_t
1342 #define vki_timespec timespec
1343 #define vki_timespec_t timespec_t
1344 #define vki_timeval timeval
1345 #define vki_timezone timezone
1346 #define vki_itimerspec itimerspec
1347 #define vki_itimerval itimerval
1348 
1349 
1350 #include <sys/times.h>
1351 #define vki_tms tms
1352 
1353 
1354 #include <sys/tsol/label_macro.h>
1355 #define vki_bslabel_t bslabel_t
1356 
1357 
1358 /* Do not include sys/tsol/tndb.h if a C++ compiler is used to build a file
1359    which includes vki-solaris.h.  This cannot be done because the tndb.h
1360    header file uses the template keyword as a member name (on illumos). */
1361 #if !defined(__cplusplus)
1362 #include <sys/tsol/tndb.h>
1363 #define VKI_TNDB_DELETE TNDB_DELETE
1364 #define VKI_TNDB_FLUSH TNDB_FLUSH
1365 #define VKI_TNDB_GET TNDB_GET
1366 #if defined(SOLARIS_TNDB_GET_TNIP)
1367 #define VKI_TNDB_GET_TNIP TNDB_GET_TNIP
1368 #endif /* SOLARIS_TNDB_GET_TNIP */
1369 #define VKI_TNDB_LOAD TNDB_LOAD
1370 #define vki_tsol_mlpent_t tsol_mlpent_t
1371 #define vki_tsol_rhent_t tsol_rhent_t
1372 #define vki_tsol_tpent_t tsol_tpent_t
1373 #endif /* !__cplusplus */
1374 
1375 
1376 #include <sys/tsol/tsyscall.h>
1377 #define VKI_TSOL_FGETLABEL TSOL_FGETLABEL
1378 #define VKI_TSOL_GETLABEL TSOL_GETLABEL
1379 #define VKI_TSOL_TNMLP TSOL_TNMLP
1380 #define VKI_TSOL_TNRH TSOL_TNRH
1381 #define VKI_TSOL_TNRHTP TSOL_TNRHTP
1382 #define VKI_TSOL_SYSLABELING TSOL_SYSLABELING
1383 #if defined(SOLARIS_TSOL_CLEARANCE)
1384 #define VKI_TSOL_GETCLEARANCE TSOL_GETCLEARANCE
1385 #define VKI_TSOL_SETCLEARANCE TSOL_SETCLEARANCE
1386 #endif /* SOLARIS_TSOL_CLEARANCE */
1387 
1388 
1389 #include <sys/ttold.h>
1390 #define vki_sgttyb sgttyb
1391 
1392 
1393 #include <ucontext.h>
1394 /* This section also contains items defined in sys/regset.h, this file
1395    is directly included in ucontext.h. */
1396 #if defined(VGP_x86_solaris)
1397 #define VKI_SS SS
1398 #define VKI_UESP UESP
1399 #define VKI_EFL EFL
1400 #define VKI_CS CS
1401 #define VKI_EIP EIP
1402 #define VKI_ERR 13 /* ERR */
1403 #define VKI_TRAPNO TRAPNO
1404 #define VKI_EAX EAX
1405 #define VKI_ECX ECX
1406 #define VKI_EDX EDX
1407 #define VKI_EBX EBX
1408 #define VKI_ESP ESP
1409 #define VKI_EBP EBP
1410 #define VKI_ESI ESI
1411 #define VKI_EDI EDI
1412 #define VKI_DS DS
1413 #define VKI_ES ES
1414 #define VKI_FS FS
1415 #define VKI_GS GS
1416 
1417 /* Definitions for compatibility with amd64-solaris. */
1418 #define VKI_REG_ERR VKI_ERR
1419 #define VKI_REG_TRAPNO VKI_TRAPNO
1420 
1421 #define VKI_EFLAGS_ID_BIT (1 << 21)
1422 
1423 #elif defined(VGP_amd64_solaris)
1424 #define VKI_REG_GSBASE REG_GSBASE
1425 #define VKI_REG_FSBASE REG_FSBASE
1426 #define VKI_REG_DS REG_DS
1427 #define VKI_REG_ES REG_ES
1428 #define VKI_REG_GS REG_GS
1429 #define VKI_REG_FS REG_FS
1430 #define VKI_REG_SS REG_SS
1431 #define VKI_REG_RSP REG_RSP
1432 #define VKI_REG_RFL REG_RFL
1433 #define VKI_REG_CS REG_CS
1434 #define VKI_REG_RIP REG_RIP
1435 #define VKI_REG_ERR REG_ERR
1436 #define VKI_REG_TRAPNO REG_TRAPNO
1437 #define VKI_REG_RAX REG_RAX
1438 #define VKI_REG_RCX REG_RCX
1439 #define VKI_REG_RDX REG_RDX
1440 #define VKI_REG_RBX REG_RBX
1441 #define VKI_REG_RBP REG_RBP
1442 #define VKI_REG_RSI REG_RSI
1443 #define VKI_REG_RDI REG_RDI
1444 #define VKI_REG_R8 REG_R8
1445 #define VKI_REG_R9 REG_R9
1446 #define VKI_REG_R10 REG_R10
1447 #define VKI_REG_R11 REG_R11
1448 #define VKI_REG_R12 REG_R12
1449 #define VKI_REG_R13 REG_R13
1450 #define VKI_REG_R14 REG_R14
1451 #define VKI_REG_R15 REG_R15
1452 
1453 #define VKI_RFLAGS_ID_BIT (1 << 21)
1454 
1455 #else
1456 #error "Unknown platform"
1457 #endif
1458 
1459 #define vki_fpregset_t fpregset_t
1460 
1461 /* Don't polute global namespace so much. */
1462 #undef r_r0
1463 #undef r_r1
1464 #undef r_fp
1465 #undef r_sp
1466 #undef r_pc
1467 #undef r_ps
1468 #undef ERR
1469 
1470 #if defined(VGP_x86_solaris)
1471 /* The ucontext structure as defined in the SYSV ABI for Intel386. Illumos
1472    contains exactly this definition. Solaris 11 utilizes two uc_filler values
1473    -> "xrs_t uc_xrs; long uc_filler[3];". The xrs_t structure is used for the
1474    AVX support. We define our own ucontext structure because all five
1475    uc_filler values need to be available in VG_(save_context). Note that
1476    Valgrind doesn't support AVX on the x86 platform. */
1477 typedef struct sysv_ucontext sysv_ucontext_t;
1478 struct sysv_ucontext {
1479    unsigned long uc_flags;
1480    sysv_ucontext_t *uc_link;
1481    sigset_t uc_sigmask;
1482    stack_t uc_stack;
1483    mcontext_t uc_mcontext;
1484    long uc_filler[5];
1485 };
1486 #define VKI_UC_GUEST_CC_OP(uc) (*(UWord*)&(uc)->uc_filler[0])
1487 #define VKI_UC_GUEST_CC_NDEP(uc) (*(UWord*)&(uc)->uc_filler[1])
1488 #define VKI_UC_GUEST_CC_DEP1(uc) (*(UWord*)&(uc)->uc_filler[2])
1489 #define VKI_UC_GUEST_CC_DEP2(uc) (*(UWord*)&(uc)->uc_filler[3])
1490 #define VKI_UC_GUEST_EFLAGS_NEG(uc) \
1491    (*(UWord*)&(uc)->uc_mcontext.fpregs.fp_reg_set.fpchip_state.__pad[0])
1492 #define VKI_UC_GUEST_EFLAGS_CHECKSUM(uc) \
1493    (*(UWord*)&(uc)->uc_mcontext.fpregs.fp_reg_set.fpchip_state.__pad[1])
1494 #define VKI_UC_SIGNO(uc) (*(UWord*)&(uc)->uc_filler[4])
1495 #define VKI_UC_SIGNO_CONST(uc) (*(const UWord*)&(uc)->uc_filler[4])
1496 
1497 #define vki_ucontext_t sysv_ucontext_t
1498 #define vki_ucontext sysv_ucontext
1499 
1500 #elif defined(VGP_amd64_solaris)
1501 /* The ucontext structure on Solaris has only 3 elements available in uc_filler
1502    which is not enough to store all required information. Therefore padding
1503    area in mcontext's FPU regset is used. */
1504 #define vki_ucontext ucontext
1505 #define vki_ucontext_t ucontext_t
1506 #define VKI_UC_MC_FP_FX_IGN2(uc) \
1507     (uc)->uc_mcontext.fpregs.fp_reg_set.fpchip_state.__fx_ign2
1508 #define VKI_UC_GUEST_CC_OP(uc) (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[0])
1509 #define VKI_UC_GUEST_CC_NDEP(uc) (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[1])
1510 #define VKI_UC_GUEST_CC_DEP1(uc) (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[2])
1511 #define VKI_UC_GUEST_CC_DEP2(uc) (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[3])
1512 #define VKI_UC_GUEST_RFLAGS_NEG(uc) (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[4])
1513 #define VKI_UC_GUEST_RFLAGS_CHECKSUM(uc) \
1514    (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[5])
1515 #define VKI_UC_SIGNO(uc) (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[6])
1516 #define VKI_UC_SIGNO_CONST(uc) (*(const UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[6])
1517 
1518 #else
1519 #error "Unknown platform"
1520 #endif
1521 
1522 #if defined(SOLARIS_FPCHIP_STATE_TAKES_UNDERSCORE)
1523 #define vki_fpchip_state _fpchip_state
1524 #else
1525 #define vki_fpchip_state fpchip_state
1526 #endif /* SOLARIS_FPCHIP_STATE_TAKES_UNDERSCORE */
1527 
1528 #define VKI_GETCONTEXT GETCONTEXT
1529 #define VKI_SETCONTEXT SETCONTEXT
1530 #define VKI_GETUSTACK GETUSTACK
1531 #define VKI_SETUSTACK SETUSTACK
1532 #ifdef CLRSSONSTACK
1533 /* New in Oracle Solaris 11.4 SRU 30 */
1534 #define VKI_CLRSSONSTACK CLRSSONSTACK
1535 #endif
1536 #ifdef SETUJMPBUF
1537 /* New in Oracle Solaris 11.4 SRU 81 */
1538 #define VKI_SETUJMPBUF SETUJMPBUF
1539 #endif
1540 
1541 #define VKI_UC_SIGMASK UC_SIGMASK
1542 #define VKI_UC_STACK UC_STACK
1543 #define VKI_UC_CPU UC_CPU
1544 #define VKI_UC_FPU UC_FPU
1545 #define VKI_UC_ALL UC_ALL
1546 
1547 #include <sys/uio.h>
1548 #define vki_iovec iovec
1549 
1550 
1551 #include <sys/un.h>
1552 #define vki_sockaddr_un sockaddr_un
1553 
1554 
1555 #if defined(SOLARIS_UUIDSYS_SYSCALL)
1556 #include <sys/uuid.h>
1557 #define vki_uuid uuid
1558 #endif /* SOLARIS_UUIDSYS_SYSCALL */
1559 
1560 
1561 #include <sys/utsname.h>
1562 #define vki_utsname utsname
1563 /* Add another alias for utsname, used in syswrap-generic.c. */
1564 #define vki_new_utsname utsname
1565 
1566 
1567 #include <sys/vm_usage.h>
1568 #define vki_vmusage_t vmusage_t
1569 
1570 
1571 #include <sys/wait.h>
1572 #define VKI_WEXITED WEXITED
1573 #define VKI_WTRAPPED WTRAPPED
1574 
1575 #define VKI_WSTOPFLG WSTOPFLG
1576 #define VKI_WCONTFLG WCONTFLG
1577 #define VKI_WCOREFLG WCOREFLG
1578 
1579 
1580 #include <sys/zone.h>
1581 #define VKI_ZONE_ADD_DATALINK ZONE_ADD_DATALINK
1582 #define VKI_ZONE_ATTR_NAME ZONE_ATTR_NAME
1583 #define VKI_ZONE_BOOT ZONE_BOOT
1584 #define VKI_ZONE_CHECK_DATALINK ZONE_CHECK_DATALINK
1585 #define VKI_ZONE_CREATE ZONE_CREATE
1586 #define VKI_ZONE_DEL_DATALINK ZONE_DEL_DATALINK
1587 #define VKI_ZONE_DESTROY ZONE_DESTROY
1588 #define VKI_ZONE_ENTER ZONE_ENTER
1589 #define VKI_ZONE_GETATTR ZONE_GETATTR
1590 #define VKI_ZONE_LIST ZONE_LIST
1591 #define VKI_ZONE_LIST_DATALINK ZONE_LIST_DATALINK
1592 #define VKI_ZONE_LOOKUP ZONE_LOOKUP
1593 #define VKI_ZONE_SETATTR ZONE_SETATTR
1594 #define VKI_ZONE_SHUTDOWN ZONE_SHUTDOWN
1595 #if defined(SOLARIS_ZONE_DEFUNCT)
1596 #define VKI_ZONE_GETATTR_DEFUNCT ZONE_GETATTR_DEFUNCT
1597 #define VKI_ZONE_LIST_DEFUNCT ZONE_LIST_DEFUNCT
1598 #endif /* SOLARIS_ZONE_DEFUNCT */
1599 #define VKI_ZONENAME_MAX ZONENAME_MAX
1600 #define vki_zone_def zone_def
1601 #define vki_zoneid_t zoneid_t
1602 
1603 
1604 /* from <sys/ucred.h> which is consolidation private */
1605 #define VKI_UCREDSYS_UCREDGET 0
1606 #define VKI_UCREDSYS_GETPEERUCRED 1
1607 struct ucred_s {
1608    vki_uint32_t uc_size;     /* Size of the full structure */
1609    vki_uint32_t uc_credoff;  /* Credential offset */
1610    vki_uint32_t uc_privoff;  /* Privilege offset */
1611    vki_pid_t    uc_pid;      /* Process id */
1612    vki_uint32_t uc_audoff;   /* Audit info offset */
1613    vki_zoneid_t uc_zoneid;   /* Zone id */
1614    vki_projid_t uc_projid;   /* Project id */
1615    vki_uint32_t uc_labeloff; /* label offset */
1616 };
1617 
1618 
1619 /* from sys/old_procfs.h which clashes with sys/procfs.h */
1620 
1621 #define VKI_ELF_OLD_PR_PCINVAL 0x0080
1622 
1623 typedef struct vki_elf_prpsinfo {
1624    char     pr_state;   /* numeric process state (see pr_sname) */
1625    char     pr_sname;   /* printable character representing pr_state */
1626    char     pr_zomb;    /* !=0: process terminated but not waited for */
1627    char     pr_nice;    /* nice for cpu usage */
1628    vki_uint_t   pr_flag;    /* process flags */
1629    vki_uid_t    pr_uid;     /* real user id */
1630    vki_gid_t    pr_gid;     /* real group id */
1631    vki_pid_t    pr_pid;     /* unique process id */
1632    vki_pid_t    pr_ppid;    /* process id of parent */
1633    vki_pid_t    pr_pgrp;    /* pid of process group leader */
1634    vki_pid_t    pr_sid;     /* session id */
1635    vki_caddr_t  pr_addr;    /* physical address of process */
1636    vki_size_t   pr_size;    /* size of process image in pages */
1637    vki_size_t   pr_rssize;  /* resident set size in pages */
1638    vki_caddr_t  pr_wchan;   /* wait addr for sleeping process */
1639    vki_timespec_t pr_start; /* process start time, sec+nsec since epoch */
1640    vki_timespec_t pr_time;  /* usr+sys cpu time for this process */
1641    int      pr_pri;     /* priority, high value is high priority */
1642    char     pr_oldpri;  /* pre-SVR4, low value is high priority */
1643    char     pr_cpu;     /* pre-SVR4, cpu usage for scheduling */
1644    vki_o_dev_t  pr_ottydev; /* short tty device number */
1645    vki_dev_t    pr_lttydev; /* controlling tty device (PRNODEV if none) */
1646    char     pr_clname[8];   /* scheduling class name */
1647    char     pr_fname[16];   /* last component of execed pathname */
1648    char     pr_psargs[80];  /* initial characters of arg list */
1649    short    pr_syscall; /* system call number (if in syscall) */
1650    short    pr_fill;
1651    vki_timespec_t pr_ctime; /* usr+sys cpu time for reaped children */
1652    vki_size_t   pr_bysize;  /* size of process image in bytes */
1653    vki_size_t   pr_byrssize;    /* resident set size in bytes */
1654    int      pr_argc;    /* initial argument count */
1655    char     **pr_argv;  /* initial argument vector */
1656    char     **pr_envp;  /* initial environment vector */
1657    int      pr_wstat;   /* if zombie, the wait() status */
1658                             /* The following percent numbers are 16-bit binary */
1659                             /* fractions [0 .. 1] with the binary point to the */
1660                             /* right of the high-order bit (one == 0x8000) */
1661    ushort_t     pr_pctcpu;  /* % of recent cpu time, one or all lwps */
1662    ushort_t     pr_pctmem;  /* % of of system memory used by the process */
1663    vki_uid_t    pr_euid;    /* effective user id */
1664    vki_gid_t    pr_egid;    /* effective group id */
1665    vki_id_t pr_aslwpid; /* historical; now always zero */
1666    char     pr_dmodel;  /* data model of the process */
1667    char     pr_pad[3];
1668    int      pr_filler[6];   /* for future expansion */
1669 } vki_elf_prpsinfo_t;
1670 
1671 typedef struct vki_elf_prstatus {
1672    int      pr_flags;   /* Flags (see below) */
1673    short    pr_why;     /* Reason for process stop (if stopped) */
1674    short    pr_what;    /* More detailed reason */
1675    vki_siginfo_t pr_info;   /* Info associated with signal or fault */
1676    short    pr_cursig;  /* Current signal */
1677    ushort_t     pr_nlwp;    /* Number of lwps in the process */
1678    vki_sigset_t pr_sigpend; /* Set of signals pending to the process */
1679    vki_sigset_t pr_sighold; /* Set of signals held (blocked) by the lwp */
1680    struct vki_sigaltstack pr_altstack; /* Alternate signal stack info */
1681    struct sigaction pr_action;  /* Signal action for current signal */
1682    vki_pid_t    pr_pid;     /* Process id */
1683    vki_pid_t    pr_ppid;    /* Parent process id */
1684    vki_pid_t    pr_pgrp;    /* Process group id */
1685    vki_pid_t    pr_sid;     /* Session id */
1686    vki_timespec_t pr_utime; /* Process user cpu time */
1687    vki_timespec_t pr_stime; /* Process system cpu time */
1688    vki_timespec_t pr_cutime;    /* Sum of children's user times */
1689    vki_timespec_t pr_cstime;    /* Sum of children's system times */
1690    char pr_clname[PRCLSZ];  /* Scheduling class name */
1691    short    pr_syscall; /* System call number (if in syscall) */
1692    short    pr_nsysarg; /* Number of arguments to this syscall */
1693    long pr_sysarg[PRSYSARGS];   /* Arguments to this syscall */
1694    vki_id_t pr_who;     /* Specific lwp identifier */
1695    vki_sigset_t pr_lwppend; /* Set of signals pending to the lwp */
1696    struct vki_ucontext *pr_oldcontext; /* Address of previous ucontext */
1697    vki_caddr_t  pr_brkbase; /* Address of the process heap */
1698    vki_size_t   pr_brksize; /* Size of the process heap, in bytes */
1699    vki_caddr_t  pr_stkbase; /* Address of the process stack */
1700    vki_size_t   pr_stksize; /* Size of the process stack, in bytes */
1701    short    pr_processor;   /* processor which last ran this LWP */
1702    short    pr_bind;    /* processor LWP bound to or PBIND_NONE */
1703    long     pr_instr;   /* Current instruction */
1704    vki_prgregset_t pr_reg;  /* General registers */
1705 } vki_elf_prstatus_t;
1706 
1707 
1708 /* Signal frames. */
1709 #if defined(VGP_x86_solaris)
1710 struct vki_sigframe {
1711    /* First four words look like a call to a 3-arg x86 function. */
1712    void *return_addr;
1713    int a1_signo;
1714    vki_siginfo_t *a2_siginfo;
1715    vki_ucontext_t *a3_ucontext;
1716    /* Saved ucontext and siginfo. */
1717    vki_ucontext_t ucontext;
1718    vki_siginfo_t siginfo;
1719 };
1720 
1721 #elif defined(VGP_amd64_solaris)
1722 struct vki_sigframe {
1723    void *return_addr;
1724    long a1_signo;
1725    vki_siginfo_t *a2_siginfo;
1726    /* Saved ucontext and siginfo. */
1727    vki_ucontext_t ucontext;
1728    vki_siginfo_t siginfo;
1729 };
1730 
1731 #else
1732 #error "Unknown platform"
1733 #endif
1734 typedef struct vki_sigframe vki_sigframe_t;
1735 
1736 #endif // __VKI_SOLARIS_H
1737 
1738 /*--------------------------------------------------------------------*/
1739 /*--- end                                                          ---*/
1740 /*--------------------------------------------------------------------*/