linux/fs/ntfs/bitmap.h
<<
>>
Prefs
   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 */
 105