xref: /openbmc/linux/fs/ntfs/bitmap.h (revision a1d312de)
1a1d312deSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */
21da177e4SLinus Torvalds /*
31da177e4SLinus Torvalds  * bitmap.h - Defines for NTFS kernel bitmap handling.  Part of the Linux-NTFS
41da177e4SLinus Torvalds  *	      project.
51da177e4SLinus Torvalds  *
61da177e4SLinus Torvalds  * Copyright (c) 2004 Anton Altaparmakov
71da177e4SLinus Torvalds  */
81da177e4SLinus Torvalds 
91da177e4SLinus Torvalds #ifndef _LINUX_NTFS_BITMAP_H
101da177e4SLinus Torvalds #define _LINUX_NTFS_BITMAP_H
111da177e4SLinus Torvalds 
121da177e4SLinus Torvalds #ifdef NTFS_RW
131da177e4SLinus Torvalds 
141da177e4SLinus Torvalds #include <linux/fs.h>
151da177e4SLinus Torvalds 
161da177e4SLinus Torvalds #include "types.h"
171da177e4SLinus Torvalds 
181da177e4SLinus Torvalds extern int __ntfs_bitmap_set_bits_in_run(struct inode *vi, const s64 start_bit,
19c49c3111SRichard Knutsson 		const s64 count, const u8 value, const bool is_rollback);
201da177e4SLinus Torvalds 
211da177e4SLinus Torvalds /**
221da177e4SLinus Torvalds  * ntfs_bitmap_set_bits_in_run - set a run of bits in a bitmap to a value
231da177e4SLinus Torvalds  * @vi:			vfs inode describing the bitmap
241da177e4SLinus Torvalds  * @start_bit:		first bit to set
251da177e4SLinus Torvalds  * @count:		number of bits to set
261da177e4SLinus Torvalds  * @value:		value to set the bits to (i.e. 0 or 1)
271da177e4SLinus Torvalds  *
281da177e4SLinus Torvalds  * Set @count bits starting at bit @start_bit in the bitmap described by the
291da177e4SLinus Torvalds  * vfs inode @vi to @value, where @value is either 0 or 1.
301da177e4SLinus Torvalds  *
311da177e4SLinus Torvalds  * Return 0 on success and -errno on error.
321da177e4SLinus Torvalds  */
ntfs_bitmap_set_bits_in_run(struct inode * vi,const s64 start_bit,const s64 count,const u8 value)331da177e4SLinus Torvalds static inline int ntfs_bitmap_set_bits_in_run(struct inode *vi,
341da177e4SLinus Torvalds 		const s64 start_bit, const s64 count, const u8 value)
351da177e4SLinus Torvalds {
361da177e4SLinus Torvalds 	return __ntfs_bitmap_set_bits_in_run(vi, start_bit, count, value,
37c49c3111SRichard Knutsson 			false);
381da177e4SLinus Torvalds }
391da177e4SLinus Torvalds 
401da177e4SLinus Torvalds /**
411da177e4SLinus Torvalds  * ntfs_bitmap_set_run - set a run of bits in a bitmap
421da177e4SLinus Torvalds  * @vi:		vfs inode describing the bitmap
431da177e4SLinus Torvalds  * @start_bit:	first bit to set
441da177e4SLinus Torvalds  * @count:	number of bits to set
451da177e4SLinus Torvalds  *
461da177e4SLinus Torvalds  * Set @count bits starting at bit @start_bit in the bitmap described by the
471da177e4SLinus Torvalds  * vfs inode @vi.
481da177e4SLinus Torvalds  *
491da177e4SLinus Torvalds  * Return 0 on success and -errno on error.
501da177e4SLinus Torvalds  */
ntfs_bitmap_set_run(struct inode * vi,const s64 start_bit,const s64 count)511da177e4SLinus Torvalds static inline int ntfs_bitmap_set_run(struct inode *vi, const s64 start_bit,
521da177e4SLinus Torvalds 		const s64 count)
531da177e4SLinus Torvalds {
541da177e4SLinus Torvalds 	return ntfs_bitmap_set_bits_in_run(vi, start_bit, count, 1);
551da177e4SLinus Torvalds }
561da177e4SLinus Torvalds 
571da177e4SLinus Torvalds /**
581da177e4SLinus Torvalds  * ntfs_bitmap_clear_run - clear a run of bits in a bitmap
591da177e4SLinus Torvalds  * @vi:		vfs inode describing the bitmap
601da177e4SLinus Torvalds  * @start_bit:	first bit to clear
611da177e4SLinus Torvalds  * @count:	number of bits to clear
621da177e4SLinus Torvalds  *
631da177e4SLinus Torvalds  * Clear @count bits starting at bit @start_bit in the bitmap described by the
641da177e4SLinus Torvalds  * vfs inode @vi.
651da177e4SLinus Torvalds  *
661da177e4SLinus Torvalds  * Return 0 on success and -errno on error.
671da177e4SLinus Torvalds  */
ntfs_bitmap_clear_run(struct inode * vi,const s64 start_bit,const s64 count)681da177e4SLinus Torvalds static inline int ntfs_bitmap_clear_run(struct inode *vi, const s64 start_bit,
691da177e4SLinus Torvalds 		const s64 count)
701da177e4SLinus Torvalds {
711da177e4SLinus Torvalds 	return ntfs_bitmap_set_bits_in_run(vi, start_bit, count, 0);
721da177e4SLinus Torvalds }
731da177e4SLinus Torvalds 
741da177e4SLinus Torvalds /**
751da177e4SLinus Torvalds  * ntfs_bitmap_set_bit - set a bit in a bitmap
761da177e4SLinus Torvalds  * @vi:		vfs inode describing the bitmap
771da177e4SLinus Torvalds  * @bit:	bit to set
781da177e4SLinus Torvalds  *
791da177e4SLinus Torvalds  * Set bit @bit in the bitmap described by the vfs inode @vi.
801da177e4SLinus Torvalds  *
811da177e4SLinus Torvalds  * Return 0 on success and -errno on error.
821da177e4SLinus Torvalds  */
ntfs_bitmap_set_bit(struct inode * vi,const s64 bit)831da177e4SLinus Torvalds static inline int ntfs_bitmap_set_bit(struct inode *vi, const s64 bit)
841da177e4SLinus Torvalds {
851da177e4SLinus Torvalds 	return ntfs_bitmap_set_run(vi, bit, 1);
861da177e4SLinus Torvalds }
871da177e4SLinus Torvalds 
881da177e4SLinus Torvalds /**
891da177e4SLinus Torvalds  * ntfs_bitmap_clear_bit - clear a bit in a bitmap
901da177e4SLinus Torvalds  * @vi:		vfs inode describing the bitmap
911da177e4SLinus Torvalds  * @bit:	bit to clear
921da177e4SLinus Torvalds  *
931da177e4SLinus Torvalds  * Clear bit @bit in the bitmap described by the vfs inode @vi.
941da177e4SLinus Torvalds  *
951da177e4SLinus Torvalds  * Return 0 on success and -errno on error.
961da177e4SLinus Torvalds  */
ntfs_bitmap_clear_bit(struct inode * vi,const s64 bit)971da177e4SLinus Torvalds static inline int ntfs_bitmap_clear_bit(struct inode *vi, const s64 bit)
981da177e4SLinus Torvalds {
991da177e4SLinus Torvalds 	return ntfs_bitmap_clear_run(vi, bit, 1);
1001da177e4SLinus Torvalds }
1011da177e4SLinus Torvalds 
1021da177e4SLinus Torvalds #endif /* NTFS_RW */
1031da177e4SLinus Torvalds 
1041da177e4SLinus Torvalds #endif /* defined _LINUX_NTFS_BITMAP_H */
105