この日記は不定期に更新されます。なんにせよ、大したことは書かれないはずですが。
取扱上の注意
間違って検索サイトから来られた方へ(よくある検索 pattern)
アンテナ管理者の方へ
・ Log を取るのにしばらく(つーかかなり)時間がかかるので、買い物やら食事やらのついでに、昨日申し込んでもらった〔トワイライトエクスプレス〕の食堂車の予約が取れたかどうか確認しに TL 浅草橋へ。‥‥‥無事に取れていた :-)。
・ ところで、2/1 付で転勤した元店長さんがおいでであった。なんでも引き継ぎのために今日だけ戻ってきていたという。改めて挨拶してみたり、後任の店長さんを紹介されてみたり f(^^;。今までお世話になりました m(__)m。これからもよろしくお願いします。
・ でもって、アキバへ。‥‥‥駅の近くへ来たところで、何やら緑色の物が。
・ ‥‥‥最近の秋葉原駅前と言えば、メイドがうようよしてるのはもはや日常の光景と化しつつあり、その中にケモノ耳がいたり、はたまた巫女が落ちてたりと、もう大概の物は見ても驚かなくなってしまったが、‥‥‥ガチャピンとは‥‥‥ (@_@)
・ 思わず写真を撮ってみたり。ところでそのガチャピン、信号のない横断歩道を渡る際、しっかり左右を確認した上で短い手をんしょっとあげて渡っていった。ををを、さすが子供向けキャラだ。素晴らしい :-D。
・ LaOXで KATO の 489 系とロクサンに散在。そのあと、たまたま通りかかったところに聞こえた「全品 6% 引」の声に惹かれて入ってしまった T-ZONE で Cooler Master の mini-ITX 用 case に惨敗してみたりしつつ(安かったんだよぅ)、ねぎしで晩飯。Case は先日買い込んだ Geode NX 用 mini-ITX M/B を入れよう‥‥。
・ 両手に荷物をぶら下げつつ、えっちらおっちらと自転車で帰宅。‥‥‥なんか、気付いたら荷物が増えてるよーな気がしますが‥‥‥?
・ 帰り着いてみると‥‥‥log 取りはまだ終わってなかった‥‥‥ (__;。
・ なんとなく 1/23・1/24・1/27 の日記をこっそり補完してみる。
・ Log 取りの process がガロンガロンと動いている間は machine がむやみに重くなって source の編集なんぞやってられんので(VNC で login してるから、というのが大きい)、X60s の無線 LAN と指紋認証 device をいじってみることにする。
・ 無線 LAN device は Intel PRO/Wireless 3945ABG が載っている。ググってみたらば こんな 情報 に行き当たる。早速 wpi-freebsd-20061109.tgz を取ってきて make install。‥‥‥をを、認識されましたよ? :-)
・
試しに、買ってきたままなんの設定もしていない WN-G54/R2(I・O DATA) の電源を入れてにわか野良 AP(つーか network に繋がってもいないが)をでっち上げ、link させてみる。‥‥‥さくさくと設定画面が表示されました! よさげな感じ :-D。
・ しかし、喜びはつかの間だった。SSID と WEP の設定をした瞬間、「wpi_ucode を load できねー」とか言われて使用不能になる。さらに絞り混んでみると、そもそも SSID を設定しただけでもこう言われる。さらに、一旦こうなってしまうと、SSID を空に設定し直しても復旧しない。おまけに、if_wpi を kldunload しようとしても、なぜか勝手に reload されてしまう。なんか、駄目駄目だ‥‥‥ :-(。
・ Error message を元にさらにググってみると、こんなの を見つけた。こっちのほうが新しいっぽい。F/W を load できません問題にも対応したと書いてある。早速旧い driver を削除し、20070131-wpi-freebsd.tar.gz を get して展開して README に従って install(つーても F/W と driver の directory に潜ってそれぞれ make / make install するだけだが)。さて、結果は‥‥‥認識はすんなりできた。しかし、interface を up しようとすると、今度は「firmware status=0xffff0000 need val=0x40400000」やら「firmware status=0xbfbf0000 need val=0x40400000」やらぞろぞろ出てきて、挙げ句に「wpi0: fatal firmware error」「wpi0: timeout waiting for adapter to initialize」なんていわれてしまう。SSID もなんも設定していないのにこの仕打ち。なんじゃこりゃ‥‥‥ (__;。
・ この error は本家っぽい NetBSD や OpenBSD 方面でも出ているようだが、解決策は出てなさげ。‥‥‥とりあえず無線 LAN の要求度は「使えれば便利」 level なので、当面放置することに(← 弱い)。
・ 勢い余って(?)、指紋認証 device を試してみる。どうやら security chip の vendor が native の driver を提供してくれていて、既に ports にもなっている。dmesg にも
ugen0: STMicroelectronics Biometric Coprocessor, rev 1.00/0.01, addr 2
と認識してる様子が出力されていて、ドンピシャだ。
・ 早速 ports から security/bsp_upektfmess と security/pam_bsdbioapi を install。GUI support を有効にした以外、取り立てて何事もない。Configuration も、今回は MySQL を使っていないこともあって default の物をそのまま使用。bbdm -l bsp してみると、document 通り 3 つの entry が表示された。
・ いよいよ指紋を認識させてみる。以前からの互換性を確保したい人は backend に plain を使う必要があるそうだが、新規の install なので filedb を使うことにする(これが推奨っぽい)。あと、module の UUID はこれまた document 通り libtfmessbsp.so に対するものを使う(document のままの値ということではないのに注意)。
・ さてさてさて、bbdm -b "UUID" -m filedb -c UserName(← 一応 UUID と user 名は伏せてます)を実行すると‥‥‥「user 名が無効じゃボケぇ」とか言われましたよ? #-.-;
・ 試しに root に対して実行してみると‥‥‥あっさり登録できた。そこで、message を key にして source を見てみると、なんと user 名として英数字のみ(記号は不可)しか認めていなかった。なんだとこんちくしょう。で、該当箇所を書き換えて再 install。‥‥‥うまくいった。User 名に「-」とか「_」とか「.」とか入ってる人は patch を /usr/ports/security/pam_bsdbioapi/files/ に転がしとくと幸せになれるかも。
・ でもって、指紋を登録。まず message に従って 3 擦りして pattern を登録する。引き続いてやはり message に従ってもう 1 度擦って確認。Backend に filedb を使っている場合は 1 つの user に複数の指紋を登録できるので(plain だと各 user に 1 つだけらしい)、調子に乗って片手分登録してみたり。ちなみに、指紋の登録は root 権限が必要。
・ 途中で GUI を試してみる。と言っても、GUI support 付きで compile してあるので、xhost + するだけ。‥‥‥ををを、なんかそれっぽい window が!! ‥‥‥なんにも message が出てこないので、それだけだと何を求めてるのか今一つよく分からんが(爆)。
・ さらに user verification の test。
bbdm -b "UUID" -m filedb -i
として、指紋を読み込ませる。‥‥‥ちゃんと user 名が表示された。ちなみに、複数の user に対して同じ指紋を登録していると、どの user として認識されるかは特定できないらしい(最初に match した entry が返される)。そりゃそうだよな。あと、GUI を使ってる場合、「指紋を正しく読み込めた」時の表示が「認証ができた」ように見えて紛らわしかったりする。
・ 調子に乗って、PAM の entry に追加してみる。/etc/pam.d/system の
auth required pam_unix.so no_warn try_first_pass nullok
の行の前に「auth sufficient /usr/local/lib/pam_bsdbioapi.so UUID filedb」を追加。
・ さて、結果はというと‥‥‥散々 (__;。まず、login ができない。su しようとすると
Initiating biometric authentication... su in malloc(): error: recursive call アボート
と言われて segmentation fault。Localhost に slogin することはできるが(ただし指紋は使えない)、そのあと exit しようとすると固まる。なぜか slogin したあとだと su できるので(しかもこの時は指紋も使える)、なんとか /etc/pam.d/system の entry を無効に戻す。むぅ。
・ さらに調べてみると、ここに気になることが書いてある(「Known issues」の項)。‥‥‥ううむ、状況的にはこれっぽいな。そのうち試してみるか‥‥‥。
・ ふと見たら、X60s に install されている X server だけがなぜか client などより旧いことに気付く(server は snapshot、ほかは 6.9.0)。調べてみると、945GM が i810 server で動かない件については既に patch が追加されているらしい。実際に見てみると、どうやらその patch が入っているのは release 版のほうらしい。というわけで、xorg-server へ切り替えることにする。ついでなので、/usr/ports/ で make update を実行できるように環境を整えて、ports を update。
・ ふと見ると portupgrade が終わっていた。全部完了したかと思いきや、deskutils/deskbar-applet の update が失敗している。
・ 再度それだけ実行してみると、configure がこんなこと↓を言って途中で止まってしまう。
checking for gnomeapplet module... no configure: error: gnomeapplet Python module required to build deskbar ===> Script "configure" failed unexpectedly.
Error message でググってみると、やっぱりおんなじ現象に当たっている人がいる。「It seems that neither py24-gnome-extras nor py24-gnome-desktop packages install the gnomeapplet python module.」と言って send-pr している人もいるようだ。
・ 実際、必要なはずの component は既に install されているし、ports がおかしいのではないかとも思ったのだが‥‥たまたま開いていた /var/log/message に妙な message が出力されているのに気がついた。
X11 connection rejected because of wrong authentication.
実のところ、portupgrade は X60s に slogin -X して実行していたのだが、どうもこれが原因ではないかという気になってみる。試しに X60s のところへ行き、xdm から login して、当該 port を compile してみると‥‥‥あっさり通った。どうやら、configure script のこの場所↓で副作用が発生しているようだ。多分 gnomeapplet が import されたときに X server に対してなんかしてるのではないかという気がする。
( $PYTHON -c ' try: import gnomeapplet except ImportError, e: if str(e).find("gnomeapplet") >= 0: raise except: pass ' ) 2>&5
Remote で build しているときだけ引っ掛かるという、思わぬ落とし穴。やれやれ。
・ ずっと仕事をしてたせいかなんかくらくらしてきたので(目がかなり疲れて痛くなってきたというのも関係してそう)、気分転換に SD card slot の device driver の雛形を書いてみる(← ぉぃ)。ほかの driver を参考にして、カリカリとでっち上げたら‥‥‥なんとなく動いている。
・ っつーても、attach の時に device の情報(主に capability)を読み出して、終了してるだけ。つまり、attach 後、実際には組み込まれずに終わっているのだが、表示された内容を見るに、とりあえず CPI Configuration register と SD Host Standard Register の読み出しはうまくいったらしい。dmesg はこんな↓感じ。
sdc0:
mem 0xe4301800-0xe43018ff irq 18 at device 0.2 on pci21 sdc0: Basic class: 0x08 (General Peripheral) sdc0: Sub class: 0x05 (for SD Host Controller) sdc0: Interface Code: 0x00 (Standard Host not supported DMA) sdc0: Revision ID: 0x18 sdc0: Header Type: 0x80 (Multi Function, Normal device) sdc0: Subsystem Vendor ID: 0x17aa sdc0: Subsystem Device ID: 0x201d sdc0: Capability Pointer: 0x80 sdc0: Interrupt Line: 18 sdc0: Interrupt Pin: 3 sdc0: Number Of Slots: 1 sdc0: First Base Address Register Number: 0 sdc0: Base Address Register #0: 0xe4301800 sdc0: Capability ID: 0x01 sdc0: Next Item Ptr: 0x00 sdc0: Power Management Capabilities: 0x0002 sdc0: Power Management Control/Status: 0x0000 sdc0: PMCSR PCI to PCI Bridge Support: 0x00 sdc0: Data: 0x48 sdc0: Vendor Version Number: 0x02 sdc0: Specification Version Number: SD Host Specification Ver. 1.0 sdc0: Slot #0 sdc0: Voltage Support 1.8V: no sdc0: Voltage Support 3.0V: no sdc0: Voltage Support 3.3V: yes sdc0: Suspend/Resume Support: yes sdc0: DMA Support: no sdc0: High Speed Support: no sdc0: Max Block Length: 512B sdc0: Base Clock Freq for SD Clock: 33MHz sdc0: Timeout Clock Freq: 33MHz sdc0: Maximum Current for 1.8V: N/A sdc0: Maximum Current for 3.0V: N/A sdc0: Maximum Current for 3.3V: 256mA (0x40) sdc0: reset adapter device_attach: sdc0 attach returned 6
・ 最後の行は attach の最後で ENXIO を返しているために出力されている(まだ割込 handler がないので、副作用を避けるためにわざとそうしている)。あとは割込 handler をそれなりにでっち上げれば、最低限の制御はできそう。そうなれば、ガリガリ書いていくだけだ。H/W が DMA を support していないので、その辺りは手付かずになるが、まあ仕方がない。
・ ところで、単に SD Card を読み書きできればいいだけだったらあまり悩まなくてもいいのだが、将来的に SDIO も support することを考えると、どうすればいいかな。Driver の流用や親和性を考慮すると、SCSI CAM か USB あたりに似せておくと後々潰しが効くかも。SCSI bus は既存の driver に偏りがあるので(当然だけど)、完全に USB port のふりをさせることができればいろいろ楽ができそうだ。SDIO card は PCCard のものと同じ構造を持つ CIS tuple で管理するようだが、だからといって PCI-ISA bridge として振る舞わせるのもねぇ‥‥‥。
・ 『プラネットアース』を見つつ割込 handler をでっち上げてみた。単に要因を切り分けて message に出すとともの割込要因を clear するだけのもの。
・ 一応 handler ができあがったので、いよいよ attach の最後で error を返していたのを止めてみる。Device そのものは取り外せないので、KLD を load したり unload したり。Attach / detach はうまくいっている。
・ とりあえず card を挿したり抜いたりして test。‥‥‥若干不具合を修正した結果、なんとなく動いた。
・ 抜き差ししてるうちに、card の挿抜状態が chattering を起こしているのに気付く。すばやく挿したり、ゆっくり抜いたりすると、Interrupt Status の「Card Removal」と「Card Insertion」が同時に立つことがあり、さらに一旦 status を clear したあとに本来の状態で再度割り込みが入ったりする。しかも結構な頻度で再現。仕方がないので、card が挿入されているかどうかを記憶しておいて、矛盾したりダブったりしている割り込みを無視することに。‥‥‥Card の抜き差しに関しては期待通りに動くようになった。
・ 喉が痛いし、今日はここまで。
・
今日の『NNN ドキュメント '07』は、福知山線脱線事故で九死に一生を得たものの、今なお重篤な後遺症と闘っている被害者の document。
・ 8 時頃起きる。
・ 引落日だということを思い出したので、銀行に行こうと少し早めの 9 時頃家を出る。‥‥‥げ、そうか。今日から本所支店(旧 UFJ)が本所中央支点(旧東京三菱)に集約されたんだった‥‥。ぐちゃ混みで大敗北。でも川崎はいつももっと混んでるので‥‥‥ (__;。
・ 大急ぎで客先へ。そのまま会議。
・ 食堂で昼飯を喰った後、ひたすら仕事。ごりごりごり。Bug を取ったり、code 書いたり、解析したり。
・ 20 時頃に別件の打ち合わせをしたり作戦を練ったりなんかして、21 時半頃離脱。
・ 五の字の車で東高円寺へ。「てつや」(札幌ラーメン)でチャーシューメン。なかなか。ただ、チャーシューはちょっと‥‥。決してまずくはないなのだが(というかむしろうまいほう)、とにかく薄い。で、ボリュームも味わいも、どうしても両国大勝軒と較べてしまうので‥‥‥。
・ 家まで送ってもらった m(__)m。
・ 用足しのため外出。‥‥‥暖かいなぁ‥‥‥。
・ 不在票が入っていたが、一旦手配のため浅草橋へ。それが終わったあと、荷物を取りに行く。Battery だから大きめの手提げに入るだろうとそれを持っていったのだが‥‥なんですかこの巨大な箱わ (-.-;。重いのかと思ったらむちゃくちゃ軽い。そりゃあ、ブツを考えれば当たり前だよな。
・ 箱を小脇に抱えてキコキコ帰宅。早速空けてみると‥‥‥箱の底に battery の箱(2 個)を並べ、その上の空間を薄手の厚紙のような緩衝材でがたつかないようにしてあった。‥‥確かに箱の底にはぴったりはまりこんでいたが、だからといって全体の 4/5 が緩衝材というのはいかがなものかと思ったりも。送料は無料ってことになってはいるが、結局のところそういう cost 負担は価格に跳ね返ってくるはずで。
・ 買い物のために再び外出‥‥‥したが、空振り。ねぎしで晩飯喰って帰宅。
・ 帰ってからは仕事の続き。ひたすら作り込み。ごりごり。
・ News をつけておいたら、ちょうど北海道の暖冬の影響の話題が。‥‥‥え、網走の流氷ってまだ接岸してないの? だいぴんち。ちうか、その手前でさーふぃんやってる人がいるというのはどういうことか。
・ 日付が変わった頃に一段落着いたので、commit して tag を打つ。ただ、一部の機能が積み残し。va_args を取る関数(ぶっちゃけ printf 系とか scanf 系とか)の引数を中継しなければならないのだが(当然引数の数は不定)、どうしようかな。配列を stack frame に見立てて va_args に見せかけるかなぁ。でも、format 文字列を解析するのは面倒だし。ううむ。
・ しばらく検討していたのだが、眼が痛くなってきたので(このところ手術をした左目の疲労が激しい)、気分転換がてら SD Card slot の driver いじりの続きとか。
・ まずは、card が挿されている間 LED をつけるようにしてみる。‥‥‥つきません。書き込んだ register を読み出してみると、見事に無視されている。むむ。
・ とりあえずそれはおいといて、基本的な service を実装。一通り終わったので、試しに card の初期化 command を送ってみる。‥‥‥Response が帰ってこないなぁ‥‥‥。
・ ところで、command を送ってみて、X60s の SD card slot の LED が transaction 実行中に自動で点灯する仕様になっていることに気付く。むーん。Contoller の register の LED bit は無視されるのね(というか、この controller ではその bit が readonly になってるらしい)。そりゃあ点灯しないわけですよ‥‥‥。
・ 気がついたらまた 33 時を廻っていたので、もっくもっくですぺさる弁当を買ってきて喰う。
・
34 時頃落ち。
・ 20 時過ぎ、両国大勝軒へ。‥‥‥わ、soup 切れですか。時々あるんだよな (^^;。
・ 仕方がないので、アキバへ行って、ねぎしで晩飯。‥‥‥今日は結構空いていたのに、やっぱり微妙に廻っていない。特定の店員さんがいるいないかで極端に違うってのもなぁ。‥‥‥ほかにも例があるのでなんともアレなんだけど。
・
ちなみに、最近ねぎしばっかり行ってるのは、肉を喰わせろ (完璧ではないが)分煙がしっかりしているというのが結構大きい。国は健康増進法を施行してすっかり安心(もしくは鼻高々)しているのかもしれないが、ファストフード系(牛丼屋などを含む)以外ではほとんど改善が見られない。路上禁煙が推進された頃は喫煙者の駆け込み寺の様相を呈していてとても近寄れるものではなかった。‥‥‥最近は(アキバでさえ)路上禁煙が有名無実化しているので以前ほどではなくなっているが、それでもやはり(ここぞとばかりに煙を撒き散らす喫煙者が多いので)煙に悩まされることはかなり多い。
・ 気分転換に driver をいじる。
・ Error recovery routine を追加。‥‥‥Initialize 中の error に対しても abort command を投げてしまって大惨事 (__;。
・ あと、割り込み handler 中では Command Complete の取得に全面的に polling を使うことにして、下請 routine をまとめる。
・ それにしても、ACMD41 に card が反応しないのはなぜだろう。SD card は state 遷移がかなり厳密に決まっているので、ここを乗り越えないと card を全く使うことができないんだが‥‥‥。
・ はたと気がついて、銀行へ。‥‥‥一瞬ポツポツと来たが、一旦止んだ。これは時間との闘い風味です。
・
さらに手配状況の確認と乗車券の依頼のために TL 浅草橋へ。‥‥‥店長が交代したことによる影響か、今後出札補充券(いわゆる手書き券)での発券には対応してもらえないことになったそうだ。ううむ、困った。またも発売箇所探しのジプシー状態か。本当にお世話になりました m(__)m >前店長さん。
(追記: その後、手計算に対応可能なベテランさんが春の配転でいなくなってしまうことがわかった。むむむ、それはどうしようもない。もはやどこの窓口であっても MARS で出ない券を頼む客は完全なお荷物なのであって、むしろ今までほんとに良く対応していただいたというところ T_T。)
・ その足で御徒町へ行って「ナイスカット」で散髪。このところいい加減に頭が爆発していたのだが、ようやくすっきり :-)。
・ エフ商会で D-VHS tape を買い、一度家に置きに帰る。
・ そのあと一旦錦糸町で用を足し、20 時過ぎ、両国大勝軒へ。今日は無事にもりチャーシュー大盛を堪能 :-D==。
・ 帰るとき「結構降ってきたから、これ持ってってください」とビニール傘を手渡された。ありがたく借りて店を出ると‥‥‥確かに結構降ってきたな。店に入るまでは降っていなかったので、まさにギリギリ間に合った感じ。
・ それにしても、目が痛い。困った。仕事が捗らない‥‥。
・ 便所に篭もりながら driver いじり。
・ Card が ACMD41 に反応しない件は、直前に CMD55 を送り忘れていた間抜けが原因であることが判明。
・ 下請関数に処理を隠蔽化したので、まずはそれを元に code を clean up。そして、CMD55 を追加。‥‥‥をを、動いた! :-D
・ 大雑把に書き進めた部分があるので、こりこりと code を整理して、一旦収まりを付ける。
・ さて、これで card は data 転送可能な状態になったわけだが、あとはどうしよう(爆)。一気に open/read/write/close を実装してもいいんだけど、device driver を layer 化したほうがいいだろうな。まあでも、まずは動くようにするのが先か。
・ それより、device No. をどうしようかな。
・ とりあえず通常の character device 用 interface も一通り作っては見たのだが(← どうせ SDIO では必要になる)、なんとなく GEOM を叩いてみたくなり、ほかの driver を参考にしつつ取り掛かる。
・ Strategy method は必須なので書くだけ書いてあった data 転送用 routine を埋め込んでみたのだが、当然いきなりは動かない。で、CMD7 と CMD16 を送るだけにして、data 転送処理そのものはとりあえず dummy にしておく。
・ 一通り書いたので動かしてみる。‥‥‥動かない。仕方がないので card の認識処理以降を割り込み handler から分離して taskqueue 経由で呼び出しようにしてみたり、lock の範囲をいろいろいじってみたり。
・ それにしても、GEOM についてのまとまった document はないものか。よくわからん。
・ いい加減に目がどうにもならなくなってきたので、病院へ行くことにする。
・ 花粉症は耳鼻咽喉科の受け持ちなので、受付をして診療科へ。‥‥‥さすがに混んでるな。
・ オノンやらリノコートパウダーやら緊急用のセレスタミンやらといった定番の薬に加え、目薬も出してもらう。そして会計窓口へ。‥‥‥こっちは芋洗ってる。
・ こういうときは大抵飯を喰って時間調整。で、院内 restaurant で喰うか久々に Chicken Place にでも行くかと悩んでうろうろしていたら、なんとなあくさんに声をかけられる。あーびっくりした (^^;。それにしても、なあくさんもだいぶん辛そうだな。
・ 昼飯をまだ喰っていないということなので、久々に Chicken Place に行くことにする。一緒にてくてく歩いて蔵前橋を越え、チキンカレー。
・ 戻ってくると、さすがに会計の順番は来ていた。早速お会計。しかし、薬がまだだという罠が。待つことしばし。しかし、ほかの人はどんどんできてるのに、私の番号だけ出てこない。そうこうしているうちに「もうしばらくお待ち下さい」の queue に入ってしまった。うう。
・ 唐突に番号を呼ばれたので行ってみると、薬情に点鼻スプレーが 2 項目あり(しかも同じもの)、とどのつまりそれはダブってるので会計からやり直してくれと言われる。てなわけで、もう一度 loop やり直し。さすがに priority は最上位。
・ 無事にスプレー 1 個分の払い戻しを受け、薬を受け取って退散。しかし暖かいな。
・
両国駅から帰るというなあくさんと一緒にてくてくてく。通りすがりの浪花家本店で うぐぅ たい焼きを買う。うぐぅうぐぅ言いながら歩き‥‥‥あ、「両国駅」って、総武線の方だったのか。それは遠回りさせてしまって申し訳ない m(__;m。
・ ちうわけで、江戸東京博物館前で別れて、帰宅。
・ 早速薬を飲んで目薬もさしたが‥‥‥効くまでしばらくはかかるな。
・ とりあえず続きをいじり廻してみる。
・ どうも途中で刺さるなぁと思っていたら、test に使っていた card(A DATA 製)は trns state で CMD7 を受け取ると無反応になるらしい(多分 ina に落ちている)。この挙動は argument が 0 であっても同じ風味(つまり deselect もできないらしい)。それまでは strategy method の先頭と最後でそれぞれ SELECT_CARD と DESELECT_CARD を送っていたのだが、Identify の最後で 1 回だけ送って放置するのがよさそう。CMD16 も 2 回以上送ると予期しない挙動を示すようなので、同様に措置。
・ あとは lock の範囲の調整。とりあえず自前で lock をいじるのは止めて、GEOM に giant lock を扱わせることにする。とりあえず動くのが優先。
・ そんなこんなで試行錯誤しているうちに‥‥‥をを、disk device が生えてきた! :-)
・ Dummy になっている strategy mothod に吐かせた log を見てみると、MBR やら magic number からを確認しに行っている様子が分かる。あとちょっとかも。
・ 仕方がないので、続き。
・ いよいよ transaction を実物に置き換える。
・ ‥‥‥Data 転送 sequence はやっぱりだいぶん適当だったので、手直し。しかし、割り込みを使うとうまく動かない。どうも racing が起きてるらしい。仕方がないので、とりあえず polling で。
・ ‥‥‥実際に転送された data が log に出るようにして‥‥‥見えた! Data の log もそれっぽい。Slice の device node も生えてます!! やたー
・ 試しに read only で mount してみる。‥‥‥ををを、ちゃんと見えてるよ。読めるし。わあい。:-D
・ しかし、まだ問題が。
どちらも、disk_create() さえ呼んでいなければ問題なくできている。なんかが GEOM とぶつかってるんだろうけどなぁ。softc を親と共用してるのが問題なのかなぁ。それとも、GEOM がbus_generic_ほげほげ 経由で attach された device であることを GEOM が要求してるとか?
・ その他の状況。
メールはこちらへ...[五反田 秋彦 as (五) / a-gota @(at) agt .(dot) ne .(dot) jp]
この日記は、GNSを使用して作成されています。作製者の GORRY さんに感謝 m(__)m。