Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
fs
xfs
xfs_types.h
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2000-2005 Silicon Graphics, Inc.
3
* All Rights Reserved.
4
*
5
* This program is free software; you can redistribute it and/or
6
* modify it under the terms of the GNU General Public License as
7
* published by the Free Software Foundation.
8
*
9
* This program is distributed in the hope that it would be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
13
*
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write the Free Software Foundation,
16
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
17
*/
18
#ifndef __XFS_TYPES_H__
19
#define __XFS_TYPES_H__
20
21
#ifdef __KERNEL__
22
23
/*
24
* Additional type declarations for XFS
25
*/
26
typedef
signed
char
__int8_t;
27
typedef
unsigned
char
__uint8_t;
28
typedef
signed
short
int
__int16_t;
29
typedef
unsigned
short
int
__uint16_t;
30
typedef
signed
int
__int32_t;
31
typedef
unsigned
int
__uint32_t;
32
typedef
signed
long
long
int
__int64_t;
33
typedef
unsigned
long
long
int
__uint64_t;
34
35
typedef
enum
{ B_FALSE,B_TRUE } boolean_t;
36
typedef
__uint32_t prid_t;
/* project ID */
37
typedef
__uint32_t inst_t;
/* an instruction */
38
39
typedef
__s64
xfs_off_t;
/* <file offset> type */
40
typedef
unsigned
long
long
xfs_ino_t;
/* <inode> type */
41
typedef
__s64
xfs_daddr_t;
/* <disk address> type */
42
typedef
char
* xfs_caddr_t;
/* <core address> type */
43
typedef
__u32
xfs_dev_t;
44
typedef
__u32
xfs_nlink_t;
45
46
/* __psint_t is the same size as a pointer */
47
#if (BITS_PER_LONG == 32)
48
typedef
__int32_t __psint_t;
49
typedef
__uint32_t __psunsigned_t;
50
#elif (BITS_PER_LONG == 64)
51
typedef
__int64_t __psint_t;
52
typedef
__uint64_t __psunsigned_t;
53
#else
54
#error BITS_PER_LONG must be 32 or 64
55
#endif
56
57
#endif
/* __KERNEL__ */
58
59
typedef
__uint32_t
xfs_agblock_t
;
/* blockno in alloc. group */
60
typedef
__uint32_t
xfs_agino_t
;
/* inode # within allocation grp */
61
typedef
__uint32_t
xfs_extlen_t
;
/* extent length in blocks */
62
typedef
__uint32_t
xfs_agnumber_t
;
/* allocation group number */
63
typedef
__int32_t
xfs_extnum_t
;
/* # of extents in a file */
64
typedef
__int16_t
xfs_aextnum_t
;
/* # extents in an attribute fork */
65
typedef
__int64_t
xfs_fsize_t
;
/* bytes in a file */
66
typedef
__uint64_t
xfs_ufsize_t
;
/* unsigned bytes in a file */
67
68
typedef
__int32_t
xfs_suminfo_t
;
/* type of bitmap summary info */
69
typedef
__int32_t
xfs_rtword_t
;
/* word type for bitmap manipulations */
70
71
typedef
__int64_t
xfs_lsn_t
;
/* log sequence number */
72
typedef
__int32_t
xfs_tid_t
;
/* transaction identifier */
73
74
typedef
__uint32_t
xfs_dablk_t
;
/* dir/attr block number (in file) */
75
typedef
__uint32_t
xfs_dahash_t
;
/* dir/attr hash value */
76
77
/*
78
* These types are 64 bits on disk but are either 32 or 64 bits in memory.
79
* Disk based types:
80
*/
81
typedef
__uint64_t
xfs_dfsbno_t
;
/* blockno in filesystem (agno|agbno) */
82
typedef
__uint64_t
xfs_drfsbno_t
;
/* blockno in filesystem (raw) */
83
typedef
__uint64_t
xfs_drtbno_t
;
/* extent (block) in realtime area */
84
typedef
__uint64_t
xfs_dfiloff_t
;
/* block number in a file */
85
typedef
__uint64_t
xfs_dfilblks_t
;
/* number of blocks in a file */
86
87
/*
88
* Memory based types are conditional.
89
*/
90
#if XFS_BIG_BLKNOS
91
typedef
__uint64_t
xfs_fsblock_t
;
/* blockno in filesystem (agno|agbno) */
92
typedef
__uint64_t
xfs_rfsblock_t
;
/* blockno in filesystem (raw) */
93
typedef
__uint64_t
xfs_rtblock_t
;
/* extent (block) in realtime area */
94
typedef
__int64_t
xfs_srtblock_t
;
/* signed version of xfs_rtblock_t */
95
#else
96
typedef
__uint32_t
xfs_fsblock_t
;
/* blockno in filesystem (agno|agbno) */
97
typedef
__uint32_t
xfs_rfsblock_t
;
/* blockno in filesystem (raw) */
98
typedef
__uint32_t
xfs_rtblock_t
;
/* extent (block) in realtime area */
99
typedef
__int32_t
xfs_srtblock_t
;
/* signed version of xfs_rtblock_t */
100
#endif
101
typedef
__uint64_t
xfs_fileoff_t
;
/* block number in a file */
102
typedef
__int64_t
xfs_sfiloff_t
;
/* signed block number in a file */
103
typedef
__uint64_t
xfs_filblks_t
;
/* number of blocks in a file */
104
105
106
/*
107
* Null values for the types.
108
*/
109
#define NULLDFSBNO ((xfs_dfsbno_t)-1)
110
#define NULLDRFSBNO ((xfs_drfsbno_t)-1)
111
#define NULLDRTBNO ((xfs_drtbno_t)-1)
112
#define NULLDFILOFF ((xfs_dfiloff_t)-1)
113
114
#define NULLFSBLOCK ((xfs_fsblock_t)-1)
115
#define NULLRFSBLOCK ((xfs_rfsblock_t)-1)
116
#define NULLRTBLOCK ((xfs_rtblock_t)-1)
117
#define NULLFILEOFF ((xfs_fileoff_t)-1)
118
119
#define NULLAGBLOCK ((xfs_agblock_t)-1)
120
#define NULLAGNUMBER ((xfs_agnumber_t)-1)
121
#define NULLEXTNUM ((xfs_extnum_t)-1)
122
123
#define NULLCOMMITLSN ((xfs_lsn_t)-1)
124
125
#define NULLFSINO ((xfs_ino_t)-1)
126
#define NULLAGINO ((xfs_agino_t)-1)
127
128
/*
129
* Max values for extlen, extnum, aextnum.
130
*/
131
#define MAXEXTLEN ((xfs_extlen_t)0x001fffff)
/* 21 bits */
132
#define MAXEXTNUM ((xfs_extnum_t)0x7fffffff)
/* signed int */
133
#define MAXAEXTNUM ((xfs_aextnum_t)0x7fff)
/* signed short */
134
135
/*
136
* Minimum and maximum blocksize and sectorsize.
137
* The blocksize upper limit is pretty much arbitrary.
138
* The sectorsize upper limit is due to sizeof(sb_sectsize).
139
*/
140
#define XFS_MIN_BLOCKSIZE_LOG 9
/* i.e. 512 bytes */
141
#define XFS_MAX_BLOCKSIZE_LOG 16
/* i.e. 65536 bytes */
142
#define XFS_MIN_BLOCKSIZE (1 << XFS_MIN_BLOCKSIZE_LOG)
143
#define XFS_MAX_BLOCKSIZE (1 << XFS_MAX_BLOCKSIZE_LOG)
144
#define XFS_MIN_SECTORSIZE_LOG 9
/* i.e. 512 bytes */
145
#define XFS_MAX_SECTORSIZE_LOG 15
/* i.e. 32768 bytes */
146
#define XFS_MIN_SECTORSIZE (1 << XFS_MIN_SECTORSIZE_LOG)
147
#define XFS_MAX_SECTORSIZE (1 << XFS_MAX_SECTORSIZE_LOG)
148
149
/*
150
* Min numbers of data/attr fork btree root pointers.
151
*/
152
#define MINDBTPTRS 3
153
#define MINABTPTRS 2
154
155
/*
156
* MAXNAMELEN is the length (including the terminating null) of
157
* the longest permissible file (component) name.
158
*/
159
#define MAXNAMELEN 256
160
161
typedef
enum
{
162
XFS_LOOKUP_EQi
,
XFS_LOOKUP_LEi
,
XFS_LOOKUP_GEi
163
}
xfs_lookup_t
;
164
165
typedef
enum
{
166
XFS_BTNUM_BNOi
,
XFS_BTNUM_CNTi
,
XFS_BTNUM_BMAPi
,
XFS_BTNUM_INOi
,
167
XFS_BTNUM_MAX
168
}
xfs_btnum_t
;
169
170
struct
xfs_name
{
171
const
unsigned
char
*
name
;
172
int
len
;
173
};
174
175
#endif
/* __XFS_TYPES_H__ */
Generated on Thu Jan 10 2013 14:50:42 for Linux Kernel by
1.8.2