aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/ipc_helpers.h
AgeCommit message (Collapse)Author
2019-11-28kernel: Implement a more accurate IPC dispatch.bunnei
2019-11-24kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for ↵bunnei
kernel objects. (#3154) * kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for kernel objects. - See https://github.com/citra-emu/citra/pull/4710 for details.
2019-05-18ipc_helpers: Amend floating-point type in Pop<double> specializationLioncash
Currently, this overload isn't used, so this wasn't actually hit in any code, only the float overload is used.
2019-04-06kernel/server_session: Return a std::pair from CreateSessionPair()Lioncash
Keeps the return type consistent with the function name. While we're at it, we can also reduce the amount of boilerplate involved with handling these by using structured bindings.
2019-03-16ipc_helpers: Allow pushing and popping floating-point valuesLioncash
Certain values that are passed through the IPC buffer are actually floating point values, not solely integral values.
2019-03-13Merge pull request #2223 from lioncash/errorbunnei
core/hle/result: Tidy up the base error code result header.
2019-03-13Merge pull request #2166 from lioncash/vi-init-servicebunnei
service/vi: Unstub GetDisplayService
2019-03-10core/hle/result: Relocate IPC error code to ipc_helpersLioncash
Relocates the error code to where it's most related, similar to how all the other error codes are. Previously we were including a non-generic error in the main result code header.
2019-03-07kernel/hle_ipc: Convert std::shared_ptr IPC header instances to std::optionalLioncash
There's no real need to use a shared lifetime here, since we don't actually expose them to anything else. This is also kind of an unnecessary use of the heap given the objects themselves are so small; small enough, in fact that changing over to optionals actually reduces the overall size of the HLERequestContext struct (818 bytes to 808 bytes).
2019-02-26core/ipc_helper: Allow popping all signed value types with RequestParserLioncash
There's no real reason this shouldn't be allowed, given some values sent via a request can be signed. This also makes it less annoying to work with popping enum values, given an enum class with no type specifier will work out of the box now. It's also kind of an oversight to allow popping s64 values, but nothing else.
2019-01-29hle/ipc_helpers: Fix clang-format warningsLioncash
2019-01-29hle/ipc_helpers: Allow pushing signed valuesLioncash
This is kind of a large hole in the API, given we allow popping signed values. This fixes that.
2018-12-31core/kernel: Remove unnecessary inclusionsLioncash
Gets rid of a few unnecessary header dependencies in some source files.
2018-10-29hle_ipc: Add member function for querying the existence of a domain headerLioncash
Gets rid of the need to call the getter and then check for null.
2018-09-19Removed MakeBuilder as it's not needed anymoreDavid Marcec
2018-09-15Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi
2018-08-28kernel: Eliminate kernel global stateLioncash
As means to pave the way for getting rid of global state within core, This eliminates kernel global state by removing all globals. Instead this introduces a KernelCore class which acts as a kernel instance. This instance lives in the System class, which keeps its lifetime contained to the lifetime of the System class. This also forces the kernel types to actually interact with the main kernel instance itself instead of having transient kernel state placed all over several translation units, keeping everything together. It also has a nice consequence of making dependencies much more explicit. This also makes our initialization a tad bit more correct. Previously we were creating a kernel process before the actual kernel was initialized, which doesn't really make much sense. The KernelCore class itself follows the PImpl idiom, which allows keeping all the implementation details sealed away from everything else, which forces the use of the exposed API and allows us to avoid any unnecessary inclusions within the main kernel header.
2018-08-01kernel: Move object class to its own source filesLioncash
General moving to keep kernel object types separate from the direct kernel code. Also essentially a preliminary cleanup before eliminating global kernel state in the kernel code.
2018-07-25Merge pull request #800 from lioncash/setbunnei
set_sys: Implement SetColorSetId()
2018-07-24ipc_helper: Add helper member function for popping enum values to RequestParserLioncash
2018-07-23hle_ipc: Make constructors explicit where applicableLioncash
2018-07-23ipc_helpers: Make member variables of ResponseBuilder privateLioncash
These aren't used externally at all, so they can be made private.
2018-07-20ipc_helpers: Add PushEnum() member function to ResponseBuilderLioncash
Allows pushing strongly-typed enum members without the need to always cast them at the call sites. Note that we *only* allow strongly-typed enums in this case. The reason for this is that strongly typed enums have a guaranteed defined size, so the size of the data being pushed is always deterministic. With regular enums this can be a little more error-prone, so we disallow them. This function simply uses the underlying type of the enum to determine the size of the data. For example, if an enum is defined as: enum class SomeEnum : u16 { SomeEntry }; if PushEnum(SomeEnum::SomeEntry); is called, then it will push a u16-size amount of data.
2018-05-01ipc: Add support for PopIpcInterface() method.bunnei
- This can be used for domain objects as inputs to service functions.
2018-02-20Fix: change check for domain order and existance of domain message headermailwl
2018-02-20IPC: add domain header to response if only it exists in requestmailwl
2018-01-24ResponseBuilder: Use a bit field for customizing instead of always_move_handles.bunnei
2018-01-24hle: Rename RequestBuilder to ResponseBuilder.bunnei
2018-01-24ipc_helpers: Make interface domain agnostic and add header validation.bunnei
2018-01-24hle: Integrate Domain handling into ServerSession.bunnei
2018-01-24hle: Remove Domain and SyncObject kernel objects.bunnei
2018-01-22IPC: Don't create an unnecessary port when using PushIpcInterface outside of ↵Subv
a domain.
2018-01-21fsp_srv: Various improvements to IStorage:Read implementation.bunnei
2018-01-18Stub PopLaunchParameter and implement Buffer C Descriptors reading on ↵gdkchan
hle_ipc (#96) * Stub PopLaunchParameter and implement Buffer C Descriptors reading * Address PR feedback * Ensure we push a u64 not a size_t * Fix formatting
2018-01-16IPC: Push domain objects as move handles when not in a domain.Subv
2018-01-10IPC: Allow passing arguments to the Interfaces when using PushIpcInterfaceSubv
2018-01-07IPC: Take the number of domain objects as a parameter in MakeBuilder.Subv
2018-01-07IPC: Fixed pushing ResultCodes into the command buffer.Subv
They should have 32 bits of padding after the error code now.
2018-01-07IPC: Add functions to read the input move/copy objects from an IPC request.Subv
2018-01-07IPC Cleanup: Remove 3DS-specific code and translate copy, move and domain ↵Subv
objects in IPC requests. Popping objects from the buffer is still not implemented.
2018-01-07IPC: Use the correct size when pushing raw data to the command buffer and ↵Subv
fixed pushing domain objects. Domain object ids are always stored immediately after the raw data.
2017-12-29kernel: Fix implementation of ConvertSessionToDomain.bunnei
2017-10-17ipc_helpers: Fix alignment (was wrong as a result of a dynarmic bug).bunnei
2017-10-15hle: Implement ConvertSessionToDomain, various cleanups.bunnei
2017-10-14hle: Initial implementation of NX service framework and IPC.bunnei
2017-09-30Fixed type conversion ambiguityHuw Pascoe
2017-06-11Kernel: Allow clearing request_objects to re-use buffer spaceYuri Kunde Schlesner
Reduces the necessary allocation to max(in_handles, out_handles) rather than (in_handles + out_handles).
2017-06-11IPC: Add Pop/PushObjects methods to RequestParser/BuilderYuri Kunde Schlesner
These use the context functions to create and look-up handles for the user.
2017-06-11IPC: Add basic HLERequestContext support to RequestParser/BuilderYuri Kunde Schlesner
2017-05-29Kernel: Move HandleTable to a separate fileYuri Kunde Schlesner