1 | /*␊ |
2 | * Copyright (c) 1998-2006 Apple Computer, Inc. All rights reserved.␊ |
3 | *␊ |
4 | * @APPLE_OSREFERENCE_LICENSE_HEADER_START@␊ |
5 | * ␊ |
6 | * This file contains Original Code and/or Modifications of Original Code␊ |
7 | * as defined in and that are subject to the Apple Public Source License␊ |
8 | * Version 2.0 (the 'License'). You may not use this file except in␊ |
9 | * compliance with the License. The rights granted to you under the License␊ |
10 | * may not be used to create, or enable the creation or redistribution of,␊ |
11 | * unlawful or unlicensed copies of an Apple operating system, or to␊ |
12 | * circumvent, violate, or enable the circumvention or violation of, any␊ |
13 | * terms of an Apple operating system software license agreement.␊ |
14 | * ␊ |
15 | * Please obtain a copy of the License at␊ |
16 | * http://www.opensource.apple.com/apsl/ and read it before using this file.␊ |
17 | * ␊ |
18 | * The Original Code and all software distributed under the License are␊ |
19 | * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER␊ |
20 | * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,␊ |
21 | * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,␊ |
22 | * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.␊ |
23 | * Please see the License for the specific language governing rights and␊ |
24 | * limitations under the License.␊ |
25 | * ␊ |
26 | * @APPLE_OSREFERENCE_LICENSE_HEADER_END@␊ |
27 | */␊ |
28 | ␊ |
29 | #ifndef␉_SYS_DISK_H_␊ |
30 | #define␉_SYS_DISK_H_␊ |
31 | ␊ |
32 | #include <stdint.h>␊ |
33 | //#include <sys/ioctl.h>␊ |
34 | ␊ |
35 | /*␊ |
36 | * Definitions␊ |
37 | *␊ |
38 | * ioctl description␊ |
39 | * ------------------------------------- ---------------------------------------␊ |
40 | * DKIOCEJECT eject media␊ |
41 | * DKIOCSYNCHRONIZECACHE flush media␊ |
42 | *␊ |
43 | * DKIOCFORMAT format media␊ |
44 | * DKIOCGETFORMATCAPACITIES get media's formattable capacities␊ |
45 | *␊ |
46 | * DKIOCGETBLOCKSIZE get media's block size␊ |
47 | * DKIOCGETBLOCKCOUNT get media's block count␊ |
48 | * DKIOCGETFIRMWAREPATH get media's firmware path␊ |
49 | *␊ |
50 | * DKIOCISFORMATTED is media formatted?␊ |
51 | * DKIOCISWRITABLE is media writable?␊ |
52 | *␊ |
53 | * DKIOCREQUESTIDLE idle media␊ |
54 | * DKIOCDISCARD delete unused data␊ |
55 | *␊ |
56 | * DKIOCGETMAXBLOCKCOUNTREAD get maximum block count for reads␊ |
57 | * DKIOCGETMAXBLOCKCOUNTWRITE get maximum block count for writes␊ |
58 | * DKIOCGETMAXBYTECOUNTREAD get maximum byte count for reads␊ |
59 | * DKIOCGETMAXBYTECOUNTWRITE get maximum byte count for writes␊ |
60 | *␊ |
61 | * DKIOCGETMAXSEGMENTCOUNTREAD get maximum segment count for reads␊ |
62 | * DKIOCGETMAXSEGMENTCOUNTWRITE get maximum segment count for writes␊ |
63 | * DKIOCGETMAXSEGMENTBYTECOUNTREAD get maximum segment byte count for reads␊ |
64 | * DKIOCGETMAXSEGMENTBYTECOUNTWRITE get maximum segment byte count for writes␊ |
65 | *␊ |
66 | * DKIOCGETMINSEGMENTALIGNMENTBYTECOUNT get minimum segment alignment in bytes␊ |
67 | * DKIOCGETMAXSEGMENTADDRESSABLEBITCOUNT get maximum segment width in bits␊ |
68 | *␊ |
69 | * DKIOCGETPHYSICALBLOCKSIZE get device's block size␊ |
70 | * DKIOCGETCOMMANDPOOLSIZE get device's queue depth␊ |
71 | */␊ |
72 | ␊ |
73 | typedef struct␊ |
74 | {␊ |
75 | uint64_t offset;␊ |
76 | uint64_t length;␊ |
77 | ␊ |
78 | uint8_t reserved0128[16]; /* reserved, clear to zero */␊ |
79 | } dk_discard_t;␊ |
80 | ␊ |
81 | typedef struct␊ |
82 | {␊ |
83 | char path[128];␊ |
84 | } dk_firmware_path_t;␊ |
85 | ␊ |
86 | typedef struct␊ |
87 | {␊ |
88 | uint64_t blockCount;␊ |
89 | uint32_t blockSize;␊ |
90 | ␊ |
91 | uint8_t reserved0096[4]; /* reserved, clear to zero */␊ |
92 | } dk_format_capacity_t;␊ |
93 | ␊ |
94 | typedef struct␊ |
95 | {␊ |
96 | dk_format_capacity_t * capacities;␊ |
97 | uint32_t capacitiesCount; /* use zero to probe count */␊ |
98 | ␊ |
99 | #ifdef __LP64__␊ |
100 | uint8_t reserved0096[4]; /* reserved, clear to zero */␊ |
101 | #else /* !__LP64__ */␊ |
102 | uint8_t reserved0064[8]; /* reserved, clear to zero */␊ |
103 | #endif /* !__LP64__ */␊ |
104 | } dk_format_capacities_t;␊ |
105 | ␊ |
106 | #define DKIOCEJECT _IO('d', 21)␊ |
107 | #define DKIOCSYNCHRONIZECACHE _IO('d', 22)␊ |
108 | ␊ |
109 | #define DKIOCFORMAT _IOW('d', 26, dk_format_capacity_t)␊ |
110 | #define DKIOCGETFORMATCAPACITIES _IOWR('d', 26, dk_format_capacities_t)␊ |
111 | ␊ |
112 | #define DKIOCGETBLOCKSIZE _IOR('d', 24, uint32_t)␊ |
113 | #define DKIOCGETBLOCKCOUNT _IOR('d', 25, uint64_t)␊ |
114 | #define DKIOCGETFIRMWAREPATH _IOR('d', 28, dk_firmware_path_t)␊ |
115 | ␊ |
116 | #define DKIOCISFORMATTED _IOR('d', 23, uint32_t)␊ |
117 | #define DKIOCISWRITABLE _IOR('d', 29, uint32_t)␊ |
118 | ␊ |
119 | #define DKIOCREQUESTIDLE _IO('d', 30)␊ |
120 | #define DKIOCDISCARD _IOW('d', 31, dk_discard_t)␊ |
121 | ␊ |
122 | #define DKIOCGETMAXBLOCKCOUNTREAD _IOR('d', 64, uint64_t)␊ |
123 | #define DKIOCGETMAXBLOCKCOUNTWRITE _IOR('d', 65, uint64_t)␊ |
124 | #define DKIOCGETMAXBYTECOUNTREAD _IOR('d', 70, uint64_t)␊ |
125 | #define DKIOCGETMAXBYTECOUNTWRITE _IOR('d', 71, uint64_t)␊ |
126 | ␊ |
127 | #define DKIOCGETMAXSEGMENTCOUNTREAD _IOR('d', 66, uint64_t)␊ |
128 | #define DKIOCGETMAXSEGMENTCOUNTWRITE _IOR('d', 67, uint64_t)␊ |
129 | #define DKIOCGETMAXSEGMENTBYTECOUNTREAD _IOR('d', 68, uint64_t)␊ |
130 | #define DKIOCGETMAXSEGMENTBYTECOUNTWRITE _IOR('d', 69, uint64_t)␊ |
131 | ␊ |
132 | #define DKIOCGETMINSEGMENTALIGNMENTBYTECOUNT _IOR('d', 74, uint64_t)␊ |
133 | #define DKIOCGETMAXSEGMENTADDRESSABLEBITCOUNT _IOR('d', 75, uint64_t)␊ |
134 | ␊ |
135 | #define DKIOCGETPHYSICALBLOCKSIZE _IOR('d', 77, uint32_t)␊ |
136 | #define DKIOCGETCOMMANDPOOLSIZE _IOR('d', 78, uint32_t)␊ |
137 | ␊ |
138 | ␊ |
139 | #endif␉/* _SYS_DISK_H_ */␊ |
140 | |