* @brief Block/inode bitmap allocator.
*/
-#include <ext4_config.h>
-#include <ext4_bitmap.h>
+#include "ext4_config.h"
+#include "ext4_bitmap.h"
-#include <ext4_errno.h>
+#include "ext4_errno.h"
void ext4_bmap_bits_free(uint8_t *bmap, uint32_t sbit, uint32_t bcnt)
{
- uint32_t i = sbit;
-
- while (i & 7) {
-
- if (!bcnt)
- return;
-
- ext4_bmap_bit_clr(bmap, i);
-
- bcnt--;
- i++;
- }
- sbit = i;
- bmap += (sbit >> 3);
-
- while (bcnt >= 32) {
- *(uint32_t *)bmap = 0;
- bmap += 4;
- bcnt -= 32;
- sbit += 32;
- }
-
- while (bcnt >= 16) {
- *(uint16_t *)bmap = 0;
- bmap += 2;
- bcnt -= 16;
- sbit += 16;
- }
-
- while (bcnt >= 8) {
- *bmap = 0;
- bmap += 1;
- bcnt -= 8;
- sbit += 8;
- }
-
- for (i = 0; i < bcnt; ++i) {
- ext4_bmap_bit_clr(bmap, i);
- }
+ uint32_t i = sbit;
+
+ while (i & 7) {
+
+ if (!bcnt)
+ return;
+
+ ext4_bmap_bit_clr(bmap, i);
+
+ bcnt--;
+ i++;
+ }
+ sbit = i;
+ bmap += (sbit >> 3);
+
+ while (bcnt >= 32) {
+ *(uint32_t *)bmap = 0;
+ bmap += 4;
+ bcnt -= 32;
+ sbit += 32;
+ }
+
+ while (bcnt >= 16) {
+ *(uint16_t *)bmap = 0;
+ bmap += 2;
+ bcnt -= 16;
+ sbit += 16;
+ }
+
+ while (bcnt >= 8) {
+ *bmap = 0;
+ bmap += 1;
+ bcnt -= 8;
+ sbit += 8;
+ }
+
+ for (i = 0; i < bcnt; ++i) {
+ ext4_bmap_bit_clr(bmap, i);
+ }
}
int ext4_bmap_bit_find_clr(uint8_t *bmap, uint32_t sbit, uint32_t ebit,
- uint32_t *bit_id)
+ uint32_t *bit_id)
{
- uint32_t i;
- uint32_t bcnt = ebit - sbit;
+ uint32_t i;
+ uint32_t bcnt = ebit - sbit;
- i = sbit;
+ i = sbit;
- while (i & 7) {
+ while (i & 7) {
- if (!bcnt)
- return ENOSPC;
+ if (!bcnt)
+ return ENOSPC;
- if (ext4_bmap_is_bit_clr(bmap, i)) {
- *bit_id = sbit;
- return EOK;
- }
+ if (ext4_bmap_is_bit_clr(bmap, i)) {
+ *bit_id = sbit;
+ return EOK;
+ }
- i++;
- bcnt--;
- }
+ i++;
+ bcnt--;
+ }
- sbit = i;
- bmap += (sbit >> 3);
+ sbit = i;
+ bmap += (sbit >> 3);
- while (bcnt >= 32) {
- if (*(uint32_t *)bmap != 0xFFFFFFFF)
- goto finish_it;
+ while (bcnt >= 32) {
+ if (*(uint32_t *)bmap != 0xFFFFFFFF)
+ goto finish_it;
- bmap += 4;
- bcnt -= 32;
- sbit += 32;
- }
+ bmap += 4;
+ bcnt -= 32;
+ sbit += 32;
+ }
- while (bcnt >= 16) {
- if (*(uint16_t *)bmap != 0xFFFF)
- goto finish_it;
+ while (bcnt >= 16) {
+ if (*(uint16_t *)bmap != 0xFFFF)
+ goto finish_it;
- bmap += 2;
- bcnt -= 16;
- sbit += 16;
- }
+ bmap += 2;
+ bcnt -= 16;
+ sbit += 16;
+ }
finish_it:
- while (bcnt >= 8) {
- if (*bmap != 0xFF) {
- for (i = 0; i < 8; ++i) {
- if (ext4_bmap_is_bit_clr(bmap, i)) {
- *bit_id = sbit + i;
- return EOK;
- }
- }
- }
-
- bmap += 1;
- bcnt -= 8;
- sbit += 8;
- }
-
- for (i = 0; i < bcnt; ++i) {
- if (ext4_bmap_is_bit_clr(bmap, i)) {
- *bit_id = sbit + i;
- return EOK;
- }
- }
-
- return ENOSPC;
+ while (bcnt >= 8) {
+ if (*bmap != 0xFF) {
+ for (i = 0; i < 8; ++i) {
+ if (ext4_bmap_is_bit_clr(bmap, i)) {
+ *bit_id = sbit + i;
+ return EOK;
+ }
+ }
+ }
+
+ bmap += 1;
+ bcnt -= 8;
+ sbit += 8;
+ }
+
+ for (i = 0; i < bcnt; ++i) {
+ if (ext4_bmap_is_bit_clr(bmap, i)) {
+ *bit_id = sbit + i;
+ return EOK;
+ }
+ }
+
+ return ENOSPC;
}
/**