11:04:52 # Life io uringのメモリーマップどうなってるねんというのをカーネルのソースと見比べてやっと理解した。わかったらなんでもないんだがイマイチわからなかったら気持ち悪い。 これを最初に確認すればよかった。多分将来的に変更することとかも見越しているんだと思うけど過去の互換コードとかみてると意味がわからない。
io_rings構造体 0x140 bytes cqe (cq_off.cqes) sqe array (sq_off.array)
10:01:51 # Life 自分用の週間予定表、細かいところ微調整。 曜日だけじゃなくて日付があったほうがよいなとおもったので追加。 まぁこういうところを微調整しようという気になるのがコードで書いている利点かも。 週間予定表。
20:13:06 # Life カーネルのソースコード眺めてみたら ____cacheline_aligned_in_smp。 アンダースコア多すぎないか?いいたいことはわからんでもない。 いくらなのかなとおもったらCONFIG_X86_INTERNODE_CACHE_SHIFTで設定されているらしい。 だいたいX86_L1_CACHE_SHIFT。 しかし7なんだろうか、6なんだろうか、これは難しい。
21:36:01 # Life 今月読んだ本の読書メモ。
15:40:26 # Life bindgenでハマったところ2箇所。気づいたら当たり前なんだけど、 build.rsはトップレベルに置くのがデフォルトなのにsrc/build.rsにおいていて効かないなぁと試行錯誤して。 現象としてはOUT_DIRがないなぁとおもっていたのだがそもそも実行されてなかったのか。 そして、bindgenを[dependencies]にかいていて[build-dependencies]に書いていなかったのは先に気づいたんだけどまぁそれは些細なことであった。 後で読んだらチュートリアルに全部書いてはあった。
17:01:04 # Life clangのバイナリリリースなぜかUbuntuのバイナリがないんだけどなんでだろ。 14.0.0のバイナリはあるんだけどそれ以降はない。どういう仕組みなんだろうか。
21:24:32 # Life bindgen crateのソースも眺めているがなんかいまいち微妙な気がしてきた。 bindgen::Builderみんなつかっているんだろうか?
22:11:31 # Life OUT_DIRとは。 CargoのOUT_DIRではまる。 bindgenのTutorialではOUT_DIRを使っているのだがどうもCargoのOUT_DIRが設定されていないっぽい。なんでやねん。 そしてわかったのは、あーーbuild.rsをそもそも使っていなかった。
19:06:26 # Life 絶対アドレスにジャンプしてみるコード。 なんかふと書いてみようと思ったのだが思った動きにならなかったのでメモ。 jmp 0xabeとするだけのコードを書いたらASLRっぽいなにかで相対アドレスとして扱われて0x555555554abeになった。 一回raxに代入してからジャンプするとなんか期待した挙動になった。 んーなんでだったろうか。
int main() { __asm__ ("jmp 0xabe"); } $ gdb out/ripabe (gdb) run Program received signal SIGSEGV, Segmentation fault. 0x0000555555554abe in ?? () (gdb) info registers .. rip 0x555555554abe 0x555555554abe .. int main() { __asm__ ("mov $0xabe, %rax; jmp *%rax"); } $ gdb out/ripabe (gdb) run Starting program: /home/dancer/git/nlp-study/hoge/c/out/ripabe Program received signal SIGSEGV, Segmentation fault. 0x0000000000000abe in ?? () (gdb) info registers rip 0xabe 0xabe
19:42:02 # Life screenのログのとり方毎回忘れる。 大文字のHでログを記録するということか。 あと毎回探すのは現在のバッファを保存するというやつ。 hardcopy -h filenameでスクロールバックバッファの中身まで保存してくれる。 Windowとかの用語が独特だしいにしえなのでなんかなぁ。
21:28:35 # Life 毎週のメモ用のページをHTMLに変換してみた。 TODOと時刻毎の予定というか実績を書く用。 お絵かきソフトで書いていたのだがふと思い立ってSVGで書き直してみた。 全然良くはなってはいないとはおもうけどそれっぽくなった。お絵かきソフトでは改変する気にならなかったんだけどこうするとやる気になるか? A4に印刷できるようにしてみたいんだけど無駄な白いページを出力しなくてすむ方法が全くわからない。
06:04:57 # Life ふとRaspberrypiをながめてNodejs 12が入っているんだなぁとおもった。 Debian 11だとそれが標準で入っているバージョン。手元ではほとんどNodesourceから直接16をいれているんだけど何が変わったのか思い出せない。