4

Linux Kernel Module Programmingガイドをざっと読みましたが、わかりません:

と言うとcat image.iso > /dev/sdafile_operations構造体writeの関数がデバイスドライバに実行されるのでしょうか?または、ファイル インターフェイスがブロック デバイス ノードに適用されていませんか?sda

その関数の実装はどこにありますか? ( Linux コード ツリー内のそれぞれのドライバー)?

4

1 に答える 1

0

fs/block-dev.c は、ブロック デバイスに適用可能なファイル操作とアドレス空間操作を定義します。

static const struct address_space_operations def_blk_aops = {
    .readpage       = blkdev_readpage,
    .writepage      = blkdev_writepage,
    .write_begin    = blkdev_write_begin,
    .write_end      = blkdev_write_end,
    .writepages     = generic_writepages,
    .releasepage    = blkdev_releasepage,
    .direct_IO      = blkdev_direct_IO,
    .is_dirty_writeback = buffer_check_dirty_writeback,
};

const struct file_operations def_blk_fops = {
    .open           = blkdev_open,
    .release        = blkdev_close,
    .llseek         = block_llseek,
    .read           = do_sync_read,
    .write          = do_sync_write,
    .aio_read       = blkdev_aio_read,
    .aio_write      = blkdev_aio_write,
    .mmap           = generic_file_mmap,
    .fsync          = blkdev_fsync,
    .unlocked_ioctl = block_ioctl,
#ifdef CONFIG_COMPAT
    .compat_ioctl   = compat_blkdev_ioctl,
#endif
    .splice_read    = generic_file_splice_read,
    .splice_write   = generic_file_splice_write,
};
于 2015-06-02T12:15:56.427 に答える