Contents of /trunk/mkinitrd-magellan/busybox/e2fsprogs/old_e2fsprogs/ext2fs/ext2_io.h
Parent Directory | Revision Log
Revision 984 -
(show annotations)
(download)
Sun May 30 11:32:42 2010 UTC (13 years, 11 months ago) by niro
File MIME type: text/plain
File size: 3159 byte(s)
Sun May 30 11:32:42 2010 UTC (13 years, 11 months ago) by niro
File MIME type: text/plain
File size: 3159 byte(s)
-updated to busybox-1.16.1 and enabled blkid/uuid support in default config
1 | /* vi: set sw=4 ts=4: */ |
2 | /* |
3 | * io.h --- the I/O manager abstraction |
4 | * |
5 | * Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o. |
6 | * |
7 | * %Begin-Header% |
8 | * This file may be redistributed under the terms of the GNU Public |
9 | * License. |
10 | * %End-Header% |
11 | */ |
12 | #ifndef EXT2FS_EXT2_IO_H |
13 | #define EXT2FS_EXT2_IO_H 1 |
14 | |
15 | /* |
16 | * ext2_loff_t is defined here since unix_io.c needs it. |
17 | */ |
18 | #if defined(__GNUC__) || defined(HAS_LONG_LONG) |
19 | typedef long long ext2_loff_t; |
20 | #else |
21 | typedef long ext2_loff_t; |
22 | #endif |
23 | |
24 | /* llseek.c */ |
25 | /* ext2_loff_t ext2fs_llseek (int, ext2_loff_t, int); */ |
26 | #ifdef CONFIG_LFS |
27 | # define ext2fs_llseek lseek64 |
28 | #else |
29 | # define ext2fs_llseek lseek |
30 | #endif |
31 | |
32 | typedef struct struct_io_manager *io_manager; |
33 | typedef struct struct_io_channel *io_channel; |
34 | |
35 | #define CHANNEL_FLAGS_WRITETHROUGH 0x01 |
36 | |
37 | struct struct_io_channel { |
38 | errcode_t magic; |
39 | io_manager manager; |
40 | char *name; |
41 | int block_size; |
42 | errcode_t (*read_error)(io_channel channel, |
43 | unsigned long block, |
44 | int count, |
45 | void *data, |
46 | size_t size, |
47 | int actual_bytes_read, |
48 | errcode_t error); |
49 | errcode_t (*write_error)(io_channel channel, |
50 | unsigned long block, |
51 | int count, |
52 | const void *data, |
53 | size_t size, |
54 | int actual_bytes_written, |
55 | errcode_t error); |
56 | int refcount; |
57 | int flags; |
58 | int reserved[14]; |
59 | void *private_data; |
60 | void *app_data; |
61 | }; |
62 | |
63 | struct struct_io_manager { |
64 | errcode_t magic; |
65 | const char *name; |
66 | errcode_t (*open)(const char *name, int flags, io_channel *channel); |
67 | errcode_t (*close)(io_channel channel); |
68 | errcode_t (*set_blksize)(io_channel channel, int blksize); |
69 | errcode_t (*read_blk)(io_channel channel, unsigned long block, |
70 | int count, void *data); |
71 | errcode_t (*write_blk)(io_channel channel, unsigned long block, |
72 | int count, const void *data); |
73 | errcode_t (*flush)(io_channel channel); |
74 | errcode_t (*write_byte)(io_channel channel, unsigned long offset, |
75 | int count, const void *data); |
76 | errcode_t (*set_option)(io_channel channel, const char *option, |
77 | const char *arg); |
78 | int reserved[14]; |
79 | }; |
80 | |
81 | #define IO_FLAG_RW 1 |
82 | |
83 | /* |
84 | * Convenience functions.... |
85 | */ |
86 | #define io_channel_close(c) ((c)->manager->close((c))) |
87 | #define io_channel_set_blksize(c,s) ((c)->manager->set_blksize((c),s)) |
88 | #define io_channel_read_blk(c,b,n,d) ((c)->manager->read_blk((c),b,n,d)) |
89 | #define io_channel_write_blk(c,b,n,d) ((c)->manager->write_blk((c),b,n,d)) |
90 | #define io_channel_flush(c) ((c)->manager->flush((c))) |
91 | #define io_channel_bumpcount(c) ((c)->refcount++) |
92 | |
93 | /* io_manager.c */ |
94 | extern errcode_t io_channel_set_options(io_channel channel, |
95 | const char *options); |
96 | extern errcode_t io_channel_write_byte(io_channel channel, |
97 | unsigned long offset, |
98 | int count, const void *data); |
99 | |
100 | /* unix_io.c */ |
101 | extern io_manager unix_io_manager; |
102 | |
103 | /* test_io.c */ |
104 | extern io_manager test_io_manager, test_io_backing_manager; |
105 | extern void (*test_io_cb_read_blk) |
106 | (unsigned long block, int count, errcode_t err); |
107 | extern void (*test_io_cb_write_blk) |
108 | (unsigned long block, int count, errcode_t err); |
109 | extern void (*test_io_cb_set_blksize) |
110 | (int blksize, errcode_t err); |
111 | |
112 | #endif |