StupidOS/kernel/vfs.inc

132 lines
2 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>
;;
2024-12-27 17:18:48 +00:00
;; Struc: VFS
;;
;; .name - Filesystem name
;; .next - pointer to next VFS
;; .ops - pointer to VFS function
2024-07-14 16:48:36 +00:00
struc VFS {
2024-12-27 17:18:48 +00:00
.name dd ?
.next dd ?
.ops_ptr dd ?
2024-07-16 06:29:16 +00:00
}
DEFN VFS
2024-12-27 17:18:48 +00:00
;; Struc: Mount
;;
;; .next - address of next mount
;; .ops_ptr - address of mount ops
;; .vnodes -
2024-07-16 06:29:16 +00:00
struc Mount {
2024-12-27 17:18:48 +00:00
.next dd ?
.ops_ptr dd ?
.vnodes dd ?
.flag dd ?
.bsize dd ?
.data dd ?
2024-07-14 16:48:36 +00:00
}
struc VFSOps {
.mount dd ?
.umount dd ?
.root dd ?
.statfs dd ?
.sync dd ?
.fid dd ?
.vget dd ?
}
2024-12-27 17:18:48 +00:00
macro VNODE_TYPE name,value {
VNODE_TYPE_#name equ value
}
2024-09-11 13:52:55 +00:00
;; Constants: vnode types
;;
;; VNODE_TYPE_NON - XXX
;; VNODE_TYPE_REG - XXX
;; VNODE_TYPE_DIR - XXX
;; VNODE_TYPE_BLK - XXX
;; VNODE_TYPE_CHR - XXX
;; VNODE_TYPE_LNK - XXX
;; VNODE_TYPE_SOCK - XXX
;; VNODE_TYPE_BAD - XXX
2024-12-27 17:18:48 +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-14 16:48:36 +00:00
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