1e71ca95cSGerald Jelinek /* 2e71ca95cSGerald Jelinek * CDDL HEADER START 3e71ca95cSGerald Jelinek * 4e71ca95cSGerald Jelinek * The contents of this file are subject to the terms of the 5e71ca95cSGerald Jelinek * Common Development and Distribution License (the "License"). 6e71ca95cSGerald Jelinek * You may not use this file except in compliance with the License. 7e71ca95cSGerald Jelinek * 8e71ca95cSGerald Jelinek * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9e71ca95cSGerald Jelinek * or http://www.opensolaris.org/os/licensing. 10e71ca95cSGerald Jelinek * See the License for the specific language governing permissions 11e71ca95cSGerald Jelinek * and limitations under the License. 12e71ca95cSGerald Jelinek * 13e71ca95cSGerald Jelinek * When distributing Covered Code, include this CDDL HEADER in each 14e71ca95cSGerald Jelinek * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15e71ca95cSGerald Jelinek * If applicable, add the following below this CDDL HEADER, with the 16e71ca95cSGerald Jelinek * fields enclosed by brackets "[]" replaced with your own identifying 17e71ca95cSGerald Jelinek * information: Portions Copyright [yyyy] [name of copyright owner] 18e71ca95cSGerald Jelinek * 19e71ca95cSGerald Jelinek * CDDL HEADER END 20e71ca95cSGerald Jelinek */ 21794f0adbSRoger A. Faulkner 22e71ca95cSGerald Jelinek /* 23*b49b27dcSTheo Schlossnagle * Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved. 2480e2ca85S * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved. 25e71ca95cSGerald Jelinek */ 26e71ca95cSGerald Jelinek 27e71ca95cSGerald Jelinek #ifndef _S10_BRAND_H 28e71ca95cSGerald Jelinek #define _S10_BRAND_H 29e71ca95cSGerald Jelinek 30e71ca95cSGerald Jelinek #ifdef __cplusplus 31e71ca95cSGerald Jelinek extern "C" { 32e71ca95cSGerald Jelinek #endif 33e71ca95cSGerald Jelinek 3480e2ca85S #include <sys/brand.h> 35e71ca95cSGerald Jelinek 36e71ca95cSGerald Jelinek #define S10_BRANDNAME "solaris10" 37e71ca95cSGerald Jelinek 38e71ca95cSGerald Jelinek #define S10_VERSION_1 1 39e71ca95cSGerald Jelinek #define S10_VERSION S10_VERSION_1 40e71ca95cSGerald Jelinek 41e71ca95cSGerald Jelinek #define S10_LIB_NAME "s10_brand.so.1" 42e71ca95cSGerald Jelinek #define S10_LINKER_NAME "ld.so.1" 43e71ca95cSGerald Jelinek 4480e2ca85S #define S10_LIB32 BRAND_NATIVE_DIR "usr/lib/" S10_LIB_NAME 45e71ca95cSGerald Jelinek #define S10_LINKER32 "/lib/" S10_LINKER_NAME 46e71ca95cSGerald Jelinek 4780e2ca85S #define S10_LIB64 BRAND_NATIVE_DIR "usr/lib/64/" S10_LIB_NAME 48e71ca95cSGerald Jelinek #define S10_LINKER64 "/lib/64/" S10_LINKER_NAME 49e71ca95cSGerald Jelinek 50e71ca95cSGerald Jelinek #if defined(_LP64) 51e71ca95cSGerald Jelinek #define S10_LIB S10_LIB64 52e71ca95cSGerald Jelinek #define S10_LINKER S10_LINKER64 53e71ca95cSGerald Jelinek #else /* !_LP64 */ 54e71ca95cSGerald Jelinek #define S10_LIB S10_LIB32 55e71ca95cSGerald Jelinek #define S10_LINKER S10_LINKER32 56e71ca95cSGerald Jelinek #endif /* !_LP64 */ 57e71ca95cSGerald Jelinek 58eb9dbf0cSRoger A. Faulkner /* 598f798d3aSRoger A. Faulkner * Solaris 10 value of _SIGRTMIN, _SIGRTMAX, MAXSIG, NSIG 60eb9dbf0cSRoger A. Faulkner */ 618f798d3aSRoger A. Faulkner #define S10_SIGRTMIN 41 628f798d3aSRoger A. Faulkner #define S10_SIGRTMAX 48 638f798d3aSRoger A. Faulkner #define S10_MAXSIG 48 64eb9dbf0cSRoger A. Faulkner #define S10_NSIG 49 65eb9dbf0cSRoger A. Faulkner 66e71ca95cSGerald Jelinek /* 67e71ca95cSGerald Jelinek * Brand system call subcodes. 0-127 are reserved for generic subcodes. 68e71ca95cSGerald Jelinek */ 69e71ca95cSGerald Jelinek #define B_S10_PIDINFO 128 70e71ca95cSGerald Jelinek #define B_S10_NATIVE 130 71e71ca95cSGerald Jelinek #define B_S10_FSREGCORRECTION 131 728b4cf837Sjv #define B_S10_ISFDXATTRDIR 132 73e71ca95cSGerald Jelinek 74ad601a05Sjv /* 75ad601a05Sjv * Versioning flags 76ad601a05Sjv * 77ad601a05Sjv * The first enum value must be zero. Place new enum values at the end of the 78ad601a05Sjv * list but before S10_NUM_EMUL_FEATURES, which must always come last. 79ad601a05Sjv * Enum values should start with "S10_FEATURE_" and be named after the 80ad601a05Sjv * fixes/backports that they represent. For example, an enum value representing 81ad601a05Sjv * a backport that changes a MNTFS ioctl could be named 82ad601a05Sjv * "S10_FEATURE_ALTERED_MNTFS_IOCTL". 83ad601a05Sjv */ 84ad601a05Sjv enum s10_emulated_features { 85c5aee804SRobert Harris S10_FEATURE_ALTERED_MNTFS_IOCTL, 86fcdeb91bSjv S10_FEATURE_U9_ZFS_IOCTL, /* S10u9 ZFS ioctl changes */ 87ad601a05Sjv S10_NUM_EMUL_FEATURES /* This must be the last entry! */ 88ad601a05Sjv }; 89ad601a05Sjv 90ad601a05Sjv /* 91ad601a05Sjv * This string constant represents the path of the Solaris 10 directory 92ad601a05Sjv * containing emulation feature files. 93ad601a05Sjv */ 94ad601a05Sjv #define S10_REQ_EMULATION_DIR "/usr/lib/brand/solaris10" 95ad601a05Sjv 96e71ca95cSGerald Jelinek /* 97e71ca95cSGerald Jelinek * s10_brand_syscall_callback_common() needs to save 4 local registers so it 98e71ca95cSGerald Jelinek * can free them up for its own use. 99e71ca95cSGerald Jelinek */ 100e71ca95cSGerald Jelinek #define S10_CPU_REG_SAVE_SIZE (sizeof (ulong_t) * 4) 101e71ca95cSGerald Jelinek 102e71ca95cSGerald Jelinek /* 1038fd04b83SRoger A. Faulkner * S10 system call codes for S10 traps that have been removed or reassigned, 1048fd04b83SRoger A. Faulkner * or that are to be removed or reassigned after the dtrace syscall provider 1058fd04b83SRoger A. Faulkner * has been reengineered to deal properly with syscall::open (for example). 106e71ca95cSGerald Jelinek */ 1078fd04b83SRoger A. Faulkner #define S10_SYS_forkall 2 1088fd04b83SRoger A. Faulkner #define S10_SYS_open 5 1098fd04b83SRoger A. Faulkner #define S10_SYS_wait 7 1108fd04b83SRoger A. Faulkner #define S10_SYS_creat 8 111794f0adbSRoger A. Faulkner #define S10_SYS_link 9 1128fd04b83SRoger A. Faulkner #define S10_SYS_unlink 10 1138fd04b83SRoger A. Faulkner #define S10_SYS_exec 11 114794f0adbSRoger A. Faulkner #define S10_SYS_mknod 14 115794f0adbSRoger A. Faulkner #define S10_SYS_chmod 15 1168fd04b83SRoger A. Faulkner #define S10_SYS_chown 16 1178fd04b83SRoger A. Faulkner #define S10_SYS_stat 18 1188fd04b83SRoger A. Faulkner #define S10_SYS_umount 22 1198fd04b83SRoger A. Faulkner #define S10_SYS_fstat 28 1208fd04b83SRoger A. Faulkner #define S10_SYS_utime 30 1218fd04b83SRoger A. Faulkner #define S10_SYS_access 33 1228fd04b83SRoger A. Faulkner #define S10_SYS_dup 41 123*b49b27dcSTheo Schlossnagle #define S10_SYS_pipe 42 124e71ca95cSGerald Jelinek #define S10_SYS_issetugid 75 1258fd04b83SRoger A. Faulkner #define S10_SYS_fsat 76 1268fd04b83SRoger A. Faulkner #define S10_SYS_rmdir 79 127794f0adbSRoger A. Faulkner #define S10_SYS_mkdir 80 1288fd04b83SRoger A. Faulkner #define S10_SYS_poll 87 1298fd04b83SRoger A. Faulkner #define S10_SYS_lstat 88 130794f0adbSRoger A. Faulkner #define S10_SYS_symlink 89 131794f0adbSRoger A. Faulkner #define S10_SYS_readlink 90 132794f0adbSRoger A. Faulkner #define S10_SYS_fchmod 93 1338fd04b83SRoger A. Faulkner #define S10_SYS_fchown 94 1348fd04b83SRoger A. Faulkner #define S10_SYS_xstat 123 1358fd04b83SRoger A. Faulkner #define S10_SYS_lxstat 124 1368fd04b83SRoger A. Faulkner #define S10_SYS_fxstat 125 1378fd04b83SRoger A. Faulkner #define S10_SYS_xmknod 126 1388fd04b83SRoger A. Faulkner #define S10_SYS_lchown 130 1398fd04b83SRoger A. Faulkner #define S10_SYS_rename 134 1408fd04b83SRoger A. Faulkner #define S10_SYS_fork1 143 1418fd04b83SRoger A. Faulkner #define S10_SYS_lwp_sema_wait 147 1428fd04b83SRoger A. Faulkner #define S10_SYS_utimes 154 1438fd04b83SRoger A. Faulkner #define S10_SYS_lwp_mutex_lock 169 1448fd04b83SRoger A. Faulkner #define S10_SYS_stat64 215 1458fd04b83SRoger A. Faulkner #define S10_SYS_lstat64 216 1468fd04b83SRoger A. Faulkner #define S10_SYS_fstat64 217 1478fd04b83SRoger A. Faulkner #define S10_SYS_creat64 224 1488fd04b83SRoger A. Faulkner #define S10_SYS_open64 225 149*b49b27dcSTheo Schlossnagle #define S10_SYS_so_socket 230 150*b49b27dcSTheo Schlossnagle #define S10_SYS_accept 234 151e71ca95cSGerald Jelinek 152e71ca95cSGerald Jelinek /* 153ad601a05Sjv * solaris10-brand-specific attributes 154ad601a05Sjv * These must start at ZONE_ATTR_BRAND_ATTRS. 155e71ca95cSGerald Jelinek */ 156ad601a05Sjv #define S10_EMUL_BITMAP ZONE_ATTR_BRAND_ATTRS 157e71ca95cSGerald Jelinek 158ad601a05Sjv /* 159ad601a05Sjv * s10_emul_bitmap represents an emulation feature bitmap. Each constant 160ad601a05Sjv * in s10_emulated_features defines a bit index in this bitmap. If a bit is 161ad601a05Sjv * set, then the feature associated with the s10_emulated_features constant 162ad601a05Sjv * whose value is the bit's index is present in the associated zone's hosted 163ad601a05Sjv * Solaris 10 environment. 164ad601a05Sjv * 165ad601a05Sjv * NOTE: There must be at least one byte in the bitmap. 166ad601a05Sjv * 167ad601a05Sjv * We don't use the bitmap macros provided by usr/src/uts/common/sys/bitmap.h 168ad601a05Sjv * because they operate on ulong_t arrays. The size of a ulong_t depends on 169ad601a05Sjv * the data model in which the code that declares the ulong_t is compiled: 170ad601a05Sjv * four bytes on 32-bit architectures and eight bytes 64-bit architectures. 171ad601a05Sjv * If the kernel is 64-bit and a 32-bit process executes in a solaris10- 172ad601a05Sjv * branded zone, then if the process' emulation library, which is 32-bit, 173ad601a05Sjv * queries the kernel for the zone's emulation bitmap, then the kernel will 174ad601a05Sjv * refuse because the library will request a bitmap that's half as big 175ad601a05Sjv * as the bitmap the kernel provides. The 32-bit emulation library would need 176ad601a05Sjv * its own macros to define and operate on bitmaps with 64-bit array elements. 177ad601a05Sjv * Thus using the sys/bitmap.h macros is probably more troublesome than 178ad601a05Sjv * defining and using our own constants and macros for bitmap manipulations. 179ad601a05Sjv */ 180ad601a05Sjv typedef uint8_t s10_emul_bitmap_t[(S10_NUM_EMUL_FEATURES >> 3) + 1]; 181ad601a05Sjv 182e71ca95cSGerald Jelinek #if defined(_KERNEL) 183e71ca95cSGerald Jelinek 184e71ca95cSGerald Jelinek /* brand specific data */ 185e71ca95cSGerald Jelinek typedef struct s10_zone_data { 186ad601a05Sjv /* 187ad601a05Sjv * emul_bitmap specifies the features that are present in the 188ad601a05Sjv * associated zone. 189ad601a05Sjv */ 190ad601a05Sjv s10_emul_bitmap_t emul_bitmap; 191e71ca95cSGerald Jelinek } s10_zone_data_t; 192e71ca95cSGerald Jelinek 193e71ca95cSGerald Jelinek void s10_brand_syscall_callback(void); 194e71ca95cSGerald Jelinek void s10_brand_syscall32_callback(void); 195e71ca95cSGerald Jelinek 196e71ca95cSGerald Jelinek #if !defined(sparc) 197e71ca95cSGerald Jelinek void s10_brand_sysenter_callback(void); 198e71ca95cSGerald Jelinek #endif /* !sparc */ 199e71ca95cSGerald Jelinek 200e71ca95cSGerald Jelinek #if defined(__amd64) 201e71ca95cSGerald Jelinek void s10_brand_int91_callback(void); 202e71ca95cSGerald Jelinek #endif /* __amd64 */ 203e71ca95cSGerald Jelinek #endif /* _KERNEL */ 204e71ca95cSGerald Jelinek 205e71ca95cSGerald Jelinek #ifdef __cplusplus 206e71ca95cSGerald Jelinek } 207e71ca95cSGerald Jelinek #endif 208e71ca95cSGerald Jelinek 209e71ca95cSGerald Jelinek #endif /* _S10_BRAND_H */ 210