uae-wii/src/include/filesys.h

95 lines
3.4 KiB
C

/*
* UAE - The Un*x Amiga Emulator
*
* Unix file system handler for AmigaDOS
*
* Copyright 1997 Bernd Schmidt
*/
struct hardfiledata {
uae_u64 size;
uae_u64 offset;
int nrcyls;
int secspertrack;
int surfaces;
int reservedblocks;
unsigned int blocksize;
#ifdef WIN32
void *handle;
#else
int handle;
#endif
int readonly;
int flags;
uae_u8 *cache;
int cache_valid;
uae_u64 cache_offset;
char vendor_id[8 + 1];
char product_id[16 + 1];
char product_rev[4 + 1];
char device_name[256];
char path[256];
/* geometry from possible RDSK block */
unsigned int cylinders;
unsigned int sectors;
unsigned int heads;
uae_u64 size2;
uae_u64 offset2;
};
#define FILESYS_VIRTUAL 0
#define FILESYS_HARDFILE 1
#define FILESYS_HARDFILE_RDB 2
#define FILESYS_HARDDRIVE 3
#define FILESYS_FLAG_DONOTSAVE 1
#define MAX_FILESYSTEM_UNITS 30
struct uaedev_mount_info;
extern struct uaedev_mount_info options_mountinfo;
extern void free_mountinfo (struct uaedev_mount_info *);
extern int nr_units (struct uaedev_mount_info *mountinfo);
extern int is_hardfile (struct uaedev_mount_info *mountinfo, int unit_no);
extern const char *set_filesys_unit (struct uaedev_mount_info *mountinfo, int,
const char *devname, const char *volname, const char *rootdir,
int readonly, int secs, int surfaces, int reserved,
int blocksize, int bootpri, const char *filesysdir, int flags);
extern const char *add_filesys_unit (struct uaedev_mount_info *mountinfo,
const char *devname, const char *volname, const char *rootdir,
int readonly, int secs, int surfaces, int reserved,
int blocksize, int bootpri, const char *filesysdir, int flags);
extern const char *get_filesys_unit (struct uaedev_mount_info *mountinfo, int nr,
char **devname, char **volame, char **rootdir, int *readonly,
int *secspertrack, int *surfaces, int *reserved,
int *cylinders, uae_u64 *size, int *blocksize, int *bootpri,
char **filesysdir, int *flags);
extern int kill_filesys_unit (struct uaedev_mount_info *mountinfo, int);
extern int move_filesys_unit (struct uaedev_mount_info *mountinfo, int nr, int to);
extern int sprintf_filesys_unit (const struct uaedev_mount_info *mountinfo, char *buffer, int num);
extern void write_filesys_config (const struct uaedev_mount_info *mountinfo, const char *unexpanded,
const char *defaultpath, FILE *f);
extern void filesys_init (void);
extern void filesys_reset (void);
extern void filesys_cleanup (void);
extern void filesys_prepare_reset (void);
extern void filesys_start_threads (void);
extern void filesys_flush_cache (void);
extern struct hardfiledata *get_hardfile_data (int nr);
#define FILESYS_MAX_BLOCKSIZE 2048
extern int hdf_open (struct hardfiledata *hfd, const char *name);
extern int hdf_dup (struct hardfiledata *dhfd, const struct hardfiledata *shfd);
extern void hdf_close (struct hardfiledata *hfd);
extern int hdf_read (struct hardfiledata *hfd, void *buffer, uae_u64 offset, int len);
extern int hdf_write (struct hardfiledata *hfd, void *buffer, uae_u64 offset, int len);
extern int hdf_getnumharddrives (void);
extern char *hdf_getnameharddrive (int index, int flags);
extern int hdf_init (void);
extern int isspecialdrive (const char *name);
extern void filesys_cleanup (void);
extern int filesys_is_readonly (const char *path);