sewardj | 8eb8bab | 2015-07-21 14:44:28 +0000 | [diff] [blame] | 1 | |
| 2 | /*--------------------------------------------------------------------*/ |
| 3 | /*--- Solaris-specific kernel interface. vki-solaris.h ---*/ |
| 4 | /*--------------------------------------------------------------------*/ |
| 5 | |
| 6 | /* |
| 7 | This file is part of Valgrind, a dynamic binary instrumentation |
| 8 | framework. |
| 9 | |
| 10 | Copyright (C) 2011-2015 Petr Pavlu |
| 11 | setup@dagobah.cz |
| 12 | |
| 13 | This program is free software; you can redistribute it and/or |
| 14 | modify it under the terms of the GNU General Public License as |
| 15 | published by the Free Software Foundation; either version 2 of the |
| 16 | License, or (at your option) any later version. |
| 17 | |
| 18 | This program is distributed in the hope that it will be useful, but |
| 19 | WITHOUT ANY WARRANTY; without even the implied warranty of |
| 20 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| 21 | General Public License for more details. |
| 22 | |
| 23 | You should have received a copy of the GNU General Public License |
| 24 | along with this program; if not, write to the Free Software |
| 25 | Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA |
| 26 | 02111-1307, USA. |
| 27 | |
| 28 | The GNU General Public License is contained in the file COPYING. |
| 29 | */ |
| 30 | |
| 31 | /* Copyright 2013-2015, Ivo Raisr <ivosh@ivosh.net> */ |
| 32 | |
| 33 | /* Copyright 2013, OmniTI Computer Consulting, Inc. All rights reserved. */ |
| 34 | |
| 35 | /* The purpose of this file is described in vki-linux.h. |
| 36 | |
| 37 | To avoid any copyright issues, vki-solaris.h follows the same approach as |
| 38 | vki-darwin.h (not copying anything from kernel header files but instead |
| 39 | just including them). |
| 40 | */ |
| 41 | |
| 42 | #ifndef __VKI_SOLARIS_H |
| 43 | #define __VKI_SOLARIS_H |
| 44 | |
| 45 | #include "../../config.h" |
| 46 | |
| 47 | /* _XOPEN_SOURCE equal to at least '500' is required so that various system |
| 48 | structures have all necessary attributes (for example struct msghdr). */ |
| 49 | #if !defined(_XOPEN_SOURCE) |
| 50 | /* Compiler versions c99 and higher require _XOPEN_SOURCE at least '600'. */ |
| 51 | # if (__STDC_VERSION__ - 0 >= 199901L) |
| 52 | # define _XOPEN_SOURCE 600 |
| 53 | # else |
| 54 | # define _XOPEN_SOURCE 500 |
| 55 | # endif |
| 56 | #elif (_XOPEN_SOURCE - 0 != 500) && (_XOPEN_SOURCE - 0 != 600) && (_XOPEN_SOURCE - 0 != 700) |
| 57 | # error "Compiler or options invalid for including this header file." |
| 58 | #endif /* _XOPEN_SOURCE */ |
| 59 | |
| 60 | #define __EXTENSIONS__ 1 |
| 61 | /* assert _FILE_OFFSET_BITS == 32 */ |
| 62 | |
sewardj | 8eb8bab | 2015-07-21 14:44:28 +0000 | [diff] [blame] | 63 | #define VKI_PAGE_SHIFT 12 |
| 64 | #define VKI_PAGE_SIZE (1UL << VKI_PAGE_SHIFT) |
| 65 | #define VKI_PAGEMASK (~VKI_PAGEOFFSET) |
| 66 | #define VKI_PAGEOFFSET (VKI_PAGE_SIZE - 1) |
| 67 | #define VKI_MAX_PAGE_SHIFT VKI_PAGE_SHIFT |
| 68 | #define VKI_MAX_PAGE_SIZE VKI_PAGE_SIZE |
| 69 | |
| 70 | |
| 71 | #include <sys/types.h> |
| 72 | #define VKI_UINT_MAX UINT_MAX |
iraisr | e036540 | 2015-09-25 20:12:26 +0000 | [diff] [blame] | 73 | #define VKI_UINTPTR_MAX UINTPTR_MAX |
sewardj | 8eb8bab | 2015-07-21 14:44:28 +0000 | [diff] [blame] | 74 | #define vki_boolean_t boolean_t |
| 75 | #define vki_datalink_id_t datalink_id_t |
| 76 | #define vki_uint_t uint_t |
| 77 | #define vki_uint32_t uint32_t |
| 78 | #define vki_uint64_t uint64_t |
| 79 | #define vki_ulong_t ulong_t |
| 80 | #define vki_caddr_t caddr_t |
| 81 | #define vki_dev_t dev_t |
| 82 | #define vki_off_t off_t |
| 83 | #define vki_id_t id_t |
| 84 | #define vki_key_t key_t |
| 85 | #define vki_mode_t mode_t |
| 86 | #define vki_o_dev_t o_dev_t |
| 87 | #define vki_projid_t projid_t |
| 88 | #define vki_uid_t uid_t |
| 89 | #define vki_gid_t gid_t |
| 90 | #define vki_pid_t pid_t |
| 91 | #define vki_size_t size_t |
| 92 | #define vki_time_t time_t |
| 93 | #define vki_timer_t timer_t |
| 94 | #define vki_uchar_t uchar_t |
| 95 | |
| 96 | typedef uint32_t vki_u32; |
| 97 | |
| 98 | |
| 99 | #include <sys/types32.h> |
| 100 | #define vki_size32_t size32_t |
| 101 | |
| 102 | |
| 103 | #include <fcntl.h> |
| 104 | #define VKI_SEEK_SET SEEK_SET |
| 105 | |
| 106 | |
| 107 | #include <limits.h> |
| 108 | #define VKI_NGROUPS_MAX NGROUPS_MAX |
| 109 | #define VKI_PATH_MAX PATH_MAX |
| 110 | /* Used in launcher-linux.c which we share with Linux port. */ |
| 111 | #define VKI_BINPRM_BUF_SIZE VKI_PATH_MAX |
| 112 | |
| 113 | |
| 114 | #include <ucred.h> |
| 115 | #define vki_ucred_t ucred_t |
| 116 | |
| 117 | |
| 118 | #include <unistd.h> |
| 119 | #define VKI_R_OK R_OK |
| 120 | #define VKI_W_OK W_OK |
| 121 | #define VKI_X_OK X_OK |
| 122 | |
| 123 | |
| 124 | #include <bsm/audit.h> |
| 125 | #define VKI_A_GETAMASK A_GETAMASK |
| 126 | #define VKI_A_GETCAR A_GETCAR |
| 127 | #define VKI_A_GETCLASS A_GETCLASS |
| 128 | #define VKI_A_GETCOND A_GETCOND |
| 129 | #define VKI_A_GETCWD A_GETCWD |
| 130 | #define VKI_A_GETKAUDIT A_GETKAUDIT |
| 131 | #define VKI_A_GETKMASK A_GETKMASK |
| 132 | #define VKI_A_GETPINFO A_GETPINFO |
| 133 | #define VKI_A_GETPINFO_ADDR A_GETPINFO_ADDR |
| 134 | #define VKI_A_GETPOLICY A_GETPOLICY |
| 135 | #define VKI_A_GETQCTRL A_GETQCTRL |
| 136 | #define VKI_A_GETSTAT A_GETSTAT |
| 137 | #define VKI_A_SETAMASK A_SETAMASK |
| 138 | #define VKI_A_SETCLASS A_SETCLASS |
| 139 | #define VKI_A_SETCOND A_SETCOND |
| 140 | #define VKI_A_SETKAUDIT A_SETKAUDIT |
| 141 | #define VKI_A_SETKMASK A_SETKMASK |
| 142 | #define VKI_A_SETPMASK A_SETPMASK |
| 143 | #define VKI_A_SETPOLICY A_SETPOLICY |
| 144 | #define VKI_A_SETQCTRL A_SETQCTRL |
| 145 | #define VKI_A_SETSMASK A_SETSMASK |
| 146 | #define VKI_A_SETSTAT A_SETSTAT |
| 147 | #define VKI_A_SETUMASK A_SETUMASK |
| 148 | #define VKI_BSM_AUDIT BSM_AUDIT |
| 149 | #define VKI_BSM_AUDITCTL BSM_AUDITCTL |
| 150 | #define VKI_BSM_AUDITDOOR BSM_AUDITDOOR |
| 151 | #define VKI_BSM_GETAUDIT BSM_GETAUDIT |
| 152 | #define VKI_BSM_GETAUDIT_ADDR BSM_GETAUDIT_ADDR |
| 153 | #define VKI_BSM_GETAUID BSM_GETAUID |
| 154 | #define VKI_BSM_SETAUDIT BSM_SETAUDIT |
| 155 | #define VKI_BSM_SETAUDIT_ADDR BSM_SETAUDIT_ADDR |
| 156 | #define VKI_BSM_SETAUID BSM_SETAUID |
| 157 | #define vki_au_evclass_map_t au_evclass_map_t |
| 158 | #define vki_au_id_t au_id_t |
| 159 | #define vki_au_mask_t au_mask_t |
| 160 | #define vki_au_qctrl au_qctrl |
| 161 | #define vki_au_stat_t au_stat_t |
| 162 | #define vki_auditinfo_t auditinfo_t |
| 163 | #define vki_auditinfo_addr_t auditinfo_addr_t |
| 164 | #define vki_auditpinfo auditpinfo |
| 165 | #define vki_auditpinfo_addr auditpinfo_addr |
| 166 | |
| 167 | |
| 168 | #include <sys/psw.h> |
| 169 | #define VKI_PSL_USER PSL_USER |
| 170 | |
| 171 | |
| 172 | #include <ia32/sys/trap.h> |
| 173 | #define VKI_T_BPTFLT T_BPTFLT |
| 174 | |
| 175 | |
| 176 | /* From <libc/inc/libc_int.h> which is consolidation private. */ |
| 177 | #define VKI_CI_BIND_GUARD 4 |
| 178 | #define VKI_CI_BIND_CLEAR 5 |
| 179 | #define VKI_THR_FLG_RTLD 0x01 |
| 180 | |
| 181 | typedef struct { |
| 182 | int ci_tag; |
| 183 | union { |
| 184 | int (*ci_func)(int); |
| 185 | long ci_val; |
| 186 | char *ci_ptr; |
| 187 | } vki_ci_un; |
| 188 | } vki_Lc_interface; |
| 189 | |
| 190 | |
| 191 | /* From <libc/port/gen/getxby_door.h> which is consolidation private. */ |
| 192 | #if defined(SOLARIS_NSCD_DOOR_SYSTEM_VOLATILE) |
| 193 | #define VKI_NAME_SERVICE_DOOR "/system/volatile/name_service_door" |
| 194 | #else |
| 195 | #define VKI_NAME_SERVICE_DOOR "/var/run/name_service_door" |
| 196 | #endif /* SOLARIS_NSCD_DOOR_SYSTEM_VOLATILE */ |
| 197 | |
| 198 | |
| 199 | #include <nfs/nfs.h> |
| 200 | #include <nfs/nfssys.h> |
| 201 | #define VKI_NFS_REVAUTH NFS_REVAUTH |
| 202 | #define vki_nfs_revauth_args nfs_revauth_args |
| 203 | |
| 204 | |
| 205 | #include <net/if.h> |
iraisr | 2d20d8d | 2015-09-29 05:20:16 +0000 | [diff] [blame^] | 206 | #define vki_ifconf ifconf |
| 207 | #define vki_ifreq ifreq |
sewardj | 8eb8bab | 2015-07-21 14:44:28 +0000 | [diff] [blame] | 208 | #define vki_lifnum lifnum |
| 209 | |
| 210 | |
| 211 | #include <netinet/in.h> |
| 212 | #define VKI_IPPROTO_TCP IPPROTO_TCP |
| 213 | #define vki_in_addr in_addr |
| 214 | #define vki_sockaddr_in sockaddr_in |
| 215 | #define vki_sockaddr_in6 sockaddr_in6 |
| 216 | |
| 217 | #include <netinet/tcp.h> |
| 218 | #define VKI_TCP_NODELAY TCP_NODELAY |
| 219 | |
| 220 | |
| 221 | /* Do not include nss_dbdefs.h if a C++ compiler is used to build a file |
| 222 | which includes vki-solaris.h. This cannot be done because the nss_dbdefs.h |
| 223 | header file uses 'delete' keyword as a method name. */ |
| 224 | #if !defined(__cplusplus) |
| 225 | #include <nss_dbdefs.h> |
| 226 | #define VKI_NSCD_CALLCAT_APP NSCD_CALLCAT_APP |
| 227 | #define VKI_NSCDV2CATMASK NSCDV2CATMASK |
| 228 | #define vki_nss_dbd_t nss_dbd_t |
| 229 | #define vki_nss_pheader_t nss_pheader_t |
| 230 | #endif /* !__cplusplus */ |
| 231 | |
| 232 | |
| 233 | /* From <repcache_protocol.h> which is consolidation private. */ |
| 234 | #include "vki-solaris-repcache.h" |
| 235 | |
| 236 | #include <sys/acl.h> |
| 237 | #define vki_aclent_t aclent_t |
| 238 | #define vki_ace_t ace_t |
| 239 | #define VKI_GETACL GETACL |
| 240 | #define VKI_SETACL SETACL |
| 241 | #define VKI_GETACLCNT GETACLCNT |
| 242 | #define VKI_ACE_GETACL ACE_GETACL |
| 243 | #define VKI_ACE_SETACL ACE_SETACL |
| 244 | #define VKI_ACE_GETACLCNT ACE_GETACLCNT |
| 245 | |
| 246 | |
| 247 | #include <sys/auxv.h> |
| 248 | #define vki_auxv_t auxv_t |
| 249 | #define VKI_AT_NULL AT_NULL |
| 250 | #define VKI_AT_PHDR AT_PHDR |
| 251 | #define VKI_AT_PAGESZ AT_PAGESZ |
| 252 | #define VKI_AT_BASE AT_BASE |
| 253 | #define VKI_AT_FLAGS AT_FLAGS |
| 254 | #define VKI_AT_SUN_PLATFORM AT_SUN_PLATFORM |
| 255 | #define VKI_AT_SUN_HWCAP AT_SUN_HWCAP |
| 256 | #define VKI_AT_SUN_EXECNAME AT_SUN_EXECNAME |
| 257 | #define VKI_AT_SUN_AUXFLAGS AT_SUN_AUXFLAGS |
iraisr | e036540 | 2015-09-25 20:12:26 +0000 | [diff] [blame] | 258 | #if defined(SOLARIS_RESERVE_SYSSTAT_ADDR) |
| 259 | #define VKI_AT_SUN_SYSSTAT_ADDR AT_SUN_SYSSTAT_ADDR |
| 260 | #endif |
| 261 | #if defined(SOLARIS_RESERVE_SYSSTAT_ZONE_ADDR) |
| 262 | #define VKI_AT_SUN_SYSSTAT_ZONE_ADDR AT_SUN_SYSSTAT_ZONE_ADDR |
| 263 | #endif |
sewardj | 8eb8bab | 2015-07-21 14:44:28 +0000 | [diff] [blame] | 264 | |
| 265 | #define VKI_AF_SUN_HWCAPVERIFY AF_SUN_HWCAPVERIFY |
| 266 | |
| 267 | |
| 268 | #include <sys/auxv_386.h> |
| 269 | #define VKI_AV_386_FPU AV_386_FPU |
| 270 | #define VKI_AV_386_TSC AV_386_TSC |
| 271 | #define VKI_AV_386_CX8 AV_386_CX8 |
| 272 | #define VKI_AV_386_SEP AV_386_SEP |
| 273 | #define VKI_AV_386_AMD_SYSC AV_386_AMD_SYSC |
| 274 | #define VKI_AV_386_CMOV AV_386_CMOV |
| 275 | #define VKI_AV_386_MMX AV_386_MMX |
| 276 | #define VKI_AV_386_FXSR AV_386_FXSR |
| 277 | #define VKI_AV_386_SSE AV_386_SSE |
| 278 | #define VKI_AV_386_SSE2 AV_386_SSE2 |
| 279 | #define VKI_AV_386_SSE3 AV_386_SSE3 |
| 280 | #define VKI_AV_386_CX16 AV_386_CX16 |
| 281 | #define VKI_AV_386_AHF AV_386_AHF |
| 282 | #define VKI_AV_386_TSCP AV_386_TSCP |
| 283 | #define VKI_AV_386_POPCNT AV_386_POPCNT |
| 284 | #define VKI_AV_386_AMD_LZCNT AV_386_AMD_LZCNT |
| 285 | #define VKI_AV_386_SSSE3 AV_386_SSSE3 |
| 286 | #define VKI_AV_386_SSE4_1 AV_386_SSE4_1 |
| 287 | #define VKI_AV_386_SSE4_2 AV_386_SSE4_2 |
| 288 | #define VKI_AV_386_AES AV_386_AES |
| 289 | #define VKI_AV_386_PCLMULQDQ AV_386_PCLMULQDQ |
| 290 | #define VKI_AV_386_XSAVE AV_386_XSAVE |
| 291 | |
| 292 | |
| 293 | #include <sys/corectl.h> |
| 294 | #define VKI_CC_CONTENT_ANON CC_CONTENT_ANON |
| 295 | #define VKI_CC_CONTENT_DATA CC_CONTENT_DATA |
| 296 | #define VKI_CC_CONTENT_DISM CC_CONTENT_DISM |
| 297 | #define VKI_CC_CONTENT_HEAP CC_CONTENT_HEAP |
| 298 | #define VKI_CC_CONTENT_ISM CC_CONTENT_ISM |
| 299 | #define VKI_CC_CONTENT_RODATA CC_CONTENT_RODATA |
| 300 | #define VKI_CC_CONTENT_SHANON CC_CONTENT_SHANON |
| 301 | #define VKI_CC_CONTENT_SHM CC_CONTENT_SHM |
| 302 | #define VKI_CC_CONTENT_STACK CC_CONTENT_STACK |
| 303 | #define VKI_CC_CONTENT_TEXT CC_CONTENT_TEXT |
| 304 | #define vki_core_content_t core_content_t |
| 305 | |
| 306 | |
| 307 | /* From <sys/crypto/elfsign.h> which is consolidation private. */ |
| 308 | #define VKI__PATH_KCFD_DOOR "/system/volatile/kcfd_door" |
| 309 | typedef enum vki_ELFsign_status_e { |
| 310 | VKI_ELFSIGN_UNKNOWN, |
| 311 | VKI_ELFSIGN_SUCCESS, |
| 312 | VKI_ELFSIGN_FAILED, |
| 313 | VKI_ELFSIGN_NOTSIGNED, |
| 314 | VKI_ELFSIGN_INVALID_CERTPATH, |
| 315 | VKI_ELFSIGN_INVALID_ELFOBJ, |
| 316 | VKI_ELFSIGN_UNAVAILABLE |
| 317 | } vki_ELFsign_status_t; |
| 318 | typedef struct vki_kcf_door_arg_s { |
| 319 | short da_version; |
| 320 | vki_boolean_t da_iskernel; |
| 321 | union { |
| 322 | char filename[MAXPATHLEN]; /* For request */ |
| 323 | |
| 324 | struct vki_kcf_door_result_s { /* For response */ |
| 325 | vki_ELFsign_status_t status; |
| 326 | vki_uint32_t siglen; |
| 327 | vki_uchar_t signature[1]; |
| 328 | } result; |
| 329 | } vki_da_u; |
| 330 | } vki_kcf_door_arg_t; |
| 331 | |
| 332 | |
| 333 | #include <sys/crypto/ioctl.h> |
| 334 | #define VKI_CRYPTO_SUCCESS CRYPTO_SUCCESS |
| 335 | #define VKI_CRYPTO_GET_PROVIDER_LIST CRYPTO_GET_PROVIDER_LIST |
| 336 | #define vki_crypto_provider_id_t crypto_provider_id_t |
| 337 | #define vki_crypto_provider_entry_t crypto_provider_entry_t |
| 338 | #define vki_crypto_get_provider_list_t crypto_get_provider_list_t |
| 339 | |
| 340 | |
| 341 | #include <sys/dirent.h> |
| 342 | #define VKI_MAXGETDENTS_SIZE MAXGETDENTS_SIZE |
| 343 | #define vki_dirent dirent |
| 344 | #define vki_dirent64 dirent64 |
| 345 | |
| 346 | |
| 347 | #include <sys/door.h> |
| 348 | #define vki_door_desc_t door_desc_t |
| 349 | #define vki_door_info_t door_info_t |
| 350 | #define vki_door_arg_t door_arg_t |
| 351 | #define vki_door_results door_results |
| 352 | #define vki_door_return_desc_t door_return_desc_t |
| 353 | |
| 354 | #define VKI_DOOR_CREATE DOOR_CREATE |
| 355 | #define VKI_DOOR_REVOKE DOOR_REVOKE |
| 356 | #define VKI_DOOR_INFO DOOR_INFO |
| 357 | #define VKI_DOOR_CALL DOOR_CALL |
| 358 | #define VKI_DOOR_BIND DOOR_BIND |
| 359 | #define VKI_DOOR_UNBIND DOOR_UNBIND |
| 360 | #define VKI_DOOR_UNREFSYS DOOR_UNREFSYS |
| 361 | #define VKI_DOOR_UCRED DOOR_UCRED |
| 362 | #define VKI_DOOR_RETURN DOOR_RETURN |
| 363 | #define VKI_DOOR_GETPARAM DOOR_GETPARAM |
| 364 | #define VKI_DOOR_SETPARAM DOOR_SETPARAM |
| 365 | |
| 366 | |
| 367 | #include <sys/dtrace.h> |
| 368 | #define VKI_DTRACEHIOC_REMOVE DTRACEHIOC_REMOVE |
| 369 | #define VKI_DTRACEHIOC_ADDDOF DTRACEHIOC_ADDDOF |
| 370 | #define vki_dof_helper_t dof_helper_t |
| 371 | |
| 372 | |
| 373 | #include <sys/elf.h> |
| 374 | #define VKI_EI_CLASS EI_CLASS |
| 375 | #define VKI_EI_DATA EI_DATA |
| 376 | #define VKI_EI_MAG0 EI_MAG0 |
| 377 | #define VKI_EI_MAG1 EI_MAG1 |
| 378 | #define VKI_EI_MAG2 EI_MAG2 |
| 379 | #define VKI_EI_MAG3 EI_MAG3 |
| 380 | #define VKI_EI_VERSION EI_VERSION |
| 381 | #define VKI_ELFMAG ELFMAG |
| 382 | #define VKI_ELFMAG ELFMAG |
| 383 | #define VKI_ELFMAG0 ELFMAG0 |
| 384 | #define VKI_ELFMAG1 ELFMAG1 |
| 385 | #define VKI_ELFMAG2 ELFMAG2 |
| 386 | #define VKI_ELFMAG3 ELFMAG3 |
| 387 | #define VKI_ET_CORE ET_CORE |
| 388 | #define VKI_ET_DYN ET_DYN |
| 389 | #define VKI_ET_EXEC ET_EXEC |
| 390 | #define VKI_EV_CURRENT EV_CURRENT |
| 391 | #define VKI_NT_AUXV NT_AUXV |
| 392 | #define VKI_NT_CONTENT NT_CONTENT |
| 393 | #define VKI_NT_LWPSINFO NT_LWPSINFO |
| 394 | #define VKI_NT_LWPSTATUS NT_LWPSTATUS |
| 395 | #define VKI_NT_PLATFORM NT_PLATFORM |
| 396 | #define VKI_NT_PRCRED NT_PRCRED |
| 397 | #define VKI_NT_PRFPREG NT_PRFPREG |
| 398 | #define VKI_NT_PRPRIV NT_PRPRIV |
| 399 | #define VKI_NT_PRPRIVINFO NT_PRPRIVINFO |
| 400 | #define VKI_NT_PRPSINFO NT_PRPSINFO |
| 401 | #define VKI_NT_PRSTATUS NT_PRSTATUS |
| 402 | #define VKI_NT_PRXREG NT_PRXREG |
| 403 | #define VKI_NT_PSINFO NT_PSINFO |
| 404 | #define VKI_NT_PSTATUS NT_PSTATUS |
| 405 | #define VKI_NT_UTSNAME NT_UTSNAME |
| 406 | #define VKI_NT_ZONENAME NT_ZONENAME |
| 407 | #define VKI_PF_R PF_R |
| 408 | #define VKI_PF_W PF_W |
| 409 | #define VKI_PF_X PF_X |
| 410 | #define VKI_PN_XNUM PN_XNUM |
| 411 | #define VKI_PT_LOAD PT_LOAD |
| 412 | #define VKI_PT_SUNWBSS PT_SUNWBSS |
| 413 | #define VKI_SELFMAG SELFMAG |
| 414 | |
| 415 | #if VG_WORDSIZE == 8 |
| 416 | #define VKI_ESZ(x) Elf64_##x |
| 417 | #elif VG_WORDSIZE == 4 |
| 418 | #define VKI_ESZ(x) Elf32_##x |
| 419 | #else |
| 420 | #error VG_WORDSIZE needs to ==4 or ==8 |
| 421 | #endif |
| 422 | |
| 423 | |
| 424 | #include <sys/errno.h> |
| 425 | #define VKI_EPERM EPERM |
| 426 | #define VKI_ENOENT ENOENT |
| 427 | #define VKI_ESRCH ESRCH |
| 428 | #define VKI_EINTR EINTR |
| 429 | #define VKI_EIO EIO |
| 430 | #define VKI_ENXIO ENXIO |
| 431 | #define VKI_E2BIG E2BIG |
| 432 | #define VKI_EBADF EBADF |
| 433 | #define VKI_ECHILD ECHILD |
| 434 | #define VKI_ENOEXEC ENOEXEC |
| 435 | #define VKI_EAGAIN EAGAIN |
| 436 | #define VKI_ENOMEM ENOMEM |
| 437 | #define VKI_EACCES EACCES |
| 438 | #define VKI_EFAULT EFAULT |
| 439 | #define VKI_ENOTBLK ENOTBLK |
| 440 | #define VKI_EBUSY EBUSY |
| 441 | #define VKI_EEXIST EEXIST |
| 442 | #define VKI_EXDEV EXDEV |
| 443 | #define VKI_ENODEV ENODEV |
| 444 | #define VKI_ENOTDIR ENOTDIR |
| 445 | #define VKI_EISDIR EISDIR |
| 446 | #define VKI_EINVAL EINVAL |
| 447 | #define VKI_ENFILE ENFILE |
| 448 | #define VKI_EMFILE EMFILE |
| 449 | #define VKI_ENOTTY ENOTTY |
| 450 | #define VKI_ETXTBSY ETXTBSY |
| 451 | #define VKI_EFBIG EFBIG |
| 452 | #define VKI_ENOSPC ENOSPC |
| 453 | #define VKI_ESPIPE ESPIPE |
| 454 | #define VKI_EROFS EROFS |
| 455 | #define VKI_EMLINK EMLINK |
| 456 | #define VKI_EPIPE EPIPE |
| 457 | #define VKI_EDOM EDOM |
| 458 | #define VKI_ERANGE ERANGE |
| 459 | #define VKI_ENOTSUP ENOTSUP |
| 460 | #define VKI_ENODATA ENODATA |
| 461 | #define VKI_EOVERFLOW EOVERFLOW |
| 462 | #define VKI_ENOSYS ENOSYS |
| 463 | #define VKI_ERESTART ERESTART |
iraisr | e8b9ee3 | 2015-08-31 21:31:09 +0000 | [diff] [blame] | 464 | #define VKI_EADDRINUSE EADDRINUSE |
sewardj | 8eb8bab | 2015-07-21 14:44:28 +0000 | [diff] [blame] | 465 | |
| 466 | |
| 467 | #if defined(SOLARIS_EXECVE_SYSCALL_TAKES_FLAGS) |
| 468 | #include <sys/execx.h> |
| 469 | #define VKI_EXEC_DESCRIPTOR EXEC_DESCRIPTOR |
| 470 | #endif /* SOLARIS_EXECVE_SYSCALL_TAKES_FLAGS */ |
| 471 | |
| 472 | |
| 473 | #include <sys/fcntl.h> |
| 474 | #define VKI_O_RDONLY O_RDONLY |
| 475 | #define VKI_O_WRONLY O_WRONLY |
| 476 | #define VKI_O_RDWR O_RDWR |
| 477 | #define VKI_O_APPEND O_APPEND |
| 478 | #define VKI_O_NONBLOCK O_NONBLOCK |
| 479 | |
| 480 | #define VKI_O_CREAT O_CREAT |
| 481 | #define VKI_O_TRUNC O_TRUNC |
| 482 | #define VKI_O_EXCL O_EXCL |
| 483 | #define VKI_O_LARGEFILE O_LARGEFILE |
| 484 | |
| 485 | #define VKI_F_DUPFD F_DUPFD |
| 486 | #define VKI_F_GETFD F_GETFD |
| 487 | #define VKI_F_SETFD F_SETFD |
| 488 | #define VKI_F_GETFL F_GETFL |
| 489 | #define VKI_F_GETXFL F_GETXFL |
| 490 | #define VKI_F_SETFL F_SETFL |
| 491 | |
| 492 | /* SVR3 rfs compability const, declared only if _KERNEL or _KMEMUSER is |
| 493 | defined. */ |
| 494 | #if 0 |
| 495 | #define VKI_F_O_GETLK F_O_GETLK |
| 496 | #endif // 0 |
| 497 | |
| 498 | #define VKI_F_DUP2FD F_DUP2FD |
| 499 | |
| 500 | /* Mostly unused and kernel-unimplemented commands. In case of F_GETOWN and |
| 501 | F_GETOWN, they are translated by libc in __fcntl() into other syscalls, |
| 502 | that means these two values are never passed to the fcntl handler in the |
| 503 | kernel. F_HASREMOTELOCKS is also special, the fcntl kernel handler doesn't |
| 504 | know about it but it's used inside the kernel. */ |
| 505 | #if 0 |
| 506 | #define VKI_F_ISSTREAM F_ISSTREAM |
| 507 | #define VKI_F_PRIV F_PRIV |
| 508 | #define VKI_F_NPRIV F_NPRIV |
| 509 | #define VKI_F_QUATACTL F_QUOTACTL |
| 510 | #define VKI_F_BLOCKS F_BLOCKS |
| 511 | #define VKI_F_BLKSIZE F_BLKSIZE |
| 512 | #define VKI_F_GETOWN F_GETOWN |
| 513 | #define VKI_F_SETOWN F_SETOWN |
| 514 | #define VKI_F_REVOKE F_REVOKE |
| 515 | #define VKI_F_HASREMOTELOCKS F_HASREMOTELOCKS |
| 516 | #endif // 0 |
| 517 | |
| 518 | #define VKI_F_SETLK F_SETLK |
| 519 | #define VKI_F_SETLKW F_SETLKW |
| 520 | #define VKI_F_ALLOCSP F_ALLOCSP |
| 521 | #define VKI_F_FREESP F_FREESP |
| 522 | #define VKI_F_GETLK F_GETLK |
| 523 | #define VKI_F_SETLK_NBMAND F_SETLK_NBMAND |
| 524 | #if defined(VGP_x86_solaris) |
| 525 | #define VKI_F_SETLK64 F_SETLK64 |
| 526 | #define VKI_F_SETLKW64 F_SETLKW64 |
| 527 | #define VKI_F_ALLOCSP64 F_ALLOCSP64 |
| 528 | #define VKI_F_FREESP64 F_FREESP64 |
| 529 | #define VKI_F_GETLK64 F_GETLK64 |
| 530 | #define VKI_F_SETLK64_NBMAND F_SETLK64_NBMAND |
| 531 | #endif // defined(VGP_x86_solaris) |
| 532 | |
| 533 | #define VKI_F_SHARE F_SHARE |
| 534 | #define VKI_F_UNSHARE F_UNSHARE |
| 535 | #define VKI_F_SHARE_NBMAND F_SHARE_NBMAND |
| 536 | |
| 537 | #define VKI_F_BADFD F_BADFD |
| 538 | |
| 539 | #define vki_flock flock |
| 540 | #if defined(VGP_x86_solaris) |
| 541 | #define vki_flock64 flock64 |
| 542 | #endif // defined(VGP_x86_solaris) |
| 543 | |
| 544 | #define VKI_FD_CLOEXEC FD_CLOEXEC |
| 545 | |
| 546 | #define vki_fshare fshare |
| 547 | |
| 548 | #define VKI_AT_FDCWD AT_FDCWD |
| 549 | |
| 550 | |
| 551 | #include <sys/filio.h> |
| 552 | #define VKI_FIOSETOWN FIOSETOWN |
| 553 | #define VKI_FIOGETOWN FIOGETOWN |
| 554 | |
| 555 | |
| 556 | #include <sys/fs/namenode.h> |
| 557 | #define vki_namefd namefd |
| 558 | |
| 559 | |
| 560 | #include <sys/ioccom.h> |
| 561 | #define _VKI_IOC_DIR(x) ((x) & (IOC_VOID | IOC_OUT | IOC_IN)) |
| 562 | #define _VKI_IOC_SIZE(x) (((x) >> 16) & IOCPARM_MASK) |
| 563 | #define _VKI_IOC_NONE 0 |
| 564 | #define _VKI_IOC_READ IOC_OUT |
| 565 | #define _VKI_IOC_WRITE IOC_IN |
| 566 | |
| 567 | |
| 568 | #include <sys/ipc.h> |
| 569 | #include <sys/ipc_impl.h> |
| 570 | #define VKI_IPC_RMID IPC_RMID |
| 571 | #define VKI_IPC_SET IPC_SET |
| 572 | #define VKI_IPC_SET64 IPC_SET64 |
| 573 | #define VKI_IPC_STAT IPC_STAT |
| 574 | #define VKI_IPC_STAT64 IPC_STAT64 |
| 575 | #if defined(SOLARIS_SHM_NEW) |
| 576 | #define VKI_IPC_XSTAT64 IPC_XSTAT64 |
| 577 | #endif /* SOLARIS_SHM_NEW */ |
| 578 | |
| 579 | #define vki_semid64_ds semid_ds64 |
| 580 | |
| 581 | |
| 582 | #include <sys/lwp.h> |
| 583 | #define VKI_LWP_DAEMON LWP_DAEMON |
| 584 | #define VKI_LWP_FSBASE _LWP_FSBASE |
| 585 | #define VKI_LWP_GSBASE _LWP_GSBASE |
| 586 | #define VKI_LWP_SETPRIVATE _LWP_SETPRIVATE |
| 587 | #define VKI_LWP_GETPRIVATE _LWP_GETPRIVATE |
| 588 | |
| 589 | |
| 590 | #include <sys/mman.h> |
| 591 | #define VKI_PROT_READ PROT_READ |
| 592 | #define VKI_PROT_WRITE PROT_WRITE |
| 593 | #define VKI_PROT_EXEC PROT_EXEC |
| 594 | #define VKI_PROT_NONE PROT_NONE |
| 595 | |
| 596 | #define VKI_MAP_SHARED MAP_SHARED |
| 597 | #define VKI_MAP_PRIVATE MAP_PRIVATE |
| 598 | #define VKI_MAP_FIXED MAP_FIXED |
| 599 | #define VKI_MAP_ANONYMOUS MAP_ANONYMOUS |
| 600 | #define VKI_MAP_ALIGN MAP_ALIGN |
| 601 | #define VKI_MAP_TEXT MAP_TEXT |
| 602 | #define VKI_MAP_INITDATA MAP_INITDATA |
| 603 | |
| 604 | #define VKI_MMOBJ_ALL_FLAGS MMOBJ_ALL_FLAGS |
| 605 | #define VKI_MMOBJ_INTERPRET MMOBJ_INTERPRET |
| 606 | #define VKI_MMOBJ_PADDING MMOBJ_PADDING |
| 607 | #define VKI_MR_PADDING MR_PADDING |
| 608 | #define VKI_MR_HDR_ELF MR_HDR_ELF |
| 609 | #define VKI_MR_GET_TYPE(val) MR_GET_TYPE(val) |
| 610 | #define vki_mmapobj_result_t mmapobj_result_t |
| 611 | |
| 612 | #define vki_memcntl_mha memcntl_mha |
| 613 | #define VKI_MC_LOCKAS MC_LOCKAS |
| 614 | #define VKI_MC_UNLOCKAS MC_UNLOCKAS |
| 615 | #define VKI_MC_HAT_ADVISE MC_HAT_ADVISE |
| 616 | |
| 617 | |
| 618 | #include <sys/mntio.h> |
| 619 | #define VKI_MNTIOC_GETMNTANY MNTIOC_GETMNTANY |
| 620 | |
| 621 | |
| 622 | #include <sys/mnttab.h> |
| 623 | #define vki_mntentbuf mntentbuf |
| 624 | #define vki_mnttab mnttab |
| 625 | |
| 626 | |
| 627 | #include <sys/mount.h> |
| 628 | #define VKI_MS_DATA MS_DATA |
| 629 | #define VKI_MS_OPTIONSTR MS_OPTIONSTR |
| 630 | |
| 631 | |
| 632 | #include <sys/poll.h> |
| 633 | #define vki_pollfd pollfd |
| 634 | #define vki_pollfd_t pollfd_t |
| 635 | #define vki_nfds_t nfds_t |
| 636 | |
| 637 | |
| 638 | #include <sys/pool_impl.h> |
| 639 | #define VKI_POOL_STATUSQ POOL_STATUSQ |
| 640 | #define vki_pool_status_t pool_status_t |
| 641 | |
| 642 | |
| 643 | #include <sys/port.h> |
| 644 | #include <sys/port_impl.h> |
| 645 | #define VKI_PORT_SOURCE_FD PORT_SOURCE_FD |
| 646 | #define VKI_PORT_SOURCE_FILE PORT_SOURCE_FILE |
| 647 | |
| 648 | #define vki_port_event_t port_event_t |
| 649 | #define vki_port_notify_t port_notify_t |
| 650 | #define vki_file_obj file_obj |
| 651 | |
| 652 | #define VKI_PORT_CREATE PORT_CREATE |
| 653 | #define VKI_PORT_ASSOCIATE PORT_ASSOCIATE |
| 654 | #define VKI_PORT_DISSOCIATE PORT_DISSOCIATE |
| 655 | #define VKI_PORT_SEND PORT_SEND |
| 656 | #define VKI_PORT_SENDN PORT_SENDN |
| 657 | #define VKI_PORT_GET PORT_GET |
| 658 | #define VKI_PORT_GETN PORT_GETN |
| 659 | #define VKI_PORT_ALERT PORT_ALERT |
| 660 | #define VKI_PORT_DISPATCH PORT_DISPATCH |
| 661 | |
| 662 | #define VKI_PORT_SYS_NOPORT PORT_SYS_NOPORT |
| 663 | #define VKI_PORT_CODE_MASK PORT_CODE_MASK |
| 664 | |
| 665 | |
| 666 | #include <sys/priocntl.h> |
| 667 | #include <sys/rtpriocntl.h> |
| 668 | #include <sys/tspriocntl.h> |
| 669 | #include <sys/iapriocntl.h> |
| 670 | #include <sys/fsspriocntl.h> |
| 671 | #include <sys/fxpriocntl.h> |
| 672 | #define VKI_PC_GETCID PC_GETCID |
| 673 | #define VKI_PC_GETCLINFO PC_GETCLINFO |
| 674 | #define VKI_PC_SETPARMS PC_SETPARMS |
| 675 | #define VKI_PC_GETPARMS PC_GETPARMS |
| 676 | #define VKI_PC_ADMIN PC_ADMIN |
| 677 | #define VKI_PC_GETPRIRANGE PC_GETPRIRANGE |
| 678 | #define VKI_PC_DONICE PC_DONICE |
| 679 | #define VKI_PC_SETXPARMS PC_SETXPARMS |
| 680 | #define VKI_PC_GETXPARMS PC_GETXPARMS |
| 681 | #define VKI_PC_SETDFLCL PC_SETDFLCL |
| 682 | #define VKI_PC_GETDFLCL PC_GETDFLCL |
| 683 | #define VKI_PC_DOPRIO PC_DOPRIO |
| 684 | |
| 685 | #define VKI_PC_CLNMSZ PC_CLNMSZ |
| 686 | |
| 687 | #define VKI_PC_GETNICE PC_GETNICE |
| 688 | #define VKI_PC_SETNICE PC_SETNICE |
| 689 | |
| 690 | #define VKI_PC_GETPRIO PC_GETPRIO |
| 691 | #define VKI_PC_SETPRIO PC_SETPRIO |
| 692 | |
| 693 | #define vki_pcinfo_t pcinfo_t |
| 694 | #define vki_rtinfo_t rtinfo_t |
| 695 | #define vki_tsinfo_t tsinfo_t |
| 696 | #define vki_iainfo_t iainfo_t |
| 697 | #define vki_fssinfo_t fssinfo_t |
| 698 | #define vki_fxinfo_t fxinfo_t |
| 699 | |
| 700 | #define vki_pcparms_t pcparms_t |
| 701 | #define vki_pcnice_t pcnice_t |
| 702 | #define vki_pcprio_t pcprio_t |
| 703 | #define vki_pc_vaparm_t pc_vaparm_t |
| 704 | #define vki_pc_vaparms_t pc_vaparms_t |
| 705 | #define vki_pcpri_t pcpri_t |
| 706 | |
| 707 | #define VKI_PC_KY_CLNAME PC_KY_CLNAME |
| 708 | #define VKI_RT_KY_PRI RT_KY_PRI |
| 709 | #define VKI_RT_KY_TQSECS RT_KY_TQSECS |
| 710 | #define VKI_RT_KY_TQNSECS RT_KY_TQNSECS |
| 711 | #define VKI_RT_KY_TQSIG RT_KY_TQSIG |
| 712 | #define VKI_TS_KY_UPRILIM TS_KY_UPRILIM |
| 713 | #define VKI_TS_KY_UPRI TS_KY_UPRI |
| 714 | #define VKI_IA_KY_UPRILIM IA_KY_UPRILIM |
| 715 | #define VKI_IA_KY_UPRI IA_KY_UPRI |
| 716 | #define VKI_IA_KY_MODE IA_KY_MODE |
| 717 | #define VKI_FSS_KY_UPRILIM FSS_KY_UPRILIM |
| 718 | #define VKI_FSS_KY_UPRI FSS_KY_UPRI |
| 719 | #define VKI_FX_KY_UPRILIM FX_KY_UPRILIM |
| 720 | #define VKI_FX_KY_UPRI FX_KY_UPRI |
| 721 | #define VKI_FX_KY_TQSECS FX_KY_TQSECS |
| 722 | #define VKI_FX_KY_TQNSECS FX_KY_TQNSECS |
| 723 | |
| 724 | |
| 725 | #include <sys/priv.h> |
| 726 | #define vki_priv_impl_info_t priv_impl_info_t |
| 727 | |
| 728 | |
| 729 | #include <sys/proc.h> |
| 730 | #define VKI_SRUN SRUN |
| 731 | #define VKI_SSLEEP SSLEEP |
| 732 | #define VKI_SZOMB SZOMB |
| 733 | |
| 734 | |
| 735 | #include <sys/processor.h> |
| 736 | #define vki_processorid_t processorid_t |
| 737 | |
| 738 | |
| 739 | /* We want the new /proc definitions. */ |
| 740 | #define _STRUCTURED_PROC 1 |
| 741 | #include <sys/procfs.h> |
| 742 | #define VKI_MA_READ MA_READ |
| 743 | #define VKI_MA_WRITE MA_WRITE |
| 744 | #define VKI_MA_EXEC MA_EXEC |
| 745 | #define VKI_PRNODEV PRNODEV |
| 746 | #define VKI_PR_PCINVAL PR_PCINVAL |
| 747 | #define vki_lwpsinfo_t lwpsinfo_t |
| 748 | #define vki_lwpstatus_t lwpstatus_t |
| 749 | #define vki_prcred_t prcred_t |
| 750 | #define vki_prmap_t prmap_t |
| 751 | #define vki_prpriv_t prpriv_t |
| 752 | #define vki_prxmap_t prxmap_t |
| 753 | #define vki_pstatus_t pstatus_t |
| 754 | #define vki_psinfo_t psinfo_t |
| 755 | |
| 756 | |
| 757 | #include <sys/procfs_isa.h> |
| 758 | #if defined(SOLARIS_PRXREGSET_T) |
| 759 | #define vki_prxregset_t prxregset_t |
| 760 | #endif /* SOLARIS_PRXREGSET_T */ |
| 761 | |
| 762 | |
| 763 | #include <sys/procset.h> |
| 764 | #define vki_idtype_t idtype_t |
| 765 | #define VKI_P_PID P_PID |
| 766 | #define VKI_P_PGID P_PGID |
| 767 | #define VKI_P_ALL P_ALL |
| 768 | #define vki_procset_t procset_t |
| 769 | |
| 770 | |
| 771 | #include <sys/regset.h> |
| 772 | #define vki_prgregset_t prgregset_t |
| 773 | |
| 774 | |
| 775 | #include <sys/resource.h> |
| 776 | #define VKI_RLIMIT_DATA RLIMIT_DATA |
| 777 | #define VKI_RLIMIT_STACK RLIMIT_STACK |
| 778 | #define VKI_RLIMIT_CORE RLIMIT_CORE |
| 779 | #define VKI_RLIMIT_NOFILE RLIMIT_NOFILE |
| 780 | #define VKI__RUSAGESYS_GETRUSAGE _RUSAGESYS_GETRUSAGE |
| 781 | #define VKI__RUSAGESYS_GETRUSAGE_CHLD _RUSAGESYS_GETRUSAGE_CHLD |
| 782 | #define VKI__RUSAGESYS_GETRUSAGE_LWP _RUSAGESYS_GETRUSAGE_LWP |
| 783 | #define VKI__RUSAGESYS_GETVMUSAGE _RUSAGESYS_GETVMUSAGE |
| 784 | #define vki_rlimit rlimit |
| 785 | #define vki_rlimit64 rlimit64 |
| 786 | #define vki_rusage rusage |
| 787 | |
| 788 | |
| 789 | #include <sys/schedctl.h> |
| 790 | #define vki_sc_shared sc_shared |
| 791 | |
| 792 | |
| 793 | #include <sys/segments.h> |
| 794 | #define VKI_GDT_LWPGS GDT_LWPGS |
| 795 | #if defined(VGP_amd64_solaris) |
| 796 | /* Values VKI_UCS_SEL/VKI_UDS_SEL can be used only on amd64. On x86, correct |
| 797 | %cs/%ds values for a client need to be obtained from the host registers |
| 798 | because they are different depending on the running kernel (x86 or amd64). |
| 799 | */ |
| 800 | #define VKI_UCS_SEL UCS_SEL |
| 801 | #define VKI_UDS_SEL UDS_SEL |
| 802 | #endif |
| 803 | #define VKI_LWPGS_SEL LWPGS_SEL |
| 804 | |
| 805 | |
| 806 | #include <sys/select.h> |
| 807 | #define vki_fd_set fd_set |
| 808 | |
| 809 | |
| 810 | #include <sys/priv.h> |
| 811 | /* Define _KMEMUSER so priv_set is pulled in. */ |
| 812 | #define _KMEMUSER |
| 813 | #include <sys/priv_impl.h> |
| 814 | #undef _KMEMUSER |
| 815 | #define vki_priv_set_t priv_set_t |
| 816 | #define vki_priv_ptype_t priv_ptype_t |
| 817 | #define vki_priv_op_t priv_op_t |
| 818 | |
| 819 | #define VKI_PRIVSYS_SETPPRIV PRIVSYS_SETPPRIV |
| 820 | #define VKI_PRIVSYS_GETPPRIV PRIVSYS_GETPPRIV |
| 821 | #define VKI_PRIVSYS_GETIMPLINFO PRIVSYS_GETIMPLINFO |
| 822 | #define VKI_PRIVSYS_SETPFLAGS PRIVSYS_SETPFLAGS |
| 823 | #define VKI_PRIVSYS_GETPFLAGS PRIVSYS_GETPFLAGS |
| 824 | #define VKI_PRIVSYS_ISSETUGID PRIVSYS_ISSETUGID |
| 825 | #define VKI_PRIVSYS_PFEXEC_REG PRIVSYS_PFEXEC_REG |
| 826 | #define VKI_PRIVSYS_PFEXEC_UNREG PRIVSYS_PFEXEC_UNREG |
| 827 | |
| 828 | #define vki_priv_impl_info_t priv_impl_info_t |
| 829 | |
| 830 | |
| 831 | #include <sys/sem.h> |
| 832 | #include <sys/sem_impl.h> |
| 833 | #define VKI_GETALL GETALL |
| 834 | #define VKI_GETPID GETPID |
| 835 | #define VKI_GETNCNT GETNCNT |
| 836 | #define VKI_GETZCNT GETZCNT |
| 837 | #define VKI_GETVAL GETVAL |
| 838 | #define VKI_SEMCTL SEMCTL |
| 839 | #define VKI_SEMGET SEMGET |
| 840 | #define VKI_SEMIDS SEMIDS |
| 841 | #define VKI_SEMOP SEMOP |
| 842 | #define VKI_SEMTIMEDOP SEMTIMEDOP |
| 843 | #define VKI_SETALL SETALL |
| 844 | #define VKI_SETVAL SETVAL |
| 845 | |
| 846 | #define vki_semid_ds semid_ds |
| 847 | #define vki_sembuf sembuf |
| 848 | |
| 849 | /* The semun union has to be explicitly declared by the application program |
| 850 | (see semctl(2)). */ |
| 851 | union vki_semun { |
| 852 | int val; |
| 853 | struct semid_ds *buf; |
| 854 | ushort_t *array; |
| 855 | }; |
| 856 | |
| 857 | |
| 858 | #include <sys/sendfile.h> |
| 859 | #define VKI_SENDFILEV SENDFILEV |
| 860 | #define VKI_SENDFILEV64 SENDFILEV64 |
| 861 | #define VKI_SFV_FD_SELF SFV_FD_SELF |
| 862 | #define vki_sendfilevec sendfilevec |
| 863 | #define vki_sendfilevec64 sendfilevec64 |
| 864 | |
| 865 | |
| 866 | #include <sys/shm.h> |
| 867 | #include <sys/shm_impl.h> |
| 868 | #define VKI_SHMAT SHMAT |
| 869 | #define VKI_SHMCTL SHMCTL |
| 870 | #define VKI_SHMDT SHMDT |
| 871 | #define VKI_SHMGET SHMGET |
| 872 | #define VKI_SHMIDS SHMIDS |
| 873 | #if defined(SOLARIS_SHM_NEW) |
| 874 | #define VKI_SHMADV SHMADV |
| 875 | #define VKI_SHMGET_OSM SHMGET_OSM |
| 876 | #define VKI_SHM_ADV_GET SHM_ADV_GET |
| 877 | #define VKI_SHM_ADV_SET SHM_ADV_SET |
| 878 | #endif /* SOLARIS_SHM_NEW */ |
| 879 | #define VKI_SHM_LOCK SHM_LOCK |
| 880 | #define VKI_SHM_RDONLY SHM_RDONLY |
| 881 | #define VKI_SHM_UNLOCK SHM_UNLOCK |
| 882 | /* Should be correct, but not really neat. */ |
| 883 | #define VKI_SHMLBA VKI_PAGE_SIZE |
| 884 | |
| 885 | #define vki_shmid_ds shmid_ds |
| 886 | #define vki_shmid_ds64 shmid_ds64 |
| 887 | #define vki_shmid_xds64 shmid_xds64 |
| 888 | |
| 889 | |
| 890 | #include <sys/siginfo.h> |
| 891 | /* This section also contains items defined in sys/machsig.h, this file |
| 892 | is directly included in sys/siginfo.h. */ |
| 893 | #define vki_sigevent sigevent |
| 894 | #define vki_siginfo_t siginfo_t |
| 895 | |
| 896 | #define VKI_SI_LWP SI_LWP |
| 897 | #define VKI_SI_USER SI_USER |
| 898 | #define VKI_SIGEV_PORT SIGEV_PORT |
| 899 | #define VKI_SIGEV_THREAD SIGEV_THREAD |
| 900 | |
| 901 | /* SIGTRAP signal codes */ |
| 902 | #define VKI_TRAP_BRKPT TRAP_BRKPT |
| 903 | |
| 904 | /* SIGCLD signal codes */ |
| 905 | #define VKI_CLD_EXITED CLD_EXITED |
| 906 | #define VKI_CLD_KILLED CLD_KILLED |
| 907 | #define VKI_CLD_DUMPED CLD_DUMPED |
| 908 | #define VKI_CLD_TRAPPED CLD_TRAPPED |
| 909 | #define VKI_CLD_STOPPED CLD_STOPPED |
| 910 | #define VKI_CLD_CONTINUED CLD_CONTINUED |
| 911 | |
| 912 | /* SIGILL signal codes */ |
| 913 | #define VKI_ILL_ILLOPC ILL_ILLOPC |
| 914 | #define VKI_ILL_ILLOPN ILL_ILLOPN |
| 915 | #define VKI_ILL_ILLADR ILL_ILLADR |
| 916 | #define VKI_ILL_ILLTRP ILL_ILLTRP |
| 917 | #define VKI_ILL_PRVOPC ILL_PRVOPC |
| 918 | #define VKI_ILL_PRVREG ILL_PRVREG |
| 919 | #define VKI_ILL_COPROC ILL_COPROC |
| 920 | #define VKI_ILL_BADSTK ILL_BADSTK |
| 921 | |
| 922 | /* SIGFPE signal codes */ |
| 923 | #define VKI_FPE_INTDIV FPE_INTDIV |
| 924 | #define VKI_FPE_INTOVF FPE_INTOVF |
| 925 | #define VKI_FPE_FLTDIV FPE_FLTDIV |
| 926 | #define VKI_FPE_FLTOVF FPE_FLTOVF |
| 927 | #define VKI_FPE_FLTUND FPE_FLTUND |
| 928 | #define VKI_FPE_FLTRES FPE_FLTRES |
| 929 | #define VKI_FPE_FLTINV FPE_FLTINV |
| 930 | #define VKI_FPE_FLTSUB FPE_FLTSUB |
| 931 | #define VKI_FPE_FLTDEN FPE_FLTDEN |
| 932 | |
| 933 | /* SIGSEV signal codes */ |
| 934 | #define VKI_SEGV_MAPERR SEGV_MAPERR |
| 935 | #define VKI_SEGV_ACCERR SEGV_ACCERR |
| 936 | |
| 937 | /* SIGBUS signal codes */ |
| 938 | #define VKI_BUS_ADRALN BUS_ADRALN |
| 939 | #define VKI_BUS_ADRERR BUS_ADRERR |
| 940 | #define VKI_BUS_OBJERR BUS_OBJERR |
| 941 | |
| 942 | |
| 943 | #include <sys/signal.h> |
| 944 | /* This section also contains items defined in sys/iso/signal_iso.h, this file |
| 945 | is directly included in sys/signal.h. */ |
| 946 | |
| 947 | /* Next three constants describe the internal representation of sigset_t, |
| 948 | there are checks in coregrind/m_vki.c to make sure they are correct. */ |
| 949 | #define _VKI_NSIG 128 |
| 950 | #define _VKI_MAXSIG MAXSIG |
| 951 | #define _VKI_NSIG_BPW 32 |
| 952 | #define _VKI_NSIG_WORDS (_VKI_NSIG / _VKI_NSIG_BPW) |
| 953 | #define vki_sigset_t sigset_t |
| 954 | #define vki_sigaltstack sigaltstack |
| 955 | /* sigset_t accessor */ |
| 956 | #define sig __sigbits |
| 957 | |
| 958 | /* On Solaris we use the same type for passing sigactions to |
| 959 | and from the kernel. Hence: */ |
| 960 | typedef struct sigaction vki_sigaction_toK_t; |
| 961 | typedef struct sigaction vki_sigaction_fromK_t; |
| 962 | /* sigaction_t accessor */ |
| 963 | #define ksa_handler sa_handler |
| 964 | |
| 965 | #define VKI_SA_ONSTACK SA_ONSTACK |
| 966 | #define VKI_SA_ONESHOT SA_RESETHAND |
| 967 | #define VKI_SA_NOMASK SA_NODEFER |
| 968 | |
| 969 | #define VKI_MINSIGSTKSZ MINSIGSTKSZ |
| 970 | |
| 971 | #define VKI_SS_ONSTACK SS_ONSTACK |
| 972 | #define VKI_SS_DISABLE SS_DISABLE |
| 973 | |
| 974 | #define vki_stack_t stack_t |
| 975 | |
| 976 | #define VKI_SA_NOCLDSTOP SA_NOCLDSTOP |
| 977 | #define VKI_SA_RESTART SA_RESTART |
| 978 | #define VKI_SA_SIGINFO SA_SIGINFO |
| 979 | #define VKI_SA_NOCLDWAIT SA_NOCLDWAIT |
| 980 | #define VKI_SA_RESTORER 0 /* Solaris doesn't have this */ |
| 981 | |
| 982 | #define VKI_SIGHUP SIGHUP /* 1 */ |
| 983 | #define VKI_SIGINT SIGINT /* 2 */ |
| 984 | #define VKI_SIGQUIT SIGQUIT /* 3 */ |
| 985 | #define VKI_SIGILL SIGILL /* 4 */ |
| 986 | #define VKI_SIGTRAP SIGTRAP /* 5 */ |
| 987 | #define VKI_SIGABRT SIGABRT /* 6 */ |
| 988 | #define VKI_SIGEMT SIGEMT /* 7 */ |
| 989 | #define VKI_SIGFPE SIGFPE /* 8 */ |
| 990 | #define VKI_SIGKILL SIGKILL /* 9 */ |
| 991 | #define VKI_SIGBUS SIGBUS /* 10 */ |
| 992 | #define VKI_SIGSEGV SIGSEGV /* 11 */ |
| 993 | #define VKI_SIGSYS SIGSYS /* 12 */ |
| 994 | #define VKI_SIGPIPE SIGPIPE /* 13 */ |
| 995 | #define VKI_SIGALRM SIGALRM /* 14 */ |
| 996 | #define VKI_SIGTERM SIGTERM /* 15 */ |
| 997 | #define VKI_SIGUSR1 SIGUSR1 /* 16 */ |
| 998 | #define VKI_SIGUSR2 SIGUSR2 /* 17 */ |
| 999 | #define VKI_SIGCHLD SIGCHLD /* 18 */ |
| 1000 | #define VKI_SIGPWR SIGPWR /* 19 */ |
| 1001 | #define VKI_SIGWINCH SIGWINCH /* 20 */ |
| 1002 | #define VKI_SIGURG SIGURG /* 21 */ |
| 1003 | #define VKI_SIGIO SIGIO /* 22 */ |
| 1004 | #define VKI_SIGSTOP SIGSTOP /* 23 */ |
| 1005 | #define VKI_SIGTSTP SIGTSTP /* 24 */ |
| 1006 | #define VKI_SIGCONT SIGCONT /* 25 */ |
| 1007 | #define VKI_SIGTTIN SIGTTIN /* 26 */ |
| 1008 | #define VKI_SIGTTOU SIGTTOU /* 27 */ |
| 1009 | #define VKI_SIGVTALRM SIGVTALRM /* 28 */ |
| 1010 | #define VKI_SIGPROF SIGPROF /* 29 */ |
| 1011 | #define VKI_SIGXCPU SIGXCPU /* 30 */ |
| 1012 | #define VKI_SIGXFSZ SIGXFSZ /* 31 */ |
| 1013 | #define VKI_SIGWAITING SIGWAITING /* 32 */ |
| 1014 | #define VKI_SIGLWP SIGLWP /* 33 */ |
| 1015 | #define VKI_SIGFREEZE SIGFREEZE /* 34 */ |
| 1016 | #define VKI_SIGTHAW SIGTHAW /* 35 */ |
| 1017 | #define VKI_SIGCANCEL SIGCANCEL /* 36 */ |
| 1018 | #define VKI_SIGLOST SIGLOST /* 37 */ |
| 1019 | #define VKI_SIGXRES SIGXRES /* 38 */ |
| 1020 | #define VKI_SIGJVM1 SIGJVM1 /* 39 */ |
| 1021 | #define VKI_SIGJVM2 SIGJVM2 /* 40 */ |
| 1022 | /* Note that SIGRTMIN and SIGRTMAX are actually macros calling into |
| 1023 | libc's sysconf() which in turn calls into kernel. And it returns |
| 1024 | these _SIGRTM* values. So we are safe until someone rebuilds Solaris |
| 1025 | kernel with different values... */ |
| 1026 | #define VKI_SIGRTMIN _SIGRTMIN /* 41 */ |
| 1027 | #define VKI_SIGRTMAX _SIGRTMAX /* 72 */ |
| 1028 | |
| 1029 | #define VKI_SIG_DFL SIG_DFL |
| 1030 | #define VKI_SIG_IGN SIG_IGN |
| 1031 | |
| 1032 | #define VKI_SIG_BLOCK SIG_BLOCK |
| 1033 | #define VKI_SIG_UNBLOCK SIG_UNBLOCK |
| 1034 | #define VKI_SIG_SETMASK SIG_SETMASK |
| 1035 | |
| 1036 | |
| 1037 | #include <sys/socket.h> |
| 1038 | #define vki_sa_family_t sa_family_t |
| 1039 | #define vki_sockaddr sockaddr |
| 1040 | |
| 1041 | #define vki_socklen_t socklen_t |
| 1042 | |
| 1043 | #define VKI_SOCK_STREAM SOCK_STREAM |
| 1044 | |
| 1045 | #define VKI_SO_TYPE SO_TYPE |
| 1046 | #define VKI_SCM_RIGHTS SCM_RIGHTS |
| 1047 | #define VKI_SOL_SOCKET SOL_SOCKET |
| 1048 | |
| 1049 | #define VKI_AF_UNIX AF_UNIX |
| 1050 | #define VKI_AF_INET AF_INET |
| 1051 | #define VKI_AF_INET6 AF_INET6 |
| 1052 | |
| 1053 | #define vki_msghdr msghdr |
| 1054 | #define vki_cmsghdr cmsghdr |
| 1055 | |
| 1056 | #define VKI_CMSG_ALIGN(a) _CMSG_DATA_ALIGN(a) |
| 1057 | #define VKI_CMSG_DATA(cmsg) CMSG_DATA(cmsg) |
| 1058 | #define VKI_CMSG_FIRSTHDR(mhdr) CMSG_FIRSTHDR(mhdr) |
| 1059 | #define VKI_CMSG_NXTHDR(mhdr, cmsg) CMSG_NXTHDR(mhdr, cmsg) |
| 1060 | |
| 1061 | |
| 1062 | #include <sys/socketvar.h> |
| 1063 | #define VKI_SOV_DEFAULT SOV_DEFAULT |
| 1064 | |
| 1065 | |
| 1066 | #include <sys/sockio.h> |
iraisr | 2d20d8d | 2015-09-29 05:20:16 +0000 | [diff] [blame^] | 1067 | #define VKI_SIOCGIFCONF SIOCGIFCONF |
| 1068 | #define VKI_SIOCGIFFLAGS SIOCGIFFLAGS |
| 1069 | #define VKI_SIOCGIFNETMASK SIOCGIFNETMASK |
| 1070 | #define VKI_SIOCGIFNUM SIOCGIFNUM |
sewardj | 8eb8bab | 2015-07-21 14:44:28 +0000 | [diff] [blame] | 1071 | #define VKI_SIOCGLIFNUM SIOCGLIFNUM |
| 1072 | |
| 1073 | |
| 1074 | #if defined(SOLARIS_SPAWN_SYSCALL) |
| 1075 | #include <sys/spawn_impl.h> |
| 1076 | #define VKI_FA_CHDIR FA_CHDIR |
| 1077 | #define VKI_FA_CLOSE FA_CLOSE |
| 1078 | #define VKI_FA_CLOSEFROM FA_CLOSEFROM |
| 1079 | #define VKI_FA_DUP2 FA_DUP2 |
| 1080 | #define VKI_FA_OPEN FA_OPEN |
| 1081 | #define VKI_POSIX_SPAWN_NOEXECERR_NP POSIX_SPAWN_NOEXECERR_NP |
| 1082 | #define VKI_POSIX_SPAWN_NOSIGCHLD_NP POSIX_SPAWN_NOSIGCHLD_NP |
| 1083 | #define VKI_POSIX_SPAWN_RESETIDS POSIX_SPAWN_RESETIDS |
| 1084 | #define VKI_POSIX_SPAWN_SETPGROUP POSIX_SPAWN_SETPGROUP |
| 1085 | #define VKI_POSIX_SPAWN_SETSCHEDPARAM POSIX_SPAWN_SETSCHEDPARAM |
| 1086 | #define VKI_POSIX_SPAWN_SETSCHEDULER POSIX_SPAWN_SETSCHEDULER |
| 1087 | #define VKI_POSIX_SPAWN_SETSID_NP POSIX_SPAWN_SETSID_NP |
| 1088 | #define VKI_POSIX_SPAWN_SETSIGDEF POSIX_SPAWN_SETSIGDEF |
| 1089 | #define VKI_POSIX_SPAWN_SETSIGIGN_NP POSIX_SPAWN_SETSIGIGN_NP |
| 1090 | #define VKI_POSIX_SPAWN_SETSIGMASK POSIX_SPAWN_SETSIGMASK |
| 1091 | #define VKI_POSIX_SPAWN_SETVAMASK_NP POSIX_SPAWN_SETVAMASK_NP |
| 1092 | #define VKI_POSIX_SPAWN_WAITPID_NP POSIX_SPAWN_WAITPID_NP |
| 1093 | #define VKI_SPAWN_VERSION SPAWN_VERSION |
| 1094 | #define vki_kfile_attr_t kfile_attr_t |
| 1095 | #define vki_kspawn_attr_t kspawn_attr_t |
| 1096 | #define vki_spawn_attr_t spawn_attr_t |
| 1097 | #endif /* SOLARIS_SPAWN_SYSCALL */ |
| 1098 | |
| 1099 | |
| 1100 | #include <sys/stat.h> |
| 1101 | #define vki_stat stat |
| 1102 | #define vki_stat64 stat64 |
| 1103 | |
| 1104 | #define st_atime_nsec st_atim.tv_nsec |
| 1105 | #define st_mtime_nsec st_mtim.tv_nsec |
| 1106 | #define st_ctime_nsec st_ctim.tv_nsec |
| 1107 | |
| 1108 | #define VKI_S_IFIFO S_IFIFO |
| 1109 | #define VKI_S_ISUID S_ISUID |
| 1110 | #define VKI_S_ISGID S_ISGID |
| 1111 | |
| 1112 | #define VKI_S_IRUSR S_IRUSR |
| 1113 | #define VKI_S_IWUSR S_IWUSR |
| 1114 | #define VKI_S_IXUSR S_IXUSR |
| 1115 | #define VKI_S_IRGRP S_IRGRP |
| 1116 | #define VKI_S_IWGRP S_IWGRP |
| 1117 | #define VKI_S_IXGRP S_IXGRP |
| 1118 | #define VKI_S_IROTH S_IROTH |
| 1119 | #define VKI_S_IWOTH S_IWOTH |
| 1120 | #define VKI_S_IXOTH S_IXOTH |
| 1121 | |
| 1122 | #define VKI_S_ISCHR S_ISCHR |
| 1123 | #define VKI_S_ISDIR S_ISDIR |
| 1124 | #define VKI_S_ISBLK S_ISBLK |
| 1125 | #define VKI_S_ISREG S_ISREG |
| 1126 | #define VKI_S_ISLNK S_ISLNK |
| 1127 | |
| 1128 | |
| 1129 | #include <sys/statfs.h> |
| 1130 | #define vki_statfs statfs |
| 1131 | |
| 1132 | |
| 1133 | #include <sys/statvfs.h> |
| 1134 | #define vki_statvfs statvfs |
| 1135 | #define vki_statvfs64 statvfs64 |
| 1136 | |
| 1137 | |
| 1138 | #include <sys/stropts.h> |
| 1139 | #define VKI_I_CANPUT I_CANPUT |
| 1140 | #define VKI_I_PEEK I_PEEK |
| 1141 | #define VKI_I_PUSH I_PUSH |
| 1142 | #define VKI_I_STR I_STR |
| 1143 | #define vki_strbuf strbuf |
| 1144 | #define vki_strioctl strioctl |
| 1145 | #define vki_strpeek strpeek |
| 1146 | |
| 1147 | |
| 1148 | #include <sys/synch.h> |
| 1149 | #define vki_lwp_mutex_t lwp_mutex_t |
| 1150 | #define vki_lwp_cond_t lwp_cond_t |
| 1151 | #define vki_lwp_sema_t lwp_sema_t |
| 1152 | #define vki_lwp_rwlock_t lwp_rwlock_t |
| 1153 | |
| 1154 | /* Defines from the private sys/synch32.h header. */ |
| 1155 | #define vki_mutex_flag flags.flag1 |
| 1156 | #define vki_mutex_type flags.mbcp_type_un.mtype_rcount.count_type1 |
| 1157 | #define vki_mutex_rcount flags.mbcp_type_un.mtype_rcount.count_type2 |
| 1158 | #define vki_mutex_owner data |
| 1159 | #define vki_mutex_lockw lock.lock64.pad[7] |
| 1160 | #define vki_mutex_waiters lock.lock64.pad[6] |
| 1161 | #define vki_mutex_ownerpid lock.lock32.ownerpid |
| 1162 | |
| 1163 | #define vki_cond_type flags.type |
| 1164 | #define vki_cond_waiters_kernel flags.flag[3] |
| 1165 | |
| 1166 | #define vki_sema_count count |
| 1167 | #define vki_sema_type type |
| 1168 | #define vki_sema_waiters flags[7] |
| 1169 | |
| 1170 | #define vki_rwlock_readers readers |
| 1171 | #define vki_rwlock_type type |
| 1172 | #define vki_rwlock_owner readercv.data |
| 1173 | #define vki_rwlock_ownerpid writercv.data |
| 1174 | |
| 1175 | |
| 1176 | #include <sys/sysconfig.h> |
| 1177 | #define VKI_CONFIG_OPEN_FILES _CONFIG_OPEN_FILES |
| 1178 | |
| 1179 | |
| 1180 | #include <sys/sysi86.h> |
| 1181 | #define VKI_SI86FPSTART SI86FPSTART |
| 1182 | |
| 1183 | |
| 1184 | #include <sys/systeminfo.h> |
| 1185 | #define VKI_SI_SYSNAME SI_SYSNAME |
| 1186 | #define VKI_SI_HOSTNAME SI_HOSTNAME |
| 1187 | #define VKI_SI_RELEASE SI_RELEASE |
| 1188 | #define VKI_SI_VERSION SI_VERSION |
| 1189 | #define VKI_SI_MACHINE SI_MACHINE |
| 1190 | #define VKI_SI_ARCHITECTURE SI_ARCHITECTURE |
| 1191 | #define VKI_SI_HW_SERIAL SI_HW_SERIAL |
| 1192 | #define VKI_SI_HW_PROVIDER SI_HW_PROVIDER |
| 1193 | #define VKI_SI_SRPC_DOMAIN SI_SRPC_DOMAIN |
| 1194 | |
| 1195 | #define VKI_SI_SET_HOSTNAME SI_SET_HOSTNAME |
| 1196 | #define VKI_SI_SET_SRCP_DOMAIN SI_SET_SRPC_DOMAIN |
| 1197 | |
| 1198 | #define VKI_SI_PLATFORM SI_PLATFORM |
| 1199 | #define VKI_SI_ISALIST SI_ISALIST |
| 1200 | #define VKI_SI_DHCP_CACHE SI_DHCP_CACHE |
| 1201 | #define VKI_SI_ARCHITECTURE_32 SI_ARCHITECTURE_32 |
| 1202 | #define VKI_SI_ARCHITECTURE_64 SI_ARCHITECTURE_64 |
| 1203 | #define VKI_SI_ARCHITECTURE_K SI_ARCHITECTURE_K |
| 1204 | #define VKI_SI_ARCHITECTURE_NATIVE SI_ARCHITECTURE_NATIVE |
| 1205 | |
| 1206 | |
| 1207 | #include <sys/termio.h> |
| 1208 | #define vki_termio termio |
| 1209 | |
| 1210 | |
| 1211 | #include <sys/termios.h> |
| 1212 | #define vki_termios termios |
| 1213 | #define VKI_TCGETA TCGETA |
| 1214 | #define VKI_TCGETS TCGETS |
| 1215 | #define VKI_TCSETS TCSETS |
| 1216 | #define VKI_TCSETSF TCSETSF |
| 1217 | #define VKI_TCSETSW TCSETSW |
| 1218 | #define VKI_TIOCGPGRP TIOCGPGRP |
| 1219 | #define VKI_TIOCGSID TIOCGSID |
| 1220 | #define VKI_TIOCGWINSZ TIOCGWINSZ |
| 1221 | #define VKI_TIOCNOTTY TIOCNOTTY |
| 1222 | #define VKI_TIOCSCTTY TIOCSCTTY |
| 1223 | #define VKI_TIOCSPGRP TIOCSPGRP |
| 1224 | #define VKI_TIOCSWINSZ TIOCSWINSZ |
| 1225 | #define vki_winsize winsize |
| 1226 | |
| 1227 | |
| 1228 | #include <sys/time.h> |
| 1229 | #define VKI_CLOCK_MONOTONIC CLOCK_MONOTONIC |
| 1230 | |
| 1231 | #define vki_clockid_t clockid_t |
| 1232 | #define vki_timespec timespec |
| 1233 | #define vki_timespec_t timespec_t |
| 1234 | #define vki_timeval timeval |
| 1235 | #define vki_timezone timezone |
| 1236 | #define vki_itimerspec itimerspec |
| 1237 | #define vki_itimerval itimerval |
| 1238 | |
| 1239 | |
| 1240 | #include <sys/times.h> |
| 1241 | #define vki_tms tms |
| 1242 | |
| 1243 | |
| 1244 | #include <sys/tsol/label_macro.h> |
| 1245 | #define vki_bslabel_t bslabel_t |
| 1246 | |
| 1247 | |
| 1248 | /* Do not include sys/tsol/tndb.h if a C++ compiler is used to build a file |
| 1249 | which includes vki-solaris.h. This cannot be done because the tndb.h |
| 1250 | header file uses the template keyword as a member name (on illumos). */ |
| 1251 | #if !defined(__cplusplus) |
| 1252 | #include <sys/tsol/tndb.h> |
| 1253 | #define VKI_TNDB_DELETE TNDB_DELETE |
| 1254 | #define VKI_TNDB_FLUSH TNDB_FLUSH |
| 1255 | #define VKI_TNDB_GET TNDB_GET |
| 1256 | #if defined(SOLARIS_TNDB_GET_TNIP) |
| 1257 | #define VKI_TNDB_GET_TNIP TNDB_GET_TNIP |
| 1258 | #endif /* SOLARIS_TNDB_GET_TNIP */ |
| 1259 | #define VKI_TNDB_LOAD TNDB_LOAD |
| 1260 | #define vki_tsol_mlpent_t tsol_mlpent_t |
| 1261 | #define vki_tsol_rhent_t tsol_rhent_t |
| 1262 | #define vki_tsol_tpent_t tsol_tpent_t |
| 1263 | #endif /* !__cplusplus */ |
| 1264 | |
| 1265 | |
| 1266 | #include <sys/tsol/tsyscall.h> |
| 1267 | #define VKI_TSOL_FGETLABEL TSOL_FGETLABEL |
| 1268 | #define VKI_TSOL_GETLABEL TSOL_GETLABEL |
| 1269 | #define VKI_TSOL_TNMLP TSOL_TNMLP |
| 1270 | #define VKI_TSOL_TNRH TSOL_TNRH |
| 1271 | #define VKI_TSOL_TNRHTP TSOL_TNRHTP |
| 1272 | #define VKI_TSOL_SYSLABELING TSOL_SYSLABELING |
| 1273 | #if defined(SOLARIS_TSOL_CLEARANCE) |
| 1274 | #define VKI_TSOL_GETCLEARANCE TSOL_GETCLEARANCE |
| 1275 | #define VKI_TSOL_SETCLEARANCE TSOL_SETCLEARANCE |
| 1276 | #endif /* SOLARIS_TSOL_CLEARANCE */ |
| 1277 | |
| 1278 | |
| 1279 | #include <sys/ttold.h> |
| 1280 | #define vki_sgttyb sgttyb |
| 1281 | |
| 1282 | |
| 1283 | #include <sys/ucontext.h> |
| 1284 | /* This section also contains items defined in sys/regset.h, this file |
| 1285 | is directly included in sys/ucontext.h. */ |
| 1286 | #if defined(VGP_x86_solaris) |
| 1287 | #define VKI_SS SS |
| 1288 | #define VKI_UESP UESP |
| 1289 | #define VKI_EFL EFL |
| 1290 | #define VKI_CS CS |
| 1291 | #define VKI_EIP EIP |
| 1292 | #define VKI_ERR 13 /* ERR */ |
| 1293 | #define VKI_TRAPNO TRAPNO |
| 1294 | #define VKI_EAX EAX |
| 1295 | #define VKI_ECX ECX |
| 1296 | #define VKI_EDX EDX |
| 1297 | #define VKI_EBX EBX |
| 1298 | #define VKI_ESP ESP |
| 1299 | #define VKI_EBP EBP |
| 1300 | #define VKI_ESI ESI |
| 1301 | #define VKI_EDI EDI |
| 1302 | #define VKI_DS DS |
| 1303 | #define VKI_ES ES |
| 1304 | #define VKI_FS FS |
| 1305 | #define VKI_GS GS |
| 1306 | |
| 1307 | /* Definitions for compatibility with amd64-solaris. */ |
| 1308 | #define VKI_REG_ERR VKI_ERR |
| 1309 | #define VKI_REG_TRAPNO VKI_TRAPNO |
| 1310 | |
| 1311 | #define VKI_EFLAGS_ID_BIT (1 << 21) |
| 1312 | |
| 1313 | #elif defined(VGP_amd64_solaris) |
| 1314 | #define VKI_REG_GSBASE REG_GSBASE |
| 1315 | #define VKI_REG_FSBASE REG_FSBASE |
| 1316 | #define VKI_REG_DS REG_DS |
| 1317 | #define VKI_REG_ES REG_ES |
| 1318 | #define VKI_REG_GS REG_GS |
| 1319 | #define VKI_REG_FS REG_FS |
| 1320 | #define VKI_REG_SS REG_SS |
| 1321 | #define VKI_REG_RSP REG_RSP |
| 1322 | #define VKI_REG_RFL REG_RFL |
| 1323 | #define VKI_REG_CS REG_CS |
| 1324 | #define VKI_REG_RIP REG_RIP |
| 1325 | #define VKI_REG_ERR REG_ERR |
| 1326 | #define VKI_REG_TRAPNO REG_TRAPNO |
| 1327 | #define VKI_REG_RAX REG_RAX |
| 1328 | #define VKI_REG_RCX REG_RCX |
| 1329 | #define VKI_REG_RDX REG_RDX |
| 1330 | #define VKI_REG_RBX REG_RBX |
| 1331 | #define VKI_REG_RBP REG_RBP |
| 1332 | #define VKI_REG_RSI REG_RSI |
| 1333 | #define VKI_REG_RDI REG_RDI |
| 1334 | #define VKI_REG_R8 REG_R8 |
| 1335 | #define VKI_REG_R9 REG_R9 |
| 1336 | #define VKI_REG_R10 REG_R10 |
| 1337 | #define VKI_REG_R11 REG_R11 |
| 1338 | #define VKI_REG_R12 REG_R12 |
| 1339 | #define VKI_REG_R13 REG_R13 |
| 1340 | #define VKI_REG_R14 REG_R14 |
| 1341 | #define VKI_REG_R15 REG_R15 |
| 1342 | |
| 1343 | #define VKI_RFLAGS_ID_BIT (1 << 21) |
| 1344 | |
| 1345 | #else |
| 1346 | #error "Unknown platform" |
| 1347 | #endif |
| 1348 | |
| 1349 | #define vki_fpregset_t fpregset_t |
| 1350 | |
| 1351 | /* Don't polute global namespace so much. */ |
| 1352 | #undef r_r0 |
| 1353 | #undef r_r1 |
| 1354 | #undef r_fp |
| 1355 | #undef r_sp |
| 1356 | #undef r_pc |
| 1357 | #undef r_ps |
| 1358 | #undef ERR |
| 1359 | |
| 1360 | #if defined(VGP_x86_solaris) |
| 1361 | /* The ucontext structure as defined in the SYSV ABI for Intel386. Illumos |
| 1362 | contains exactly this definition. Solaris 11 utilizes two uc_filler values |
| 1363 | -> "xrs_t uc_xrs; long uc_filler[3];". The xrs_t structure is used for the |
| 1364 | AVX support. We define our own ucontext structure because all five |
| 1365 | uc_filler values need to be available in VG_(save_context). Note that |
| 1366 | Valgrind doesn't support AVX on the x86 platform. */ |
| 1367 | typedef struct sysv_ucontext sysv_ucontext_t; |
| 1368 | struct sysv_ucontext { |
| 1369 | unsigned long uc_flags; |
| 1370 | sysv_ucontext_t *uc_link; |
| 1371 | sigset_t uc_sigmask; |
| 1372 | stack_t uc_stack; |
| 1373 | mcontext_t uc_mcontext; |
| 1374 | long uc_filler[5]; |
| 1375 | }; |
| 1376 | #define VKI_UC_GUEST_CC_OP(uc) (*(UWord*)&(uc)->uc_filler[0]) |
| 1377 | #define VKI_UC_GUEST_CC_NDEP(uc) (*(UWord*)&(uc)->uc_filler[1]) |
| 1378 | #define VKI_UC_GUEST_CC_DEP1(uc) (*(UWord*)&(uc)->uc_filler[2]) |
| 1379 | #define VKI_UC_GUEST_CC_DEP2(uc) (*(UWord*)&(uc)->uc_filler[3]) |
| 1380 | #define VKI_UC_GUEST_EFLAGS_NEG(uc) \ |
| 1381 | (*(UWord*)&(uc)->uc_mcontext.fpregs.fp_reg_set.fpchip_state.__pad[0]) |
| 1382 | #define VKI_UC_GUEST_EFLAGS_CHECKSUM(uc) \ |
| 1383 | (*(UWord*)&(uc)->uc_mcontext.fpregs.fp_reg_set.fpchip_state.__pad[1]) |
| 1384 | #define VKI_UC_SIGNO(uc) (*(UWord*)&(uc)->uc_filler[4]) |
| 1385 | #define VKI_UC_SIGNO_CONST(uc) (*(const UWord*)&(uc)->uc_filler[4]) |
| 1386 | |
| 1387 | #define vki_ucontext_t sysv_ucontext_t |
| 1388 | #define vki_ucontext sysv_ucontext |
| 1389 | |
| 1390 | #elif defined(VGP_amd64_solaris) |
| 1391 | /* The ucontext structure on Solaris has only 3 elements available in uc_filler |
| 1392 | which is not enough to store all required information. Therefore padding |
| 1393 | area in mcontext's FPU regset is used. */ |
| 1394 | #define vki_ucontext ucontext |
| 1395 | #define vki_ucontext_t ucontext_t |
| 1396 | #define VKI_UC_MC_FP_FX_IGN2(uc) \ |
| 1397 | (uc)->uc_mcontext.fpregs.fp_reg_set.fpchip_state.__fx_ign2 |
| 1398 | #define VKI_UC_GUEST_CC_OP(uc) (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[0]) |
| 1399 | #define VKI_UC_GUEST_CC_NDEP(uc) (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[1]) |
| 1400 | #define VKI_UC_GUEST_CC_DEP1(uc) (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[2]) |
| 1401 | #define VKI_UC_GUEST_CC_DEP2(uc) (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[3]) |
| 1402 | #define VKI_UC_GUEST_RFLAGS_NEG(uc) (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[4]) |
| 1403 | #define VKI_UC_GUEST_RFLAGS_CHECKSUM(uc) \ |
| 1404 | (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[5]) |
| 1405 | #define VKI_UC_SIGNO(uc) (*(UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[6]) |
| 1406 | #define VKI_UC_SIGNO_CONST(uc) (*(const UWord *) &VKI_UC_MC_FP_FX_IGN2(uc)[6]) |
| 1407 | |
| 1408 | #else |
| 1409 | #error "Unknown platform" |
| 1410 | #endif |
| 1411 | |
| 1412 | #define vki_fpchip_state fpchip_state |
| 1413 | |
| 1414 | #define VKI_GETCONTEXT GETCONTEXT |
| 1415 | #define VKI_SETCONTEXT SETCONTEXT |
| 1416 | #define VKI_GETUSTACK GETUSTACK |
| 1417 | #define VKI_SETUSTACK SETUSTACK |
| 1418 | |
| 1419 | #define VKI_UC_SIGMASK UC_SIGMASK |
| 1420 | #define VKI_UC_STACK UC_STACK |
| 1421 | #define VKI_UC_CPU UC_CPU |
| 1422 | #define VKI_UC_FPU UC_FPU |
| 1423 | #define VKI_UC_ALL UC_ALL |
| 1424 | |
| 1425 | #include <sys/uio.h> |
| 1426 | #define vki_iovec iovec |
| 1427 | |
| 1428 | |
| 1429 | #include <sys/un.h> |
| 1430 | #define vki_sockaddr_un sockaddr_un |
| 1431 | |
| 1432 | |
| 1433 | #if defined(SOLARIS_UUIDSYS_SYSCALL) |
| 1434 | #include <sys/uuid.h> |
| 1435 | #define vki_uuid uuid |
| 1436 | #endif /* SOLARIS_UUIDSYS_SYSCALL */ |
| 1437 | |
| 1438 | |
| 1439 | #include <sys/utsname.h> |
| 1440 | #define vki_utsname utsname |
| 1441 | /* Add another alias for utsname, used in syswrap-generic.c. */ |
| 1442 | #define vki_new_utsname utsname |
| 1443 | |
| 1444 | |
| 1445 | #include <sys/vm_usage.h> |
| 1446 | #define vki_vmusage_t vmusage_t |
| 1447 | |
| 1448 | |
| 1449 | #include <sys/wait.h> |
| 1450 | #define VKI_WEXITED WEXITED |
| 1451 | #define VKI_WTRAPPED WTRAPPED |
| 1452 | |
| 1453 | #define VKI_WSTOPFLG WSTOPFLG |
| 1454 | #define VKI_WCONTFLG WCONTFLG |
| 1455 | #define VKI_WCOREFLG WCOREFLG |
| 1456 | |
| 1457 | |
| 1458 | #include <sys/zone.h> |
| 1459 | #define VKI_ZONE_ADD_DATALINK ZONE_ADD_DATALINK |
| 1460 | #define VKI_ZONE_ATTR_NAME ZONE_ATTR_NAME |
| 1461 | #define VKI_ZONE_BOOT ZONE_BOOT |
| 1462 | #define VKI_ZONE_CHECK_DATALINK ZONE_CHECK_DATALINK |
| 1463 | #define VKI_ZONE_CREATE ZONE_CREATE |
| 1464 | #define VKI_ZONE_DEL_DATALINK ZONE_DEL_DATALINK |
| 1465 | #define VKI_ZONE_DESTROY ZONE_DESTROY |
| 1466 | #define VKI_ZONE_ENTER ZONE_ENTER |
| 1467 | #define VKI_ZONE_GETATTR ZONE_GETATTR |
| 1468 | #define VKI_ZONE_LIST ZONE_LIST |
| 1469 | #define VKI_ZONE_LIST_DATALINK ZONE_LIST_DATALINK |
| 1470 | #define VKI_ZONE_LOOKUP ZONE_LOOKUP |
| 1471 | #define VKI_ZONE_SETATTR ZONE_SETATTR |
| 1472 | #define VKI_ZONE_SHUTDOWN ZONE_SHUTDOWN |
| 1473 | #if defined(SOLARIS_ZONE_DEFUNCT) |
| 1474 | #define VKI_ZONE_GETATTR_DEFUNCT ZONE_GETATTR_DEFUNCT |
| 1475 | #define VKI_ZONE_LIST_DEFUNCT ZONE_LIST_DEFUNCT |
| 1476 | #endif /* SOLARIS_ZONE_DEFUNCT */ |
| 1477 | #define VKI_ZONENAME_MAX ZONENAME_MAX |
| 1478 | #define vki_zone_def zone_def |
| 1479 | #define vki_zoneid_t zoneid_t |
| 1480 | |
| 1481 | |
| 1482 | /* from <sys/ucred.h> which is consolidation private */ |
| 1483 | #define VKI_UCREDSYS_UCREDGET 0 |
| 1484 | #define VKI_UCREDSYS_GETPEERUCRED 1 |
| 1485 | struct ucred_s { |
| 1486 | vki_uint32_t uc_size; /* Size of the full structure */ |
| 1487 | vki_uint32_t uc_credoff; /* Credential offset */ |
| 1488 | vki_uint32_t uc_privoff; /* Privilege offset */ |
| 1489 | vki_pid_t uc_pid; /* Process id */ |
| 1490 | vki_uint32_t uc_audoff; /* Audit info offset */ |
| 1491 | vki_zoneid_t uc_zoneid; /* Zone id */ |
| 1492 | vki_projid_t uc_projid; /* Project id */ |
| 1493 | vki_uint32_t uc_labeloff; /* label offset */ |
| 1494 | }; |
| 1495 | |
| 1496 | |
| 1497 | /* from sys/old_procfs.h which clashes with sys/procfs.h */ |
| 1498 | |
| 1499 | #define VKI_ELF_OLD_PR_PCINVAL 0x0080 |
| 1500 | |
| 1501 | typedef struct vki_elf_prpsinfo { |
| 1502 | char pr_state; /* numeric process state (see pr_sname) */ |
| 1503 | char pr_sname; /* printable character representing pr_state */ |
| 1504 | char pr_zomb; /* !=0: process terminated but not waited for */ |
| 1505 | char pr_nice; /* nice for cpu usage */ |
| 1506 | vki_uint_t pr_flag; /* process flags */ |
| 1507 | vki_uid_t pr_uid; /* real user id */ |
| 1508 | vki_gid_t pr_gid; /* real group id */ |
| 1509 | vki_pid_t pr_pid; /* unique process id */ |
| 1510 | vki_pid_t pr_ppid; /* process id of parent */ |
| 1511 | vki_pid_t pr_pgrp; /* pid of process group leader */ |
| 1512 | vki_pid_t pr_sid; /* session id */ |
| 1513 | vki_caddr_t pr_addr; /* physical address of process */ |
| 1514 | vki_size_t pr_size; /* size of process image in pages */ |
| 1515 | vki_size_t pr_rssize; /* resident set size in pages */ |
| 1516 | vki_caddr_t pr_wchan; /* wait addr for sleeping process */ |
| 1517 | vki_timespec_t pr_start; /* process start time, sec+nsec since epoch */ |
| 1518 | vki_timespec_t pr_time; /* usr+sys cpu time for this process */ |
| 1519 | int pr_pri; /* priority, high value is high priority */ |
| 1520 | char pr_oldpri; /* pre-SVR4, low value is high priority */ |
| 1521 | char pr_cpu; /* pre-SVR4, cpu usage for scheduling */ |
| 1522 | vki_o_dev_t pr_ottydev; /* short tty device number */ |
| 1523 | vki_dev_t pr_lttydev; /* controlling tty device (PRNODEV if none) */ |
| 1524 | char pr_clname[8]; /* scheduling class name */ |
| 1525 | char pr_fname[16]; /* last component of execed pathname */ |
| 1526 | char pr_psargs[80]; /* initial characters of arg list */ |
| 1527 | short pr_syscall; /* system call number (if in syscall) */ |
| 1528 | short pr_fill; |
| 1529 | vki_timespec_t pr_ctime; /* usr+sys cpu time for reaped children */ |
| 1530 | vki_size_t pr_bysize; /* size of process image in bytes */ |
| 1531 | vki_size_t pr_byrssize; /* resident set size in bytes */ |
| 1532 | int pr_argc; /* initial argument count */ |
| 1533 | char **pr_argv; /* initial argument vector */ |
| 1534 | char **pr_envp; /* initial environment vector */ |
| 1535 | int pr_wstat; /* if zombie, the wait() status */ |
| 1536 | /* The following percent numbers are 16-bit binary */ |
| 1537 | /* fractions [0 .. 1] with the binary point to the */ |
| 1538 | /* right of the high-order bit (one == 0x8000) */ |
| 1539 | ushort_t pr_pctcpu; /* % of recent cpu time, one or all lwps */ |
| 1540 | ushort_t pr_pctmem; /* % of of system memory used by the process */ |
| 1541 | vki_uid_t pr_euid; /* effective user id */ |
| 1542 | vki_gid_t pr_egid; /* effective group id */ |
| 1543 | vki_id_t pr_aslwpid; /* historical; now always zero */ |
| 1544 | char pr_dmodel; /* data model of the process */ |
| 1545 | char pr_pad[3]; |
| 1546 | int pr_filler[6]; /* for future expansion */ |
| 1547 | } vki_elf_prpsinfo_t; |
| 1548 | |
| 1549 | typedef struct vki_elf_prstatus { |
| 1550 | int pr_flags; /* Flags (see below) */ |
| 1551 | short pr_why; /* Reason for process stop (if stopped) */ |
| 1552 | short pr_what; /* More detailed reason */ |
| 1553 | vki_siginfo_t pr_info; /* Info associated with signal or fault */ |
| 1554 | short pr_cursig; /* Current signal */ |
| 1555 | ushort_t pr_nlwp; /* Number of lwps in the process */ |
| 1556 | vki_sigset_t pr_sigpend; /* Set of signals pending to the process */ |
| 1557 | vki_sigset_t pr_sighold; /* Set of signals held (blocked) by the lwp */ |
| 1558 | struct vki_sigaltstack pr_altstack; /* Alternate signal stack info */ |
| 1559 | struct sigaction pr_action; /* Signal action for current signal */ |
| 1560 | vki_pid_t pr_pid; /* Process id */ |
| 1561 | vki_pid_t pr_ppid; /* Parent process id */ |
| 1562 | vki_pid_t pr_pgrp; /* Process group id */ |
| 1563 | vki_pid_t pr_sid; /* Session id */ |
| 1564 | vki_timespec_t pr_utime; /* Process user cpu time */ |
| 1565 | vki_timespec_t pr_stime; /* Process system cpu time */ |
| 1566 | vki_timespec_t pr_cutime; /* Sum of children's user times */ |
| 1567 | vki_timespec_t pr_cstime; /* Sum of children's system times */ |
| 1568 | char pr_clname[PRCLSZ]; /* Scheduling class name */ |
| 1569 | short pr_syscall; /* System call number (if in syscall) */ |
| 1570 | short pr_nsysarg; /* Number of arguments to this syscall */ |
| 1571 | long pr_sysarg[PRSYSARGS]; /* Arguments to this syscall */ |
| 1572 | vki_id_t pr_who; /* Specific lwp identifier */ |
| 1573 | vki_sigset_t pr_lwppend; /* Set of signals pending to the lwp */ |
| 1574 | struct vki_ucontext *pr_oldcontext; /* Address of previous ucontext */ |
| 1575 | vki_caddr_t pr_brkbase; /* Address of the process heap */ |
| 1576 | vki_size_t pr_brksize; /* Size of the process heap, in bytes */ |
| 1577 | vki_caddr_t pr_stkbase; /* Address of the process stack */ |
| 1578 | vki_size_t pr_stksize; /* Size of the process stack, in bytes */ |
| 1579 | short pr_processor; /* processor which last ran this LWP */ |
| 1580 | short pr_bind; /* processor LWP bound to or PBIND_NONE */ |
| 1581 | long pr_instr; /* Current instruction */ |
| 1582 | vki_prgregset_t pr_reg; /* General registers */ |
| 1583 | } vki_elf_prstatus_t; |
| 1584 | |
| 1585 | |
| 1586 | /* Signal frames. */ |
| 1587 | #if defined(VGP_x86_solaris) |
| 1588 | struct vki_sigframe { |
| 1589 | /* First four words look like a call to a 3-arg x86 function. */ |
| 1590 | void *return_addr; |
| 1591 | int a1_signo; |
| 1592 | vki_siginfo_t *a2_siginfo; |
| 1593 | vki_ucontext_t *a3_ucontext; |
| 1594 | /* Saved ucontext and siginfo. */ |
| 1595 | vki_ucontext_t ucontext; |
| 1596 | vki_siginfo_t siginfo; |
| 1597 | }; |
| 1598 | |
| 1599 | #elif defined(VGP_amd64_solaris) |
| 1600 | struct vki_sigframe { |
| 1601 | void *return_addr; |
| 1602 | long a1_signo; |
| 1603 | vki_siginfo_t *a2_siginfo; |
| 1604 | /* Saved ucontext and siginfo. */ |
| 1605 | vki_ucontext_t ucontext; |
| 1606 | vki_siginfo_t siginfo; |
| 1607 | }; |
| 1608 | |
| 1609 | #else |
| 1610 | #error "Unknown platform" |
| 1611 | #endif |
| 1612 | typedef struct vki_sigframe vki_sigframe_t; |
| 1613 | |
| 1614 | #endif // __VKI_SOLARIS_H |
| 1615 | |
| 1616 | /*--------------------------------------------------------------------*/ |
| 1617 | /*--- end ---*/ |
| 1618 | /*--------------------------------------------------------------------*/ |