私はLinuxカーネル用のキャラクターデバイスモジュールを書くことをいじっていましたが、少し混乱しました。
オンラインでは、ioctl()コマンド/データをユーザープログラムからカーネルスペースに、またはその逆に転送するために使用するという話があります。しかし、それの多くは、すでに可能であることを行うのはやり過ぎのようですfile_operations struct
// structure containing callbacks
static struct file_operations fops =
{
.read = dev_read, // address of dev_read
.open = dev_open, // address of dev_open
.write = dev_write, // address of dev_write
.release = dev_rls, // address of dev_rls
};
ioctl()で定義された関数を使用する代わりに、dev_read()およびを使用してユーザーランドとdev_write()の間でデータのチャンクをコピーするだけで使用することには、どのような利点がありますか?copy_to_user()copy_from_user()