「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!」と出力し続けます。端末へのメッセージ。