RedHawk Linux User's Guide version 6.3 æ¥æ¬èªç
RedHawk Linux User's Guide version 6.3 æ¥æ¬èªç
RedHawk Linux User's Guide version 6.3 æ¥æ¬èªç
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
デバイス・ドライバBKLがロックされないようにデバイス・ドライバを 修 正 することはとても 重 要 です。さもなければ、プロセスは 同 じCPUへ 割 り 当 てられるプログラムや 割 り 込 みへのジッターの 原 因 となり 長 期にわたりBKLスピンロック 上 でスピンが 停 止 する 可 能 性 があります。デバイスのioctlルーチンへのエントリでBKLがロックされないように 指 定 するためのメカニズムは、デバイスのioctlメソッドとしてよりもむしろデバイスのunlocked_ioctlメソッドとしてドライバのioctl 機 能 を 登 録 することです。 以 下 はどのようにしてRCIMデバイスにこのフラグを 設定 するかの 例 です:static struct file_operations rcim_fops = {owner:THIS_MODULE,open:rcim_master_open,release:rcim_master_release,unlocked_ioctl: rcim_master_ioctl,mmap:rcim_master_mmap,};この 変 更 を 行 った 後 、デバイス・ドライバを 再 構 築 する 必 要 があります。 静 的 ドライバに 関 しては、これはカーネル 全 体 を 再 構 築 することを 意 味 します。 動 的 にロード 可 能 なモジュールに 関 しては、そのモジュールだけを 再 構 築 する 必 要 があります。 詳 細 については「カーネルの 構 成 および 構 築 」 章 を 参 照 して 下 さい。ユーザー 空 間 I/Oドライバドライバ(UIO) 14UIOはユーザー・レベル・ドライバを 記 述 するために 標 準 化 されたメソッドです。これはやはり小 さなドライバ 単 位 のカーネル・モジュールを 必 要 としますが、ドライバの 主 要 部邪 分 は 使 い 慣 れたツールやライブラリを 使 用 してユーザー 空 間 で 記 述 します。UIOを 使 用 すると、 標 準 的 なPCIカードの 取 り 込 みや 任 意 の 目 的 のために 簡 単 なユーザー 空 間 ドライバを 作 ることが 可 能 となります。これらのドライバは 実 装 やテストが 容 易 でありカーネルのバージョン 変 更 から 分 離 されています。そのドライバのバグはカーネルをクラッシュすることはなく、ドライバのアップデートはカーネルの 再 コンパイルなしに 行 うことが 可 能 です。現 在 、UIOドライバはキャラクタ・デバイス・ドライバだけに 使 用 することが 可 能 でユーザー 空間 からDMA 操 作 を 提 供 するために 使 用 することは 出 来 ません。小 さなドライバ 単 位 のカーネル・モジュールは 次 が 必 要 となります:• ボードのデバイスIDとベンダーIDが 一 致• 低 レベルでの 初 期 化 を 実 行• 割 り 込 みの 応 答一 旦 所 有 ハードウェア 用 に 動 作 するカーネル・モジュールを 所 有 してしまえば、ユーザー・アプリケーションを 記 述 するために 通 常 使 用 されるツールやライブラリを 使 用 してユーザー 空 間 ドライバを 記 述 することが 可 能 となります。lsuio(1)ツールはUIOデバイスとその 属 性 をリストアップするために 使 用 することが 可 能 です。各 UIOデバイスはデバイスファイル/dev/uio0, /dev/uio1などを 介 してアクセスします。 変 数 の 読み 書 きをするために 使 用 されるドライバの 属 性 は、/sys/class/uio/uioXディレクトリの 下 にあります。メモリ 領 域 はmmap(1)を 介 してサクセスされます。UIOデバイス・ドライバを 記 述 するための 完 全 な 説 明 書 は/usr/share/doc/ccur/examples/driver/uio/uio-howto.pdfで 見 ることが 可 能 です。14-15