IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
LinuxのLoadable Kernel Moduleの作り方のHowTo。対象のカーネルバージョンは2.6。 1. SourceとMakefile カーネルにLoad/Unloadできるだけの小モジュールを作ってみる。何処か適当なディレクトリに以下のようにソースとMakefileを作る。ソースとMakefileの中身は以下を参照。.tar.gzにまとめたファイルはこちらから。 xxxxxx/ Makefile - Makefile small.c - モジュールのソース 1.1 Source モジュールのソースコードのサンプルを以下に示す。 最低限必要なのは、モジュールがLoadされた時に呼び出される初期化ルーチン(smallmod_init_module())とモジュールがUnloadされる時に呼び出される後処理用ルーチン(smallmod_init_module())。これらのルー
○ はじめに Linux® でのデバイスドライバは、カーネルに静的にリンクする形式と、動的にロードすることができるモジュール形式で作成することができます。本 Webではカーネルモジュールの作成方法を説明します。 "C 言語によるプログラミングでは main() 関数から実行される" という約束事があるように、モジュールプログラミングにもこうしなければならないという約束事があります。 ここでは、簡単なモジュールを作ってみることでモジュールプログラミングに最低限必要な知識を説明します。 サンプルプログラム サンプルプログラムの説明 複数ファイルに分割して作成する printk の使い方 kmalloc / kfree によるメモリの確保 / 解放 module_init / module_exit マクロについて ○ サンプルプログラム カーネルへのロードおよびカーネルからのアンロードの
pipe や popen を使っていると、本来なら出力済みのはずの他プロセスの出力がなかなか取得できないことがある。 最初はpopenやpipeのせいかと思っていろいろ調べたけど、どうも出力時のバッファリングの影響のようだ。 自分のプログラム中でバッファリングの方法を変更するのは setvbuf でできるわけだけど、 これを LD_PRELOAD と組み合わせると他プロセスのバッファリング方法を変更できそう。 というわけで、以下他プロセスに読み込ませる共有ライブラリのソース。 #include <stdio.h> namespace { struct NoBuffer { NoBuffer() { setvbuf(stdout, NULL, _IONBF, 0); } } instance; } おそらく大抵の Linux 環境で動くと思うけど、未保証ということで。 後はこれを適当なファイ
ACさんから教えていただいた Program Library HOWTO: http://www.linux.or.jp/JF/JFdocs/Program-Library-HOWTO/ 非常によくまとまっていて疑問が氷解しました。 重要そうなところを引用します。 静的ライブラリ .aは静的ライブラリ。arコマンドでオブジェクトファイルをまとめたもの。 静的ライブラリは -l オプションでリンクを行う 共有ライブラリ すべての共有ライブラリは「soname」という特別な名前をもつ。 ディレクトリ名libxxx.so.バージョン番号 バージョン番号はインターフェースが変わったときに変わる。 すべての共有ライブラリは「realname」という特別な名前を持つ。 soname.マイナー番号.リリース番号 「linker name」 sonameからバージョン番号を除いたもの ldconfig は
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く