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
ntfs
ntfs.h
Go to the documentation of this file.
1
/*
2
* ntfs.h - Defines for NTFS Linux kernel driver. Part of the Linux-NTFS
3
* project.
4
*
5
* Copyright (c) 2001-2005 Anton Altaparmakov
6
* Copyright (C) 2002 Richard Russon
7
*
8
* This program/include file is free software; you can redistribute it and/or
9
* modify it under the terms of the GNU General Public License as published
10
* by the Free Software Foundation; either version 2 of the License, or
11
* (at your option) any later version.
12
*
13
* This program/include file is distributed in the hope that it will be
14
* useful, but WITHOUT ANY WARRANTY; without even the implied warranty
15
* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16
* GNU General Public License for more details.
17
*
18
* You should have received a copy of the GNU General Public License
19
* along with this program (in the main directory of the Linux-NTFS
20
* distribution in the file COPYING); if not, write to the Free Software
21
* Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
22
*/
23
24
#ifndef _LINUX_NTFS_H
25
#define _LINUX_NTFS_H
26
27
#include <linux/stddef.h>
28
#include <linux/kernel.h>
29
#include <linux/module.h>
30
#include <linux/compiler.h>
31
#include <linux/fs.h>
32
#include <
linux/nls.h
>
33
#include <
linux/smp.h
>
34
#include <
linux/pagemap.h
>
35
36
#include "
types.h
"
37
#include "
volume.h
"
38
#include "
layout.h
"
39
40
typedef
enum
{
41
NTFS_BLOCK_SIZE
= 512,
42
NTFS_BLOCK_SIZE_BITS
= 9,
43
NTFS_SB_MAGIC
= 0x5346544e,
/* 'NTFS' */
44
NTFS_MAX_NAME_LEN
= 255,
45
NTFS_MAX_ATTR_NAME_LEN
= 255,
46
NTFS_MAX_CLUSTER_SIZE
= 64 * 1024,
/* 64kiB */
47
NTFS_MAX_PAGES_PER_CLUSTER
=
NTFS_MAX_CLUSTER_SIZE
/
PAGE_CACHE_SIZE
,
48
}
NTFS_CONSTANTS
;
49
50
/* Global variables. */
51
52
/* Slab caches (from super.c). */
53
extern
struct
kmem_cache
*
ntfs_name_cache
;
54
extern
struct
kmem_cache
*
ntfs_inode_cache
;
55
extern
struct
kmem_cache
*
ntfs_big_inode_cache
;
56
extern
struct
kmem_cache
*
ntfs_attr_ctx_cache
;
57
extern
struct
kmem_cache
*
ntfs_index_ctx_cache
;
58
59
/* The various operations structs defined throughout the driver files. */
60
extern
const
struct
address_space_operations
ntfs_aops
;
61
extern
const
struct
address_space_operations
ntfs_mst_aops
;
62
63
extern
const
struct
file_operations
ntfs_file_ops
;
64
extern
const
struct
inode_operations
ntfs_file_inode_ops
;
65
66
extern
const
struct
file_operations
ntfs_dir_ops
;
67
extern
const
struct
inode_operations
ntfs_dir_inode_ops
;
68
69
extern
const
struct
file_operations
ntfs_empty_file_ops
;
70
extern
const
struct
inode_operations
ntfs_empty_inode_ops
;
71
72
extern
const
struct
export_operations
ntfs_export_ops
;
73
80
static
inline
ntfs_volume
*NTFS_SB(
struct
super_block
*
sb
)
81
{
82
return
sb->
s_fs_info
;
83
}
84
85
/* Declarations of functions and global variables. */
86
87
/* From fs/ntfs/compress.c */
88
extern
int
ntfs_read_compressed_block
(
struct
page
*
page
);
89
extern
int
allocate_compression_buffers
(
void
);
90
extern
void
free_compression_buffers
(
void
);
91
92
/* From fs/ntfs/super.c */
93
#define default_upcase_len 0x10000
94
extern
struct
mutex
ntfs_lock
;
95
96
typedef
struct
{
97
int
val
;
98
char
*
str
;
99
}
option_t
;
100
extern
const
option_t
on_errors_arr
[];
101
102
/* From fs/ntfs/mst.c */
103
extern
int
post_read_mst_fixup
(NTFS_RECORD *
b
,
const
u32
size
);
104
extern
int
pre_write_mst_fixup
(NTFS_RECORD *
b
,
const
u32
size
);
105
extern
void
post_write_mst_fixup
(NTFS_RECORD *
b
);
106
107
/* From fs/ntfs/unistr.c */
108
extern
bool
ntfs_are_names_equal
(
const
ntfschar
*
s1
,
size_t
s1_len,
109
const
ntfschar
*
s2
,
size_t
s2_len,
110
const
IGNORE_CASE_BOOL
ic,
111
const
ntfschar
*upcase,
const
u32
upcase_size);
112
extern
int
ntfs_collate_names
(
const
ntfschar
*name1,
const
u32
name1_len,
113
const
ntfschar
*name2,
const
u32
name2_len,
114
const
int
err_val,
const
IGNORE_CASE_BOOL
ic,
115
const
ntfschar
*upcase,
const
u32
upcase_len);
116
extern
int
ntfs_ucsncmp
(
const
ntfschar
*
s1
,
const
ntfschar
*
s2
,
size_t
n
);
117
extern
int
ntfs_ucsncasecmp
(
const
ntfschar
*
s1
,
const
ntfschar
*
s2
,
size_t
n
,
118
const
ntfschar
*upcase,
const
u32
upcase_size);
119
extern
void
ntfs_upcase_name
(
ntfschar
*
name
,
u32
name_len
,
120
const
ntfschar
*upcase,
const
u32
upcase_len);
121
extern
void
ntfs_file_upcase_value
(FILE_NAME_ATTR *file_name_attr,
122
const
ntfschar
*upcase,
const
u32
upcase_len);
123
extern
int
ntfs_file_compare_values
(FILE_NAME_ATTR *file_name_attr1,
124
FILE_NAME_ATTR *file_name_attr2,
125
const
int
err_val,
const
IGNORE_CASE_BOOL
ic,
126
const
ntfschar
*upcase,
const
u32
upcase_len);
127
extern
int
ntfs_nlstoucs
(
const
ntfs_volume
*
vol
,
const
char
*
ins
,
128
const
int
ins_len,
ntfschar
**outs);
129
extern
int
ntfs_ucstonls
(
const
ntfs_volume
*
vol
,
const
ntfschar
*
ins
,
130
const
int
ins_len,
unsigned
char
**outs,
int
outs_len);
131
132
/* From fs/ntfs/upcase.c */
133
extern
ntfschar
*
generate_default_upcase
(
void
);
134
135
static
inline
int
ntfs_ffs(
int
x
)
136
{
137
int
r
= 1;
138
139
if
(!x)
140
return
0;
141
if
(!(x & 0xffff)) {
142
x >>= 16;
143
r += 16;
144
}
145
if
(!(x & 0xff)) {
146
x >>= 8;
147
r += 8;
148
}
149
if
(!(x & 0xf)) {
150
x >>= 4;
151
r += 4;
152
}
153
if
(!(x & 3)) {
154
x >>= 2;
155
r += 2;
156
}
157
if
(!(x & 1)) {
158
x >>= 1;
159
r += 1;
160
}
161
return
r
;
162
}
163
164
#endif
/* _LINUX_NTFS_H */
Generated on Thu Jan 10 2013 14:49:18 for Linux Kernel by
1.8.2