aboutsummaryrefslogtreecommitdiff
path: root/src/core/hle/ipc_helpers.h
AgeCommit message (Collapse)Author
2023-03-01service: move hle_ipc from kernelLiam
2023-02-21service: refactor server architectureLiam
Converts services to have their own processes
2023-02-13general: rename CurrentProcess to ApplicationProcessLiam
2022-11-09kernel/svc_types: refreshLiam
2022-10-31kernel: invert session request handling flowLiam
2022-10-22ipc_helpers: Ignore GCC compiler warnings only on GCCMorph
Clang and ICC for whatever reason also defines __GNUC__. Exclude them from this check.
2022-10-19kernel: remove most SessionRequestManager handling from KServerSessionLiam
2022-10-11k_server_session: preliminary support for userspace server sessionsLiam
2022-07-27chore: make yuzu REUSE compliantAndrea Pappacoda
[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
2022-06-26core: Replace all instances of ResultCode with Resultgerman77
2022-03-14core: hle: kernel: Use weak_ptr where possible for SessionRequestHandler and ↵bunnei
SessionRequestManager.
2022-02-05hle: ipc_helpers: Ignore -Wclass-memaccessMorph
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.
2021-10-07service: Reduce header include overheadMorph
2021-06-24hle: hle_helpers: Skip data payload offset checks on TIPC requests.bunnei
- TIPC does not use this.
2021-05-20hle: kernel: hle_ipc: Simplify incoming/outgoing move/copy/domain objects.bunnei
2021-05-20hle: kernel: Implement CloneCurrentObject and improve session management.bunnei
2021-05-20Revert "WORKAROUND: temp. disable session resource limits while we work out ↵bunnei
issues" This reverts commit fc086f93b2165b5c210cb7dcd6c18ebe17f1fd7b.
2021-05-16core: Make variable shadowing a compile-time errorLioncash
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.
2021-05-11hle: kernel: hle_ipc: Fix outgoing IPC response size calculation.bunnei
2021-05-11WORKAROUND: temp. disable session resource limits while we work out issuesbunnei
2021-05-10core: hle: ipc_helpers: Fix cast on raw_data_size calculation.bunnei
2021-05-10hle: ipc_helpers: Reserve session resource when we create a KSession.bunnei
2021-05-10hle: ipc_helpers: Update IPC response generation for TIPC.bunnei
2021-05-08kernel: Eliminate variable shadowingLioncash
Now that the large kernel refactor is merged, we can eliminate the remaining variable shadowing cases.
2021-05-05hle: kernel: Remove deprecated Object class.bunnei
2021-05-05hle: kernel: Migrate KPort, KClientPort, and KServerPort to KAutoObject.bunnei
2021-05-05hle: kernel: Migrate KClientPort to KAutoObject.bunnei
2021-05-05hle: kernel: Migrate KSession, KClientSession, and KServerSession to ↵bunnei
KAutoObject.
2021-05-05hle: ipc_helpers: Add methods for copy/move references.bunnei
2021-05-05hle: kernel: Refactor IPC interfaces to not use std::shared_ptr.bunnei
2020-12-06hle: Type check ResponseBuilder::Push arguments, and fix use in vi.cppcomex
- 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`.
2020-11-08ipc_helpers: Remove usage of the global system instanceLioncash
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.
2020-10-20Revert "core: Fix clang build"bunnei
2020-10-17core: Fix clang buildLioncash
Recent changes to the build system that made more warnings be flagged as errors caused building via clang to break. Fixes #4795
2020-10-13core/CMakeLists: Make some warnings errorsLioncash
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.
2020-08-05ipc_helpers: Only allow trivially copyable objects with PushRaw() and PopRaw()Lioncash
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.
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.