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);
}