Tweet Linux カーネルの中には、カーネル内でのデッドロックやメモリリークなど、カーネル自身のデバッグを行うための様々な機能が含まれています。しかし、 kernel パッケージに含まれている普通のカーネルでは大部分が無効化されているため、実際に運用を開始してトラブルに遭遇するまで、カーネル自身のバグに気が付かないケースが多くあります。 RHEL の場合、多くのデバッグ機能を有効にした kernel-debug というパッケージも提供されています。 kernel-debug パッケージに含まれているデバッグ用カーネルを用いてシステムの構築時に試験を行うことで、運用開始後に遭遇する可能性のあるバグの一部を事前に見つけて対処を行うことができます。また、運用開始後でも、原因の究明に役立つことがあります。 kernel-debug パッケージのインストールは、以下に示すように yum コマン
ftraceの使い方については、以下の記事でも紹介しましたが、 ftraceを試してみました - へにゃぺんて@日々勉強のまとめ 過去には紹介しなかった使い方も分かったので、あらためてまとめます。 過去に紹介したときは、 「関数単位でカーネルの実行状況のトレースログを出してくれる機能」 という紹介でしたが、実は他にも機能があります。 なお以降の説明は、Linux 3.14.51で確認したものです。 また、debugfsのマウントポイントをで略記しています。 参考: debugfsのマウント方法 (マウントポイント /sys/kernel/debug の場合) sudo mount -t debugfs none /sys/kernel/debug カーネルコンフィギュレーションの変更 ftraceを使用する際もカーネルコンフィギュレーションの変更が必要です。 Kernel hacking
mmapでMAP_FIXEDを利用する方法を紹介します。 1.はじめに mmapはファイルの内容をメモリにマップするC/C++の関数です。 mmapの引数は、 void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset); となっています。各引数の意味は次のとおりです。 addr:新しいマッピングの開始アドレス length:マッピングの長さ prot:マッピングのメモリ保護 flags:マッピングに対する更新の見え方 offset:マッピング開始位置 manによるとmmapは次のような動作になります。 addr が NULL の場合、カーネルがマッピングを作成するアドレスを選択する。この方法は最も移植性のある新 しいマッピングの作成方法である。 addr が NULL でない場合、カーネル
本章では、Armadillo-400 シリーズに固有な Linux カーネルのデバイスドライバーの仕様について説明します。 Armadillo-400 シリーズでは、カーネルコンフィギュレーションを変更することにより、標準で有効になっているもの以外の様々な機能を使用することができます。 Armadillo-400で、標準で有効になっていないデバイスドライバーを使用するためには、以下の手順でカーネルコンフィギュレーションをおこなう必要があります。 ボードオプションによりどのピンに機能を割り当てるか選択する。 ボードオプションは、make menuconfig でコンフィギュレーションを行う場合、Linux Kernel Configuration の System Type -> Freescale MXC Implementations -> MX25 Options -> Armadil
この記事はLinux Advent Calendar 2016 9日目の記事です。 遅刻してしまい申し訳ございません。。。 とある事情があって1ヶ月半ほど独自NICのLinux向けのネットワークドライバを開発していた。 今回はARM用のデバイスドライバを開発した。NICはXilinx社のFPGAであるZYBOを用いて開発した。 まだ十分に実用段階というわけではないが、ひとまず独自NIC経由でのpingやiperfが通ったので、後学のために知見を残しておきたい(誰得だ、という感じだが)。 ソースコードはまだ公開されていないが、そう遠くないうちに公開する予定(たぶん)。 はじめに Linuxのデバイスには キャラクタデバイス - バイト単位のデータ通信 (e.g. シリアルポート) ブロックデバイス - ブロック単位のデータ通信 (e.g. ディスク) ネットワークデバイス の3種類がある。ネ
2012年4月 AVRを使った製作物にV-USBを組み込もうと思いましたが、デバイス側もホスト側もソフトをどのように作ればよいのかよく分からなかったので、調べながら挑戦しました。 本記事はそのときのメモをまとめたものです。内容が偏っていたり、説明順的に読みにくいところもあると思いますが、ご了承ください。 ※HIDデバイス…ヒューマン・インターフェイス・デバイス・デバイス。気にしないでください。 【目次】 V-USBとは V-USBでHIDデバイスを作る V-USBファイルの配置とAVR Studioの設定 usbconfig.hを書き換える デバイスの動作を確認する 転送方向/レポートタイプ/サポートツール データ転送の流れとデータのゲット/セット場所について データ送受信のサイズと戻り値について GetIdol/SetIdolリクエストについて データ転送の種類と処理間隔について 大きな
UIO: ユーザー空間でデバイスドライバ作成が可能に UIOがLinux Kernel 2.6.23-rc1でマージされました。UIOはユーザー空間でドライバを作成するための仕組みです。Hans-Jurgen Kochの提案したパッチで、Greg K-H経由でマージされています。 UIOは、これらのハードルがあるカーネル空間でのドライバ開発部分をテンプレート化することで簡便にしてしまいます。一部の定義をカーネル空間で用意する必要がありますが、大半の部分をユーザー空間だけで実装できるようです。メモリにデバイスのレジスタなどさえマップできればよい、あるいは割り込みの通知さえ行えればよいのであれば利用できます。 ユーザー空間でUIOを利用する側からは、/dev/uio0をopenしてmmapすると、デバイスのメモリ空間が見えます。また/dev/uio0からreadすると、割り込みが起きるまでブロ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く