linux

select のなかみ

一応 select(2) も読んであったので説明しとく。メインループは非常に短いので抜粋。ここにはビットマップの転送処理は含まれていないので注意。max_select_fd() の前後が rcu_read_lock() と rcu_read_unlock() で囲まれているのは、ドキュメント (Document…

epollのなかみ

よく C10K 問題とかいって epoll(7) の話が出てきて select(2) 遅いね poll(2) 遅いねってなるんだけど、正直なところ、これらのシステムコールを実際に使ってコードを書いてみたひとはどのくらいいるのだろう。ましてや eventpoll が何やってるか知っている…

LinuxのFSモジュールを書いてみる (その2)

追記: コードに深刻な勘違いがあったので修正。前回は、ひとまず次のような機能を実装したモジュールを書いた。 ディレクトリを開く ディレクトリのエントリの一覧を取得する ディレクトリのエントリの属性を取得する ファイルを開く ファイルの内容を読む …

LinuxのFSモジュールを書いてみる

Fuseとか使えばまああっさりな話なんだけど、実際どう動くのかを知りたかったので書いてみた。もちろんFuseのソースは参考にしていない。それにしても本当に資料がないんだよなあ。結局ソース読み込んだ。というわけであんまりお作法的なものはよく分からな…

FATAL: modpost: GPL-incompatible module foo.ko uses GPL-only symbol 'paravirt_ops'

今週二度も同じような状況に出くわしたので書いておこう。まずは、nVidia のプロプライエタリなドライバをビルドする際に題名にあるエラーに遭遇した。調べてみると、/boot/System.map から paravirt_ops のアドレスを調べ、--defsym オプションで強制的にシ…

sendmsg() で送られた fd の持つロックの所有権は保持されるのか

いくつかの *nix では sendmsg() / recvmsg() システムコールで他プロセスに fd を送信できたりします。送信元のプロセスでファイルロックを行った場合、送信先で同じ fd にファイルロックを行うとブロックするのでしょうか。出勤途中に猛烈気になったので確…

linux/mutex.h 互換ヘッダの件

追記 (2008/3/6): kernel-2.6.9-18.18.EL で修正されました。 Red Hat Enterprise Linux 4 (RHEL4) のカーネルヘッダは、2.6.9 にもかかわらず、2.6.16 から導入されたKernel Mutex: linux/mutex.hをセマフォでエミュレートする互換ヘッダパッチが当てられて…