cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

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 */