diff options
Diffstat (limited to 'qemu/roms/openbios/include/fs/fs.h')
-rw-r--r-- | qemu/roms/openbios/include/fs/fs.h | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/qemu/roms/openbios/include/fs/fs.h b/qemu/roms/openbios/include/fs/fs.h new file mode 100644 index 000000000..0a22fa278 --- /dev/null +++ b/qemu/roms/openbios/include/fs/fs.h @@ -0,0 +1,100 @@ +/* + * Creation Date: <2001/05/06 17:12:45 samuel> + * Time-stamp: <2003/10/22 11:43:45 samuel> + * + * <fs_loader.h> + * + * Generic file system access + * + * Copyright (C) 2001, 2002, 2003 Samuel Rydh (samuel@ibrium.se) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation + * + */ + +#ifndef _H_FS +#define _H_FS + + +typedef struct fs_ops fs_ops_t; +typedef struct opaque_struct file_desc_t; + +#define fs_open_path( fs, path ) (fs)->open_path( fs, path ) +#define fs_search_rom( fs ) (fs)->search_rom( fs ) +#define fs_search_file( fs, name ) (fs)->search_file( fs, name ) +#define fs_vol_name( fs, buf, size ) (fs)->vol_name( fs, buf, size ) + +struct fs_ops { + void *fs_data; + int fd; /* owner block device */ + int type; + + void (*close_fs)( fs_ops_t *fs ); + file_desc_t *(*open_path)( fs_ops_t *fs, const char *path ); + file_desc_t *(*search_rom)( fs_ops_t *fs ); + file_desc_t *(*search_file)( fs_ops_t *fs, const char *name ); + char *(*vol_name)( fs_ops_t *fs, char *buf, int size ); + + /* file ops */ + void (*close)( file_desc_t *file ); + int (*read)( file_desc_t *file, void *buf, size_t count ); + int (*lseek)( file_desc_t *file, off_t offset, int whence ); + char *(*get_path)( file_desc_t *file, char *buf, int len ); + void (*dir)( file_desc_t *file ); + + const char *(*get_fstype)( fs_ops_t *fs ); +}; + +extern fs_ops_t *fs_open( int fs_type, int fd ); +extern void fs_close( fs_ops_t *fs ); +const char *fs_get_name( fs_ops_t *fs ); + +#ifdef CONFIG_HFSP +extern int fs_hfsp_open( int fd, fs_ops_t *fs ); +extern int fs_hfsp_probe( int fd, long long offs ); +#else +static inline int fs_hfsp_open( int fd, fs_ops_t *fs ) { return -1; } +static inline int fs_hfsp_probe( int fd, long long offs ) { return -1; } +#endif + +#ifdef CONFIG_HFS +extern int fs_hfs_open( int fd, fs_ops_t *fs ); +extern int fs_hfs_probe( int fd, long long offs ); +#else +static inline int fs_hfs_open( int fd, fs_ops_t *fs ) { return -1; } +static inline int fs_hfs_probe( int fd, long long offs ) { return -1; } +#endif + +#ifdef CONFIG_ISO9660 +extern int fs_iso9660_open( int fd, fs_ops_t *fs ); +extern int fs_iso9660_probe( int fd, long long offs ); +#else +static inline int fs_iso9660_open( int fd, fs_ops_t *fs ) { return -1; } +static inline int fs_iso9660_probe( int fd, long long offs ) { return -1; } +#endif + +#ifdef CONFIG_EXT2 +extern int fs_ext2_open( int fd, fs_ops_t *fs ); +extern int fs_ext2_probe( int fd, long long offs ); +#else +static inline int fs_ext2_open( int fd, fs_ops_t *fs ) { return -1; } +static inline int fs_ext2_probe( int fd, long long offs ) { return -1; } +#endif + +#ifdef CONFIG_GRUBFS +extern int fs_grubfs_open( int fd, fs_ops_t *fs ); +extern int fs_grubfs_probe( int fd, long long offs ); +#else +static inline int fs_grubfs_open( int fd, fs_ops_t *fs ) { return -1; } +static inline int fs_grubfs_probe( int fd, long long offs ) { return -1; } +#endif + + + +/* misc */ +extern char *get_hfs_vol_name( int fd, char *buf, int size ); + + +#endif /* _H_FS */ |