Zephyr Cradle Diary


2011.07.25 (Mon)

[雑記][PG] プログラマの黒ミサ

プログラミング言語が宗派であると仮定するならプログラマが集うことはある意味ミサみたいなもので。別に誰かを生贄に捧げるわけではないので黒ミサとか言う必要はないんですが。

というわけで昨日は久々にプログラマ(中身はみんな音屋みたいなもんだけど)で集ってわいのわいのと飲み会をしました。と言ってもWeb系、アプリ系、組み込み系、ゲーム系と全然みんな分野が違うので、結局のところ自分の苦労話を交換する程度のフランクな飲み会だった気がしますが。5時間くらい店に居座ってたのでPG話だけでなく結局「最近どうよ?」な話から昔話までいろいろやってた感じですけどね。何気にJun.Aたんと飲んだのは初めてって感じもするし。ふぁいすたんやみゅんみゅんも割と久々だったかなあ。

うちは何故だか昨日に限ってくしゃみ無双してたのが申し訳なかったのですが(2~3ヶ月に1日ああいう日がある)、それでもまあ楽しかったので良かったのかなと! またああいうのは定期的にやりたいすなあ。

[PG] デバイスファイルがないときのregister_chrdev_region()

/dev/hogeとか、デバイスファイルが作られてないのにregister_chrdev_region()がsuccessを返すのは一体どういうことなんだろうとは思っていたんだけど、良い解説を見つけた。はー、そういうことか。

Re: register_chrdev_region() return value when there is no device file ? Linux Kernel Newbies

> The return of register_chrdev_region(dev, MAX_DEV_MINORS, "mydevice") is 0 even when the device does not exist. (I mean there is no /dev/mydevice special file).

(中略)

> I want that the init method of my module will print an error message and will not load the module if my device special file does not exist.

> How can I do it ?

You can't and you shouldn't. You should make sure something creates them when you do the registration above. That's a job for the udev daemon. Registering a device should notify udevd, which will then take care of creating the device nodes.

要約すると、udevデーモンを使ってるときとか、/dev/hoge0、/dev/hoge1……とか動的or複数デバイスを作るときに、デバイスファイルがあらかじめ存在することを前提として動作するんじゃ使いづらいでしょ? って話らしい。なるほどね、デバイスの登録とデバイスファイルの有無は必ずしも同期しないと。mknodとinsmodに相関関係はなくて、実際にopenするときとかになって初めて生きてくるって話らしい。あえて切ってるんだろうなあ。良くできてる。

とまあ突然PG話になりましたが、最近Linuxのデバドラを勉強してて、あんまし情報が世間にないので書き記しておこうかなと。