Entries from 2007-06-01 to 1 month

audio_server2

audio_server2に取り組んでくださっている id:shotaro_tsujiさんと某所でチャット。 腰の低い良い人だ。 完全では無いものの短時間で前進できたので良かった。

gdb

そろそろ Mona OS に GDB かそれに相当するデバッガが欲しいと思うようになってきた。 誰か得意な人いませんか。 カーネル側(デバッグレジスタのあれこれ)は僕が書きますんで。 もしくはそれ1日くらいがんばれば出来るよ的な情報をお待ちしています。

MonAPI::MemoryMap のエラーを分かりやすく

MonAPI::MemoryMap のエラーが分かりづらく結果的に Stream の生成エラー時に原因の切り分けが難しかったので改善。 ついでに MEMORY_MAP_TRACE マクロも用意して処理の詳細を追えるように。

GUI起動をきっかけに手続きを呼びたい

GUI起動をきっかけに手続きを呼びたい。 例えば特定のアプリケーションを起動するとか。 (on-gui-start) という手続きを呼び出すようにした。

以前読んでもピンとこなかったドキュメントを読み返したら

以前読んでもピンとこなかったドキュメントを読み返したら、シュワーンと脳に入っていった。 うれしい。

パイプ

(| "/APPS/HELLO.EX5" "/APPS/UPPER.EX5" "/APPS/REVERSE.EX5") まずはこんな感じをめざす。

工事中の標識

工事中の標識といえば「ただいま工事中です。ご迷惑をおかけしております。」+ペコリの絵が定番だと認識していたが、最近違うものを見かけるようになった。 例えば 地下鉄を作っています 古い水道管を新しい管と交換しています とか。 情報が伝わるという面…

Linux kernel-2.6 付属 ドキュメントの日本語訳

JF: Linux Kernel 2.6 Documentation: Index あたりから辿れるドキュメント。 どれを読んでも感じるところや学べるところがある。 Linux の内部I/Fが変更される理由 完全なるパッチ なぜ Reiser4は Linux カーネルに含まれていないのか Linux カーネルのマネ…

割り込みきた

「QemuのNE2000から割り込みが来ない」と書いたがやっと割り込みが来た。 uIP も動いている。 以下詳細なデバッグログ。(ほとんどの人には役に立たないと思う)

QemuのNE2000から割り込みが来ない

QemuのNE2000から割り込みが来ない。 割り込みがこないってのは、もはや合言葉になりつつある。 Qemuをソースからいれて DEBUG_NE2000 を有効にしたところ、ne2000_update_irq が呼ばれている模様。 つまりMona と Qemu の間で消失している(?)ということに。…

Ubuntu on Qemu on Ubuntu のネットワーク設定

Ubuntu 上で Qemu を動かすときのネットワーク設定のテストのためにゲストOSを Ubuntu にして起動してみる。 http://www.oszoo.org/wiki/index.php/Ubuntu-warty.zoo.tar.bz2 から Bittorrent で1GBほどのイメージをダウンロード。 起動 qemu -net nic -net …

Schemeシェルで正規表現サポート with 鬼車 その3

鬼車が内部で割り当てるメモリも GC の対象としなければならない。 regint.h で #define xmalloc malloc #define xrealloc realloc #define xcalloc calloc #define xfree free の用に定義されているので、config.h で、この定義を上書きして gc_malloc など…

Scheme - もっとコードを読もう

http://www.shido.info/lisp/scheme_cc.html にある queue の実装のコードをデバッグのために追っていた。 コードは↓。 (define (make-queue) (cons '() '())) (define (enqueue! queue obj) (let ((lobj (list obj))) (if (null? (car queue)) (begin (set-…

Cannot find terminfo entry for 'emacs'.

M-x shell で使うシェルを zsh + screen にしているのだけど Cannot find terminfo entry for 'emacs'. というメッセージが表示されるのが気になるので調べたら、どうも dumb をコピーすれば良いらしい。(本当か?) # mkdir -p /lib/terminfo/e # cp /lib/t…

Schemeシェルで正規表現サポート with 鬼車 その2

Gauche のように (#/\d+/ "345") で 正規表現オブジェクト自体を手続き呼出しできるように、パーサなどを書き換えた。 現実装の字句解析/構文解析は、初めての実装ということもあり、迷走の痕跡が見られ歪。 書き直したいが、そうなるとマクロの実装にも影響…

MLB.TV PREMIUM

MLB.TV PREMIUM 会員になった。 ネット上のサービスで有料会員になるのは久しぶり。 英語の説明書きを慎重に読みすすめ、クレジットカード番号を入れるのは慣れなくて疲れた。 MLB.TV LIVE BLACKOUT RESTRICTIONS という注意書きがあり、Blackout って何?と…

Schemeシェルで正規表現サポート with 鬼車

Schemeシェルで正規表現サポートするのは未踏完了後を考えていたが、ふと鬼車を試していたらあっさりと Mona に移植できた。 急遽予定を変更して正規表現サポートをまじめにやることに。 やることは 正規表現リテラルのサポート Regexpオブジェクト作る RegM…

Emacs で図を描く

libcont をデバッグ。 ノートにスタック構造の図を描いて場合分けをしてからコーディング。 未来の自分がこのコードから、描いた図を再生できる自信がないので、コードに図を残したい。 Emacsの本に簡単な図を描く方法があったなと思い。読み返したら発見。 …

続 割り込みをプロセス間通信で通知すると重いのか?

先日書いた、割り込みをプロセス間通信で通知すると重いのか?の続き。 プロセス間通信を利用した割り込み通知で、サウンドカードの要求する応答速度に応えられるかが勝負。 QEMU上で rdtsc を利用して計測してみたところ、カーネル内割り込み処理に突入して…

電卓

libcont のデバッグではアドレス計算が何回も必要に。 暗算できるけども、暗算自体に脳を使いすぎて肝心の部分が考えられなくなるという本末転倒。 アクセサリの関数電卓で計算していたけど面倒。ふと思いついて、M-x calculator としたら電卓を発見。 ? と…

継続を利用した疑似マルチスレッドをコーディング中 - 2

call/cc を用いた Coroutine の実装。 http://www.shido.info/lisp/scheme_cc.html を参考に単純化してやってみる。中断するときに、call/cc で継続を取り出して queue に入れて、queue から次の処理を取り出して実行という形。 理解できた。 自前インタプリ…

Coroutine実験で分かったけど

libcont はちょっと無駄にスタックを使いすぎだ。 後で直す。

天気

今日は雨。雨の日は静かで良い。

継続を利用した疑似マルチスレッドをコーディング中

継続を利用した疑似マルチスレッドをコーディング中。 あっさり書けるかと思ったが意外と難しい。 eval-print ループに jmp してしまう load の中で eval された call/cc を再開して closed な port を再び close してしまう など。 http://www.shido.info/l…

割り込みをプロセス間通信で通知すると重いのか?

現在の Mona はハードウェアから割り込みがあると、カーネルの割り込みハンドラから、ユーザー空間にいるドライバプロセスに割り込み通知がいく。 通知には汎用のプロセス間通信の send/receive が使われている。今までフロッピーディスクコントローラ/IDE/A…

テスト2

テストです。

テスト

テスト2です.

Schemeシェルからウィンドウ操作

Schemeシェルからウィンドウ操作。こんな感じかな。 (aif it (find (lambda (window) (string=? (mona-gui-get-window-title window) "GUI Shell")) (mona-gui-enum-windows)) (mona-gui-move-window it 50 100) #f)) aif を知りたい方は On Lispをどうぞ。

職場のとなりの高校で

体育祭(運動会?)をやっているっぽい。 音楽がかかって、ワー、キャー言ってる。 楽しそう。 でも良く考えれば、運動が苦手(のび太)だったので体育祭とかは、好きじゃなかったな。

osdev-j飲み

A.「ここで逆ジャンプしているんです」 B.「書き直せ!」 C.「Gakuさんレベルを7人集めれば負けることはない」 D.「頭は使わないとダメになるよ。最近使ってないCPUのオペコードとか忘れるでしょ」 E.「フラフープで入力」 F.「Lispで MPEGデコーダ書けるの?…