suyu/src/core
Lioncash 7fe27de26e svc: Use the current process' handle table for retrieving the process instance to act upon
The kernel uses the handle table of the current process to retrieve the
process that should be used to retrieve certain information. To someone
not familiar with the kernel, this might raise the question of "Ok,
sounds nice, but doesn't this make it impossible to retrieve information
about the current process?".

No, it doesn't, because HandleTable instances in the kernel have the
notion of a "pseudo-handle", where certain values allow the kernel to
lookup objects outside of a given handle table. Currently, there's only
a pseudo-handle for the current process (0xFFFF8001) and a pseudo-handle
for the current thread (0xFFFF8000), so to retrieve the current process,
one would just pass 0xFFFF8001 into svcGetInfo.

The lookup itself in the handle table would be something like:

template <typename T>
T* Lookup(Handle handle) {
    if (handle == PSEUDO_HANDLE_CURRENT_PROCESS) {
        return CurrentProcess();
    }

    if (handle == PSUEDO_HANDLE_CURRENT_THREAD) {
        return CurrentThread();
    }

    return static_cast<T*>(&objects[handle]);
}

which, as is shown, allows accessing the current process or current
thread, even if those two objects aren't actually within the HandleTable
instance.
2018-12-02 03:41:49 -05:00
..
arm core: Make the exclusive monitor a unique_ptr instead of a shared_ptr 2018-10-15 14:15:50 -04:00
crypto global: Use std::optional instead of boost::optional (#1578) 2018-10-30 00:03:25 -04:00
file_sys Merge pull request #1814 from lioncash/ptr 2018-11-27 19:20:12 -05:00
frontend Merge pull request #1667 from DarkLordZach/swkbd 2018-11-20 08:24:11 -08:00
gdbstub gdbstub: Silence value truncation warning within FpuWrite() 2018-11-26 19:58:23 -05:00
hle svc: Use the current process' handle table for retrieving the process instance to act upon 2018-12-02 03:41:49 -05:00
loader Merge pull request #1620 from DarkLordZach/ldr-ro 2018-11-18 19:23:38 -08:00
tracer Port #4182 from Citra: "Prefix all size_t with std::" 2018-09-15 15:21:06 +02:00
CMakeLists.txt Merge pull request #1770 from DarkLordZach/applet-stub 2018-11-23 09:02:25 -08:00
core.cpp core: Relocate CPU core management to its own class 2018-11-22 04:28:19 -05:00
core.h am: Deglobalize software keyboard applet 2018-11-18 10:53:47 -05:00
core_cpu.cpp core_cpu: Make Cpu scheduler instances unique_ptrs instead of shared_ptrs 2018-10-15 14:15:56 -04:00
core_cpu.h core_cpu: Make Cpu scheduler instances unique_ptrs instead of shared_ptrs 2018-10-15 14:15:56 -04:00
core_timing.cpp Core::CoreTiming: add UnscheduleEventThreadsafe 2018-08-13 13:56:41 +02:00
core_timing.h Core::CoreTiming: add UnscheduleEventThreadsafe 2018-08-13 13:56:41 +02:00
core_timing_util.cpp core_timing: Split off utility functions into core_timing_util 2018-07-24 11:03:24 +01:00
core_timing_util.h core_timing: Split off utility functions into core_timing_util 2018-07-24 11:03:24 +01:00
cpu_core_manager.cpp core: Relocate CPU core management to its own class 2018-11-22 04:28:19 -05:00
cpu_core_manager.h core: Relocate CPU core management to its own class 2018-11-22 04:28:19 -05:00
memory.cpp global: Use std::optional instead of boost::optional (#1578) 2018-10-30 00:03:25 -04:00
memory.h memory: Dehardcode the use of fixed memory range constants 2018-09-24 22:16:03 -04:00
memory_hook.cpp memory_hook: Default virtual destructor in the cpp file 2018-05-03 08:12:16 -04:00
memory_hook.h global: Use std::optional instead of boost::optional (#1578) 2018-10-30 00:03:25 -04:00
memory_setup.h memory: Replace all memory hooking with Special regions 2018-01-27 15:16:39 +00:00
perf_stats.cpp perf_stats: Remove unused variable within DoFrameLimiting() 2018-10-24 00:33:26 -04:00
perf_stats.h core/core: Replace includes with forward declarations where applicable 2018-08-31 16:30:14 -04:00
settings.cpp hid: Use player-defined controller type as PREFERRED_CONTROLLER 2018-11-18 23:22:36 -05:00
settings.h Merge pull request #1747 from DarkLordZach/exefs-lfs 2018-11-23 23:31:48 -05:00
telemetry_session.cpp compatdb: Use a seperate endpoint for testcase submission 2018-10-28 13:23:02 +01:00
telemetry_session.h compatdb: Use a seperate endpoint for testcase submission 2018-10-28 13:23:02 +01:00