Files
2020-07-23 19:59:17 +03:00

43 lines
905 B
C

#pragma once
#include "sys/types.h"
#include "sys/list.h"
struct statvfs;
struct blkdev;
struct vnode;
struct fs;
struct fs_class {
char name[64];
int opt;
struct vnode *(*get_root) (struct fs *fs);
int (*init) (struct fs *fs, const char *opt);
void (*destroy) (struct fs *fs);
int (*statvfs) (struct fs *fs, struct statvfs *st);
struct list_head link;
};
// The actual filesystem instance,
// one per each mount
struct fs {
// Block device on which the filesystem resides
struct blkdev *blk;
uint32_t flags;
// Private data structure per-mount
void *fs_private;
struct fs_class *cls;
struct list_head link;
};
struct fs *fs_create(struct fs_class *cls, struct blkdev *blk, uint32_t flags, const char *opt);
void fs_release(struct fs *fs);
struct fs_class *fs_class_by_name(const char *name);
int fs_class_register(struct fs_class *cls);