#pragma once

#define TMPFS_MAP_BUF	1
#define TMPFS_SCAN	2
#define TMPFS_MKDIR	3
#define TMPFS_RMDIR	4
#define TMPFS_CREAT	5
#define TMPFS_UNLINK	6
#define TMPFS_OPEN	7
#define TMPFS_CLOSE	8
#define TMPFS_WRITE	9
#define TMPFS_READ	10

#define TMPFS_GET_SIZE	999

#define TMPFS_INFO_VADDR 0x200000
#define TMPFS_SCAN_BUF_VADDR 0x20000000
#define TMPFS_READ_BUF_VADDR 0x30000000

enum FS_REQ {
	FS_REQ_OPEN = 0,
	FS_REQ_CLOSE,

	FS_REQ_CREAT,
	FS_REQ_MKDIR,
	FS_REQ_RMDIR,
	FS_REQ_UNLINK,

	FS_REQ_SCAN,
	FS_REQ_READ,
	FS_REQ_WRITE,

	FS_REQ_GET_SIZE
};

#define FS_REQ_PATH_LEN (256)
struct fs_request {
	enum FS_REQ req;

	char *buff;
	int flags;
	off_t offset;
	ssize_t count;

	char path[FS_REQ_PATH_LEN];

};

struct dirent {
	ino_t d_ino;		/* Inode number */
	off_t d_off;		/* Not an offset; see below */
	unsigned short d_reclen;	/* Length of this record */
	unsigned char d_type;	/* Type of file; not supported
				   by all filesystem types */
	char d_name[256];	/* Null-terminated filename */
};