bitmap.h (2819B)
1/* SPDX-License-Identifier: GPL-2.0-or-later */ 2/* 3 * bitmap.h - Defines for NTFS kernel bitmap handling. Part of the Linux-NTFS 4 * project. 5 * 6 * Copyright (c) 2004 Anton Altaparmakov 7 */ 8 9#ifndef _LINUX_NTFS_BITMAP_H 10#define _LINUX_NTFS_BITMAP_H 11 12#ifdef NTFS_RW 13 14#include <linux/fs.h> 15 16#include "types.h" 17 18extern int __ntfs_bitmap_set_bits_in_run(struct inode *vi, const s64 start_bit, 19 const s64 count, const u8 value, const bool is_rollback); 20 21/** 22 * ntfs_bitmap_set_bits_in_run - set a run of bits in a bitmap to a value 23 * @vi: vfs inode describing the bitmap 24 * @start_bit: first bit to set 25 * @count: number of bits to set 26 * @value: value to set the bits to (i.e. 0 or 1) 27 * 28 * Set @count bits starting at bit @start_bit in the bitmap described by the 29 * vfs inode @vi to @value, where @value is either 0 or 1. 30 * 31 * Return 0 on success and -errno on error. 32 */ 33static inline int ntfs_bitmap_set_bits_in_run(struct inode *vi, 34 const s64 start_bit, const s64 count, const u8 value) 35{ 36 return __ntfs_bitmap_set_bits_in_run(vi, start_bit, count, value, 37 false); 38} 39 40/** 41 * ntfs_bitmap_set_run - set a run of bits in a bitmap 42 * @vi: vfs inode describing the bitmap 43 * @start_bit: first bit to set 44 * @count: number of bits to set 45 * 46 * Set @count bits starting at bit @start_bit in the bitmap described by the 47 * vfs inode @vi. 48 * 49 * Return 0 on success and -errno on error. 50 */ 51static inline int ntfs_bitmap_set_run(struct inode *vi, const s64 start_bit, 52 const s64 count) 53{ 54 return ntfs_bitmap_set_bits_in_run(vi, start_bit, count, 1); 55} 56 57/** 58 * ntfs_bitmap_clear_run - clear a run of bits in a bitmap 59 * @vi: vfs inode describing the bitmap 60 * @start_bit: first bit to clear 61 * @count: number of bits to clear 62 * 63 * Clear @count bits starting at bit @start_bit in the bitmap described by the 64 * vfs inode @vi. 65 * 66 * Return 0 on success and -errno on error. 67 */ 68static inline int ntfs_bitmap_clear_run(struct inode *vi, const s64 start_bit, 69 const s64 count) 70{ 71 return ntfs_bitmap_set_bits_in_run(vi, start_bit, count, 0); 72} 73 74/** 75 * ntfs_bitmap_set_bit - set a bit in a bitmap 76 * @vi: vfs inode describing the bitmap 77 * @bit: bit to set 78 * 79 * Set bit @bit in the bitmap described by the vfs inode @vi. 80 * 81 * Return 0 on success and -errno on error. 82 */ 83static inline int ntfs_bitmap_set_bit(struct inode *vi, const s64 bit) 84{ 85 return ntfs_bitmap_set_run(vi, bit, 1); 86} 87 88/** 89 * ntfs_bitmap_clear_bit - clear a bit in a bitmap 90 * @vi: vfs inode describing the bitmap 91 * @bit: bit to clear 92 * 93 * Clear bit @bit in the bitmap described by the vfs inode @vi. 94 * 95 * Return 0 on success and -errno on error. 96 */ 97static inline int ntfs_bitmap_clear_bit(struct inode *vi, const s64 bit) 98{ 99 return ntfs_bitmap_clear_run(vi, bit, 1); 100} 101 102#endif /* NTFS_RW */ 103 104#endif /* defined _LINUX_NTFS_BITMAP_H */