linux/fs/ntfs/bitmap.h
<<
>>
Prefs
   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
  32extern 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 */
  47static 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 */
  65static 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 */
  82static 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 */
  97static 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 */
 111static 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 */
 119