簡易デバドラ写経中

先日の書籍のPart15で擬似デバイス用のドライバが載っていたので、写経中。

実は、組み込み系の開発がプログラマとしてのスタートだったので、デバドラには親近感があるのだけれど、残念なことにLinuxのデバドラとは結局お付き合いがなかった(μITRONとかばかり)。そのころは組み込みLinuxの仕事がしたいなぁと思っていたのだけど、結局現在Linuxで開発している(組み込みじゃないけど)ので、こっそり夢がかなっているみたい。

で、写経してmakeしたモジュールをinsmodしても、どうも手応えがない。rmmodするとWarningが出力されている。

[157900.870817] ------------[ cut here ]------------
[157900.870823] WARNING: at /build/buildd/linux-2.6.27/lib/kobject.c:587 kobject_put+0x4e/0x50()
[157900.870827] kobject: '<NULL>' (f8d7c800): is not initialized, yet kobject_put() is being called.
[157900.870830] Modules linked in: testmod(P-) loop ipv6 af_packet binfmt_misc sco bridge rfcomm stp bnep l2cap bluetooth ppdev cpufreq_powersave cpufreq_ondemand cpufreq_userspace cpufreq_conservative cpufreq_stats freq_table wmi container video output pci_slot sbs sbshc battery iptable_filter ip_tables x_tables ac lp serio_raw pcspkr psmouse snd_intel8x0 snd_ac97_codec evdev ac97_bus snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy snd_seq_oss snd_seq_midi snd_rawmidi snd_seq_midi_event k8temp snd_seq snd_timer snd_seq_device isp1760 snd soundcore snd_page_alloc i2c_nforce2 parport_pc parport nvidia(P) agpgart button i2c_core shpchp pci_hotplug ext3 jbd mbcache sr_mod cdrom sd_mod crc_t10dif sg ata_generic pata_acpi usbhid hid pata_amd sata_nv libata forcedeth scsi_mod dock ehci_hcd ohci_hcd usbcore thermal processor fan fbcon tileblit font bitblit softcursor fuse [last unloaded: testmod]
[157900.870896] Pid: 30022, comm: rmmod Tainted: P        W 2.6.27-11-generic #1
[157900.870903]  [<c0131e15>] warn_slowpath+0x65/0x90
[157900.870910]  [<c012a1fb>] ? __cond_resched+0x1b/0x40
[157900.870915]  [<c037f36b>] ? _spin_lock_irq+0x1b/0x20
[157900.870920]  [<c037dd0d>] ? wait_for_common+0xcd/0x140
[157900.870924]  [<c016a9a1>] ? __stop_machine+0x1c1/0x1d0
[157900.870928]  [<c01acec4>] ? kfree+0x14/0xd0
[157900.870933]  [<c016a9a1>] ? __stop_machine+0x1c1/0x1d0
[157900.870937]  [<c016aa00>] ? stop_cpu+0x0/0xb0
[157900.870943]  [<c024ed2e>] kobject_put+0x4e/0x50
[157900.870951]  [<c01b5132>] cdev_del+0x22/0x30
[157900.870956]  [<f8d7a0b5>] cleanup_module+0x15/0x40 [testmod]
[157900.870963]  [<c037e208>] ? mutex_unlock+0x8/0x20
[157900.870991]  [<c015adb7>] sys_delete_module+0x167/0x230
[157900.870999]  [<c0199e5a>] ? do_munmap+0x1da/0x230
[157900.871006]  [<c0103f7b>] sysenter_do_call+0x12/0x2f
[157900.871011]  =======================
[157900.871014] ---[ end trace 9a86086266cba83f ]---

ということで、暇つぶしがてらにきちんと調べたいなぁ、と思うのだけれど、カミさんに依頼されている家計簿Webアプリ(Rails)を作りつつ、社内勉強会の次のテーマであるランダムアクセス機械のサンプルプログラムを作らないといけないなぁ、と緊急ではないけれどやりたいことが結構溜まってきた。

手が空いたら、勉強のためにOCamlのコードを読みたいなぁとも思っているのだけど、「まずはこのコードを読め!」的なものはあるのかなぁ。これを読まずしてOCamlのコードを書くべからずみたいな。
2009-01-03: Modified.
なんだか話題がごちゃごちゃしてきた気がしたので別エントリへ移動。