C

psm後始末

clone時にスレッド(pthread)を起こす そのスレッドはpthreadのcond_waitで待っている フラグが立てば(ぬるぽ->ポインタとか)起きる 空いているか、調べる 空いているかを返す(どうやって?) 返すのも共有メモリ経由しかないよね。 cloneするときに管理用領域…

cloneの引数

スレッド? -プロセス間で共有できるメモリの使い方を教えてください。- C言語・C++・C# | 教えて!gooで触れられているとおりcloneの引数にSIGCHLDを付け加えることで親がwaitしてやることができるようになる。これはman cloneにも載っていなくて俺はわざわ…

psmの実装方針

とりあえず実装方針を@xharakenに相談して次のことを決定した。 psm_mmapの管理領域について まずmmapされたアドレスの一覧が必要。 プロセスのメモリ空間に取る。これを共有すると死ねる。 ちなみに後で子供がmmapできるようにするときにこの情報の更新もさ…

PSMの複数mmapの実装

現状 現時点での実装はmmapが呼ばれたらftruncate(size)するだけなので1つの領域を確保することしかできない。この場合とても簡単で プログラマ側が確保サイズの同意をとれば、ライブラリは何も考えなくていい。 管理領域もまったく共有する必要はない。 目…

実装してみた

とりあえず実装した。 当然なんだけどshm_unlinkし忘れてたから次に起動したときにどんどん状態が積み重なってしまってやれやれだった。 なんかtako(64bitの鯖)で動かしたら子がSIGSEGVする。なにやら psm_mmap(); 以後に fprintf(stderr, "hoge", ...); …

PSMのmalloc実装ロードマップ

次のように実装していくべきかな 親だけがmallocを一回だけ呼ぶ。 つまりshmの識別子名は一意でおk。 メモリアドレスはプロセス間で違うかもしれない。 親だけがmallocを呼ぶ。複数でもいい。 shmの識別子をころころと変える。 誰かが割り当てられたメモリ…