|
|
1.1 root 1: /*
2: * Creation Date: <2001/05/06 17:12:45 samuel>
3: * Time-stamp: <2003/10/22 11:43:45 samuel>
4: *
5: * <fs_loader.h>
6: *
7: * Generic file system access
8: *
9: * Copyright (C) 2001, 2002, 2003 Samuel Rydh ([email protected])
10: *
11: * This program is free software; you can redistribute it and/or
12: * modify it under the terms of the GNU General Public License
13: * as published by the Free Software Foundation
14: *
15: */
16:
17: #ifndef _H_FS
18: #define _H_FS
19:
20:
21: typedef struct fs_ops fs_ops_t;
22: typedef struct opaque_struct file_desc_t;
23:
24: #define fs_open_path( fs, path ) (fs)->open_path( fs, path )
25: #define fs_search_rom( fs ) (fs)->search_rom( fs )
26: #define fs_search_file( fs, name ) (fs)->search_file( fs, name )
27: #define fs_vol_name( fs, buf, size ) (fs)->vol_name( fs, buf, size )
28:
29: struct fs_ops {
30: void *fs_data;
31: int fd; /* owner block device */
32: int type;
33:
34: void (*close_fs)( fs_ops_t *fs );
35: file_desc_t *(*open_path)( fs_ops_t *fs, const char *path );
36: file_desc_t *(*search_rom)( fs_ops_t *fs );
37: file_desc_t *(*search_file)( fs_ops_t *fs, const char *name );
38: char *(*vol_name)( fs_ops_t *fs, char *buf, int size );
39:
40: /* file ops */
41: void (*close)( file_desc_t *file );
42: int (*read)( file_desc_t *file, void *buf, size_t count );
43: int (*lseek)( file_desc_t *file, off_t offset, int whence );
44: char *(*get_path)( file_desc_t *file, char *buf, int len );
45: void (*dir)( file_desc_t *file );
46:
47: const char *(*get_fstype)( fs_ops_t *fs );
48: };
49:
50: extern fs_ops_t *fs_open( int fs_type, int fd );
51: extern void fs_close( fs_ops_t *fs );
52: const char *fs_get_name( fs_ops_t *fs );
53:
54: #ifdef CONFIG_HFSP
55: extern int fs_hfsp_open( int fd, fs_ops_t *fs );
56: extern int fs_hfsp_probe( int fd, long long offs );
57: #else
58: static inline int fs_hfsp_open( int fd, fs_ops_t *fs ) { return -1; }
59: static inline int fs_hfsp_probe( int fd, long long offs ) { return -1; }
60: #endif
61:
62: #ifdef CONFIG_HFS
63: extern int fs_hfs_open( int fd, fs_ops_t *fs );
64: extern int fs_hfs_probe( int fd, long long offs );
65: #else
66: static inline int fs_hfs_open( int fd, fs_ops_t *fs ) { return -1; }
67: static inline int fs_hfs_probe( int fd, long long offs ) { return -1; }
68: #endif
69:
70: #ifdef CONFIG_ISO9660
71: extern int fs_iso9660_open( int fd, fs_ops_t *fs );
72: extern int fs_iso9660_probe( int fd, long long offs );
73: #else
74: static inline int fs_iso9660_open( int fd, fs_ops_t *fs ) { return -1; }
75: static inline int fs_iso9660_probe( int fd, long long offs ) { return -1; }
76: #endif
77:
78: #ifdef CONFIG_EXT2
79: extern int fs_ext2_open( int fd, fs_ops_t *fs );
80: extern int fs_ext2_probe( int fd, long long offs );
81: #else
82: static inline int fs_ext2_open( int fd, fs_ops_t *fs ) { return -1; }
83: static inline int fs_ext2_probe( int fd, long long offs ) { return -1; }
84: #endif
85:
86: #ifdef CONFIG_GRUBFS
87: extern int fs_grubfs_open( int fd, fs_ops_t *fs );
88: extern int fs_grubfs_probe( int fd, long long offs );
89: #else
90: static inline int fs_grubfs_open( int fd, fs_ops_t *fs ) { return -1; }
91: static inline int fs_grubfs_probe( int fd, long long offs ) { return -1; }
92: #endif
93:
94:
95:
96: /* misc */
97: extern char *get_hfs_vol_name( int fd, char *buf, int size );
98:
99:
100: #endif /* _H_FS */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.