/* * Copyright (c) 2023 Antmicro * * SPDX-License-Identifier: Apache-2.0 */ #ifndef __EXT2_BITMAP_H__ #define __EXT2_BITMAP_H__ #include #include /* Functions to make operations on bitmaps. * * NOTICE: Assumed size of the bitmap is 256 B (1024 bits). * (Hence, the greatest valid index is 1023.) */ /** * @brief Set bit at given index to one * * @param bm Pointer to bitmap * @param index Index in bitmap * @param size Size of bitmap in bytes * * @retval 0 on success; * @retval -EINVAL when index is too big; */ int ext2_bitmap_set(uint8_t *bm, uint32_t index, uint32_t size); /** * @brief Set bit at given index to zero * * @param bm Pointer to bitmap * @param index Index in bitmap * @param size Size of bitmap in bytes * * @retval 0 on success; * @retval -EINVAL when index is too big; */ int ext2_bitmap_unset(uint8_t *bm, uint32_t index, uint32_t size); /** * @brief Find first bit set to zero in bitmap * * @param bm Pointer to bitmap * @param size Size of bitmap in bytes * * @retval >0 found inode number; * @retval -ENOSPC when not found; */ int32_t ext2_bitmap_find_free(uint8_t *bm, uint32_t size); /** * @brief Helper function to count bits set in bitmap * * @param bm Pointer to bitmap * @param size Size of bitmap in bits * * @retval Number of set bits in bitmap; */ uint32_t ext2_bitmap_count_set(uint8_t *bm, uint32_t size); #endif /* __EXT2_BITMAP_H__ */