e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek/*
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * CDDL HEADER START
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek *
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * The contents of this file are subject to the terms of the
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * Common Development and Distribution License (the "License").
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * You may not use this file except in compliance with the License.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek *
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * or http://www.opensolaris.org/os/licensing.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * See the License for the specific language governing permissions
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * and limitations under the License.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek *
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * When distributing Covered Code, include this CDDL HEADER in each
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * If applicable, add the following below this CDDL HEADER, with the
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * fields enclosed by brackets "[]" replaced with your own identifying
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * information: Portions Copyright [yyyy] [name of copyright owner]
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek *
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * CDDL HEADER END
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek */
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek/*
b49b27dcb66b2c7f4a23f7bc158e2dde5cd79030Theo Schlossnagle * Copyright (c) 2013, OmniTI Computer Consulting, Inc. All rights reserved.
80e2ca8596e3435bc3b76f3c597833ea0a87f85e * Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek */
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#ifndef _S10_BRAND_H
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define _S10_BRAND_H
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#ifdef __cplusplus
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekextern "C" {
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#endif
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
80e2ca8596e3435bc3b76f3c597833ea0a87f85e#include <sys/brand.h>
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define S10_BRANDNAME "solaris10"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define S10_VERSION_1 1
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define S10_VERSION S10_VERSION_1
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define S10_LIB_NAME "s10_brand.so.1"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define S10_LINKER_NAME "ld.so.1"
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
80e2ca8596e3435bc3b76f3c597833ea0a87f85e#define S10_LIB32 BRAND_NATIVE_DIR "usr/lib/" S10_LIB_NAME
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define S10_LINKER32 "/lib/" S10_LINKER_NAME
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
80e2ca8596e3435bc3b76f3c597833ea0a87f85e#define S10_LIB64 BRAND_NATIVE_DIR "usr/lib/64/" S10_LIB_NAME
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define S10_LINKER64 "/lib/64/" S10_LINKER_NAME
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#if defined(_LP64)
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define S10_LIB S10_LIB64
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define S10_LINKER S10_LINKER64
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#else /* !_LP64 */
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define S10_LIB S10_LIB32
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define S10_LINKER S10_LINKER32
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#endif /* !_LP64 */
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
eb9dbf0cbc8141f9da4ed18e6b5515d9eaea0e00Roger A. Faulkner/*
8f798d3afbe38d59cc0a708261dbb729f1b6b209Roger A. Faulkner * Solaris 10 value of _SIGRTMIN, _SIGRTMAX, MAXSIG, NSIG
eb9dbf0cbc8141f9da4ed18e6b5515d9eaea0e00Roger A. Faulkner */
8f798d3afbe38d59cc0a708261dbb729f1b6b209Roger A. Faulkner#define S10_SIGRTMIN 41
8f798d3afbe38d59cc0a708261dbb729f1b6b209Roger A. Faulkner#define S10_SIGRTMAX 48
8f798d3afbe38d59cc0a708261dbb729f1b6b209Roger A. Faulkner#define S10_MAXSIG 48
eb9dbf0cbc8141f9da4ed18e6b5515d9eaea0e00Roger A. Faulkner#define S10_NSIG 49
eb9dbf0cbc8141f9da4ed18e6b5515d9eaea0e00Roger A. Faulkner
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek/*
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * Brand system call subcodes. 0-127 are reserved for generic subcodes.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek */
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define B_S10_PIDINFO 128
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define B_S10_NATIVE 130
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define B_S10_FSREGCORRECTION 131
8b4cf83723ce3e17ebe029b21f549390e849b03fjv#define B_S10_ISFDXATTRDIR 132
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
ad601a0502a167436cd68b185fff0eb78c34777bjv/*
ad601a0502a167436cd68b185fff0eb78c34777bjv * Versioning flags
ad601a0502a167436cd68b185fff0eb78c34777bjv *
ad601a0502a167436cd68b185fff0eb78c34777bjv * The first enum value must be zero. Place new enum values at the end of the
ad601a0502a167436cd68b185fff0eb78c34777bjv * list but before S10_NUM_EMUL_FEATURES, which must always come last.
ad601a0502a167436cd68b185fff0eb78c34777bjv * Enum values should start with "S10_FEATURE_" and be named after the
ad601a0502a167436cd68b185fff0eb78c34777bjv * fixes/backports that they represent. For example, an enum value representing
ad601a0502a167436cd68b185fff0eb78c34777bjv * a backport that changes a MNTFS ioctl could be named
ad601a0502a167436cd68b185fff0eb78c34777bjv * "S10_FEATURE_ALTERED_MNTFS_IOCTL".
ad601a0502a167436cd68b185fff0eb78c34777bjv */
ad601a0502a167436cd68b185fff0eb78c34777bjvenum s10_emulated_features {
c5aee8047f101b999b8f96ced79e802071372a52Robert Harris S10_FEATURE_ALTERED_MNTFS_IOCTL,
fcdeb91bbce674703e2d1423c81e7155f4f13089jv S10_FEATURE_U9_ZFS_IOCTL, /* S10u9 ZFS ioctl changes */
ad601a0502a167436cd68b185fff0eb78c34777bjv S10_NUM_EMUL_FEATURES /* This must be the last entry! */
ad601a0502a167436cd68b185fff0eb78c34777bjv};
ad601a0502a167436cd68b185fff0eb78c34777bjv
ad601a0502a167436cd68b185fff0eb78c34777bjv/*
ad601a0502a167436cd68b185fff0eb78c34777bjv * This string constant represents the path of the Solaris 10 directory
ad601a0502a167436cd68b185fff0eb78c34777bjv * containing emulation feature files.
ad601a0502a167436cd68b185fff0eb78c34777bjv */
ad601a0502a167436cd68b185fff0eb78c34777bjv#define S10_REQ_EMULATION_DIR "/usr/lib/brand/solaris10"
ad601a0502a167436cd68b185fff0eb78c34777bjv
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek/*
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * s10_brand_syscall_callback_common() needs to save 4 local registers so it
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek * can free them up for its own use.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek */
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define S10_CPU_REG_SAVE_SIZE (sizeof (ulong_t) * 4)
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek/*
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * S10 system call codes for S10 traps that have been removed or reassigned,
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * or that are to be removed or reassigned after the dtrace syscall provider
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner * has been reengineered to deal properly with syscall::open (for example).
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek */
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_forkall 2
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_open 5
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_wait 7
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_creat 8
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner#define S10_SYS_link 9
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_unlink 10
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_exec 11
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner#define S10_SYS_mknod 14
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner#define S10_SYS_chmod 15
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_chown 16
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_stat 18
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_umount 22
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_fstat 28
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_utime 30
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_access 33
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_dup 41
b49b27dcb66b2c7f4a23f7bc158e2dde5cd79030Theo Schlossnagle#define S10_SYS_pipe 42
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#define S10_SYS_issetugid 75
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_fsat 76
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_rmdir 79
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner#define S10_SYS_mkdir 80
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_poll 87
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_lstat 88
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner#define S10_SYS_symlink 89
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner#define S10_SYS_readlink 90
794f0adb050e571bbfde4d2a19b9f88b852079ddRoger A. Faulkner#define S10_SYS_fchmod 93
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_fchown 94
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_xstat 123
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_lxstat 124
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_fxstat 125
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_xmknod 126
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_lchown 130
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_rename 134
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_fork1 143
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_lwp_sema_wait 147
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_utimes 154
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_lwp_mutex_lock 169
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_stat64 215
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_lstat64 216
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_fstat64 217
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_creat64 224
8fd04b8338ed5093ec2d1e668fa620b7de44c177Roger A. Faulkner#define S10_SYS_open64 225
b49b27dcb66b2c7f4a23f7bc158e2dde5cd79030Theo Schlossnagle#define S10_SYS_so_socket 230
b49b27dcb66b2c7f4a23f7bc158e2dde5cd79030Theo Schlossnagle#define S10_SYS_accept 234
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek/*
ad601a0502a167436cd68b185fff0eb78c34777bjv * solaris10-brand-specific attributes
ad601a0502a167436cd68b185fff0eb78c34777bjv * These must start at ZONE_ATTR_BRAND_ATTRS.
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek */
ad601a0502a167436cd68b185fff0eb78c34777bjv#define S10_EMUL_BITMAP ZONE_ATTR_BRAND_ATTRS
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
ad601a0502a167436cd68b185fff0eb78c34777bjv/*
ad601a0502a167436cd68b185fff0eb78c34777bjv * s10_emul_bitmap represents an emulation feature bitmap. Each constant
ad601a0502a167436cd68b185fff0eb78c34777bjv * in s10_emulated_features defines a bit index in this bitmap. If a bit is
ad601a0502a167436cd68b185fff0eb78c34777bjv * set, then the feature associated with the s10_emulated_features constant
ad601a0502a167436cd68b185fff0eb78c34777bjv * whose value is the bit's index is present in the associated zone's hosted
ad601a0502a167436cd68b185fff0eb78c34777bjv * Solaris 10 environment.
ad601a0502a167436cd68b185fff0eb78c34777bjv *
ad601a0502a167436cd68b185fff0eb78c34777bjv * NOTE: There must be at least one byte in the bitmap.
ad601a0502a167436cd68b185fff0eb78c34777bjv *
ad601a0502a167436cd68b185fff0eb78c34777bjv * We don't use the bitmap macros provided by usr/src/uts/common/sys/bitmap.h
ad601a0502a167436cd68b185fff0eb78c34777bjv * because they operate on ulong_t arrays. The size of a ulong_t depends on
ad601a0502a167436cd68b185fff0eb78c34777bjv * the data model in which the code that declares the ulong_t is compiled:
ad601a0502a167436cd68b185fff0eb78c34777bjv * four bytes on 32-bit architectures and eight bytes 64-bit architectures.
ad601a0502a167436cd68b185fff0eb78c34777bjv * If the kernel is 64-bit and a 32-bit process executes in a solaris10-
ad601a0502a167436cd68b185fff0eb78c34777bjv * branded zone, then if the process' emulation library, which is 32-bit,
ad601a0502a167436cd68b185fff0eb78c34777bjv * queries the kernel for the zone's emulation bitmap, then the kernel will
ad601a0502a167436cd68b185fff0eb78c34777bjv * refuse because the library will request a bitmap that's half as big
ad601a0502a167436cd68b185fff0eb78c34777bjv * as the bitmap the kernel provides. The 32-bit emulation library would need
ad601a0502a167436cd68b185fff0eb78c34777bjv * its own macros to define and operate on bitmaps with 64-bit array elements.
ad601a0502a167436cd68b185fff0eb78c34777bjv * Thus using the sys/bitmap.h macros is probably more troublesome than
ad601a0502a167436cd68b185fff0eb78c34777bjv * defining and using our own constants and macros for bitmap manipulations.
ad601a0502a167436cd68b185fff0eb78c34777bjv */
ad601a0502a167436cd68b185fff0eb78c34777bjvtypedef uint8_t s10_emul_bitmap_t[(S10_NUM_EMUL_FEATURES >> 3) + 1];
ad601a0502a167436cd68b185fff0eb78c34777bjv
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#if defined(_KERNEL)
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek/* brand specific data */
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinektypedef struct s10_zone_data {
ad601a0502a167436cd68b185fff0eb78c34777bjv /*
ad601a0502a167436cd68b185fff0eb78c34777bjv * emul_bitmap specifies the features that are present in the
ad601a0502a167436cd68b185fff0eb78c34777bjv * associated zone.
ad601a0502a167436cd68b185fff0eb78c34777bjv */
ad601a0502a167436cd68b185fff0eb78c34777bjv s10_emul_bitmap_t emul_bitmap;
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek} s10_zone_data_t;
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekvoid s10_brand_syscall_callback(void);
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekvoid s10_brand_syscall32_callback(void);
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#if !defined(sparc)
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekvoid s10_brand_sysenter_callback(void);
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#endif /* !sparc */
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#if defined(__amd64)
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinekvoid s10_brand_int91_callback(void);
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#endif /* __amd64 */
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#endif /* _KERNEL */
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#ifdef __cplusplus
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek}
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#endif
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek
e71ca95ca6de23d33b54cb55cefdef30bc7c969bGerald Jelinek#endif /* _S10_BRAND_H */