1

「Linux デバイスドライバー」について学んでいます。という名前のキャラクター デバイスを作成しましたchar_device。デバイスからデータを読み取ると、端末にメッセージを出力し続け、マシンを無限にクラッシュさせます。

ドライバーでの読み取り操作のソース コード:

static ssize_t my_read(struct file *my_file, char __user *buf, size_t len, loff_t *off) {
    uint8_t *message = "Hello from the kernel world!\n";
    size_t datalen = strlen(message);
    
    if(len > datalen) {
        len = datalen;
    }
    printk(KERN_INFO "Char driver: Read");
    if(copy_to_user(buf, message, len)) {
        return -EFAULT;
    }

    return len;
}

デバイスの読み取りに使用されるユーザー空間コマンド:

cat /dev/char_device

ドライバーは「Hello from the kernel world!」と出力し続けます。端末へのメッセージ。

4

1 に答える 1