summaryrefslogtreecommitdiffstats
path: root/src/core/hle/ipc_helpers.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* k_server_session: preliminary support for userspace server sessionsLiam2022-10-121-1/+2
|
* chore: make yuzu REUSE compliantAndrea Pappacoda2022-07-271-3/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | [REUSE] is a specification that aims at making file copyright information consistent, so that it can be both human and machine readable. It basically requires that all files have a header containing copyright and licensing information. When this isn't possible, like when dealing with binary assets, generated files or embedded third-party dependencies, it is permitted to insert copyright information in the `.reuse/dep5` file. Oh, and it also requires that all the licenses used in the project are present in the `LICENSES` folder, that's why the diff is so huge. This can be done automatically with `reuse download --all`. The `reuse` tool also contains a handy subcommand that analyzes the project and tells whether or not the project is (still) compliant, `reuse lint`. Following REUSE has a few advantages over the current approach: - Copyright information is easy to access for users / downstream - Files like `dist/license.md` do not need to exist anymore, as `.reuse/dep5` is used instead - `reuse lint` makes it easy to ensure that copyright information of files like binary assets / images is always accurate and up to date To add copyright information of files that didn't have it I looked up who committed what and when, for each file. As yuzu contributors do not have to sign a CLA or similar I couldn't assume that copyright ownership was of the "yuzu Emulator Project", so I used the name and/or email of the commit author instead. [REUSE]: https://reuse.software Follow-up to 01cf05bc75b1e47beb08937439f3ed9339e7b254
* core: Replace all instances of ResultCode with Resultgerman772022-06-271-5/+5
|
* core: hle: kernel: Use weak_ptr where possible for SessionRequestHandler and SessionRequestManager.bunnei2022-03-151-1/+1
|
* hle: ipc_helpers: Ignore -Wclass-memaccessMorph2022-02-051-0/+8
| | | | This warning is triggered by GCC when copying into non-trivially default constructible types, as it uses the more restrictive std::is_trivial (which includes std::is_trivially_default_constructible) to determine whether memcpy is safe instead of std::is_trivially_copyable.
* service: Reduce header include overheadMorph2021-10-071-3/+0
|
* hle: hle_helpers: Skip data payload offset checks on TIPC requests.bunnei2021-06-251-2/+6
| | | | - TIPC does not use this.
* hle: kernel: hle_ipc: Simplify incoming/outgoing move/copy/domain objects.bunnei2021-05-211-20/+0
|
* hle: kernel: Implement CloneCurrentObject and improve session management.bunnei2021-05-211-10/+13
|
* Revert "WORKAROUND: temp. disable session resource limits while we work out issues"bunnei2021-05-211-2/+2
| | | | This reverts commit fc086f93b2165b5c210cb7dcd6c18ebe17f1fd7b.
* core: Make variable shadowing a compile-time errorLioncash2021-05-161-9/+9
| | | | | | Now that we have most of core free of shadowing, we can enable the warning as an error to catch anything that may be remaining and also eliminate this class of logic bug entirely.
* hle: kernel: hle_ipc: Fix outgoing IPC response size calculation.bunnei2021-05-111-0/+1
|
* WORKAROUND: temp. disable session resource limits while we work out issuesbunnei2021-05-111-2/+2
|
* core: hle: ipc_helpers: Fix cast on raw_data_size calculation.bunnei2021-05-111-1/+1
|
* hle: ipc_helpers: Reserve session resource when we create a KSession.bunnei2021-05-111-0/+5
|
* hle: ipc_helpers: Update IPC response generation for TIPC.bunnei2021-05-111-17/+31
|
* kernel: Eliminate variable shadowingLioncash2021-05-081-10/+10
| | | | | Now that the large kernel refactor is merged, we can eliminate the remaining variable shadowing cases.
* hle: kernel: Remove deprecated Object class.bunnei2021-05-061-17/+0
|
* hle: kernel: Migrate KPort, KClientPort, and KServerPort to KAutoObject.bunnei2021-05-061-2/+2
|
* hle: kernel: Migrate KClientPort to KAutoObject.bunnei2021-05-061-1/+1
|
* hle: kernel: Migrate KSession, KClientSession, and KServerSession to KAutoObject.bunnei2021-05-061-6/+6
|
* hle: ipc_helpers: Add methods for copy/move references.bunnei2021-05-061-2/+24
|
* hle: kernel: Refactor IPC interfaces to not use std::shared_ptr.bunnei2021-05-061-10/+10
|
* hle: Type check ResponseBuilder::Push arguments, and fix use in vi.cppcomex2020-12-071-32/+35
| | | | | | | | | | | | - Add a type check so that calling Push with an invalid type produces a compile error rather than a linker error. - vi.cpp was calling Push with a variable of type `std::size_t`. There's no explicit overload for `size_t`, but there is one for `u64`, which on most platforms is the same type as `size_t`. On macOS, however, it isn't: both types are 64 bits, but `size_t` is `unsigned long` and `u64` is `unsigned long long`. Regardless, it makes more sense to explicitly use `u64` here instead of `size_t`.
* ipc_helpers: Remove usage of the global system instanceLioncash2020-11-081-6/+3
| | | | | | | | | Resolves numerous deprecation warnings throughout the codebase due to inclusion of this header. Now building core should be significantly less noisy (and also relying on less global state). This also uncovered quite a few modules that were relying on indirect includes, which have also been fixed.
* Revert "core: Fix clang build"bunnei2020-10-211-2/+2
|
* core: Fix clang buildLioncash2020-10-181-2/+2
| | | | | | | Recent changes to the build system that made more warnings be flagged as errors caused building via clang to break. Fixes #4795
* core/CMakeLists: Make some warnings errorsLioncash2020-10-131-9/+10
| | | | | | | | | Makes our error coverage a little more consistent across the board by applying it to Linux side of things as well. This also makes it more consistent with the warning settings in other libraries in the project. This also updates httplib to 0.7.9, as there are several warning cleanups made that allow us to enable several warnings as errors.
* ipc_helpers: Only allow trivially copyable objects with PushRaw() and PopRaw()Lioncash2020-08-051-0/+4
| | | | | | It's undefined behavior to use non-trivially copyable objects with std::memcpy, so we can add asserts to catch usages of these at compile-time.
* kernel: Implement a more accurate IPC dispatch.bunnei2019-11-281-3/+3
|
* kernel: Replace usage of boost::intrusive_ptr with std::shared_ptr for kernel objects. (#3154)bunnei2019-11-251-8/+8
| | | | | | * 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.
* ipc_helpers: Amend floating-point type in Pop<double> specializationLioncash2019-05-191-1/+1
| | | | | Currently, this overload isn't used, so this wasn't actually hit in any code, only the float overload is used.
* kernel/server_session: Return a std::pair from CreateSessionPair()Lioncash2019-04-061-3/+1
| | | | | | 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.
* ipc_helpers: Allow pushing and popping floating-point valuesLioncash2019-03-161-0/+30
| | | | | Certain values that are passed through the IPC buffer are actually floating point values, not solely integral values.
* Merge pull request #2223 from lioncash/errorbunnei2019-03-131-0/+3
|\ | | | | core/hle/result: Tidy up the base error code result header.
| * core/hle/result: Relocate IPC error code to ipc_helpersLioncash2019-03-101-0/+3
| | | | | | | | | | | | 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.
* | Merge pull request #2166 from lioncash/vi-init-servicebunnei2019-03-131-0/+15
|\ \ | |/ |/| service/vi: Unstub GetDisplayService
| * core/ipc_helper: Allow popping all signed value types with RequestParserLioncash2019-02-271-0/+15
| | | | | | | | | | | | | | | | | | | | 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.
* | kernel/hle_ipc: Convert std::shared_ptr IPC header instances to std::optionalLioncash2019-03-081-1/+1
|/ | | | | | | | | 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).
* hle/ipc_helpers: Fix clang-format warningsLioncash2019-01-301-1/+0
|
* hle/ipc_helpers: Allow pushing signed valuesLioncash2019-01-291-0/+22
| | | | | This is kind of a large hole in the API, given we allow popping signed values. This fixes that.
* core/kernel: Remove unnecessary inclusionsLioncash2019-01-011-1/+1
| | | | Gets rid of a few unnecessary header dependencies in some source files.
* hle_ipc: Add member function for querying the existence of a domain headerLioncash2018-10-301-2/+1
| | | | Gets rid of the need to call the getter and then check for null.
* Removed MakeBuilder as it's not needed anymoreDavid Marcec2018-09-191-7/+0
|
* Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi2018-09-151-6/+6
|
* kernel: Eliminate kernel global stateLioncash2018-08-291-1/+4
| | | | | | | | | | | | | | | | | | | | | | 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.
* kernel: Move object class to its own source filesLioncash2018-08-021-2/+5
| | | | | | 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.
* Merge pull request #800 from lioncash/setbunnei2018-07-251-0/+8
|\ | | | | set_sys: Implement SetColorSetId()
| * ipc_helper: Add helper member function for popping enum values to RequestParserLioncash2018-07-241-0/+8
| |
* | hle_ipc: Make constructors explicit where applicableLioncash2018-07-241-11/+12
| |
* | ipc_helpers: Make member variables of ResponseBuilder privateLioncash2018-07-241-5/+6
|/ | | | These aren't used externally at all, so they can be made private.
* ipc_helpers: Add PushEnum() member function to ResponseBuilderLioncash2018-07-201-0/+19
| | | | | | | | | | | | | | | | | | | | 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.
* ipc: Add support for PopIpcInterface() method.bunnei2018-05-021-0/+7
| | | | - This can be used for domain objects as inputs to service functions.
* Fix: change check for domain order and existance of domain message headermailwl2018-02-201-1/+2
|
* IPC: add domain header to response if only it exists in requestmailwl2018-02-201-1/+1
|
* ResponseBuilder: Use a bit field for customizing instead of always_move_handles.bunnei2018-01-251-9/+18
|
* hle: Rename RequestBuilder to ResponseBuilder.bunnei2018-01-251-20/+21
|
* ipc_helpers: Make interface domain agnostic and add header validation.bunnei2018-01-251-24/+46
|
* hle: Integrate Domain handling into ServerSession.bunnei2018-01-251-3/+3
|
* hle: Remove Domain and SyncObject kernel objects.bunnei2018-01-251-1/+0
|
* IPC: Don't create an unnecessary port when using PushIpcInterface outside of a domain.Subv2018-01-221-4/+5
|
* fsp_srv: Various improvements to IStorage:Read implementation.bunnei2018-01-211-0/+5
|
* Stub PopLaunchParameter and implement Buffer C Descriptors reading on hle_ipc (#96)gdkchan2018-01-181-0/+4
| | | | | | | | | | * Stub PopLaunchParameter and implement Buffer C Descriptors reading * Address PR feedback * Ensure we push a u64 not a size_t * Fix formatting
* IPC: Push domain objects as move handles when not in a domain.Subv2018-01-171-2/+20
|
* IPC: Allow passing arguments to the Interfaces when using PushIpcInterfaceSubv2018-01-111-3/+3
|
* IPC: Take the number of domain objects as a parameter in MakeBuilder.Subv2018-01-071-2/+4
|
* IPC: Fixed pushing ResultCodes into the command buffer.Subv2018-01-071-5/+7
| | | | They should have 32 bits of padding after the error code now.
* IPC: Add functions to read the input move/copy objects from an IPC request.Subv2018-01-071-0/+16
|
* IPC Cleanup: Remove 3DS-specific code and translate copy, move and domain objects in IPC requests.Subv2018-01-071-215/+25
| | | | Popping objects from the buffer is still not implemented.
* IPC: Use the correct size when pushing raw data to the command buffer and fixed pushing domain objects.Subv2018-01-071-5/+14
| | | | Domain object ids are always stored immediately after the raw data.
* kernel: Fix implementation of ConvertSessionToDomain.bunnei2017-12-291-0/+14
|
* ipc_helpers: Fix alignment (was wrong as a result of a dynarmic bug).bunnei2017-10-181-3/+4
|
* hle: Implement ConvertSessionToDomain, various cleanups.bunnei2017-10-151-1/+1
|
* hle: Initial implementation of NX service framework and IPC.bunnei2017-10-151-71/+51
|
* Fixed type conversion ambiguityHuw Pascoe2017-09-301-6/+6
|
* Kernel: Allow clearing request_objects to re-use buffer spaceYuri Kunde Schlesner2017-06-111-0/+3
| | | | | Reduces the necessary allocation to max(in_handles, out_handles) rather than (in_handles + out_handles).
* IPC: Add Pop/PushObjects methods to RequestParser/BuilderYuri Kunde Schlesner2017-06-111-10/+103
| | | | | These use the context functions to create and look-up handles for the user.
* IPC: Add basic HLERequestContext support to RequestParser/BuilderYuri Kunde Schlesner2017-06-111-1/+32
|
* Kernel: Move HandleTable to a separate fileYuri Kunde Schlesner2017-05-301-0/+2
|
* IPCHelper Skip method + address comments for aptLectem2017-03-181-1/+7
|
* fix #2560 and other commentsLectem2017-03-181-2/+2
|
* move push out of class body and add u8 u16 bool specializationsLectem2017-03-181-46/+106
|
* refactor APT service to use the new IPC helpersLectem2017-03-181-0/+12
|
* fix wwylele's comment and use typename in templatesLectem2017-02-051-4/+4
|
* move Pop methods out of class bodyLectem2016-12-261-72/+88
|
* IPC helpersLectem2016-12-261-0/+259