CSPspEmu.Hle.Modules.threadman.ThreadManForUser.VariablePool.Allocate C# (CSharp) Метод

Allocate() публичный Метод

public Allocate ( CpuThreadState CpuThreadState, int Size, PspPointer AddressPointer, uint Timeout, bool HandleCallbacks ) : void
CpuThreadState CSPspEmu.Core.Cpu.CpuThreadState
Size int
AddressPointer PspPointer
Timeout uint
HandleCallbacks bool
Результат void
            public void Allocate(CpuThreadState CpuThreadState, int Size, PspPointer* AddressPointer, uint* Timeout, bool HandleCallbacks)
            {
                if (!TryAllocate(CpuThreadState, Size, AddressPointer))
                {
                    bool TimedOut = false;

                    ThreadManForUser.ThreadManager.Current.SetWaitAndPrepareWakeUp(HleThread.WaitType.Semaphore, "_sceKernelAllocateVplCB", this, (WakeUp) =>
                    {
                        ThreadManForUser.PspRtc.RegisterTimeout(Timeout, () =>
                        {
                            TimedOut = true;
                            WakeUp();
                        });
                        WaitList.Add(new WaitVariablePoolItem()
                        {
                            RequiredSize = Size,
                            WakeUp = () => {
                                WakeUp();
                                Allocate(CpuThreadState, Size, AddressPointer, Timeout, HandleCallbacks);
                            },
                        });
                    }, HandleCallbacks: HandleCallbacks);

                    if (TimedOut) throw(new SceKernelException(SceKernelErrors.ERROR_KERNEL_WAIT_TIMEOUT));
                }
            }