diff options
| author | Lioncash <mathew1800@gmail.com> | 2018-11-26 18:23:12 -0500 |
|---|---|---|
| committer | Lioncash <mathew1800@gmail.com> | 2018-11-26 21:10:31 -0500 |
| commit | 4ef2af8c98354aea8a4a3758d798c6a2b7bf9321 (patch) | |
| tree | 229565ce72652a2cef9fb051d8340c371e810016 /src/core/hle/kernel/svc_wrap.h | |
| parent | f9a211220c59b332a94450a85d3baa1934d6d07e (diff) | |
svc: Implement svcCreateResourceLimit()
This function simply creates a ResourceLimit instance and attempts to
create a handle for it within the current process' handle table. If the
kernal fails to either create the ResourceLimit instance or create a
handle for the ResourceLimit instance, it returns a failure code
(OUT_OF_RESOURCE, and HANDLE_TABLE_FULL respectively). Finally, it exits
by providing the output parameter with the handle value for the
ResourceLimit instance and returning that it was successful.
Note: We do not return OUT_OF_RESOURCE because, if yuzu runs out of
available memory, then new will currently throw. We *could* allocate the
kernel instance with std::nothrow, however this would be inconsistent
with how all other kernel objects are currently allocated.
Diffstat (limited to 'src/core/hle/kernel/svc_wrap.h')
| -rw-r--r-- | src/core/hle/kernel/svc_wrap.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/core/hle/kernel/svc_wrap.h b/src/core/hle/kernel/svc_wrap.h index 233a99fb0..fa1116624 100644 --- a/src/core/hle/kernel/svc_wrap.h +++ b/src/core/hle/kernel/svc_wrap.h @@ -43,6 +43,14 @@ void SvcWrap() { FuncReturn(func(static_cast<u32>(Param(0)), static_cast<u32>(Param(1))).raw); } +template <ResultCode func(u32*)> +void SvcWrap() { + u32 param = 0; + const u32 retval = func(¶m).raw; + Core::CurrentArmInterface().SetReg(1, param); + FuncReturn(retval); +} + template <ResultCode func(u32*, u32)> void SvcWrap() { u32 param_1 = 0; |
