xref: /titanic_51/usr/src/uts/common/avs/ns/nsctl/nsc_ioctl.h (revision fcf3ce441efd61da9bb2884968af01cb7c1452cc)
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