PatchworkOS
966e257
A non-POSIX operating system.
Theme:
Default
Round
Robot
Loading...
Searching...
No Matches
filesystem.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <
kernel/fs/dentry.h
>
4
#include <
kernel/fs/file.h
>
5
#include <
kernel/fs/inode.h
>
6
#include <
kernel/fs/mount.h
>
7
#include <
kernel/fs/path.h
>
8
#include <
kernel/fs/superblock.h
>
9
#include <
kernel/fs/sysfs.h
>
10
#include <
kernel/proc/process.h
>
11
#include <
kernel/sync/rwlock.h
>
12
#include <
kernel/utils/map.h
>
13
14
#include <
sys/io.h
>
15
#include <
sys/list.h
>
16
#include <
sys/math.h
>
17
#include <
sys/proc.h
>
18
19
/**
20
* @brief Filesystem interface.
21
* @defgroup kernel_fs_filesystem Filesystem
22
* @ingroup kernel_fs
23
*
24
* @{
25
*/
26
27
/**
28
* @brief Filesystem structure, represents a filesystem type, e.g. fat32, ramfs, sysfs, etc.
29
*/
30
typedef
struct
filesystem
31
{
32
map_entry_t
mapEntry
;
///< Used internally.
33
list_t
superblocks
;
///< Used internally.
34
rwlock_t
lock
;
///< Used internally.
35
const
char
*
name
;
36
dentry_t
* (*mount)(
filesystem_t
* fs,
const
char
* devName,
void
*
private
);
37
}
filesystem_t
;
38
39
/**
40
* @brief Registers a filesystem.
41
*
42
* @param fs The filesystem to register.
43
* @return On success, `0`. On failure, `ERR` and `errno` is set to:
44
* - `EINVAL`: Invalid parameters.
45
* - Other values from `map_insert()`.
46
*/
47
uint64_t
filesystem_register
(
filesystem_t
* fs);
48
49
/**
50
* @brief Unregisters a filesystem.
51
*
52
* @param fs The filesystem to unregister, or `NULL` for no-op.
53
*/
54
void
filesystem_unregister
(
filesystem_t
* fs);
55
56
/**
57
* @brief Gets a filesystem by name.
58
*
59
* @param name The name of the filesystem.
60
* @return On success, the filesystem. On failure, returns `NULL`.
61
*/
62
filesystem_t
*
filesystem_get
(
const
char
* name);
63
64
/** @} */
dentry.h
filesystem_get
filesystem_t * filesystem_get(const char *name)
Gets a filesystem by name.
Definition
filesystem.c:80
filesystem_register
uint64_t filesystem_register(filesystem_t *fs)
Registers a filesystem.
Definition
filesystem.c:40
filesystem_unregister
void filesystem_unregister(filesystem_t *fs)
Unregisters a filesystem.
Definition
filesystem.c:64
file.h
inode.h
io.h
list.h
map.h
mount.h
path.h
proc.h
process.h
rwlock.h
uint64_t
__UINT64_TYPE__ uint64_t
Definition
stdint.h:17
dentry_t
Directory entry structure.
Definition
dentry.h:84
filesystem_t
Filesystem structure, represents a filesystem type, e.g. fat32, ramfs, sysfs, etc.
Definition
filesystem.h:31
filesystem_t::name
const char * name
Definition
filesystem.h:35
filesystem_t::mapEntry
map_entry_t mapEntry
Used internally.
Definition
filesystem.h:32
filesystem_t::lock
rwlock_t lock
Used internally.
Definition
filesystem.h:34
filesystem_t::superblocks
list_t superblocks
Used internally.
Definition
filesystem.h:33
list_t
A doubly linked list.
Definition
list.h:49
map_entry_t
Map entry structure.
Definition
map.h:68
rwlock_t
Read-Write Ticket Lock structure.
Definition
rwlock.h:61
superblock.h
math.h
sysfs.h
include
kernel
fs
filesystem.h
Generated on Mon Dec 15 2025 21:55:53 for PatchworkOS by
1.9.8