psm後始末
- clone時にスレッド(pthread)を起こす
- そのスレッドはpthreadのcond_waitで待っている
- フラグが立てば(ぬるぽ->ポインタとか)起きる
- 空いているか、調べる
- 空いているかを返す(どうやって?)
- 返すのも共有メモリ経由しかないよね。
- cloneするときに管理用領域を確保すべき?
void * mmap(size_t size){ int ret=1; while(ret){ void * addr = mmap(...); // ずらさないといけない気がする。 ret = ask_addr(addr); if(ret) munmap(addr); } // アドレスリスト処理 } int ask_addr(void * addr) { psm_mutex_lock(mmap用mutex); // mmap管理用mutex, mem_initで用意されているから // このmutexのためのmmapがないなんてことにはならない。 mmapaddr=addr; cond_broadcast(); //mmapaddrをうまく行った人は1を、 //失敗した人は2を書くみたいな感じになるかな mmapaddr=NULL; cond_broadcast(); psm_mutex_unlock(mmap用mutex); }