/* SPDX-License-Identifier: GPL-2.0 */ /* * Filesystem definitions * * Minimal version for U-Boot ext4l - based on Linux 6.18 */ #ifndef _LINUX_FS_H #define _LINUX_FS_H #include #include #include /* Forward declarations */ struct inode; struct super_block; struct buffer_head; struct address_space_operations; /* errseq_t - error sequence type */ typedef u32 errseq_t; /* fmode_t - file mode type */ typedef unsigned int fmode_t; /* File mode flags */ #define FMODE_READ ((__force fmode_t)(1 << 0)) #define FMODE_WRITE ((__force fmode_t)(1 << 1)) #define FMODE_LSEEK ((__force fmode_t)(1 << 2)) #define FMODE_NOWAIT ((__force fmode_t)(1 << 20)) #define FMODE_CAN_ODIRECT ((__force fmode_t)(1 << 21)) #define FMODE_CAN_ATOMIC_WRITE ((__force fmode_t)(1 << 22)) /* Seek constants */ #ifndef SEEK_HOLE #define SEEK_HOLE 4 #define SEEK_DATA 3 #endif /* vfsmount - mount point */ struct vfsmount { struct dentry *mnt_root; }; /* path - pathname components */ struct path { struct vfsmount *mnt; struct dentry *dentry; }; /* Buffer operations are in buffer_head.h */ /* address_space - extended for inode.c */ struct address_space { struct inode *host; errseq_t wb_err; unsigned long nrpages; unsigned long writeback_index; struct list_head i_private_list; const struct address_space_operations *a_ops; }; /* block_device - minimal stub */ struct block_device { struct address_space *bd_mapping; void *bd_disk; struct super_block *bd_super; dev_t bd_dev; }; /* errseq functions - stubs */ static inline int errseq_check(errseq_t *eseq, errseq_t since) { return 0; } static inline int errseq_check_and_advance(errseq_t *eseq, errseq_t *since) { return 0; } /* File readahead state - stub */ struct file_ra_state { unsigned long start; unsigned int size; unsigned int async_size; unsigned int ra_pages; unsigned int mmap_miss; long long prev_pos; }; /* file - minimal stub */ struct file { fmode_t f_mode; struct inode *f_inode; unsigned int f_flags; struct address_space *f_mapping; void *private_data; struct file_ra_state f_ra; struct path f_path; }; /* Get inode from file */ static inline struct inode *file_inode(struct file *f) { return f->f_inode; } /* iattr - inode attributes for setattr */ struct iattr { unsigned int ia_valid; umode_t ia_mode; uid_t ia_uid; gid_t ia_gid; loff_t ia_size; }; /* writeback_control - defined in linux/compat.h */ /* fsnotify - stub */ #define fsnotify_change(d, m) do { } while (0) /* inode_init_once - stub */ static inline void inode_init_once(struct inode *inode) { } /* S_ISDIR, etc. - already in linux/stat.h */ #include #endif /* _LINUX_FS_H */