1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License (the "License"). 6 * You may not use this file except in compliance with the License. 7 * 8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 9 * or http://www.opensolaris.org/os/licensing. 10 * See the License for the specific language governing permissions 11 * and limitations under the License. 12 * 13 * When distributing Covered Code, include this CDDL HEADER in each 14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 15 * If applicable, add the following below this CDDL HEADER, with the 16 * fields enclosed by brackets "[]" replaced with your own identifying 17 * information: Portions Copyright [yyyy] [name of copyright owner] 18 * 19 * CDDL HEADER END 20 */ 21 /* 22 * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 23 * Use is subject to license terms. 24 */ 25 26 #ifndef _NSC_NCALLIO_H 27 #define _NSC_NCALLIO_H 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 #ifndef __NSC_GEN__ 34 Error: Illegal #include - private file. 35 #endif 36 37 #include <sys/types.h> 38 #include <sys/nsctl/nsc_dev.h> 39 #include <sys/nsctl/nsctl.h> 40 41 /* 42 * ncall-io structures 43 */ 44 45 /* 46 * local per-device info structure 47 */ 48 typedef struct nsc_ncio_dev { 49 struct nsc_ncio_dev *next; /* linkage */ 50 char path[NSC_MAXPATH]; /* pathname */ 51 uint64_t phash; /* path hash */ 52 uint64_t partsize; /* size (FBAs) */ 53 int snode; /* server node */ 54 int ref; /* ref count */ 55 } nsc_ncio_dev_t; 56 57 58 /* 59 * on the wire partsize request structure (reply is inline). 60 */ 61 typedef struct nsc_ncio_size { 62 char path[NSC_MAXPATH]; 63 } nsc_ncio_size_t; 64 65 66 /* 67 * buffer handle and one the wire representation. 68 */ 69 70 #define NSC_NCIO_MAXDATA (NCALL_DATA_SZ - FBA_SIZE(1)) 71 72 73 typedef struct nsc_ncio_rw { 74 union { 75 struct { 76 int snode; /* server node */ 77 uint64_t pos; /* offset of i/o */ 78 uint64_t len; /* length of i/o */ 79 char path[NSC_MAXPATH]; /* path of device */ 80 } rw; 81 char pad[FBA_SIZE(1)]; /* pad to FBA */ 82 } rw_u; 83 char rw_data[NSC_NCIO_MAXDATA]; /* data */ 84 } nsc_ncio_rw_t; 85 86 #define rw_snode rw_u.rw.snode 87 #define rw_path rw_u.rw.path 88 #define rw_pos rw_u.rw.pos 89 #define rw_len rw_u.rw.len 90 91 92 typedef struct nsc_ncio_bufh { 93 nsc_buf_t bufh; 94 nsc_vec_t vec[2]; 95 void (*disc)(); 96 struct nsc_ncio_bufh *next; 97 struct nsc_ncio_rw rw; 98 } nsc_ncio_buf_t; 99 100 101 #ifdef __cplusplus 102 } 103 #endif 104 105 #endif /* _NSC_NCALLIO_H */