1 /*
2  * Copyright (c) 2025 Antmicro <www.antmicro.com>
3  *
4  * SPDX-License-Identifier: Apache-2.0
5  */
6 
7 #ifndef ZEPHYR_SUBSYS_FS_VIRTIOFS_VIRTIOFS_H_
8 #define ZEPHYR_SUBSYS_FS_VIRTIOFS_VIRTIOFS_H_
9 #include <zephyr/device.h>
10 #include <../fuse_client/fuse_client.h>
11 
12 int virtiofs_init(const struct device *dev, struct fuse_init_out *response);
13 int virtiofs_lookup(
14 	const struct device *dev, uint64_t inode, const char *name, struct fuse_entry_out *response,
15 	uint64_t *parent_inode);
16 int virtiofs_open(
17 	const struct device *dev, uint64_t inode, uint32_t flags, struct fuse_open_out *response,
18 	enum fuse_object_type type);
19 int virtiofs_read(
20 	const struct device *dev, uint64_t inode, uint64_t fh,
21 	uint64_t offset, uint32_t size, uint8_t *buf);
22 int virtiofs_release(const struct device *dev, uint64_t inode, uint64_t fh,
23 	enum fuse_object_type type);
24 int virtiofs_destroy(const struct device *dev);
25 int virtiofs_create(
26 	const struct device *dev, uint64_t inode, const char *fname, uint32_t flags,
27 	uint32_t mode, struct fuse_create_out *response);
28 int virtiofs_write(
29 	const struct device *dev, uint64_t inode, uint64_t fh, uint64_t offset,
30 	uint32_t size, const uint8_t *write_buf);
31 int virtiofs_lseek(
32 	const struct device *dev, uint64_t inode, uint64_t fh, uint64_t offset,
33 	uint32_t whence, struct fuse_lseek_out *response);
34 int virtiofs_setattr(
35 	const struct device *dev, uint64_t inode, struct fuse_setattr_in *in,
36 	struct fuse_attr_out *response);
37 int virtiofs_fsync(const struct device *dev, uint64_t inode, uint64_t fh);
38 int virtiofs_mkdir(const struct device *dev, uint64_t inode, const char *dirname, uint32_t mode);
39 int virtiofs_unlink(const struct device *dev, const char *fname, enum fuse_object_type type);
40 int virtiofs_rename(
41 	const struct device *dev, uint64_t old_dir_inode, const char *old_name,
42 	uint64_t new_dir_inode, const char *new_name);
43 int virtiofs_statfs(const struct device *dev, struct fuse_kstatfs *response);
44 int virtiofs_readdir(
45 	const struct device *dev, uint64_t inode, uint64_t fh, uint64_t offset,
46 	uint8_t *dirent_buf, uint32_t dirent_size, uint8_t *name_buf, uint32_t name_size);
47 void virtiofs_forget(const struct device *dev, uint64_t inode, uint64_t nlookup);
48 
49 #endif /* ZEPHYR_SUBSYS_FS_VIRTIOFS_VIRTIOFS_H_ */
50