Mon 14 Oct 23:06:38 CEST 2024
This commit is contained in:
parent
782fce7e32
commit
1af3e134bf
65
kernel/diskfs.h
Normal file
65
kernel/diskfs.h
Normal file
|
@ -0,0 +1,65 @@
|
|||
/*
|
||||
Copyright (C) 2016-2019 The University of Notre Dame
|
||||
This software is distributed under the GNU General Public License.
|
||||
See the file LICENSE for details.
|
||||
*/
|
||||
|
||||
#ifndef DISKFS_H
|
||||
#define DISKFS_H
|
||||
|
||||
#include "kernel/types.h"
|
||||
|
||||
#define DISKFS_MAGIC 0xabcd4321
|
||||
#define DISKFS_BLOCK_SIZE 4096
|
||||
#define DISKFS_DIRECT_POINTERS 6
|
||||
#define DISKFS_INODES_PER_BLOCK (DISKFS_BLOCK_SIZE/sizeof(struct diskfs_inode))
|
||||
#define DISKFS_ITEMS_PER_BLOCK (DISKFS_BLOCK_SIZE/sizeof(struct diskfs_item))
|
||||
#define DISKFS_POINTERS_PER_BLOCK (DISKFS_BLOCK_SIZE/sizeof(uint32_t))
|
||||
|
||||
struct diskfs_superblock {
|
||||
uint32_t magic;
|
||||
uint32_t block_size;
|
||||
uint32_t inode_start;
|
||||
uint32_t inode_blocks;
|
||||
uint32_t bitmap_start;
|
||||
uint32_t bitmap_blocks;
|
||||
uint32_t data_start;
|
||||
uint32_t data_blocks;
|
||||
};
|
||||
|
||||
struct diskfs_inode {
|
||||
uint32_t inuse; // reserve for broader use.
|
||||
uint32_t size;
|
||||
uint32_t direct[DISKFS_DIRECT_POINTERS];
|
||||
uint32_t indirect;
|
||||
};
|
||||
|
||||
#define DISKFS_ITEM_BLANK 0
|
||||
#define DISKFS_ITEM_FILE 1
|
||||
#define DISKFS_ITEM_DIR 2
|
||||
|
||||
/* Maximum name length chosen so that diskfs_item is 32 bytes. */
|
||||
#define DISKFS_NAME_MAX 26
|
||||
|
||||
#pragma pack(1)
|
||||
struct diskfs_item {
|
||||
uint32_t inumber;
|
||||
uint8_t type;
|
||||
uint8_t name_length;
|
||||
char name[DISKFS_NAME_MAX];
|
||||
};
|
||||
#pragma pack()
|
||||
|
||||
struct diskfs_block {
|
||||
union {
|
||||
struct diskfs_superblock superblock;
|
||||
struct diskfs_inode inodes[DISKFS_INODES_PER_BLOCK];
|
||||
struct diskfs_item items[DISKFS_ITEMS_PER_BLOCK];
|
||||
uint32_t pointers[DISKFS_POINTERS_PER_BLOCK];
|
||||
char data[DISKFS_BLOCK_SIZE];
|
||||
};
|
||||
};
|
||||
|
||||
int diskfs_init(void);
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user