xv6-simplified 0.1
简化版xv6
|
FAT32文件系统相关 More...
#include "include/types.h"
#include "include/stat.h"
#include "include/param.h"
#include "include/riscv.h"
#include "include/fat32.h"
#include "include/buf.h"
#include "include/proc.h"
#include "include/defs.h"
#include "include/fsutils.h"
Data Structures | |
struct | entry_cache |
Functions | |
int | fat32_init () |
初始化 FAT32 文件系统 | |
struct dirent * | dirlookup (struct dirent *entry, char *filename, uint *poff) |
在指定目录项中查找指定文件名的目录项 | |
char * | formatname (char *name) |
对输入的文件名进行格式化 | |
struct dirent * | edup (struct dirent *entry) |
增加目录项的引用链接数 | |
void | eupdate (struct dirent *entry) |
将目录的更改更新到磁盘上 | |
void | eput (struct dirent *entry) |
把目录项entry插入到root之后,减少entry引用链接数 | |
void | estat (struct dirent *de, struct stat *st) |
将一个目录项的信息转换为一个文件状态结构体 | |
void | elock (struct dirent *entry) |
判断地址和链接数是否合法 | |
void | eunlock (struct dirent *entry) |
判断地址和链接数是否合法 | |
int | enext (struct dirent *dp, struct dirent *ep, uint off, int *count) |
在dp描述的目录项的off个字节偏移处寻找相应的目录项并存放到ep中 | |
struct dirent * | ename (char *path) |
根据路径名查目录 | |
int | eread (struct dirent *entry, int user_dst, uint64 dst, uint off, uint n) |
从一个文件的指定偏移量开始读取一定数量的字节 | |
int | ewrite (struct dirent *entry, int user_src, uint64 src, uint off, uint n) |
从一个文件的指定偏移量开始写入一定数量的字节 | |
FAT32文件系统相关
在指定目录项中查找指定文件名的目录项
entry | 指定的目录项 |
filename | 目标文件名 |
poff | 若找到目标目录项不启用,否则用于记录与目标文件等长目录项的空目录项的起始偏移或目录末尾 |
增加目录项的引用链接数
entry | 待更新的目录项 |
void elock | ( | struct dirent * | entry | ) |
判断地址和链接数是否合法
entry | 目录 |
struct dirent * ename | ( | char * | path | ) |
根据路径名查目录
path | 路径名 |
在dp描述的目录项的off个字节偏移处寻找相应的目录项并存放到ep中
dp | 要查找目录项所在的上级目录描述符 |
ep | 存放目标目录项的描述符 |
off | 从dp开始的偏移字节数 |
count | 存放目标目录项数量的地址 |
void eput | ( | struct dirent * | entry | ) |
把目录项entry插入到root之后,减少entry引用链接数
entry | 目录 |
从一个文件的指定偏移量开始读取一定数量的字节
entry | 目录项的指针,要读取的文件 |
user_dst | 目标地址是否在用户空间 |
dst | 数据读取的目标地址 |
off | 从文件的哪个偏移量开始读取 |
n | 读取的字节数 |
将一个目录项的信息转换为一个文件状态结构体
de | 目录项 |
st | 文件状态结构体 |
void eunlock | ( | struct dirent * | entry | ) |
判断地址和链接数是否合法
entry | 目录 |
void eupdate | ( | struct dirent * | entry | ) |
将目录的更改更新到磁盘上
entry | 目录 |
从一个文件的指定偏移量开始写入一定数量的字节
entry | 目录项的指针,要写入的文件 |
user_src | 数据来源是否在用户空间 |
src | 数据来源的地址 |
off | 写入文件的偏移量 |
n | 写入的字节数 |
int fat32_init | ( | void | ) |
初始化 FAT32 文件系统
从磁盘上读取文件系统的元数据,然后将这些元数据存储在内存中的相应数据结构中
char * formatname | ( | char * | name | ) |
对输入的文件名进行格式化
name | 要格式化的文件名 |
struct { ... } bpb |
uint32 byts_per_clus |
uint16 byts_per_sec |
uint32 data_clus_cnt |
uint32 data_sec_cnt |
uint8 fat_cnt |
uint32 fat_sz |
uint32 first_data_sec |
uint32 hidd_sec |
uint32 root_clus |
uint16 rsvd_sec_cnt |
uint8 sec_per_clus |
uint32 tot_sec |