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