📄 ext2_io.h
字号:
/* vi: set sw=4 ts=4: *//* * io.h --- the I/O manager abstraction * * Copyright (C) 1993, 1994, 1995, 1996 Theodore Ts'o. * * %Begin-Header% * This file may be redistributed under the terms of the GNU Public * License. * %End-Header% */#ifndef _EXT2FS_EXT2_IO_H#define _EXT2FS_EXT2_IO_H/* * ext2_loff_t is defined here since unix_io.c needs it. */#if defined(__GNUC__) || defined(HAS_LONG_LONG)typedef long long ext2_loff_t;#elsetypedef long ext2_loff_t;#endif/* llseek.c *//* ext2_loff_t ext2fs_llseek (int, ext2_loff_t, int); */#ifdef CONFIG_LFS# define ext2fs_llseek lseek64#else# define ext2fs_llseek lseek#endiftypedef struct struct_io_manager *io_manager;typedef struct struct_io_channel *io_channel;#define CHANNEL_FLAGS_WRITETHROUGH 0x01struct struct_io_channel { errcode_t magic; io_manager manager; char *name; int block_size; errcode_t (*read_error)(io_channel channel, unsigned long block, int count, void *data, size_t size, int actual_bytes_read, errcode_t error); errcode_t (*write_error)(io_channel channel, unsigned long block, int count, const void *data, size_t size, int actual_bytes_written, errcode_t error); int refcount; int flags; int reserved[14]; void *private_data; void *app_data;};struct struct_io_manager { errcode_t magic; const char *name; errcode_t (*open)(const char *name, int flags, io_channel *channel); errcode_t (*close)(io_channel channel); errcode_t (*set_blksize)(io_channel channel, int blksize); errcode_t (*read_blk)(io_channel channel, unsigned long block, int count, void *data); errcode_t (*write_blk)(io_channel channel, unsigned long block, int count, const void *data); errcode_t (*flush)(io_channel channel); errcode_t (*write_byte)(io_channel channel, unsigned long offset, int count, const void *data); errcode_t (*set_option)(io_channel channel, const char *option, const char *arg); int reserved[14];};#define IO_FLAG_RW 1/* * Convenience functions.... */#define io_channel_close(c) ((c)->manager->close((c)))#define io_channel_set_blksize(c,s) ((c)->manager->set_blksize((c),s))#define io_channel_read_blk(c,b,n,d) ((c)->manager->read_blk((c),b,n,d))#define io_channel_write_blk(c,b,n,d) ((c)->manager->write_blk((c),b,n,d))#define io_channel_flush(c) ((c)->manager->flush((c)))#define io_channel_bumpcount(c) ((c)->refcount++)/* io_manager.c */extern errcode_t io_channel_set_options(io_channel channel, const char *options);extern errcode_t io_channel_write_byte(io_channel channel, unsigned long offset, int count, const void *data);/* unix_io.c */extern io_manager unix_io_manager;/* test_io.c */extern io_manager test_io_manager, test_io_backing_manager;extern void (*test_io_cb_read_blk) (unsigned long block, int count, errcode_t err);extern void (*test_io_cb_write_blk) (unsigned long block, int count, errcode_t err);extern void (*test_io_cb_set_blksize) (int blksize, errcode_t err);#endif /* _EXT2FS_EXT2_IO_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -