PatchworkOS
Loading...
Searching...
No Matches
superblock.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <
kernel/fs/sysfs.h
>
4
#include <
kernel/utils/ref.h
>
5
6
#include <
stdint.h
>
7
#include <
sys/io.h
>
8
#include <
sys/list.h
>
9
10
typedef
struct
filesystem
filesystem_t
;
11
typedef
struct
superblock
superblock_t
;
12
typedef
struct
superblock_ops
superblock_ops_t
;
13
typedef
struct
dentry_ops
dentry_ops_t
;
14
typedef
struct
inode
inode_t
;
15
typedef
struct
dentry
dentry_t
;
16
35
typedef
uint64_t
superblock_id_t
;
36
43
typedef
struct
superblock
44
{
45
ref_t
ref
;
46
list_entry_t
entry
;
47
superblock_id_t
id
;
48
uint64_t
blockSize
;
49
uint64_t
maxFileSize
;
50
void
*
private
;
51
dentry_t
*
root
;
52
const
superblock_ops_t
*
ops
;
53
const
dentry_ops_t
*
dentryOps
;
54
const
filesystem_t
*
fs
;
55
char
deviceName[
MAX_NAME
];
62
atomic_uint64_t
mountCount
;
63
}
superblock_t
;
64
69
typedef
struct
superblock_ops
70
{
76
inode_t
* (*allocInode)(
superblock_t
* superblock);
80
void (*freeInode)(
superblock_t
* superblock,
inode_t
* inode);
85
void (*cleanup)(
superblock_t
* superblock);
89
void (*unmount)(
superblock_t
* superblock);
90
}
superblock_ops_t
;
91
108
superblock_t
*
superblock_new
(
const
filesystem_t
* fs,
const
char
* deviceName,
const
superblock_ops_t
*
ops
,
109
const
dentry_ops_t
*
dentryOps
);
110
116
void
superblock_inc_mount_count
(
superblock_t
* superblock);
117
125
void
superblock_dec_mount_count
(
superblock_t
* superblock);
126
MAX_NAME
#define MAX_NAME
Maximum length of names.
Definition
MAX_NAME.h:11
superblock_inc_mount_count
void superblock_inc_mount_count(superblock_t *superblock)
Increment the mount count of a superblock.
Definition
superblock.c:57
superblock_id_t
uint64_t superblock_id_t
Superblock ID type.
Definition
superblock.h:35
superblock_new
superblock_t * superblock_new(const filesystem_t *fs, const char *deviceName, const superblock_ops_t *ops, const dentry_ops_t *dentryOps)
Create a new superblock.
Definition
superblock.c:32
superblock_dec_mount_count
void superblock_dec_mount_count(superblock_t *superblock)
Decrement the mount count of a superblock.
Definition
superblock.c:62
io.h
list.h
ops
static socket_family_ops_t ops
Definition
local.c:505
dentryOps
static dentry_ops_t dentryOps
Definition
ramfs.c:229
ref.h
stdint.h
uint64_t
__UINT64_TYPE__ uint64_t
Definition
stdint.h:17
dentry_ops_t
Dentry operations structure.
Definition
dentry.h:70
dentry_t
Directory entry structure.
Definition
dentry.h:83
filesystem_t
Filesystem structure, represents a filesystem type, e.g. fat32, ramfs, sysfs, etc.
Definition
vfs.h:45
inode_t
Inode structure.
Definition
inode.h:54
list_entry_t
A entry in a doubly linked list.
Definition
list.h:38
ref_t
Reference counting structure.
Definition
ref.h:30
superblock_ops_t
Superblock operations structure.
Definition
superblock.h:70
superblock_t
Superblock structure.
Definition
superblock.h:44
superblock_t::blockSize
uint64_t blockSize
Definition
superblock.h:48
superblock_t::maxFileSize
uint64_t maxFileSize
Definition
superblock.h:49
superblock_t::ops
const superblock_ops_t * ops
Definition
superblock.h:52
superblock_t::mountCount
atomic_uint64_t mountCount
Definition
superblock.h:62
superblock_t::ref
ref_t ref
Definition
superblock.h:45
superblock_t::fs
const filesystem_t * fs
Definition
superblock.h:54
superblock_t::entry
list_entry_t entry
Definition
superblock.h:46
superblock_t::root
dentry_t * root
Definition
superblock.h:51
superblock_t::dentryOps
const dentry_ops_t * dentryOps
Definition
superblock.h:53
superblock_t::id
superblock_id_t id
Definition
superblock.h:47
sysfs.h
include
kernel
fs
superblock.h
Generated by
1.9.8