linux/fs/adfs/adfs.h

/* SPDX-License-Identifier: GPL-2.0 */
#include <linux/buffer_head.h>
#include <linux/fs.h>
#include <linux/adfs_fs.h>

/* Internal data structures for ADFS */

#define ADFS_FREE_FRAG
#define ADFS_BAD_FRAG
#define ADFS_ROOT_FRAG

#define ADFS_FILETYPE_NONE

/* RISC OS 12-bit filetype is stored in load_address[19:8] */
static inline u16 adfs_filetype(u32 loadaddr)
{}

#define ADFS_NDA_OWNER_READ
#define ADFS_NDA_OWNER_WRITE
#define ADFS_NDA_LOCKED
#define ADFS_NDA_DIRECTORY
#define ADFS_NDA_EXECUTE
#define ADFS_NDA_PUBLIC_READ
#define ADFS_NDA_PUBLIC_WRITE

/*
 * adfs file system inode data in memory
 */
struct adfs_inode_info {};

static inline struct adfs_inode_info *ADFS_I(struct inode *inode)
{}

static inline bool adfs_inode_is_stamped(struct inode *inode)
{}

/*
 * Forward-declare this
 */
struct adfs_discmap;
struct adfs_dir_ops;

/*
 * ADFS file system superblock data in memory
 */
struct adfs_sb_info {};

static inline struct adfs_sb_info *ADFS_SB(struct super_block *sb)
{}

/*
 * Directory handling
 */
struct adfs_dir {};

/*
 * This is the overall maximum name length
 */
#define ADFS_MAX_NAME_LEN
struct object_info {};

struct adfs_dir_ops {};

struct adfs_discmap {};

/* Inode stuff */
struct inode *adfs_iget(struct super_block *sb, struct object_info *obj);
int adfs_write_inode(struct inode *inode, struct writeback_control *wbc);
int adfs_notify_change(struct mnt_idmap *idmap, struct dentry *dentry,
		       struct iattr *attr);

/* map.c */
int adfs_map_lookup(struct super_block *sb, u32 frag_id, unsigned int offset);
void adfs_map_statfs(struct super_block *sb, struct kstatfs *buf);
struct adfs_discmap *adfs_read_map(struct super_block *sb, struct adfs_discrecord *dr);
void adfs_free_map(struct super_block *sb);

/* Misc */
__printf(3, 4)
void __adfs_error(struct super_block *sb, const char *function,
		  const char *fmt, ...);
#define adfs_error(sb, fmt...)
void adfs_msg(struct super_block *sb, const char *pfx, const char *fmt, ...);

/* super.c */

/*
 * Inodes and file operations
 */

/* dir_*.c */
extern const struct inode_operations adfs_dir_inode_operations;
extern const struct file_operations adfs_dir_operations;
extern const struct dentry_operations adfs_dentry_operations;
extern const struct adfs_dir_ops adfs_f_dir_ops;
extern const struct adfs_dir_ops adfs_fplus_dir_ops;

int adfs_dir_copyfrom(void *dst, struct adfs_dir *dir, unsigned int offset,
		      size_t len);
int adfs_dir_copyto(struct adfs_dir *dir, unsigned int offset, const void *src,
		    size_t len);
void adfs_dir_relse(struct adfs_dir *dir);
int adfs_dir_read_buffers(struct super_block *sb, u32 indaddr,
			  unsigned int size, struct adfs_dir *dir);
void adfs_object_fixup(struct adfs_dir *dir, struct object_info *obj);
extern int adfs_dir_update(struct super_block *sb, struct object_info *obj,
			   int wait);

/* file.c */
extern const struct inode_operations adfs_file_inode_operations;
extern const struct file_operations adfs_file_operations;

static inline __u32 signed_asl(__u32 val, signed int shift)
{}

/*
 * Calculate the address of a block in an object given the block offset
 * and the object identity.
 *
 * The root directory ID should always be looked up in the map [3.4]
 */
static inline int __adfs_block_map(struct super_block *sb, u32 indaddr,
				   unsigned int block)
{}

/* Return the disc record from the map */
static inline
struct adfs_discrecord *adfs_map_discrecord(struct adfs_discmap *dm)
{}

static inline u64 adfs_disc_size(const struct adfs_discrecord *dr)
{}