yaboot-1.3.17
[yaboot.git] / include / fs.h
1 /*
2  *  fs.h - Filesystem common definitions
3  *
4  *  Copyright (C) 2001 Ethan Benson
5  *
6  *  Copyright (C) 1999 Benjamin Herrenschmidt
7  *
8  *  This program is free software; you can redistribute it and/or modify
9  *  it under the terms of the GNU General Public License as published by
10  *  the Free Software Foundation; either version 2 of the License, or
11  *  (at your option) any later version.
12  *
13  *  This program is distributed in the hope that it will be useful,
14  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
15  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16  *  GNU General Public License for more details.
17  *
18  *  You should have received a copy of the GNU General Public License
19  *  along with this program; if not, write to the Free Software
20  *  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
21  */
22
23 #ifndef FS_H
24 #define FS_H
25
26 #include "partition.h"
27 #include "file.h"
28
29 int fserrorno;
30 struct boot_fspec_t;
31
32 struct fs_t {
33         const char* name;
34
35         int (*open)(    struct boot_file_t*     file,
36                         struct partition_t*     part,
37                         struct boot_fspec_t*    fspec);
38
39         int (*read)(    struct boot_file_t*     file,
40                         unsigned int            size,
41                         void*                   buffer);
42
43         int (*seek)(    struct boot_file_t*     file,
44                         unsigned int            newpos);
45
46         int (*close)(   struct boot_file_t*     file);
47
48         unsigned int (*ino_size)(struct boot_file_t *file);
49 };
50
51 extern const struct fs_t *fs_of;
52 extern const struct fs_t *fs_of_netboot;
53
54 const struct fs_t *fs_open(struct boot_file_t *file,
55                           struct partition_t *part, struct boot_fspec_t *fspec);
56
57 #endif