Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/Linux/fs/ext4/   (Open Source Betriebssystem Version 6.17.9©)  Datei vom 24.10.2025 mit Größe 2 kB image not shown  

Quelle  bitmap.c   Sprache: C

 
// SPDX-License-Identifier: GPL-2.0
/*
 *  linux/fs/ext4/bitmap.c
 *
 * Copyright (C) 1992, 1993, 1994, 1995
 * Remy Card (card@masi.ibp.fr)
 * Laboratoire MASI - Institut Blaise Pascal
 * Universite Pierre et Marie Curie (Paris VI)
 */


#include <linux/buffer_head.h>
#include "ext4.h"

unsigned int ext4_count_free(char *bitmap, unsigned int numchars)
{
 return numchars * BITS_PER_BYTE - memweight(bitmap, numchars);
}

int ext4_inode_bitmap_csum_verify(struct super_block *sb,
      struct ext4_group_desc *gdp,
      struct buffer_head *bh)
{
 __u32 hi;
 __u32 provided, calculated;
 struct ext4_sb_info *sbi = EXT4_SB(sb);
 int sz;

 if (!ext4_has_feature_metadata_csum(sb))
  return 1;

 sz = EXT4_INODES_PER_GROUP(sb) >> 3;
 provided = le16_to_cpu(gdp->bg_inode_bitmap_csum_lo);
 calculated = ext4_chksum(sbi->s_csum_seed, (__u8 *)bh->b_data, sz);
 if (sbi->s_desc_size >= EXT4_BG_INODE_BITMAP_CSUM_HI_END) {
  hi = le16_to_cpu(gdp->bg_inode_bitmap_csum_hi);
  provided |= (hi << 16);
 } else
  calculated &= 0xFFFF;

 return provided == calculated;
}

void ext4_inode_bitmap_csum_set(struct super_block *sb,
    struct ext4_group_desc *gdp,
    struct buffer_head *bh)
{
 __u32 csum;
 struct ext4_sb_info *sbi = EXT4_SB(sb);
 int sz;

 if (!ext4_has_feature_metadata_csum(sb))
  return;

 sz = EXT4_INODES_PER_GROUP(sb) >> 3;
 csum = ext4_chksum(sbi->s_csum_seed, (__u8 *)bh->b_data, sz);
 gdp->bg_inode_bitmap_csum_lo = cpu_to_le16(csum & 0xFFFF);
 if (sbi->s_desc_size >= EXT4_BG_INODE_BITMAP_CSUM_HI_END)
  gdp->bg_inode_bitmap_csum_hi = cpu_to_le16(csum >> 16);
}

int ext4_block_bitmap_csum_verify(struct super_block *sb,
      struct ext4_group_desc *gdp,
      struct buffer_head *bh)
{
 __u32 hi;
 __u32 provided, calculated;
 struct ext4_sb_info *sbi = EXT4_SB(sb);
 int sz = EXT4_CLUSTERS_PER_GROUP(sb) / 8;

 if (!ext4_has_feature_metadata_csum(sb))
  return 1;

 provided = le16_to_cpu(gdp->bg_block_bitmap_csum_lo);
 calculated = ext4_chksum(sbi->s_csum_seed, (__u8 *)bh->b_data, sz);
 if (sbi->s_desc_size >= EXT4_BG_BLOCK_BITMAP_CSUM_HI_END) {
  hi = le16_to_cpu(gdp->bg_block_bitmap_csum_hi);
  provided |= (hi << 16);
 } else
  calculated &= 0xFFFF;

 return provided == calculated;
}

void ext4_block_bitmap_csum_set(struct super_block *sb,
    struct ext4_group_desc *gdp,
    struct buffer_head *bh)
{
 int sz = EXT4_CLUSTERS_PER_GROUP(sb) / 8;
 __u32 csum;
 struct ext4_sb_info *sbi = EXT4_SB(sb);

 if (!ext4_has_feature_metadata_csum(sb))
  return;

 csum = ext4_chksum(sbi->s_csum_seed, (__u8 *)bh->b_data, sz);
 gdp->bg_block_bitmap_csum_lo = cpu_to_le16(csum & 0xFFFF);
 if (sbi->s_desc_size >= EXT4_BG_BLOCK_BITMAP_CSUM_HI_END)
  gdp->bg_block_bitmap_csum_hi = cpu_to_le16(csum >> 16);
}

Messung V0.5
C=98 H=100 G=98

¤ Dauer der Verarbeitung: 0.12 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.