void ProcInitTable() { register int i; register Proc_ControlBlock *pcbPtr; proc_MaxNumProcesses = PROC_PCB_NUM_ALLOC; realMaxProcesses = PROC_MAX_PROCESSES; proc_PCBTable = (Proc_ControlBlock **) Vm_BootAlloc(realMaxProcesses * sizeof(pcbPtr)); for (i = 0; i < proc_MaxNumProcesses; i++) { pcbPtr = (Proc_ControlBlock *) Vm_BootAlloc(sizeof(Proc_ControlBlock)); proc_PCBTable[i] = pcbPtr; InitPCB(pcbPtr, i); } /* * Set the rest of the proc table to catch any misuse of nonexistent * entries. */ for (i = proc_MaxNumProcesses; i < realMaxProcesses; i++) { proc_PCBTable[i] = (Proc_ControlBlock *) NIL; } Sync_LockInitDynamic(&tableLock, "Proc:tableLock"); if (cthread_keycreate(&procPcbKey) < 0) { panic("ProcInitTable: can't create thread local data key.\n"); } }
int ldap_pvt_thread_key_create( ldap_pvt_thread_key_t *key ) { return cthread_keycreate( key ); }