embox
1/**
2* @file
3* @brief Tmp file system
4*
5* @date 12.11.12
6* @author Andrey Gazukin
7*/
8
9#include <stddef.h>
10#include <string.h>
11#include <sys/stat.h>
12
13#include <fs/inode.h>
14#include <fs/super_block.h>
15
16#include "ramfs.h"
17
18extern struct ramfs_file_info ramfs_files[RAMFS_FILES];
19
20struct inode *ramfs_ilookup(struct inode *node, char const *name, struct inode const *dir) {
21struct super_block *sb;
22
23assert(dir);
24assert(dir->i_sb);
25assert(dir->i_sb->sb_data);
26
27sb = dir->i_sb;
28
29for (int i = 0; i < RAMFS_FILES; i++) {
30if (ramfs_files[i].fsi != sb->sb_data) {
31continue;
32}
33
34if (strcmp(name, ramfs_files[i].name)) {
35continue;
36}
37
38node->i_privdata = &ramfs_files[i];
39node->i_no = ramfs_files[i].index;
40node->i_size = ramfs_files[i].length;
41node->i_mode = ramfs_files[i].mode & (S_IFMT | S_IRWXA);
42
43return node;
44}
45
46return NULL;
47}
48
49extern struct idesc *dvfs_file_open_idesc(struct lookup *lookup, int __oflag);
50
51struct super_block_operations ramfs_sbops = {
52.open_idesc = dvfs_file_open_idesc,
53.destroy_inode = ramfs_destroy_inode,
54};
55