1*30588217SMike Christensen /* 2*30588217SMike Christensen * CDDL HEADER START 3*30588217SMike Christensen * 4*30588217SMike Christensen * The contents of this file are subject to the terms of the 5*30588217SMike Christensen * Common Development and Distribution License (the "License"). 6*30588217SMike Christensen * You may not use this file except in compliance with the License. 7*30588217SMike Christensen * 8*30588217SMike Christensen * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9*30588217SMike Christensen * or http://www.opensolaris.org/os/licensing. 10*30588217SMike Christensen * See the License for the specific language governing permissions 11*30588217SMike Christensen * and limitations under the License. 12*30588217SMike Christensen * 13*30588217SMike Christensen * When distributing Covered Code, include this CDDL HEADER in each 14*30588217SMike Christensen * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15*30588217SMike Christensen * If applicable, add the following below this CDDL HEADER, with the 16*30588217SMike Christensen * fields enclosed by brackets "[]" replaced with your own identifying 17*30588217SMike Christensen * information: Portions Copyright [yyyy] [name of copyright owner] 18*30588217SMike Christensen * 19*30588217SMike Christensen * CDDL HEADER END 20*30588217SMike Christensen */ 21*30588217SMike Christensen 22*30588217SMike Christensen /* 23*30588217SMike Christensen * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 24*30588217SMike Christensen * Use is subject to license terms. 25*30588217SMike Christensen */ 26*30588217SMike Christensen 27*30588217SMike Christensen #ifndef _SYS_VLDS_H_ 28*30588217SMike Christensen #define _SYS_VLDS_H_ 29*30588217SMike Christensen 30*30588217SMike Christensen #include <sys/types.h> 31*30588217SMike Christensen 32*30588217SMike Christensen #ifdef __cplusplus 33*30588217SMike Christensen extern "C" { 34*30588217SMike Christensen #endif 35*30588217SMike Christensen 36*30588217SMike Christensen /* 37*30588217SMike Christensen * LDOMS Domain Services Device Driver 38*30588217SMike Christensen */ 39*30588217SMike Christensen 40*30588217SMike Christensen /* 41*30588217SMike Christensen * ioctl info for vlds device 42*30588217SMike Christensen */ 43*30588217SMike Christensen 44*30588217SMike Christensen #define VLDSIOC ('d' << 16 | 's' << 8) 45*30588217SMike Christensen 46*30588217SMike Christensen #define VLDS_SVC_REG (VLDSIOC | 1) /* Register DS Service */ 47*30588217SMike Christensen #define VLDS_UNREG_HDL (VLDSIOC | 2) /* Unregister DS Service by Handle */ 48*30588217SMike Christensen #define VLDS_HDL_LOOKUP (VLDSIOC | 3) /* Lookup DS Handle(s) by Service id */ 49*30588217SMike Christensen #define VLDS_DMN_LOOKUP (VLDSIOC | 4) /* Lookup DS Domain id by Handle */ 50*30588217SMike Christensen #define VLDS_SEND_MSG (VLDSIOC | 5) /* Send DS Message by Handle */ 51*30588217SMike Christensen #define VLDS_RECV_MSG (VLDSIOC | 6) /* Receive DS Message by Handle */ 52*30588217SMike Christensen #define VLDS_HDL_ISREADY (VLDSIOC | 7) /* Handle ready for data transfers */ 53*30588217SMike Christensen #define VLDS_DOM_NAM2HDL (VLDSIOC | 8) /* Domain Name to Handle translation */ 54*30588217SMike Christensen #define VLDS_DOM_HDL2NAM (VLDSIOC | 9) /* Handle ready for data transfers */ 55*30588217SMike Christensen 56*30588217SMike Christensen /* vlds_reg_flags */ 57*30588217SMike Christensen #define VLDS_REG_CLIENT 0x01 /* Register as client */ 58*30588217SMike Christensen #define VLDS_REGCB_VALID 0x02 /* User supplied Register callback */ 59*30588217SMike Christensen #define VLDS_UNREGCB_VALID 0x04 /* User supplied Unregister callback */ 60*30588217SMike Christensen #define VLDS_DATACB_VALID 0x08 /* User supplied Data callback */ 61*30588217SMike Christensen #define VLDS_ANYCB_VALID (VLDS_REGCB_VALID | VLDS_UNREGCB_VALID | \ 62*30588217SMike Christensen VLDS_DATACB_VALID) 63*30588217SMike Christensen 64*30588217SMike Christensen #define VLDS_MAX_VERS 20 /* Max no. of vlds_ver_t entries */ 65*30588217SMike Christensen 66*30588217SMike Christensen /* 67*30588217SMike Christensen * The following are declared so that they are size-invariant. 68*30588217SMike Christensen */ 69*30588217SMike Christensen 70*30588217SMike Christensen /* String arguments to ioctl */ 71*30588217SMike Christensen typedef struct vlds_string_arg { 72*30588217SMike Christensen uint64_t vlds_strp; 73*30588217SMike Christensen uint64_t vlds_strlen; 74*30588217SMike Christensen } vlds_string_t; 75*30588217SMike Christensen 76*30588217SMike Christensen /* Version array (used by VLDS_SVC_REG) */ 77*30588217SMike Christensen typedef struct vlds_ver { 78*30588217SMike Christensen uint16_t vlds_major; 79*30588217SMike Christensen uint16_t vlds_minor; 80*30588217SMike Christensen } vlds_ver_t; 81*30588217SMike Christensen 82*30588217SMike Christensen /* Capability structure (used by VLDS_SVC_REG) */ 83*30588217SMike Christensen typedef struct vlds_cap { 84*30588217SMike Christensen vlds_string_t vlds_service; 85*30588217SMike Christensen uint64_t vlds_nver; 86*30588217SMike Christensen uint64_t vlds_versp; 87*30588217SMike Christensen } vlds_cap_t; 88*30588217SMike Christensen 89*30588217SMike Christensen /* 90*30588217SMike Christensen * VLDS_SVC_REG 91*30588217SMike Christensen */ 92*30588217SMike Christensen typedef struct vlds_svc_reg_arg { 93*30588217SMike Christensen uint64_t vlds_hdlp; /* DS Service Handle ptr. (returned) */ 94*30588217SMike Christensen uint64_t vlds_capp; /* DS Capability Structure ptr. */ 95*30588217SMike Christensen uint64_t vlds_reg_flags; /* DS reg flags */ 96*30588217SMike Christensen } vlds_svc_reg_arg_t; 97*30588217SMike Christensen 98*30588217SMike Christensen /* 99*30588217SMike Christensen * VLDS_UNREG_HDL 100*30588217SMike Christensen */ 101*30588217SMike Christensen typedef struct vlds_unreg_hdl_arg { 102*30588217SMike Christensen uint64_t vlds_hdl; /* DS Service Handle */ 103*30588217SMike Christensen } vlds_unreg_hdl_arg_t; 104*30588217SMike Christensen 105*30588217SMike Christensen /* 106*30588217SMike Christensen * VLDS_DMN_LOOKUP 107*30588217SMike Christensen */ 108*30588217SMike Christensen typedef struct vlds_dmn_lookup_arg { 109*30588217SMike Christensen uint64_t vlds_hdl; /* DS Service Handle */ 110*30588217SMike Christensen uint64_t vlds_dhdlp; /* DS Domain hdl ptr. (returned) */ 111*30588217SMike Christensen } vlds_dmn_lookup_arg_t; 112*30588217SMike Christensen 113*30588217SMike Christensen /* 114*30588217SMike Christensen * VLDS_HDL_LOOKUP 115*30588217SMike Christensen */ 116*30588217SMike Christensen typedef struct vlds_hdl_lookup_arg { 117*30588217SMike Christensen vlds_string_t vlds_service; /* DS Service Name */ 118*30588217SMike Christensen uint64_t vlds_isclient; /* DS Client flag */ 119*30588217SMike Christensen uint64_t vlds_hdlsp; /* DS Handle array ptr */ 120*30588217SMike Christensen uint64_t vlds_maxhdls; /* DS Max no. of hdls to return */ 121*30588217SMike Christensen uint64_t vlds_nhdlsp; /* DS No. of hdls returned */ 122*30588217SMike Christensen } vlds_hdl_lookup_arg_t; 123*30588217SMike Christensen 124*30588217SMike Christensen /* 125*30588217SMike Christensen * VLDS_SEND_MSG 126*30588217SMike Christensen */ 127*30588217SMike Christensen typedef struct vlds_send_msg_arg { 128*30588217SMike Christensen uint64_t vlds_hdl; /* DS Service Handle */ 129*30588217SMike Christensen uint64_t vlds_bufp; /* buffer */ 130*30588217SMike Christensen uint64_t vlds_buflen; /* message length/buffer size */ 131*30588217SMike Christensen } vlds_send_msg_arg_t; 132*30588217SMike Christensen 133*30588217SMike Christensen /* 134*30588217SMike Christensen * VLDS_RECV_MSG 135*30588217SMike Christensen */ 136*30588217SMike Christensen typedef struct vlds_recv_msg_arg { 137*30588217SMike Christensen uint64_t vlds_hdl; /* DS Service Handle */ 138*30588217SMike Christensen uint64_t vlds_bufp; /* buffer */ 139*30588217SMike Christensen uint64_t vlds_buflen; /* message length/buffer size */ 140*30588217SMike Christensen uint64_t vlds_msglenp; /* ptr to returned message length */ 141*30588217SMike Christensen } vlds_recv_msg_arg_t; 142*30588217SMike Christensen 143*30588217SMike Christensen /* 144*30588217SMike Christensen * VLDS_HDL_ISREADY 145*30588217SMike Christensen */ 146*30588217SMike Christensen typedef struct vlds_hdl_isready_arg { 147*30588217SMike Christensen uint64_t vlds_hdl; /* DS Service Handle */ 148*30588217SMike Christensen uint64_t vlds_isreadyp; /* Ptr to isready flag */ 149*30588217SMike Christensen } vlds_hdl_isready_arg_t; 150*30588217SMike Christensen 151*30588217SMike Christensen /* 152*30588217SMike Christensen * VLDS_DOM_NAM2HDL 153*30588217SMike Christensen */ 154*30588217SMike Christensen typedef struct vlds_dom_nam2hdl_arg { 155*30588217SMike Christensen vlds_string_t vlds_domain_name; /* Domain Name string */ 156*30588217SMike Christensen uint64_t vlds_dhdlp; /* ptr to returned Domain Handle */ 157*30588217SMike Christensen } vlds_dom_nam2hdl_arg_t; 158*30588217SMike Christensen 159*30588217SMike Christensen /* 160*30588217SMike Christensen * VLDS_DOM_HDL2NAM 161*30588217SMike Christensen */ 162*30588217SMike Christensen typedef struct vlds_dom_hdl2nam_arg { 163*30588217SMike Christensen uint64_t vlds_dhdl; /* Domain Handle */ 164*30588217SMike Christensen vlds_string_t vlds_domain_name; /* returned Domain Name string */ 165*30588217SMike Christensen } vlds_dom_hdl2nam_arg_t; 166*30588217SMike Christensen 167*30588217SMike Christensen /* 168*30588217SMike Christensen * Machine Description Constants for vlds driver. 169*30588217SMike Christensen */ 170*30588217SMike Christensen #define VLDS_MD_ROOT_NODE_NAME "domain-services" 171*30588217SMike Christensen #define VLDS_MD_PORT_NODE_NAME "domain-services-port" 172*30588217SMike Christensen 173*30588217SMike Christensen /* 174*30588217SMike Christensen * VLDS Sysevent defines. 175*30588217SMike Christensen * VLDS System Event Channel names are of the form: 176*30588217SMike Christensen * sun.com:vlds:pid<pid_number> 177*30588217SMike Christensen */ 178*30588217SMike Christensen #define VLDS_SYSEV_CHAN_FMT "sun.com:vlds:pid%06d" 179*30588217SMike Christensen #define VLDS_SYSEV_MAX_CHAN_NAME 32 180*30588217SMike Christensen 181*30588217SMike Christensen #define EC_VLDS "EC_vlds" /* LDOMS Domain Services event class */ 182*30588217SMike Christensen 183*30588217SMike Christensen /* 184*30588217SMike Christensen * EC_VLDS subclass definitions - supporting attributes (name/value pairs) are 185*30588217SMike Christensen * found in sys/sysevent/vlds.h 186*30588217SMike Christensen */ 187*30588217SMike Christensen #define ESC_VLDS_REGISTER "ESC_VLDS_register" 188*30588217SMike Christensen #define ESC_VLDS_UNREGISTER "ESC_VLDS_unregister" 189*30588217SMike Christensen #define ESC_VLDS_DATA "ESC_VLDS_data" 190*30588217SMike Christensen 191*30588217SMike Christensen /* 192*30588217SMike Christensen * Event type EC_VLDS 193*30588217SMike Christensen * Event Class - EC_VLDS 194*30588217SMike Christensen * Event Sub-Class - ESC_VLDS_REGISTER 195*30588217SMike Christensen * Event Publisher - SUNW:kern:[ds_module_name] 196*30588217SMike Christensen * Attribute Name - VLDS_HDL 197*30588217SMike Christensen * Attribute Type - SE_DATA_TYPE_UINT64 198*30588217SMike Christensen * Attribute Value - [Domain Service Handle] 199*30588217SMike Christensen * Attribute Name - VLDS_VER_MAJOR 200*30588217SMike Christensen * Attribute Type - SE_DATA_TYPE_UINT16 201*30588217SMike Christensen * Attribute Value - [major version of the DS interface] 202*30588217SMike Christensen * Attribute Name - VLDS_VER_MINOR 203*30588217SMike Christensen * Attribute Type - SE_DATA_TYPE_UINT16 204*30588217SMike Christensen * Attribute Value - [minor version of the DS interface] 205*30588217SMike Christensen * Attribute Name - VLDS_DOMAIN_HDL 206*30588217SMike Christensen * Attribute Type - SE_DATA_TYPE_UINT64 207*30588217SMike Christensen * Attribute Value - [Domain handle of registered service] 208*30588217SMike Christensen * Attribute Name - VLDS_SERVICE_ID 209*30588217SMike Christensen * Attribute Type - SE_DATA_TYPE_STRING 210*30588217SMike Christensen * Attribute Value - [Service name of registered service] 211*30588217SMike Christensen * Attribute Name - VLDS_ISCLIENT 212*30588217SMike Christensen * Attribute Type - SE_DATA_TYPE_BOOLEAN_VALUE 213*30588217SMike Christensen * Attribute Value - [Service is client or provider] 214*30588217SMike Christensen * 215*30588217SMike Christensen * Event Class - EC_VLDS 216*30588217SMike Christensen * Event Sub-Class - ESC_VLDS_UNREGISTER 217*30588217SMike Christensen * Event Publisher - SUNW:kern:[ds_module_name] 218*30588217SMike Christensen * Attribute Name - VLDS_HDL 219*30588217SMike Christensen * Attribute Type - SE_DATA_TYPE_UINT64 220*30588217SMike Christensen * Attribute Value - [Domain Service Handle] 221*30588217SMike Christensen * 222*30588217SMike Christensen * Event Class - EC_VLDS 223*30588217SMike Christensen * Event Sub-Class - ESC_VLDS_DATA 224*30588217SMike Christensen * Event Publisher - SUNW:kern:[ds_module_name] 225*30588217SMike Christensen * Attribute Name - VLDS_HDL 226*30588217SMike Christensen * Attribute Type - SE_DATA_TYPE_UINT64 227*30588217SMike Christensen * Attribute Value - [Domain Service Handle] 228*30588217SMike Christensen * Attribute Name - VLDS_DATA 229*30588217SMike Christensen * Attribute Type - SE_DATA_TYPE_BYTE_ARRAY 230*30588217SMike Christensen * Attribute Value - [Data array passed to user] 231*30588217SMike Christensen */ 232*30588217SMike Christensen 233*30588217SMike Christensen #define VLDS_HDL "vlds_hdl" /* service handle */ 234*30588217SMike Christensen #define VLDS_VER_MAJOR "vlds_ver_major" /* major version */ 235*30588217SMike Christensen #define VLDS_VER_MINOR "vlds_ver_minor" /* minor version */ 236*30588217SMike Christensen #define VLDS_DOMAIN_HDL "vlds_domain_hdl" /* domain handle */ 237*30588217SMike Christensen #define VLDS_SERVICE_ID "vlds_service_id" /* service id */ 238*30588217SMike Christensen #define VLDS_ISCLIENT "vlds_isclient" /* service is client */ 239*30588217SMike Christensen #define VLDS_DATA "vlds_data" /* data buffer */ 240*30588217SMike Christensen 241*30588217SMike Christensen #ifdef __cplusplus 242*30588217SMike Christensen } 243*30588217SMike Christensen #endif 244*30588217SMike Christensen 245*30588217SMike Christensen #endif /* _SYS_VLDS_H_ */ 246