⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fileio.h

📁 The main purpose of this project is to add a new scheduling algorithm to GeekOS and to implement a s
💻 H
字号:
/* * Interface constants and typedefs shared between kernel/user space * Copyright (c) 2003, Jeffrey K. Hollingsworth <hollings@cs.umd.edu> * Copyright (c) 2004, David H. Hovemeyer <daveho@cs.umd.edu> * $Revision: 1.20 $ * * This is free software.  You are permitted to use, * redistribute, and modify it as specified in the file "COPYING". */#ifndef GEEKOS_FILEIO_H#define GEEKOS_FILEIO_H#include <stddef.h>#include <geekos/ktypes.h>/* Maximum name of a path. */#define VFS_MAX_PATH_LEN 1023/* Maximum length of the name of a filesystem type: e.g., "pfat", "gosfs", etc. */#define VFS_MAX_FS_NAME_LEN 15/* Maximum number of ACL entries in a directory entry. */#define VFS_MAX_ACL_ENTRIES 10/* We assume that all block devices have 512 byte sectors.  */#define SECTOR_SIZE 512/* Maximum length for the name of a block device, e.g. "ide0".  */#define BLOCKDEV_MAX_NAME_LEN 15/* * File permissions. * These are used as flags for Open() VFS function. * O_READ and O_WRITE are also used in the permissions * field of struct VFS_ACL_Entry. */#define O_CREATE        0x1	/* Create the file if it doesn't exist. */#define O_READ          0x2	/* Open file for reading. */#define O_WRITE         0x4	/* Open file for writing. */#define O_EXCL          0x8	/* Don't create file if it already exists. *//* * An entry in an Access Control List (ACL). * Represents a set of permissions for a particular user id. */struct VFS_ACL_Entry {    uint_t uid:28;    uint_t permission:4;};/* * Generic structure representing the metadata for a directory entry. * This is filled in by the Stat() and FStat() VFS functions. */struct VFS_File_Stat {    int size;    int isDirectory:1;    int isSetuid:1;    struct VFS_ACL_Entry acls[VFS_MAX_ACL_ENTRIES];};/* * Generic directory entry structure. * This is filled in by the Read_Entry() VFS function. */struct VFS_Dir_Entry {    char name[1024];    struct VFS_File_Stat stats;};/* * A request to mount a filesystem. * This is passed as a struct because it would require too many registers * to pass all of the information in registers. */struct VFS_Mount_Request {    char devname[BLOCKDEV_MAX_NAME_LEN+1];/* Name of block device: e.g., "ide1". */    char prefix[VFS_MAX_PATH_LEN+1];	/* Directory prefix to mount on: e.g., "/d". */    char fstype[VFS_MAX_FS_NAME_LEN+1];	/* Filesystem type: e.g., "gosfs". */};#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -