1 Star 0 Fork 0

杨谨徽 / 代码托管

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
superblock.c 1.68 KB
一键复制 编辑 原始数据 按行查看 历史
杨谨徽 提交于 2023-09-28 12:31 . update superblock.c.
/********************显示超级块信息********************/
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <ext2fs/ext2_fs.h>
typedef unsigned char u8;
typedef unsigned short u16;
typedef unsigned int u32;
typedef struct ext2_super_block SUPER;
SUPER *sp;
char buf[1024];
int fd,blksize,inodesize;
void print(char *s, u32 x)
{
printf("%-30s = %8d\n",s,x);
}
int super(char *device)
{
fd = open(device, O_RDONLY);
if(fd<0){
printf("open %s failed\n",device); exit(1);
}
lseek(fd, (long)1024*1, 0);
read(fd,buf,1024);
sp = (SUPER *)buf;
printf("%-30s = %8x ","s_magic", sp->s_magic);
if(sp->s_magic != 0xEF53){
printf("NOT an EXT2 FS\n"); exit(2);
}
printf("EXT2 FS OK\n");
print("s_inodes_count", sp->s_inodes_count);
print("s_blocks_count", sp->s_blocks_count);
print("s__r_blocks_count", sp->s_r_blocks_count);
print("s_free_inodes_count",sp->s_free_inodes_count);
print("s_free_blocks_count",sp->s_free_blocks_count);
print("s_first_data_block",sp->s_first_data_block);
print("s_log_block_size", sp->s_log_block_size);
print("s_blocks_per_group",sp->s_blocks_per_group);
print("s_inodes_per_group",sp->s_inodes_per_group);
print("s_mnt_count", sp->s_mnt_count);
print("s_max_mnt_count", sp->s_max_mnt_count);
printf("%-30s = %8x\n","s_magic",sp->s_magic);
printf("s_mtime = %d",ctime(&sp->s_mtime));
printf("s_wtime = %d",ctime(&sp->s_wtime));
blksize = 1024 * (1 << sp->s_log_block_size);
printf("block size = %d\n",blksize);
printf("inode size = %d\n",sp->s_inode_size);
}
char *device = "mydisk";
int main(int argc, char *argv[])
{
if(argc>1)
device = argv[1];
super(device);
}
1
https://gitee.com/SHIBATORI/code-hosting.git
git@gitee.com:SHIBATORI/code-hosting.git
SHIBATORI
code-hosting
代码托管
master

搜索帮助