Example #1
0
        private void SvcStartThread(AThreadState ThreadState)
        {
            int Handle = (int)ThreadState.X0;

            KThread Thread = Process.HandleTable.GetObject <KThread>(Handle);

            if (Thread != null)
            {
                long Result = Thread.Start();

                if (Result != 0)
                {
                    Device.Log.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
                }

                ThreadState.X0 = (ulong)Result;
            }
            else
            {
                Device.Log.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");

                ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
            }
        }
Example #2
0
        private void SvcStartThread(CpuThreadState threadState)
        {
            int handle = (int)threadState.X0;

            KThread thread = _process.HandleTable.GetObject <KThread>(handle);

            if (thread != null)
            {
                KernelResult result = thread.Start();

                if (result != KernelResult.Success)
                {
                    Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error \"{result}\".");
                }

                threadState.X0 = (ulong)result;
            }
            else
            {
                Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{handle:x8}!");

                threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
            }
        }