17697SMichael.Christensen@Sun.COM /* 27697SMichael.Christensen@Sun.COM * CDDL HEADER START 37697SMichael.Christensen@Sun.COM * 47697SMichael.Christensen@Sun.COM * The contents of this file are subject to the terms of the 57697SMichael.Christensen@Sun.COM * Common Development and Distribution License (the "License"). 67697SMichael.Christensen@Sun.COM * You may not use this file except in compliance with the License. 77697SMichael.Christensen@Sun.COM * 87697SMichael.Christensen@Sun.COM * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 97697SMichael.Christensen@Sun.COM * or http://www.opensolaris.org/os/licensing. 107697SMichael.Christensen@Sun.COM * See the License for the specific language governing permissions 117697SMichael.Christensen@Sun.COM * and limitations under the License. 127697SMichael.Christensen@Sun.COM * 137697SMichael.Christensen@Sun.COM * When distributing Covered Code, include this CDDL HEADER in each 147697SMichael.Christensen@Sun.COM * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 157697SMichael.Christensen@Sun.COM * If applicable, add the following below this CDDL HEADER, with the 167697SMichael.Christensen@Sun.COM * fields enclosed by brackets "[]" replaced with your own identifying 177697SMichael.Christensen@Sun.COM * information: Portions Copyright [yyyy] [name of copyright owner] 187697SMichael.Christensen@Sun.COM * 197697SMichael.Christensen@Sun.COM * CDDL HEADER END 207697SMichael.Christensen@Sun.COM */ 217697SMichael.Christensen@Sun.COM 227697SMichael.Christensen@Sun.COM /* 237697SMichael.Christensen@Sun.COM * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 247697SMichael.Christensen@Sun.COM * Use is subject to license terms. 257697SMichael.Christensen@Sun.COM */ 267697SMichael.Christensen@Sun.COM 277697SMichael.Christensen@Sun.COM #ifndef _SYS_VLDS_H_ 287697SMichael.Christensen@Sun.COM #define _SYS_VLDS_H_ 297697SMichael.Christensen@Sun.COM 307697SMichael.Christensen@Sun.COM #include <sys/types.h> 317697SMichael.Christensen@Sun.COM 327697SMichael.Christensen@Sun.COM #ifdef __cplusplus 337697SMichael.Christensen@Sun.COM extern "C" { 347697SMichael.Christensen@Sun.COM #endif 357697SMichael.Christensen@Sun.COM 367697SMichael.Christensen@Sun.COM /* 377697SMichael.Christensen@Sun.COM * LDOMS Domain Services Device Driver 387697SMichael.Christensen@Sun.COM */ 397697SMichael.Christensen@Sun.COM 407697SMichael.Christensen@Sun.COM /* 417697SMichael.Christensen@Sun.COM * ioctl info for vlds device 427697SMichael.Christensen@Sun.COM */ 437697SMichael.Christensen@Sun.COM 447697SMichael.Christensen@Sun.COM #define VLDSIOC ('d' << 16 | 's' << 8) 457697SMichael.Christensen@Sun.COM 467697SMichael.Christensen@Sun.COM #define VLDS_SVC_REG (VLDSIOC | 1) /* Register DS Service */ 477697SMichael.Christensen@Sun.COM #define VLDS_UNREG_HDL (VLDSIOC | 2) /* Unregister DS Service by Handle */ 487697SMichael.Christensen@Sun.COM #define VLDS_HDL_LOOKUP (VLDSIOC | 3) /* Lookup DS Handle(s) by Service id */ 497697SMichael.Christensen@Sun.COM #define VLDS_DMN_LOOKUP (VLDSIOC | 4) /* Lookup DS Domain id by Handle */ 507697SMichael.Christensen@Sun.COM #define VLDS_SEND_MSG (VLDSIOC | 5) /* Send DS Message by Handle */ 517697SMichael.Christensen@Sun.COM #define VLDS_RECV_MSG (VLDSIOC | 6) /* Receive DS Message by Handle */ 527697SMichael.Christensen@Sun.COM #define VLDS_HDL_ISREADY (VLDSIOC | 7) /* Handle ready for data transfers */ 537697SMichael.Christensen@Sun.COM #define VLDS_DOM_NAM2HDL (VLDSIOC | 8) /* Domain Name to Handle translation */ 547697SMichael.Christensen@Sun.COM #define VLDS_DOM_HDL2NAM (VLDSIOC | 9) /* Handle ready for data transfers */ 557697SMichael.Christensen@Sun.COM 567697SMichael.Christensen@Sun.COM /* vlds_reg_flags */ 577697SMichael.Christensen@Sun.COM #define VLDS_REG_CLIENT 0x01 /* Register as client */ 587697SMichael.Christensen@Sun.COM #define VLDS_REGCB_VALID 0x02 /* User supplied Register callback */ 597697SMichael.Christensen@Sun.COM #define VLDS_UNREGCB_VALID 0x04 /* User supplied Unregister callback */ 607697SMichael.Christensen@Sun.COM #define VLDS_DATACB_VALID 0x08 /* User supplied Data callback */ 617697SMichael.Christensen@Sun.COM #define VLDS_ANYCB_VALID (VLDS_REGCB_VALID | VLDS_UNREGCB_VALID | \ 627697SMichael.Christensen@Sun.COM VLDS_DATACB_VALID) 637697SMichael.Christensen@Sun.COM 647697SMichael.Christensen@Sun.COM #define VLDS_MAX_VERS 20 /* Max no. of vlds_ver_t entries */ 657697SMichael.Christensen@Sun.COM 667697SMichael.Christensen@Sun.COM /* 677697SMichael.Christensen@Sun.COM * The following are declared so that they are size-invariant. 687697SMichael.Christensen@Sun.COM */ 697697SMichael.Christensen@Sun.COM 707697SMichael.Christensen@Sun.COM /* String arguments to ioctl */ 717697SMichael.Christensen@Sun.COM typedef struct vlds_string_arg { 727697SMichael.Christensen@Sun.COM uint64_t vlds_strp; 737697SMichael.Christensen@Sun.COM uint64_t vlds_strlen; 747697SMichael.Christensen@Sun.COM } vlds_string_t; 757697SMichael.Christensen@Sun.COM 767697SMichael.Christensen@Sun.COM /* Version array (used by VLDS_SVC_REG) */ 777697SMichael.Christensen@Sun.COM typedef struct vlds_ver { 787697SMichael.Christensen@Sun.COM uint16_t vlds_major; 797697SMichael.Christensen@Sun.COM uint16_t vlds_minor; 807697SMichael.Christensen@Sun.COM } vlds_ver_t; 817697SMichael.Christensen@Sun.COM 827697SMichael.Christensen@Sun.COM /* Capability structure (used by VLDS_SVC_REG) */ 837697SMichael.Christensen@Sun.COM typedef struct vlds_cap { 847697SMichael.Christensen@Sun.COM vlds_string_t vlds_service; 857697SMichael.Christensen@Sun.COM uint64_t vlds_nver; 867697SMichael.Christensen@Sun.COM uint64_t vlds_versp; 877697SMichael.Christensen@Sun.COM } vlds_cap_t; 887697SMichael.Christensen@Sun.COM 897697SMichael.Christensen@Sun.COM /* 907697SMichael.Christensen@Sun.COM * VLDS_SVC_REG 917697SMichael.Christensen@Sun.COM */ 927697SMichael.Christensen@Sun.COM typedef struct vlds_svc_reg_arg { 937697SMichael.Christensen@Sun.COM uint64_t vlds_hdlp; /* DS Service Handle ptr. (returned) */ 947697SMichael.Christensen@Sun.COM uint64_t vlds_capp; /* DS Capability Structure ptr. */ 957697SMichael.Christensen@Sun.COM uint64_t vlds_reg_flags; /* DS reg flags */ 967697SMichael.Christensen@Sun.COM } vlds_svc_reg_arg_t; 977697SMichael.Christensen@Sun.COM 987697SMichael.Christensen@Sun.COM /* 997697SMichael.Christensen@Sun.COM * VLDS_UNREG_HDL 1007697SMichael.Christensen@Sun.COM */ 1017697SMichael.Christensen@Sun.COM typedef struct vlds_unreg_hdl_arg { 1027697SMichael.Christensen@Sun.COM uint64_t vlds_hdl; /* DS Service Handle */ 1037697SMichael.Christensen@Sun.COM } vlds_unreg_hdl_arg_t; 1047697SMichael.Christensen@Sun.COM 1057697SMichael.Christensen@Sun.COM /* 1067697SMichael.Christensen@Sun.COM * VLDS_DMN_LOOKUP 1077697SMichael.Christensen@Sun.COM */ 1087697SMichael.Christensen@Sun.COM typedef struct vlds_dmn_lookup_arg { 1097697SMichael.Christensen@Sun.COM uint64_t vlds_hdl; /* DS Service Handle */ 1107697SMichael.Christensen@Sun.COM uint64_t vlds_dhdlp; /* DS Domain hdl ptr. (returned) */ 1117697SMichael.Christensen@Sun.COM } vlds_dmn_lookup_arg_t; 1127697SMichael.Christensen@Sun.COM 1137697SMichael.Christensen@Sun.COM /* 1147697SMichael.Christensen@Sun.COM * VLDS_HDL_LOOKUP 1157697SMichael.Christensen@Sun.COM */ 1167697SMichael.Christensen@Sun.COM typedef struct vlds_hdl_lookup_arg { 1177697SMichael.Christensen@Sun.COM vlds_string_t vlds_service; /* DS Service Name */ 1187697SMichael.Christensen@Sun.COM uint64_t vlds_isclient; /* DS Client flag */ 1197697SMichael.Christensen@Sun.COM uint64_t vlds_hdlsp; /* DS Handle array ptr */ 1207697SMichael.Christensen@Sun.COM uint64_t vlds_maxhdls; /* DS Max no. of hdls to return */ 1217697SMichael.Christensen@Sun.COM uint64_t vlds_nhdlsp; /* DS No. of hdls returned */ 1227697SMichael.Christensen@Sun.COM } vlds_hdl_lookup_arg_t; 1237697SMichael.Christensen@Sun.COM 1247697SMichael.Christensen@Sun.COM /* 1257697SMichael.Christensen@Sun.COM * VLDS_SEND_MSG 1267697SMichael.Christensen@Sun.COM */ 1277697SMichael.Christensen@Sun.COM typedef struct vlds_send_msg_arg { 1287697SMichael.Christensen@Sun.COM uint64_t vlds_hdl; /* DS Service Handle */ 1297697SMichael.Christensen@Sun.COM uint64_t vlds_bufp; /* buffer */ 1307697SMichael.Christensen@Sun.COM uint64_t vlds_buflen; /* message length/buffer size */ 1317697SMichael.Christensen@Sun.COM } vlds_send_msg_arg_t; 1327697SMichael.Christensen@Sun.COM 1337697SMichael.Christensen@Sun.COM /* 1347697SMichael.Christensen@Sun.COM * VLDS_RECV_MSG 1357697SMichael.Christensen@Sun.COM */ 1367697SMichael.Christensen@Sun.COM typedef struct vlds_recv_msg_arg { 1377697SMichael.Christensen@Sun.COM uint64_t vlds_hdl; /* DS Service Handle */ 1387697SMichael.Christensen@Sun.COM uint64_t vlds_bufp; /* buffer */ 1397697SMichael.Christensen@Sun.COM uint64_t vlds_buflen; /* message length/buffer size */ 1407697SMichael.Christensen@Sun.COM uint64_t vlds_msglenp; /* ptr to returned message length */ 1417697SMichael.Christensen@Sun.COM } vlds_recv_msg_arg_t; 1427697SMichael.Christensen@Sun.COM 1437697SMichael.Christensen@Sun.COM /* 1447697SMichael.Christensen@Sun.COM * VLDS_HDL_ISREADY 1457697SMichael.Christensen@Sun.COM */ 1467697SMichael.Christensen@Sun.COM typedef struct vlds_hdl_isready_arg { 1477697SMichael.Christensen@Sun.COM uint64_t vlds_hdl; /* DS Service Handle */ 1487697SMichael.Christensen@Sun.COM uint64_t vlds_isreadyp; /* Ptr to isready flag */ 1497697SMichael.Christensen@Sun.COM } vlds_hdl_isready_arg_t; 1507697SMichael.Christensen@Sun.COM 1517697SMichael.Christensen@Sun.COM /* 1527697SMichael.Christensen@Sun.COM * VLDS_DOM_NAM2HDL 1537697SMichael.Christensen@Sun.COM */ 1547697SMichael.Christensen@Sun.COM typedef struct vlds_dom_nam2hdl_arg { 1557697SMichael.Christensen@Sun.COM vlds_string_t vlds_domain_name; /* Domain Name string */ 1567697SMichael.Christensen@Sun.COM uint64_t vlds_dhdlp; /* ptr to returned Domain Handle */ 1577697SMichael.Christensen@Sun.COM } vlds_dom_nam2hdl_arg_t; 1587697SMichael.Christensen@Sun.COM 1597697SMichael.Christensen@Sun.COM /* 1607697SMichael.Christensen@Sun.COM * VLDS_DOM_HDL2NAM 1617697SMichael.Christensen@Sun.COM */ 1627697SMichael.Christensen@Sun.COM typedef struct vlds_dom_hdl2nam_arg { 1637697SMichael.Christensen@Sun.COM uint64_t vlds_dhdl; /* Domain Handle */ 1647697SMichael.Christensen@Sun.COM vlds_string_t vlds_domain_name; /* returned Domain Name string */ 1657697SMichael.Christensen@Sun.COM } vlds_dom_hdl2nam_arg_t; 1667697SMichael.Christensen@Sun.COM 1677697SMichael.Christensen@Sun.COM /* 1687697SMichael.Christensen@Sun.COM * Machine Description Constants for vlds driver. 1697697SMichael.Christensen@Sun.COM */ 170*8172SMichael.Christensen@Sun.COM #define VLDS_MD_VIRT_DEV_NAME "virtual-device" 171*8172SMichael.Christensen@Sun.COM #define VLDS_MD_VIRT_ROOT_NAME "virtual-domain-service" 172*8172SMichael.Christensen@Sun.COM #define VLDS_MD_DOMAIN_HDL "vlds-domain-handle" 173*8172SMichael.Christensen@Sun.COM #define VLDS_MD_DOMAIN_NAME "vlds-domain-name" 174*8172SMichael.Christensen@Sun.COM #define VLDS_MD_VIRT_PORT_NAME "virtual-device-port" 175*8172SMichael.Christensen@Sun.COM #define VLDS_MD_REM_DOMAIN_HDL "vlds-remote-domain-handle" 176*8172SMichael.Christensen@Sun.COM #define VLDS_MD_REM_DOMAIN_NAME "vlds-remote-domain-name" 1777697SMichael.Christensen@Sun.COM 1787697SMichael.Christensen@Sun.COM /* 1797697SMichael.Christensen@Sun.COM * VLDS Sysevent defines. 1807697SMichael.Christensen@Sun.COM * VLDS System Event Channel names are of the form: 1817697SMichael.Christensen@Sun.COM * sun.com:vlds:pid<pid_number> 1827697SMichael.Christensen@Sun.COM */ 1837697SMichael.Christensen@Sun.COM #define VLDS_SYSEV_CHAN_FMT "sun.com:vlds:pid%06d" 1847697SMichael.Christensen@Sun.COM #define VLDS_SYSEV_MAX_CHAN_NAME 32 1857697SMichael.Christensen@Sun.COM 1867697SMichael.Christensen@Sun.COM #define EC_VLDS "EC_vlds" /* LDOMS Domain Services event class */ 1877697SMichael.Christensen@Sun.COM 1887697SMichael.Christensen@Sun.COM /* 1897697SMichael.Christensen@Sun.COM * EC_VLDS subclass definitions - supporting attributes (name/value pairs) are 1907697SMichael.Christensen@Sun.COM * found in sys/sysevent/vlds.h 1917697SMichael.Christensen@Sun.COM */ 1927697SMichael.Christensen@Sun.COM #define ESC_VLDS_REGISTER "ESC_VLDS_register" 1937697SMichael.Christensen@Sun.COM #define ESC_VLDS_UNREGISTER "ESC_VLDS_unregister" 1947697SMichael.Christensen@Sun.COM #define ESC_VLDS_DATA "ESC_VLDS_data" 1957697SMichael.Christensen@Sun.COM 1967697SMichael.Christensen@Sun.COM /* 1977697SMichael.Christensen@Sun.COM * Event type EC_VLDS 1987697SMichael.Christensen@Sun.COM * Event Class - EC_VLDS 1997697SMichael.Christensen@Sun.COM * Event Sub-Class - ESC_VLDS_REGISTER 2007697SMichael.Christensen@Sun.COM * Event Publisher - SUNW:kern:[ds_module_name] 2017697SMichael.Christensen@Sun.COM * Attribute Name - VLDS_HDL 2027697SMichael.Christensen@Sun.COM * Attribute Type - SE_DATA_TYPE_UINT64 2037697SMichael.Christensen@Sun.COM * Attribute Value - [Domain Service Handle] 2047697SMichael.Christensen@Sun.COM * Attribute Name - VLDS_VER_MAJOR 2057697SMichael.Christensen@Sun.COM * Attribute Type - SE_DATA_TYPE_UINT16 2067697SMichael.Christensen@Sun.COM * Attribute Value - [major version of the DS interface] 2077697SMichael.Christensen@Sun.COM * Attribute Name - VLDS_VER_MINOR 2087697SMichael.Christensen@Sun.COM * Attribute Type - SE_DATA_TYPE_UINT16 2097697SMichael.Christensen@Sun.COM * Attribute Value - [minor version of the DS interface] 2107697SMichael.Christensen@Sun.COM * Attribute Name - VLDS_DOMAIN_HDL 2117697SMichael.Christensen@Sun.COM * Attribute Type - SE_DATA_TYPE_UINT64 2127697SMichael.Christensen@Sun.COM * Attribute Value - [Domain handle of registered service] 2137697SMichael.Christensen@Sun.COM * Attribute Name - VLDS_SERVICE_ID 2147697SMichael.Christensen@Sun.COM * Attribute Type - SE_DATA_TYPE_STRING 2157697SMichael.Christensen@Sun.COM * Attribute Value - [Service name of registered service] 2167697SMichael.Christensen@Sun.COM * Attribute Name - VLDS_ISCLIENT 2177697SMichael.Christensen@Sun.COM * Attribute Type - SE_DATA_TYPE_BOOLEAN_VALUE 2187697SMichael.Christensen@Sun.COM * Attribute Value - [Service is client or provider] 2197697SMichael.Christensen@Sun.COM * 2207697SMichael.Christensen@Sun.COM * Event Class - EC_VLDS 2217697SMichael.Christensen@Sun.COM * Event Sub-Class - ESC_VLDS_UNREGISTER 2227697SMichael.Christensen@Sun.COM * Event Publisher - SUNW:kern:[ds_module_name] 2237697SMichael.Christensen@Sun.COM * Attribute Name - VLDS_HDL 2247697SMichael.Christensen@Sun.COM * Attribute Type - SE_DATA_TYPE_UINT64 2257697SMichael.Christensen@Sun.COM * Attribute Value - [Domain Service Handle] 2267697SMichael.Christensen@Sun.COM * 2277697SMichael.Christensen@Sun.COM * Event Class - EC_VLDS 2287697SMichael.Christensen@Sun.COM * Event Sub-Class - ESC_VLDS_DATA 2297697SMichael.Christensen@Sun.COM * Event Publisher - SUNW:kern:[ds_module_name] 2307697SMichael.Christensen@Sun.COM * Attribute Name - VLDS_HDL 2317697SMichael.Christensen@Sun.COM * Attribute Type - SE_DATA_TYPE_UINT64 2327697SMichael.Christensen@Sun.COM * Attribute Value - [Domain Service Handle] 2337697SMichael.Christensen@Sun.COM * Attribute Name - VLDS_DATA 2347697SMichael.Christensen@Sun.COM * Attribute Type - SE_DATA_TYPE_BYTE_ARRAY 2357697SMichael.Christensen@Sun.COM * Attribute Value - [Data array passed to user] 2367697SMichael.Christensen@Sun.COM */ 2377697SMichael.Christensen@Sun.COM 2387697SMichael.Christensen@Sun.COM #define VLDS_HDL "vlds_hdl" /* service handle */ 2397697SMichael.Christensen@Sun.COM #define VLDS_VER_MAJOR "vlds_ver_major" /* major version */ 2407697SMichael.Christensen@Sun.COM #define VLDS_VER_MINOR "vlds_ver_minor" /* minor version */ 2417697SMichael.Christensen@Sun.COM #define VLDS_DOMAIN_HDL "vlds_domain_hdl" /* domain handle */ 2427697SMichael.Christensen@Sun.COM #define VLDS_SERVICE_ID "vlds_service_id" /* service id */ 2437697SMichael.Christensen@Sun.COM #define VLDS_ISCLIENT "vlds_isclient" /* service is client */ 2447697SMichael.Christensen@Sun.COM #define VLDS_DATA "vlds_data" /* data buffer */ 2457697SMichael.Christensen@Sun.COM 2467697SMichael.Christensen@Sun.COM #ifdef __cplusplus 2477697SMichael.Christensen@Sun.COM } 2487697SMichael.Christensen@Sun.COM #endif 2497697SMichael.Christensen@Sun.COM 2507697SMichael.Christensen@Sun.COM #endif /* _SYS_VLDS_H_ */ 251