コード例 #1
0
ファイル: procTable.c プロジェクト: npe9/sprite
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");
    }
}
コード例 #2
0
ファイル: thr_cthreads.c プロジェクト: 1ack/Impala
int
ldap_pvt_thread_key_create( ldap_pvt_thread_key_t *key )
{
	return cthread_keycreate( key );
}