Voxia OS v0.0.1
Hobby Project Operating System Targeting x86-64
Loading...
Searching...
No Matches
vnode.h
Go to the documentation of this file.
1#ifndef __VFS__VNODE_H__
2#define __VFS__VNODE_H__
4#include "vfs/dentry.h"
5#include "vfs/dev.h"
6#include "vfs/filesystem.h"
7#include <llist.h>
8#include <type.h>
9#include <vector.h>
10
11enum {
20};
21
22#ifdef __cplusplus
23extern "C" {
24#endif
25
26
27typedef struct vnode vnode_t;
28typedef struct {
29 int (*ioctl)(vnode_t* vnode, uint32_t req, void* arg);
30 int (*read)(vnode_t* vnode, void* buf, size_t len, size_t offset);
31 long (*write)(vnode_t* vnode, void* buf, size_t len, size_t offset);
33
34typedef struct {
35 int (*readlink)(vnode_t* vnode, char* buf, size_t bufsize);
37
38
39typedef struct thread thread_t;
40typedef struct vops_blk {
41 int (*ioctl)(vnode_t* vnode, uint32_t req, void* arg);
42 int (*open)(vnode_t* vnode, int op_mode, thread_t* thread);
43 int (*read)(vnode_t* vnode, uintptr_t addr, void* buf, size_t count);
44 int (*write)(vnode_t* vnode, uintptr_t addr, void* buf, size_t count);
46 void* v_data;
48
50
51/*
52General VNode
53*/
58
76
77typedef struct vnode* vnode_ptr_t;
78
79vnode_ptr_t KERNEL_API create_vnode();
81
82#ifdef __cplusplus
83}
84#endif
85
86#endif // __VFS__VNODE_H__
int count
Definition cache.h:2
struct vnode * vnode_ptr_t
Definition dentry.h:115
cdev_t * cdev_ptr_t
Definition dev.h:70
volatile uint64_t addr
Definition e1000.hpp:0
struct vnode vnode_t
Definition filesystem.h:10
struct thread thread_t
Definition thread.h:29
typedef __attribute__
Definition msi.c:47
size_t len
Definition oct2bin.h:7
uint32_t major
Definition vnode.h:55
uint32_t minor
Definition vnode.h:56
Definition vnode.h:59
struct device_id device
Definition vnode.h:73
void * ops
Definition vnode.h:64
void * vnode_private
Definition vnode.h:72
atomic_t refcount
Definition vnode.h:60
vnode_id_t id
Definition vnode.h:61
uint8_t type
Definition vnode.h:62
uint16_t permission
Definition vnode.h:65
struct fs_instance * fs_instance
Definition vnode.h:67
size_t size
Definition vnode.h:63
cdev_ptr_t mount
Definition vnode.h:69
cdev_ptr_t mountedhere
Definition vnode.h:68
void * v_data
Definition vnode.h:46
int(* close)(vnode_t *vnode)
Definition vnode.h:45
int(* write)(vnode_t *vnode, uintptr_t addr, void *buf, size_t count)
Definition vnode.h:44
int(* open)(vnode_t *vnode, int op_mode, thread_t *thread)
Definition vnode.h:42
int(* read)(vnode_t *vnode, uintptr_t addr, void *buf, size_t count)
Definition vnode.h:43
int(* ioctl)(vnode_t *vnode, uint32_t req, void *arg)
Definition vnode.h:41
long(* write)(vnode_t *vnode, void *buf, size_t len, size_t offset)
Definition vnode.h:31
int(* ioctl)(vnode_t *vnode, uint32_t req, void *arg)
Definition vnode.h:29
int(* read)(vnode_t *vnode, void *buf, size_t len, size_t offset)
Definition vnode.h:30
int(* readlink)(vnode_t *vnode, char *buf, size_t bufsize)
Definition vnode.h:35
unsigned short uint16_t
Definition type.h:13
unsigned int uint32_t
Definition type.h:19
#define KERNEL_API
Definition type.h:93
unsigned long uintptr_t
Definition type.h:73
unsigned long uint64_t
Definition type.h:25
unsigned char uint8_t
Definition type.h:7
uint32_t offset
Definition virtio.h:6
@ VNODE_TYPE_FILE
Definition vnode.h:12
@ VNODE_TYPE_LNK
Definition vnode.h:19
@ VNODE_TYPE_DIR
Definition vnode.h:13
@ VNODE_TYPE_FIFO
Definition vnode.h:17
@ VNODE_TYPE_CHR
Definition vnode.h:15
@ VNODE_TYPE_BLK
Definition vnode.h:16
@ VNODE_TYPE_SOCK
Definition vnode.h:18
@ VNODE_TYPE_DEV
Definition vnode.h:14
struct vops_blk vops_blk_t
void vxFreeVnode(vnode_ptr_t vnode)
uint64_t vnode_id_t
Definition vnode.h:49