blob: fcc062d51c843cebe7f2856e024a02563b5f718e (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_MHD_H
#define _SYS_MHD_H
#ifdef __cplusplus
extern "C" {
#endif
/*
* Definitions for multi-host device I/O control commands
*/
#define MHIOC ('M'<<8)
#define MHIOCENFAILFAST (MHIOC|1)
#define MHIOCTKOWN (MHIOC|2)
#define MHIOCRELEASE (MHIOC|3)
#define MHIOCSTATUS (MHIOC|4)
#define MHIOCGRP_INKEYS (MHIOC|5)
#define MHIOCGRP_INRESV (MHIOC|6)
#define MHIOCGRP_REGISTER (MHIOC|7)
#define MHIOCGRP_RESERVE (MHIOC|8)
#define MHIOCGRP_PREEMPTANDABORT (MHIOC|9)
#define MHIOCGRP_PREEMPT (MHIOC|10)
#define MHIOCGRP_CLEAR (MHIOC|11)
#define MHIOCGRP_REGISTERANDIGNOREKEY (MHIOC|14)
#define MHIOCQRESERVE (MHIOC|12)
#define MHIOCREREGISTERDEVID (MHIOC|13)
/*
* Following is the structure to specify the delay parameters in
* milliseconds, via the MHIOCTKOWN ioctl.
*/
struct mhioctkown {
int reinstate_resv_delay;
int min_ownership_delay;
int max_ownership_delay;
};
#define MHIOC_RESV_KEY_SIZE 8
typedef struct mhioc_resv_key {
uchar_t key[MHIOC_RESV_KEY_SIZE];
} mhioc_resv_key_t;
typedef struct mhioc_key_list {
uint32_t listsize;
uint32_t listlen;
mhioc_resv_key_t *list;
} mhioc_key_list_t;
typedef struct mhioc_inkeys {
uint32_t generation;
mhioc_key_list_t *li;
} mhioc_inkeys_t;
#if defined(_SYSCALL32)
struct mhioc_key_list32 {
uint32_t listsize;
uint32_t listlen;
caddr32_t list;
} mhioc_key_list32_t;
struct mhioc_inkeys32 {
uint32_t generation;
caddr32_t li;
} mhioc_inkeys32_t;
#endif
typedef struct mhioc_resv_desc {
mhioc_resv_key_t key;
uint8_t type;
uint8_t scope;
uint32_t scope_specific_addr;
} mhioc_resv_desc_t;
typedef struct mhioc_resv_desc_list {
uint32_t listsize;
uint32_t listlen;
mhioc_resv_desc_t *list;
} mhioc_resv_desc_list_t;
typedef struct mhioc_inresvs {
uint32_t generation;
mhioc_resv_desc_list_t *li;
} mhioc_inresvs_t;
#if defined(_SYSCALL32)
struct mhioc_resv_desc_list32 {
uint32_t listsize;
uint32_t listlen;
caddr32_t list;
} mhioc_resv_desc_list32_t;
typedef struct mhioc_inresvs32 {
uint32_t generation;
caddr32_t li;
} mhioc_inresvs32_t;
#endif
typedef struct mhioc_register {
mhioc_resv_key_t oldkey;
mhioc_resv_key_t newkey;
boolean_t aptpl; /* True if persistent across power failures */
} mhioc_register_t;
typedef struct mhioc_preemptandabort {
mhioc_resv_desc_t resvdesc;
mhioc_resv_key_t victim_key;
} mhioc_preemptandabort_t;
typedef struct mhioc_registerandignorekey {
mhioc_resv_key_t newkey;
boolean_t aptpl; /* True if persistent across power failures */
} mhioc_registerandignorekey_t;
/*
* SCSI-3 PGR Reservation Type Codes. Codes with the _OBSOLETE suffix
* have been removed from the SCSI3 PGR standard.
*/
#define SCSI3_RESV_READSHARED_OBSOLETE 0
#define SCSI3_RESV_WRITEEXCLUSIVE 1
#define SCSI3_RESV_READEXCLUSIVE_OBSOLETE 2
#define SCSI3_RESV_EXCLUSIVEACCESS 3
#define SCSI3_RESV_SHAREDACCESS_OBSOLETE 4
#define SCSI3_RESV_WRITEEXCLUSIVEREGISTRANTSONLY 5
#define SCSI3_RESV_EXCLUSIVEACCESSREGISTRANTSONLY 6
#define SCSI3_SCOPE_LOGICALUNIT 0
#define SCSI3_SCOPE_EXTENT_OBSOLETE 1
#define SCSI3_SCOPE_ELEMENT 2
#ifdef __cplusplus
}
#endif
#endif /* _SYS_MHD_H */
|