8322 nl: misleading-indentation
[unleashed/tickless.git] / usr / src / cmd / fs.d / pcfs / mkfs / mkfs_pcfs.h
blob1d1b89ad2671562debddd6d0d3e734b36bc5af9f
1 /*
2 * CDDL HEADER START
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
20 * CDDL HEADER END
23 * Copyright (c) 1996, 1998, 1999 by Sun Microsystems, Inc.
24 * All rights reserved.
27 #ifndef _MKFS_PCFS_H
28 #define _MKFS_PCFS_H
30 #pragma ident "%Z%%M% %I% %E% SMI"
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
36 #define BPSEC 512 /* Assumed # of bytes per sector */
38 #define OPCODE1 0xE9
39 #define OPCODE2 0xEB
40 #define BOOTSECSIG 0xAA55
43 * Offset (in bytes) from address of boot sector to where we put
44 * the backup copy of that sector. (FAT32 only)
46 #define BKUP_BOOTSECT_OFFSET 0xC00
48 #define uppercase(c) ((c) >= 'a' && (c) <= 'z' ? (c) - 'a' + 'A' : (c))
50 #define FAT12_TYPE_STRING "FAT12 "
51 #define FAT16_TYPE_STRING "FAT16 "
52 #define FAT32_TYPE_STRING "FAT32 "
54 #define FAT12_ENTSPERSECT 341
55 #define FAT16_ENTSPERSECT 256
56 #define FAT32_ENTSPERSECT 128
58 #ifndef SUNIXOSBOOT
59 #define SUNIXOSBOOT 190 /* Solaris UNIX boot partition */
60 #endif
63 * A macro implementing a ceiling function for integer divides.
65 #define idivceil(dvend, dvsor) \
66 ((dvend)/(dvsor) + (((dvend)%(dvsor) == 0) ? 0 : 1))
69 * Return values for the seek_XXX functions
71 #define PART_NOT_FOUND 0
72 #define PART_FOUND 1
75 * MS-DOS Disk layout:
77 * ---------------------
78 * | Boot sector |
79 * |-------------------|
80 * | Reserved area |
81 * |-------------------|
82 * | FAT #1 |
83 * |-------------------|
84 * | FAT #2 |
85 * |-------------------|
86 * | Root directory |
87 * |-------------------|
88 * | |
89 * | File area |
90 * |___________________|
93 #ifdef i386
94 #pragma pack(1)
95 #endif
96 struct _orig_bios_param_blk {
97 uint16_t bytes_sector;
98 uchar_t sectors_per_cluster;
99 uint16_t resv_sectors;
100 uchar_t num_fats;
101 uint16_t num_root_entries;
102 uint16_t sectors_in_volume;
103 uchar_t media;
104 uint16_t sectors_per_fat;
105 uint16_t sectors_per_track;
106 uint16_t heads;
107 uint32_t hidden_sectors;
108 uint32_t sectors_in_logical_volume;
110 #ifdef i386
111 #pragma pack()
112 #endif
114 #ifdef i386
115 #pragma pack(1)
116 #endif
117 struct _bpb32_extensions {
118 uint32_t big_sectors_per_fat;
119 uint16_t ext_flags;
120 uchar_t fs_vers_lo;
121 uchar_t fs_vers_hi;
122 uint32_t root_dir_clust;
123 uint16_t fsinfosec;
124 uint16_t backupboot;
125 uint16_t reserved[6];
127 #ifdef i386
128 #pragma pack()
129 #endif
131 #ifdef i386
132 #pragma pack(1)
133 #endif
134 struct _bpb_extensions {
135 uchar_t phys_drive_num;
136 uchar_t reserved;
137 uchar_t ext_signature;
138 uint32_t volume_id;
139 uchar_t volume_label[11];
140 uchar_t type[8];
142 #ifdef i386
143 #pragma pack()
144 #endif
146 #ifdef i386
147 #pragma pack(1)
148 #endif
149 struct _sun_bpb_extensions {
150 uint16_t bs_offset_high;
151 uint16_t bs_offset_low;
153 #ifdef i386
154 #pragma pack()
155 #endif
158 * bpb_t is a conglomeration of all the fields a bpb can have. Every
159 * bpb will have the orig_bios struct, but only FAT32's will have bpb32,
160 * and only Solaris boot diskettes will have the sunbpb structure.
162 typedef struct _bios_param_blk {
163 struct _orig_bios_param_blk bpb;
164 struct _bpb32_extensions bpb32;
165 struct _bpb_extensions ebpb;
166 struct _sun_bpb_extensions sunbpb;
167 } bpb_t;
169 #ifdef i386
170 #pragma pack(1)
171 struct _bpb_head {
172 uchar_t bs_jump_code[3];
173 uchar_t bs_oem_name[8];
174 struct _orig_bios_param_blk bs_bpb;
176 #pragma pack()
178 #pragma pack(1)
179 struct _boot_sector {
180 struct _bpb_head bs_front;
181 struct _bpb_extensions bs_ebpb;
182 struct _sun_bpb_extensions bs_sebpb;
183 uchar_t bs_bootstrap[444];
184 uchar_t bs_signature[2];
186 #pragma pack()
188 #pragma pack(1)
189 struct _boot_sector32 {
190 struct _bpb_head bs_front;
191 struct _bpb32_extensions bs_bpb32;
192 struct _bpb_extensions bs_ebpb;
193 uchar_t bs_bootstrap[420];
194 uchar_t bs_signature[2];
196 #pragma pack()
197 #else
198 #define ORIG_BPB_START_INDEX 8 /* index into filler field */
199 #define EXT_BPB_START_INDEX 33 /* index into filler field */
200 #define BPB_32_START_INDEX 33 /* index into filler field */
201 #define EXT_BPB_32_START_INDEX 61 /* index into filler field */
202 struct _boot_sector {
203 uchar_t bs_jump_code[3];
204 uchar_t bs_filler[59];
205 uchar_t bs_sun_bpb[4];
206 uchar_t bs_bootstrap[444];
207 uchar_t bs_signature[2];
210 struct _boot_sector32 {
211 uchar_t bs_jump_code[3];
212 uchar_t bs_filler[87];
213 uchar_t bs_bootstrap[420];
214 uchar_t bs_signature[2];
216 #endif
218 typedef union _ubso {
219 struct _boot_sector bs;
220 struct _boot_sector32 bs32;
221 struct mboot mb;
222 uchar_t buf[BPSEC];
223 } boot_sector_t;
225 #ifdef __cplusplus
227 #endif
229 #endif /* _MKFS_PCFS_H */