diff options
Diffstat (limited to 'fs/ntfs/bitmap.h')
-rw-r--r-- | fs/ntfs/bitmap.h | 118 |
1 files changed, 118 insertions, 0 deletions
diff --git a/fs/ntfs/bitmap.h b/fs/ntfs/bitmap.h new file mode 100644 index 000000000000..bb50d6bc9212 --- /dev/null +++ b/fs/ntfs/bitmap.h | |||
@@ -0,0 +1,118 @@ | |||
1 | /* | ||
2 | * bitmap.h - Defines for NTFS kernel bitmap handling. Part of the Linux-NTFS | ||
3 | * project. | ||
4 | * | ||
5 | * Copyright (c) 2004 Anton Altaparmakov | ||
6 | * | ||
7 | * This program/include file is free software; you can redistribute it and/or | ||
8 | * modify it under the terms of the GNU General Public License as published | ||
9 | * by the Free Software Foundation; either version 2 of the License, or | ||
10 | * (at your option) any later version. | ||
11 | * | ||
12 | * This program/include file is distributed in the hope that it will be | ||
13 | * useful, but WITHOUT ANY WARRANTY; without even the implied warranty | ||
14 | * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
15 | * GNU General Public License for more details. | ||
16 | * | ||
17 | * You should have received a copy of the GNU General Public License | ||
18 | * along with this program (in the main directory of the Linux-NTFS | ||
19 | * distribution in the file COPYING); if not, write to the Free Software | ||
20 | * Foundation,Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA | ||
21 | */ | ||
22 | |||
23 | #ifndef _LINUX_NTFS_BITMAP_H | ||
24 | #define _LINUX_NTFS_BITMAP_H | ||
25 | |||
26 | #ifdef NTFS_RW | ||
27 | |||
28 | #include <linux/fs.h> | ||
29 | |||
30 | #include "types.h" | ||
31 | |||
32 | extern int __ntfs_bitmap_set_bits_in_run(struct inode *vi, const s64 start_bit, | ||
33 | const s64 count, const u8 value, const BOOL is_rollback); | ||
34 | |||
35 | /** | ||
36 | * ntfs_bitmap_set_bits_in_run - set a run of bits in a bitmap to a value | ||
37 | * @vi: vfs inode describing the bitmap | ||
38 | * @start_bit: first bit to set | ||
39 | * @count: number of bits to set | ||
40 | * @value: value to set the bits to (i.e. 0 or 1) | ||
41 | * | ||
42 | * Set @count bits starting at bit @start_bit in the bitmap described by the | ||
43 | * vfs inode @vi to @value, where @value is either 0 or 1. | ||
44 | * | ||
45 | * Return 0 on success and -errno on error. | ||
46 | */ | ||
47 | static inline int ntfs_bitmap_set_bits_in_run(struct inode *vi, | ||
48 | const s64 start_bit, const s64 count, const u8 value) | ||
49 | { | ||
50 | return __ntfs_bitmap_set_bits_in_run(vi, start_bit, count, value, | ||
51 | FALSE); | ||
52 | } | ||
53 | |||
54 | /** | ||
55 | * ntfs_bitmap_set_run - set a run of bits in a bitmap | ||
56 | * @vi: vfs inode describing the bitmap | ||
57 | * @start_bit: first bit to set | ||
58 | * @count: number of bits to set | ||
59 | * | ||
60 | * Set @count bits starting at bit @start_bit in the bitmap described by the | ||
61 | * vfs inode @vi. | ||
62 | * | ||
63 | * Return 0 on success and -errno on error. | ||
64 | */ | ||
65 | static inline int ntfs_bitmap_set_run(struct inode *vi, const s64 start_bit, | ||
66 | const s64 count) | ||
67 | { | ||
68 | return ntfs_bitmap_set_bits_in_run(vi, start_bit, count, 1); | ||
69 | } | ||
70 | |||
71 | /** | ||
72 | * ntfs_bitmap_clear_run - clear a run of bits in a bitmap | ||
73 | * @vi: vfs inode describing the bitmap | ||
74 | * @start_bit: first bit to clear | ||
75 | * @count: number of bits to clear | ||
76 | * | ||
77 | * Clear @count bits starting at bit @start_bit in the bitmap described by the | ||
78 | * vfs inode @vi. | ||
79 | * | ||
80 | * Return 0 on success and -errno on error. | ||
81 | */ | ||
82 | static inline int ntfs_bitmap_clear_run(struct inode *vi, const s64 start_bit, | ||
83 | const s64 count) | ||
84 | { | ||
85 | return ntfs_bitmap_set_bits_in_run(vi, start_bit, count, 0); | ||
86 | } | ||
87 | |||
88 | /** | ||
89 | * ntfs_bitmap_set_bit - set a bit in a bitmap | ||
90 | * @vi: vfs inode describing the bitmap | ||
91 | * @bit: bit to set | ||
92 | * | ||
93 | * Set bit @bit in the bitmap described by the vfs inode @vi. | ||
94 | * | ||
95 | * Return 0 on success and -errno on error. | ||
96 | */ | ||
97 | static inline int ntfs_bitmap_set_bit(struct inode *vi, const s64 bit) | ||
98 | { | ||
99 | return ntfs_bitmap_set_run(vi, bit, 1); | ||
100 | } | ||
101 | |||
102 | /** | ||
103 | * ntfs_bitmap_clear_bit - clear a bit in a bitmap | ||
104 | * @vi: vfs inode describing the bitmap | ||
105 | * @bit: bit to clear | ||
106 | * | ||
107 | * Clear bit @bit in the bitmap described by the vfs inode @vi. | ||
108 | * | ||
109 | * Return 0 on success and -errno on error. | ||
110 | */ | ||
111 | static inline int ntfs_bitmap_clear_bit(struct inode *vi, const s64 bit) | ||
112 | { | ||
113 | return ntfs_bitmap_clear_run(vi, bit, 1); | ||
114 | } | ||
115 | |||
116 | #endif /* NTFS_RW */ | ||
117 | |||
118 | #endif /* defined _LINUX_NTFS_BITMAP_H */ | ||