1*7c478bd9Sstevel@tonic-gate /* 2*7c478bd9Sstevel@tonic-gate * CDDL HEADER START 3*7c478bd9Sstevel@tonic-gate * 4*7c478bd9Sstevel@tonic-gate * The contents of this file are subject to the terms of the 5*7c478bd9Sstevel@tonic-gate * Common Development and Distribution License, Version 1.0 only 6*7c478bd9Sstevel@tonic-gate * (the "License"). You may not use this file except in compliance 7*7c478bd9Sstevel@tonic-gate * with the License. 8*7c478bd9Sstevel@tonic-gate * 9*7c478bd9Sstevel@tonic-gate * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10*7c478bd9Sstevel@tonic-gate * or http://www.opensolaris.org/os/licensing. 11*7c478bd9Sstevel@tonic-gate * See the License for the specific language governing permissions 12*7c478bd9Sstevel@tonic-gate * and limitations under the License. 13*7c478bd9Sstevel@tonic-gate * 14*7c478bd9Sstevel@tonic-gate * When distributing Covered Code, include this CDDL HEADER in each 15*7c478bd9Sstevel@tonic-gate * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16*7c478bd9Sstevel@tonic-gate * If applicable, add the following below this CDDL HEADER, with the 17*7c478bd9Sstevel@tonic-gate * fields enclosed by brackets "[]" replaced with your own identifying 18*7c478bd9Sstevel@tonic-gate * information: Portions Copyright [yyyy] [name of copyright owner] 19*7c478bd9Sstevel@tonic-gate * 20*7c478bd9Sstevel@tonic-gate * CDDL HEADER END 21*7c478bd9Sstevel@tonic-gate */ 22*7c478bd9Sstevel@tonic-gate /* 23*7c478bd9Sstevel@tonic-gate * Copyright (c) 1999-2001 by Sun Microsystems, Inc. 24*7c478bd9Sstevel@tonic-gate * All rights reserved. 25*7c478bd9Sstevel@tonic-gate */ 26*7c478bd9Sstevel@tonic-gate 27*7c478bd9Sstevel@tonic-gate #ifndef _SYS_RSM_RSM_COMMON_H 28*7c478bd9Sstevel@tonic-gate #define _SYS_RSM_RSM_COMMON_H 29*7c478bd9Sstevel@tonic-gate 30*7c478bd9Sstevel@tonic-gate #pragma ident "%Z%%M% %I% %E% SMI" 31*7c478bd9Sstevel@tonic-gate 32*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 33*7c478bd9Sstevel@tonic-gate extern "C" { 34*7c478bd9Sstevel@tonic-gate #endif 35*7c478bd9Sstevel@tonic-gate 36*7c478bd9Sstevel@tonic-gate #define RSM_VERSION 5 37*7c478bd9Sstevel@tonic-gate 38*7c478bd9Sstevel@tonic-gate /* Return values for RSMAPI */ 39*7c478bd9Sstevel@tonic-gate #define RSM_SUCCESS 0 40*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_LIBRARY_VERSION 1 41*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_TOPOLOGY_PTR 2 42*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_CTLR_HNDL 3 43*7c478bd9Sstevel@tonic-gate #define RSMERR_CTLR_NOT_PRESENT 4 44*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_SEG_HNDL 5 45*7c478bd9Sstevel@tonic-gate #define RSMERR_SEG_ALREADY_PUBLISHED 6 46*7c478bd9Sstevel@tonic-gate #define RSMERR_SEG_NOT_PUBLISHED 7 47*7c478bd9Sstevel@tonic-gate #define RSMERR_SEG_NOT_PUBLISHED_TO_NODE 8 48*7c478bd9Sstevel@tonic-gate #define RSMERR_SEG_ALREADY_MAPPED 9 49*7c478bd9Sstevel@tonic-gate #define RSMERR_SEG_STILL_MAPPED 10 50*7c478bd9Sstevel@tonic-gate #define RSMERR_SEG_NOT_MAPPED 11 51*7c478bd9Sstevel@tonic-gate #define RSMERR_NOT_CREATOR 12 52*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_BARRIER_PTR 13 53*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_SGIO 14 54*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_LOCALMEM_HNDL 15 55*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_ADDR 16 56*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_MEM_ALIGNMENT 17 57*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_OFFSET 18 58*7c478bd9Sstevel@tonic-gate #define RSMERR_MISALIGNED_OFFSET 19 59*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_LENGTH 20 60*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_ACL 21 61*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_SEGID 22 62*7c478bd9Sstevel@tonic-gate #define RSMERR_RESERVED_SEGID 23 63*7c478bd9Sstevel@tonic-gate #define RSMERR_SEGID_IN_USE 24 64*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_MODE 25 65*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_PERMS 26 66*7c478bd9Sstevel@tonic-gate #define RSMERR_PERM_DENIED 27 67*7c478bd9Sstevel@tonic-gate #define RSMERR_LOCKS_NOT_SUPPORTED 28 68*7c478bd9Sstevel@tonic-gate #define RSMERR_LOCKS_NOT_ENABLED 29 69*7c478bd9Sstevel@tonic-gate #define RSMERR_REBIND_NOT_ALLOWED 30 70*7c478bd9Sstevel@tonic-gate #define RSMERR_INSUFFICIENT_RESOURCES 31 71*7c478bd9Sstevel@tonic-gate #define RSMERR_INSUFFICIENT_MEM 32 72*7c478bd9Sstevel@tonic-gate #define RSMERR_MAP_FAILED 33 73*7c478bd9Sstevel@tonic-gate #define RSMERR_POLLFD_IN_USE 34 74*7c478bd9Sstevel@tonic-gate #define RSMERR_BARRIER_UNINITIALIZED 35 75*7c478bd9Sstevel@tonic-gate #define RSMERR_BARRIER_OPEN_FAILED 36 76*7c478bd9Sstevel@tonic-gate #define RSMERR_BARRIER_NOT_OPENED 37 77*7c478bd9Sstevel@tonic-gate #define RSMERR_BARRIER_FAILURE 38 78*7c478bd9Sstevel@tonic-gate #define RSMERR_REMOTE_NODE_UNREACHABLE 39 79*7c478bd9Sstevel@tonic-gate #define RSMERR_CONN_ABORTED 40 80*7c478bd9Sstevel@tonic-gate #define RSMERR_INTERRUPTED 41 81*7c478bd9Sstevel@tonic-gate #define RSMERR_TIMEOUT 42 82*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_APPID 43 83*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_CONF 44 84*7c478bd9Sstevel@tonic-gate #define RSMERR_SEG_NOT_CONNECTED 45 85*7c478bd9Sstevel@tonic-gate 86*7c478bd9Sstevel@tonic-gate /* Additional return values for RSMPI */ 87*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_DRIVER_VERSION 101 88*7c478bd9Sstevel@tonic-gate #define RSMERR_UNSUPPORTED_VERSION 102 89*7c478bd9Sstevel@tonic-gate #define RSMERR_DRIVER_NAME_IN_USE 103 90*7c478bd9Sstevel@tonic-gate #define RSMERR_DRIVER_NOT_REGISTERED 104 91*7c478bd9Sstevel@tonic-gate #define RSMERR_DRIVER_THREAD_RUNNING 105 92*7c478bd9Sstevel@tonic-gate #define RSMERR_NEED_THREAD_INIT 106 93*7c478bd9Sstevel@tonic-gate #define RSMERR_THREAD_NOT_INITED 107 94*7c478bd9Sstevel@tonic-gate #define RSMERR_CTLRS_REGISTERED 108 95*7c478bd9Sstevel@tonic-gate #define RSMERR_CTLR_NOT_REGISTERED 109 96*7c478bd9Sstevel@tonic-gate #define RSMERR_CTLR_ALREADY_REGISTERED 110 97*7c478bd9Sstevel@tonic-gate #define RSMERR_CTLR_IN_USE 111 98*7c478bd9Sstevel@tonic-gate #define RSMERR_NAME_TOO_LONG 112 99*7c478bd9Sstevel@tonic-gate #define RSMERR_SEG_PUBLISHED 113 100*7c478bd9Sstevel@tonic-gate #define RSMERR_SEG_NOT_PUBLISHED_TO_RSM_ADDR 114 101*7c478bd9Sstevel@tonic-gate #define RSMERR_SEG_IN_USE 115 102*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_SENDQ_HNDL 116 103*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_ARGS_ERRORS 117 104*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_MSTYPE 118 105*7c478bd9Sstevel@tonic-gate #define RSMERR_NO_BACKING_MEM 119 106*7c478bd9Sstevel@tonic-gate #define RSMERR_NOT_MEM 120 107*7c478bd9Sstevel@tonic-gate #define RSMERR_MEM_ALREADY_BOUND 121 108*7c478bd9Sstevel@tonic-gate #define RSMERR_MEM_NOT_BOUND 122 109*7c478bd9Sstevel@tonic-gate #define RSMERR_HANDLER_NOT_REGISTERED 123 110*7c478bd9Sstevel@tonic-gate #define RSMERR_NO_HANDLER 124 111*7c478bd9Sstevel@tonic-gate #define RSMERR_UNBIND_REBIND_NOT_ALLOWED 125 112*7c478bd9Sstevel@tonic-gate #define RSMERR_CALLBACKS_NOT_SUPPORTED 126 113*7c478bd9Sstevel@tonic-gate #define RSMERR_UNSUPPORTED_OPERATION 127 114*7c478bd9Sstevel@tonic-gate #define RSMERR_RSM_ADDR_UNREACHABLE 128 115*7c478bd9Sstevel@tonic-gate #define RSMERR_UNKNOWN_RSM_ADDR 129 116*7c478bd9Sstevel@tonic-gate #define RSMERR_BAD_BARRIER_HNDL 130 117*7c478bd9Sstevel@tonic-gate #define RSMERR_COMM_ERR_MAYBE_DELIVERED 131 118*7c478bd9Sstevel@tonic-gate #define RSMERR_COMM_ERR_NOT_DELIVERED 132 119*7c478bd9Sstevel@tonic-gate #define RSMERR_QUEUE_FENCE_UP 133 120*7c478bd9Sstevel@tonic-gate #define RSMERR_QUEUE_FULL 134 121*7c478bd9Sstevel@tonic-gate 122*7c478bd9Sstevel@tonic-gate #define RSMERR_INTERNAL_ERROR 100 123*7c478bd9Sstevel@tonic-gate 124*7c478bd9Sstevel@tonic-gate /* 125*7c478bd9Sstevel@tonic-gate * Partition segment id and service id space 126*7c478bd9Sstevel@tonic-gate * users should only create segments or register handlers 127*7c478bd9Sstevel@tonic-gate * using segment and service id's from the correct range below 128*7c478bd9Sstevel@tonic-gate * RSM_DRIVER_PRIVATE enforced in rsm_memseg_export_publish 129*7c478bd9Sstevel@tonic-gate * and rsm_memseg_import_connect 130*7c478bd9Sstevel@tonic-gate */ 131*7c478bd9Sstevel@tonic-gate 132*7c478bd9Sstevel@tonic-gate #define RSM_DRIVER_PRIVATE_ID_BASE 0 133*7c478bd9Sstevel@tonic-gate #define RSM_DRIVER_PRIVATE_ID_END 0x0FFFFF 134*7c478bd9Sstevel@tonic-gate 135*7c478bd9Sstevel@tonic-gate #define RSM_CLUSTER_TRANSPORT_ID_BASE 0x100000 136*7c478bd9Sstevel@tonic-gate #define RSM_CLUSTER_TRANSPORT_ID_END 0x1FFFFF 137*7c478bd9Sstevel@tonic-gate #define RSM_RSMLIB_ID_BASE 0x200000 138*7c478bd9Sstevel@tonic-gate #define RSM_RSMLIB_ID_END 0x2FFFFF 139*7c478bd9Sstevel@tonic-gate #define RSM_DLPI_ID_BASE 0x300000 140*7c478bd9Sstevel@tonic-gate #define RSM_DLPI_ID_END 0x3FFFFF 141*7c478bd9Sstevel@tonic-gate #define RSM_HPC_ID_BASE 0x400000 142*7c478bd9Sstevel@tonic-gate #define RSM_HPC_ID_END 0x4FFFFF 143*7c478bd9Sstevel@tonic-gate #define RSM_OPS_ID_BASE 0x500000 144*7c478bd9Sstevel@tonic-gate #define RSM_OPS_ID_END 0x5FFFFF 145*7c478bd9Sstevel@tonic-gate 146*7c478bd9Sstevel@tonic-gate #define RSM_USER_APP_ID_BASE 0x80000000 147*7c478bd9Sstevel@tonic-gate #define RSM_USER_APP_ID_END 0xFFFFFFFF 148*7c478bd9Sstevel@tonic-gate 149*7c478bd9Sstevel@tonic-gate /* 150*7c478bd9Sstevel@tonic-gate * The following definitions and typedef are used to describe the 151*7c478bd9Sstevel@tonic-gate * permissions associated with all or part of a memory segment. 152*7c478bd9Sstevel@tonic-gate */ 153*7c478bd9Sstevel@tonic-gate #define RSM_PERM_NONE 0 154*7c478bd9Sstevel@tonic-gate #define RSM_PERM_READ 0400 155*7c478bd9Sstevel@tonic-gate #define RSM_PERM_WRITE 0200 156*7c478bd9Sstevel@tonic-gate #define RSM_PERM_RDWR (RSM_PERM_READ|RSM_PERM_WRITE) 157*7c478bd9Sstevel@tonic-gate 158*7c478bd9Sstevel@tonic-gate /* Maximum io_request_count value in rsm_scat_gath_t */ 159*7c478bd9Sstevel@tonic-gate #define RSM_MAX_SGIOREQS 16 160*7c478bd9Sstevel@tonic-gate 161*7c478bd9Sstevel@tonic-gate /* 162*7c478bd9Sstevel@tonic-gate * Direct access sizes bits 163*7c478bd9Sstevel@tonic-gate */ 164*7c478bd9Sstevel@tonic-gate typedef enum { 165*7c478bd9Sstevel@tonic-gate RSM_DAS8 = 1, 166*7c478bd9Sstevel@tonic-gate RSM_DAS16 = 2, 167*7c478bd9Sstevel@tonic-gate RSM_DAS32 = 4, 168*7c478bd9Sstevel@tonic-gate RSM_DAS64 = 8 169*7c478bd9Sstevel@tonic-gate }rsm_access_size_t; 170*7c478bd9Sstevel@tonic-gate 171*7c478bd9Sstevel@tonic-gate typedef uint64_t rsm_addr_t; 172*7c478bd9Sstevel@tonic-gate typedef uint32_t rsm_node_id_t; 173*7c478bd9Sstevel@tonic-gate typedef uint32_t rsm_memseg_id_t; 174*7c478bd9Sstevel@tonic-gate typedef uint32_t rsm_permission_t; 175*7c478bd9Sstevel@tonic-gate 176*7c478bd9Sstevel@tonic-gate struct __rsm_memseg_import_handle; 177*7c478bd9Sstevel@tonic-gate typedef struct __rsm_memseg_import_handle *rsm_memseg_import_handle_t; 178*7c478bd9Sstevel@tonic-gate 179*7c478bd9Sstevel@tonic-gate struct __rsm_memseg_export_handle; 180*7c478bd9Sstevel@tonic-gate typedef struct __rsm_memseg_export_handle *rsm_memseg_export_handle_t; 181*7c478bd9Sstevel@tonic-gate 182*7c478bd9Sstevel@tonic-gate typedef enum { 183*7c478bd9Sstevel@tonic-gate RSM_BARRIER_SEGMENT = 0x01, 184*7c478bd9Sstevel@tonic-gate RSM_BARRIER_NODE = 0x02, 185*7c478bd9Sstevel@tonic-gate RSM_BARRIER_SEGMENT_THREAD = 0x11, 186*7c478bd9Sstevel@tonic-gate RSM_BARRIER_NODE_THREAD = 0x12 187*7c478bd9Sstevel@tonic-gate }rsm_barrier_type_t; 188*7c478bd9Sstevel@tonic-gate 189*7c478bd9Sstevel@tonic-gate typedef union { 190*7c478bd9Sstevel@tonic-gate uint64_t u64; 191*7c478bd9Sstevel@tonic-gate int64_t i64; 192*7c478bd9Sstevel@tonic-gate uint32_t u32[2]; 193*7c478bd9Sstevel@tonic-gate int32_t i32[2]; 194*7c478bd9Sstevel@tonic-gate uint16_t u16[4]; 195*7c478bd9Sstevel@tonic-gate int16_t i16[4]; 196*7c478bd9Sstevel@tonic-gate uint8_t u8[8]; 197*7c478bd9Sstevel@tonic-gate int8_t i8[8]; 198*7c478bd9Sstevel@tonic-gate uchar_t uc[8]; 199*7c478bd9Sstevel@tonic-gate char c[8]; 200*7c478bd9Sstevel@tonic-gate void *vp; 201*7c478bd9Sstevel@tonic-gate } rsm_barrier_component_t; 202*7c478bd9Sstevel@tonic-gate 203*7c478bd9Sstevel@tonic-gate typedef struct { 204*7c478bd9Sstevel@tonic-gate rsm_barrier_component_t comp[4]; 205*7c478bd9Sstevel@tonic-gate } rsm_barrier_t; 206*7c478bd9Sstevel@tonic-gate 207*7c478bd9Sstevel@tonic-gate typedef enum { 208*7c478bd9Sstevel@tonic-gate RSM_BARRIER_MODE_EXPLICIT, RSM_BARRIER_MODE_IMPLICIT 209*7c478bd9Sstevel@tonic-gate } rsm_barrier_mode_t; 210*7c478bd9Sstevel@tonic-gate 211*7c478bd9Sstevel@tonic-gate #ifdef __cplusplus 212*7c478bd9Sstevel@tonic-gate } 213*7c478bd9Sstevel@tonic-gate #endif 214*7c478bd9Sstevel@tonic-gate 215*7c478bd9Sstevel@tonic-gate #endif /* _SYS_RSM_RSM_COMMON_H */ 216