答え1
「ユーザ空間カーネルモジュール」の説明は矛盾している。つまり、ユーザー空間またはカーネルで実行されますが、どちらでも実行できず、カーネルモジュールもユーザー空間で実行できません。
つまり、書くことができるデバイスドライバユーザー空間では、かなり一般的なカーネルAPI(モジュールであるかどうかにかかわらず、カーネル空間で実行されます)を使用し、ユーザー空間で実際のデバイスドライバ機能を実装します。libusb
、またはを使用するspidev
デバイスドライバはi2cdev
これの例です。ライブラリを使用してよく知られているカーネルAPIにアクセスするか、APIに直接アクセスしますが、デバイスドライバロジックはユーザースペースで実行されます。
別の同様の例はヒューズ:固定カーネルAPIを使用して、ユーザースペースに独自のファイルシステムを実装できます。
したがって、例が必要な場合は、GoogleでこれらのAPIを使用するデバイスドライバを見つけてください。しかし、これは「ユーザ空間カーネルデバイスドライバ」ではなく、「ユーザ空間デバイスドライバ」の例であり、それが望むものであるかどうかはわかりません。
カーネル空間で実行されるものを作成するには、カーネルモジュールの作成方法を学ぶ必要があります。
答え2
ファイルの作成にsysfs
答えがありますスタックオーバーフロー。処理が簡単で、デフォルトではroot権限なしでアクセスできます。