3

特定の時間帯の入力を無効にするカーネル モジュールを作成しようとしています。時刻を取得する方法 (Linux カーネル空間で現在の時刻 (時刻) を取得する方法) と関数をスケジュールする方法を見つけました。ただし、入力を無効にする方法がわかりません。カーネルがこれを行う場所が必要だと思いますが、API を読んだので、まだ前進していません。ドライバーに直接アクセスしてシャットダウンするか何かする必要があると思いますが、それは少し一般的ではないようです。これは可能ですか?

御時間ありがとうございます。

4

2 に答える 2

2

よくわかりませんが、ユーザー空間にいる場合は、未使用の仮想コンソールに切り替えてから、キーボードを raw モードにするだけで十分です。これにより、通常は別の仮想コンソールに切り替わるキーの組み合わせがブロックされます。これでマウスが無効になることはありませんが、マウスが現在の VT でない場合、X はマウスを無視する必要があります (gpm が実行されていないことを確認してください)。

また、有効になっている場合は、magic-sysrq キーの組み合わせを無効にする必要があります。これは、キーボードを raw モードから外すための sysrq キーがあるためです。


編集:通常のタスクコンテキストにいる場合、カーネルスペースからこれらすべてを実行できるはずです。カーネル スレッドで十分だと思います。

カーネルからファイルとデバイスを開くことができますが、お勧めしません。/dev を含む名前空間を持つタスク (カーネル タスクがそうするかどうかはわかりません)。filp_open を呼び出して (私が思うに) ファイルを取得することができます *。その後、その file_operations (f_op) で適切なメソッドを呼び出すことができます。これには、上記を行うために必要な ioctl が含まれている必要があります。

filp_open 経由ではなく、デバイスを直接開く方法があるかもしれません。

要するに、それは可能でなければなりません。カーネル空間から行うのは非常に危険です。

于 2011-03-02T22:16:12.100 に答える
0

考えられる 1 つの方法は、キーワードとマウスの IRQ を無効にすることです。 disable_irqenable_irqを使用してそれを行うことができます。

x86 の IRQ 番号は次のとおりです。必要に応じて、SPARC、IA-64 などの他のプラットフォームの IRQ を取得するには、他の表を参照する必要があるかもしれません。

于 2011-03-03T16:55:22.383 に答える