summaryrefslogtreecommitdiffstats
path: root/qemu/roms/openbios/include/fs/fs.h
diff options
context:
space:
mode:
Diffstat (limited to 'qemu/roms/openbios/include/fs/fs.h')
-rw-r--r--qemu/roms/openbios/include/fs/fs.h100
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 */