StupidOS/kernel/vfs.inc

110 lines
1.5 KiB
PHP
Raw Normal View History

2024-07-14 16:48:36 +00:00
;; File: vfs.inc
;;
;; Usefull links:
;; - <https://www.cs.fsu.edu/~awang/courses/cop5611_s2024/vnode.pdf>
;;
struc VFS {
2024-07-16 06:29:16 +00:00
.name dd ?
.next dd ?
.op dd ?
}
DEFN VFS
struc Mount {
2024-07-14 16:48:36 +00:00
.next dd ?
.op dd ?
.vnodes dd ?
.flag dd ?
.bsize dd ?
.data dd ?
}
struc VFSOps {
.mount dd ?
.umount dd ?
.root dd ?
.statfs dd ?
.sync dd ?
.fid dd ?
.vget dd ?
}
2024-07-16 06:29:16 +00:00
;;
2024-07-14 16:48:36 +00:00
VNODE_TYPE_NON = 0x0
VNODE_TYPE_REG = 0x1
VNODE_TYPE_DIR = 0x2
VNODE_TYPE_BLK = 0x3
VNODE_TYPE_CHR = 0x4
VNODE_TYPE_LNK = 0x5
VNODE_TYPE_SOCK = 0x6
VNODE_TYPE_BAD = 0x7
2024-07-16 06:29:16 +00:00
;; Struc: VNode
2024-07-14 16:48:36 +00:00
struc VNode {
.flag dw ?
.refcount dw ?
.shlockc dw ?
.exlockc dw ?
.vfs dd ?
.op dd ?
.sock dd ?
.vfsp dd ?
.type db ?
.data dd ?
}
struc VNodeOps {
.open dd ?
.close dd ?
.rdwr dd ?
.ioctl dd ?
.select dd ?
.getattr dd ?
.setattr dd ?
.access dd ?
.lookup dd ?
.create dd ?
.remove dd ?
.link dd ?
.rename dd ?
.mkdir dd ?
.rmdir dd ?
.readdir dd ?
.symlink dd ?
.readlink dd ?
.fsync dd ?
.inactive dd ?
.bmap dd ?
.strategy dd ?
.bread dd ?
.brelse dd ?
}
2024-07-16 06:29:16 +00:00
;; Function: vfs_register
;;
;; In:
;; EAX - Pointer to VFS struct
;;
vfs_register:
mov edx, [pVFS]
mov [eax + VFS.next], edx
mov [pVFS], eax
mov eax, [eax + VFS.name]
push eax
mov esi, szMsgVFSRegister
call klog
ret
2024-04-02 10:03:47 +00:00
vfs_init:
2024-07-16 06:29:16 +00:00
call fatfs_init
call stpdfs_init
call xv6fs_init
2024-04-02 10:03:47 +00:00
ret
2024-07-16 06:29:16 +00:00
pVFS dd 0
2024-07-14 20:39:48 +00:00
pRootFS dd 0
2024-07-16 06:29:16 +00:00
szMsgVFSRegister db 'VFS: register %s', 0