Use wrappers around all romvec functions on SPARC32 to flush register window and...
[openbios.git] / fs / hfs_mdb.h
blob652525d9683ceb9887356ea8d137426300aba2c5
1 /*
2 * Creation Date: <2000/09/03 23:04:27 samuel>
3 * Time-stamp: <2000/09/04 01:23:55 samuel>
5 * <hfs_mdb.h>
7 * HFS Master Directory Block (MDB)
9 * This program is free software; you can redistribute it and/or
10 * modify it under the terms of the GNU General Public License
11 * as published by the Free Software Foundation
15 #ifndef _H_HFS_MDB
16 #define _H_HFS_MDB
18 #include "libc/byteorder.h"
20 typedef unsigned char hfs_char_t;
21 typedef unsigned char hfs_ushort_t[2];
22 typedef unsigned char hfs_uint_t[4];
24 static inline unsigned short hfs_get_ushort(hfs_ushort_t addr)
26 return __be16_to_cpu(*((unsigned short *)(addr)));
29 static inline unsigned int hfs_get_uint(hfs_uint_t addr)
31 return __be32_to_cpu(*((unsigned int *)(addr)));
35 * The HFS Master Directory Block (MDB).
37 * Also known as the Volume Information Block (VIB), this structure is
38 * the HFS equivalent of a superblock.
40 * Reference: _Inside Macintosh: Files_ pages 2-59 through 2-62
42 * modified for HFS Extended
45 typedef struct hfs_mdb {
46 hfs_ushort_t drSigWord; /* Signature word indicating fs type */
47 hfs_uint_t drCrDate; /* fs creation date/time */
48 hfs_uint_t drLsMod; /* fs modification date/time */
49 hfs_ushort_t drAtrb; /* fs attributes */
50 hfs_ushort_t drNmFls; /* number of files in root directory */
51 hfs_ushort_t drVBMSt; /* location (in 512-byte blocks)
52 of the volume bitmap */
53 hfs_ushort_t drAllocPtr; /* location (in allocation blocks)
54 to begin next allocation search */
55 hfs_ushort_t drNmAlBlks; /* number of allocation blocks */
56 hfs_uint_t drAlBlkSiz; /* bytes in an allocation block */
57 hfs_uint_t drClpSiz; /* clumpsize, the number of bytes to
58 allocate when extending a file */
59 hfs_ushort_t drAlBlSt; /* location (in 512-byte blocks)
60 of the first allocation block */
61 hfs_uint_t drNxtCNID; /* CNID to assign to the next
62 file or directory created */
63 hfs_ushort_t drFreeBks; /* number of free allocation blocks */
64 hfs_char_t drVN[28]; /* the volume label */
65 hfs_uint_t drVolBkUp; /* fs backup date/time */
66 hfs_ushort_t drVSeqNum; /* backup sequence number */
67 hfs_uint_t drWrCnt; /* fs write count */
68 hfs_uint_t drXTClpSiz; /* clumpsize for the extents B-tree */
69 hfs_uint_t drCTClpSiz; /* clumpsize for the catalog B-tree */
70 hfs_ushort_t drNmRtDirs; /* number of directories in
71 the root directory */
72 hfs_uint_t drFilCnt; /* number of files in the fs */
73 hfs_uint_t drDirCnt; /* number of directories in the fs */
74 hfs_char_t drFndrInfo[32]; /* data used by the Finder */
75 hfs_ushort_t drEmbedSigWord; /* embedded volume signature */
76 hfs_uint_t drEmbedExtent; /* starting block number (xdrStABN)
77 and number of allocation blocks
78 (xdrNumABlks) occupied by embedded
79 volume */
80 hfs_uint_t drXTFlSize; /* bytes in the extents B-tree */
81 hfs_char_t drXTExtRec[12]; /* extents B-tree's first 3 extents */
82 hfs_uint_t drCTFlSize; /* bytes in the catalog B-tree */
83 hfs_char_t drCTExtRec[12]; /* catalog B-tree's first 3 extents */
84 } hfs_mdb_t;
86 #define HFS_PLUS_SIGNATURE 0x482b /* 'H+' */
87 #define HFS_SIGNATURE 0x4244 /* HFS / embedded HFS+ */
90 typedef struct hfs_plus_mdb
92 unsigned short signature;
93 unsigned short version;
94 unsigned int attributes;
95 unsigned int lastMountedVersion;
96 unsigned int reserved;
98 unsigned int createDate;
99 unsigned int modifyDate;
100 unsigned int backupDate;
101 unsigned int checkedDate;
103 unsigned int fileCount;
104 unsigned int folderCount;
106 unsigned int blockSize;
107 unsigned int totalBlocks;
108 unsigned int freeBlocks;
110 unsigned int nextAllocation;
111 unsigned int rsrcClumpSize;
112 unsigned int dataClumpSize;
114 /* ... there are more fields here ... */
115 } hfs_plus_mdb_t;
118 #endif /* _H_HFS_MDB */