标签:eve 重要 handle operation 操作 make 两种 技术分享 允许
SylixOS标准I/O基本介绍
1.1 简介
I/O 系统又称作输入输出系统,SylixOS 兼容POSIX标准输入输出系统,SylixOS的I/O概念继承了UNIX操作系统的I/O概念,认为一切皆为文件。与UNIX操作系统相同, SylixOS中的文件也分为不同的类型。
1.2 两种I/O类型
I/O系统分为 ORIG 型驱动结构和 NEW_1 型驱动结构,如图 1.1和图 1.2。
图 1.1 ORIG 型驱动结构
图 1.2 NEW 型驱动结构
文件节点:
typedef struct {
LW_LIST_LINE FDNODE_lineManage; / 同一设备 fd_node 链表/
LW_OBJECT_HANDLE FDNODE_ulSem; / 内部操作锁 /
dev_t FDNODE_dev; / 设备 /
ino64_t FDNODE_inode64; / inode (64bit 为了兼容性) /
mode_t FDNODE_mode; / 文件 mode /
uid_t FDNODE_uid; / 文件所属用户信息 /
gid_t FDNODE_gid;
off_t FDNODE_oftSize; / 当前文件大小 /
struct __fd_lockf FDNODE_pfdlockHead; / 第一个锁 /
LW_LIST_LINE_HEADER FDNODE_plineBlockQ;
/ 当前有阻塞的记录锁队列 /
BOOL FDNODE_bRemove; /是否在文件未关闭时有 unlink */
ULONG FDNODE_ulLock; /*锁定, 不允许写, 不允许删除 */
ULONG FDNODE_ulRef; /* fd_entry 引用此 fd_node 数量*/
PVOID FDNODE_pvFile; / 驱动使用此变量标示文件 /
PVOID FDNODE_pvFsExtern; / 文件系统扩展使用 /
} LW_FD_NODE;
rootfs 节点:
typedef struct lw_rootfs_node {
LW_LIST_LINE RFSN_lineBrother; / 兄弟节点 /
struct lw_rootfs_node RFSN_prfsnFather; / 父系节点 /
PLW_LIST_LINE RFSN_plineSon; / 儿子节点 /
INT RFSN_iOpenNum; / 打开次数 /
size_t RFSN_stAllocSize; / 此节点占用内存大小 /
mode_t RFSN_mode; / 模式 /
time_t RFSN_time; / 创建时间 /
INT RFSN_iNodeType; / 节点类型 /
uid_t RFSN_uid;
gid_t RFSN_gid;
LW_ROOTFS_NODE_VALUE RFSN_rfsnv; / 节点的内容 /
PCHAR RFSN_pcLink; / 链接目标 (不是链接文件为 0) */
} LW_ROOTFS_NODE;
设备头:
typedef struct {
LW_LIST_LINE DEVHDR_lineManage; / 设备头管理链表 /
UIN×××6 DEVHDR_usDrvNum; / 设备驱动程序索引号 /
PCHAR DEVHDR_pcName; / 设备名称 /
UCHAR DEVHDR_ucType; / 设备 dirent d_type /
atomic_t DEVHDR_atomicOpenNum; / 打开的次数 /
PVOID DEVHDR_pvReserve; / 保留 /
} LW_DEV_HDR;
标签:eve 重要 handle operation 操作 make 两种 技术分享 允许
原文地址:http://blog.51cto.com/13927802/2286141