sn1_brand.h revision 628e3cbed6489fa1db545d8524a06cd6535af456
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn/*
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * CDDL HEADER START
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn *
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * The contents of this file are subject to the terms of the
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * Common Development and Distribution License (the "License").
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * You may not use this file except in compliance with the License.
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn *
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * or http://www.opensolaris.org/os/licensing.
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * See the License for the specific language governing permissions
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * and limitations under the License.
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn *
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * When distributing Covered Code, include this CDDL HEADER in each
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * If applicable, add the following below this CDDL HEADER, with the
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * fields enclosed by brackets "[]" replaced with your own identifying
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * information: Portions Copyright [yyyy] [name of copyright owner]
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn *
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * CDDL HEADER END
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn */
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn/*
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn * Use is subject to license terms.
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn */
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn#ifndef _SN1_BRAND_H
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn#define _SN1_BRAND_H
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn#ifdef __cplusplus
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnnextern "C" {
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn#endif
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#include <sys/types.h>
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_BRANDNAME "sn1"
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_VERSION_1 1
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_VERSION SN1_VERSION_1
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_NATIVE_DIR "/.SUNWnative/"
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_LIB_NAME "sn1_brand.so.1"
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_LINKER_NAME "ld.so.1"
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_LIB32 SN1_NATIVE_DIR "usr/lib/" SN1_LIB_NAME
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_LINKER32 "/lib/" SN1_LINKER_NAME
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_LIB64 SN1_NATIVE_DIR "usr/lib/64/" SN1_LIB_NAME
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_LINKER64 "/lib/64/" SN1_LINKER_NAME
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#if defined(_LP64)
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_LIB SN1_LIB64
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_LINKER SN1_LINKER64
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#else /* !_LP64 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_LIB SN1_LIB32
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define SN1_LINKER SN1_LINKER32
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#endif /* !_LP64 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz/*
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * Aux vector containing lddata pointer of brand library linkmap.
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * Used by lx_librtld_db.
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#define AT_SUN_BRAND_SN1_LDDATA AT_SUN_BRAND_AUX1
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz/*
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * Information needed by the sn1 library to launch an executable.
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicztypedef struct sn1_elf_data {
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz ulong_t sed_phdr;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz ulong_t sed_phent;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz ulong_t sed_phnum;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz ulong_t sed_entry;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz ulong_t sed_base;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz ulong_t sed_ldentry;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz ulong_t sed_lddata;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz} sn1_elf_data_t;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz/*
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * Structure used to register a branded processes
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicztypedef struct sn1_brand_reg {
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz uint_t sbr_version; /* version number */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz caddr_t sbr_handler; /* base address of handler */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz} sn1_brand_reg_t;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#if defined(_KERNEL)
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#if defined(_SYSCALL32)
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicztypedef struct sn1_elf_data32 {
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz uint32_t sed_phdr;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz uint32_t sed_phent;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz uint32_t sed_phnum;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz uint32_t sed_entry;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz uint32_t sed_base;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz uint32_t sed_ldentry;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz uint32_t sed_lddata;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz} sn1_elf_data32_t;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicztypedef struct sn1_brand_reg32 {
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz uint32_t sbr_version; /* version number */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz caddr32_t sbr_handler; /* base address of handler */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz} sn1_brand_reg32_t;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#endif /* _SYSCALL32 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz/*
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz * Information associated with all sn1 branded processes
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicztypedef struct sn1_proc_data {
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz caddr_t spd_handler; /* address of user-space handler */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz sn1_elf_data_t spd_elf_data; /* ELF data for sn1 application */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz} sn1_proc_data_t;
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnnvoid sn1_brand_syscall_callback(void);
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnnvoid sn1_brand_syscall32_callback(void);
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#if !defined(sparc)
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowiczvoid sn1_brand_sysenter_callback(void);
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#endif /* !sparc */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#if defined(__amd64)
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowiczvoid sn1_brand_int91_callback(void);
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#endif /* __amd64 */
628e3cbed6489fa1db545d8524a06cd6535af456Edward Pilatowicz#endif /* _KERNEL */
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn#ifdef __cplusplus
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn}
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn#endif
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn
9acbbeaf2a1ffe5c14b244867d427714fab43c5cnn#endif /* _SN1_BRAND_H */