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_IOCTL_H 27 #define _NSC_IOCTL_H 28 29 #ifdef __cplusplus 30 extern "C" { 31 #endif 32 33 #include <sys/dkio.h> 34 #include <sys/vtoc.h> 35 #ifdef DKIOCPARTITION 36 #include <sys/efi_partition.h> 37 #endif 38 39 /* 40 * Ioctl definitions for Storage Device. 41 */ 42 43 #define _NSC_(x) (('S'<<16)|('D'<<8)|(x)) 44 45 #define NSCIOC_OPEN _NSC_(1) 46 #define NSCIOC_RESERVE _NSC_(2) 47 #define NSCIOC_RELEASE _NSC_(3) 48 #define NSCIOC_PARTSIZE _NSC_(4) 49 #define NSCIOC_FREEZE _NSC_(5) 50 #define NSCIOC_UNFREEZE _NSC_(6) 51 #define NSCIOC_ISFROZEN _NSC_(7) 52 #define NSCIOC_POWERMSG _NSC_(8) /* UPS/PCU power state */ 53 #define NSCIOC_NSKERND _NSC_(9) 54 #define NSCIOC_GLOBAL_SIZES _NSC_(10) /* size of RM segs */ 55 #define NSCIOC_GLOBAL_DATA _NSC_(11) 56 #define NSCIOC_NVMEM_CLEAN _NSC_(12) /* mark nvm nsc_global clean */ 57 #define NSCIOC_NVMEM_CLEANF _NSC_(13) /* force mark clean */ 58 #define NSCIOC_BSIZE _NSC_(14) /* get partition size */ 59 60 61 /* 62 * Structure definitions. 63 */ 64 65 66 struct nscioc_open { 67 char path[NSC_MAXPATH]; /* Pathname */ 68 int flag; /* Flags */ 69 int mode; /* Open modes */ 70 int pad[15]; 71 }; 72 73 74 struct nscioc_partsize { 75 uint64_t partsize; 76 }; 77 78 79 struct nskernd { 80 uint64_t data1; 81 uint64_t data2; 82 char char1[NSC_MAXPATH]; 83 char char2[NSC_MAXPATH]; 84 int command; 85 }; 86 87 88 struct nscioc_bsize { 89 uint64_t vtoc; /* (struct vtoc *) */ 90 uint64_t dki_info; /* (struct dk_cinfo *) */ 91 uint64_t raw_fd; /* dev_t of slice/partition */ 92 uint64_t p64; /* (struct partition64 *) */ 93 int efi; /* do we have an EFI partition table? */ 94 }; 95 96 97 #ifdef _KERNEL 98 extern int nskernd_command(intptr_t, int, int *); 99 extern int nskern_bsize(struct nscioc_bsize *, int *); 100 #endif 101 102 #ifdef __cplusplus 103 } 104 #endif 105 106 #endif /* _NSC_IOCTL_H */ 107