2 * @file fsm.c File system manager
3 * @author Lunaixsky (zelong56@gmail.com)
8 * @copyright Copyright (c) 2022
11 #include <klibc/string.h>
12 #include <lunaix/ds/hashtable.h>
13 #include <lunaix/fs.h>
15 #define HASH_BUCKET_BITS 4
16 #define HASH_BUCKET_NUM (1 << HASH_BUCKET_BITS)
18 DECLARE_HASHTABLE(fs_registry, HASH_BUCKET_NUM);
23 hashtable_init(fs_registry);
27 fsm_register(struct filesystem* fs)
29 hstr_rehash(&fs->fs_name, HASH_BUCKET_BITS);
30 hashtable_hash_in(fs_registry, &fs->fs_list, fs->fs_name.hash);
34 fsm_get(const char* fs_name)
36 struct filesystem *pos, *next;
37 struct hstr str = HSTR(fs_name, 0);
38 hstr_rehash(&str, HASH_BUCKET_BITS);
40 hashtable_hash_foreach(fs_registry, str.hash, pos, next, fs_list)
42 if (pos->fs_name.hash == str.hash) {