summaryrefslogtreecommitdiffstats
path: root/src/core/hle/result.h (follow)
Commit message (Collapse)AuthorAgeFilesLines
* result: enforce reference check specializationLiam2022-10-131-4/+3
|
* kernel: add expanded result macrosLiam2022-10-081-6/+114
|
* Rework audio output, connecting AudioOut into coretiming to fix desync during heavy loads.Kelebek12022-09-021-0/+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-22/+22
|
* hle/result: Update std::expected replacement messageMorph2022-05-031-1/+1
| | | | std::expected is included in C++23
* hle/result: Add ResultRange overload in ResultValMorph2022-05-031-1/+3
| | | | Also marks the implicit conversion operator as constexpr instead of consteval as the constructor is not constant evaluated.
* hle/result: Implement ResultRangeMorph2022-05-031-0/+42
| | | | | | A ResultRange defines an inclusive range of error descriptions within an error module. This can be used to check whether the description of a given ResultCode falls within the range. The conversion function returns a ResultCode with its description set to description_start.
* general: Remove MakeResult helpersMorph2021-11-021-19/+1
| | | | This is made obsolete by the presence of implicit constructors.
* hle/result: Amend ResultVal documentationMorph2021-11-021-12/+10
| | | | This amends the documentation slightly to reflect the updated interface.
* hle/result: Reimplement ResultVal using Common::ExpectedMorph2021-11-021-117/+63
| | | | | Common::Expected effectively provides the same functions as ResultVal, so we can implement it with this. This can be replaced with std::expected with minimal effort should it be standardized in the C++ Standard Template Library.
* Merge pull request #7240 from Morph1984/resultval-remove-cvbunnei2021-10-301-2/+2
|\ | | | | hle/result: Remove cv-qualifiers from Arg in MakeResult
| * hle/result: Remove cv-qualifiers from Arg in MakeResultMorph2021-10-281-2/+2
| | | | | | | | This removes the const qualification for types when MakeResult(arg) is used in a const member function, allowing for automatic deduction and removing the need to manually specify the non-const type as the template argument.
* | hle/result: Declare copy/move constructor/assignment as noexceptMorph2021-10-281-3/+3
| | | | | | | | While we're at it, we can also declare these copy/move constructor/assignment as noexcept.
* | hle/result: Add move assignment operator in ResultValMorph2021-10-281-0/+20
|/ | | | ResultVal was missing a move assignment operator, add it.
* result: Add [[nodiscard]] specifiers where applicableLioncash2021-06-051-20/+20
| | | | | | The result code classes are used quite extensively throughout both the kernel and service HLE code. We can mark these member functions as [[nodiscard]] to prevent a few logic bugs from slipping through.
* general: Replace RESULT_UNKNOWN with ResultUnknownMorph2021-06-021-2/+2
| | | | Transition to PascalCase for result names.
* general: Replace RESULT_SUCCESS with ResultSuccessMorph2021-06-021-5/+4
| | | | Transition to PascalCase for result names.
* common_funcs: Move R_ macros to result.hLioncash2021-05-311-0/+25
| | | | | | These macros all interact with the result code type, so they should ideally be within this file as well, so all the common_funcs machinery doesn't need to be pulled in just to use them.
* core: Make variable shadowing a compile-time errorLioncash2021-05-161-1/+1
| | | | | | 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.
* audio_core: Make shadowing and unused parameters errorsLioncash2020-12-031-1/+1
| | | | Moves the audio code closer to enabling warnings as errors in general.
* core: Resolve several -Wextra-semi warningsLioncash2020-08-141-4/+8
| | | | | We can amend one of the cascade macros to require semicolons in order to compile. In other cases, we can just remove the superfluous semicolons.
* result: Add default error code for the ResultCode(-1) caseLioncash2019-11-121-1/+9
| | | | | Will be used to reduce the overall duplication of the same magic value all over the codebase in following changes.
* result: Resolve sign-coversion warningsLioncash2019-11-121-1/+1
| | | | | The constructor was implicitly using signed->unsigned conversions to produce 0xFFFFFFFF. We can just specify this explicitly with UINT32_MAX.
* hle/result: Remove unnecessary bitfield entry for ResultCodeLioncash2019-04-051-4/+0
| | | | This is a hold over from the 3DS error codes in Citra.
* core/hle/result: Remove now-unnecessary manually defined copy assignment operatorLioncash2019-03-101-5/+0
| | | | | | Previously this was required, as BitField wasn't trivially copyable. BitField has since been made trivially copyable, so now this isn't required anymore.
* core/hle/result: Amend error in comment description for ResultCodeLioncash2019-03-101-1/+1
| | | | | Gets rid of another holdover from Citra, and describes the OS on the Switch instead.
* core/hle/result: Remove now-unused constructor for ResultCodeLioncash2019-03-101-10/+0
| | | | | Now that the final stray ErrorDescription member was relocated, we can finally remove it and its relevant constructor in the ResultCode union.
* core/hle/result: Relocate IPC error code to ipc_helpersLioncash2019-03-101-1/+0
| | | | | | 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.
* core/hle/ipc: Remove unnecessary includesLioncash2019-03-051-1/+0
| | | | | | | | | | | Removes a few inclusion dependencies from the headers or replaces existing ones with ones that don't indirectly include the required headers. This allows removing an inclusion of core/memory.h, meaning that if the memory header is ever changed in the future, it won't result in rebuilding the entirety of the HLE services (as the IPC headers are used quite ubiquitously throughout the HLE service implementations).
* file_sys/errors: Extract FS-related error codes to file_sys/errors.hLioncash2018-11-161-2/+0
| | | | Keeps filesystem-related error codes in one spot.
* hle/result: Make ResultVal's move constructor as noexceptLioncash2018-08-281-1/+1
| | | | | | | | | | | | | | | | | | | | | | | Many containers within the standard library provide different behaviors based on whether or not a move constructor/assignment operator can be guaranteed not to throw or not. Notably, implementations will generally use std::move_if_noexcept (or an internal implementation of it) to provide strong exception guarantees. If a move constructor potentially throws (in other words, is not noexcept), then certain behaviors will create copies, rather than moving the values. For example, consider std::vector. When a std::vector calls resize(), there are two ways the elements can be relocated to the new block of memory (if a reallocation happens), by copy, or by moving the existing elements into the new block of memory. If a type does not have a guarantee that it will not throw in the move constructor, a copy will happen. However, if it can be guaranteed that the move constructor won't throw, then the elements will be moved. This just allows ResultVal to be moved instead of copied all the time if ever used in conjunction with containers for whatever reason.
* Add & correct some error modulesgreggameplayer2018-05-231-2/+8
|
* Add and correct some Error Modules (#444)greggameplayer2018-05-201-6/+40
| | | | * Add and correct some Error Modules
* result: Check against self-assignment in ResultVal's copy assignment operatorLioncash2018-03-291-0/+3
| | | | Avoids doing work that doesn't need to be done.
* ResultCode: Mark any error code that isn't 0 as an error.Subv2018-02-271-2/+2
|
* fsp_srv: Various improvements to IStorage:Read implementation.bunnei2018-01-211-0/+2
|
* hle: Use Switch formatted result codes.bunnei2017-11-011-181/+59
|
* ResultVal: Remove MoveFrom()Yuri Kunde Schlesner2017-06-191-4/+0
| | | | | Replace it with std::move(result_val).Unwrap(), or Foo().Unwrap() in case you already have an rvalue.
* ResultVal: Add an rvalue overload of Unwrap()Yuri Kunde Schlesner2017-06-191-1/+6
|
* ResultVal: Add more convenience utils for creating and cascading resultsYuri Kunde Schlesner2017-06-061-0/+19
|
* Kernel: Centralize error definitions in errors.hYuri Kunde Schlesner2017-05-251-6/+0
|
* GSP_GPU: Move error codes from result.h to local fileYuri Kunde Schlesner2017-05-251-3/+0
|
* FileSys: Move all result description to errors.hYuri Kunde Schlesner2017-05-251-21/+0
|
* result: Make error description a generic integerYuri Kunde Schlesner2017-05-251-3/+14
| | | | | | | | | It is now known that result code description vary depending on the module, and so they're best defined on a per-module basis. To support this, allow passing in an arbitrary integer instead of limiting to the ones in the ErrorDescription enum. These will be gradually migrated to their individual users, but a few will be kept as "common" codes shared by all modules.
* Make BitField and ResultCode constexpr-initializableYuri Kunde Schlesner2017-05-251-18/+15
|
* Kernel: Use a Session object to keep track of the status of a Client/Server session pair.Subv2017-05-151-0/+1
| | | | Reduce the associated port's connection count when a ServerSession is destroyed.
* file_sys: add Self NCCH archivewwylele2017-02-131-0/+4
|
* Merge pull request #2249 from Subv/sessions_v3Yuri Kunde Schlesner2016-12-151-0/+1
|\ | | | | Kernel/IPC: Use Ports and Sessions as the fundamental building block of Inter Process Communication.
| * Return an error code when connecting to a saturated port.Subv2016-12-051-0/+1
| | | | | | | | The error code was taken from the 3DS kernel.
* | FileSys: Implement OtherSaveDatawwylele2016-11-291-0/+1
|/
* FileSys: add SDMCWriteOnlyArchivewwylele2016-11-191-0/+1
|
* FileSys: add ExtSaveDataArchivewwylele2016-11-191-0/+1
| | | | ExtSaveData is more similar to SaveData, so let it be a subclass of SaveData
* FileSys: add SaveDataArchivewwylele2016-11-191-0/+7
| | | | The error checking of SaveDataArchive is completely different from DiskArchive, so it has to be a new class instead of a subclass of DiskArchive.
* Remove empty newlines in #include blocks.Emmanuel Gil Peyrot2016-09-211-1/+0
| | | | | | | This makes clang-format useful on those. Also add a bunch of forgotten transitive includes, which otherwise prevented compilation.
* Manually tweak source formatting and then re-run clang-formatYuri Kunde Schlesner2016-09-191-2/+1
|
* Sources: Run clang-format on everything.Emmanuel Gil Peyrot2016-09-181-40/+60
|
* Fix the errorcode of archive handleJamePeng2016-07-041-0/+1
|
* Result: fix and update ErrorModulewwylele2016-06-301-6/+19
|
* gsp::gpu: Reset g_thread_id in UnregisterInterruptRelayQueuemailwl2016-06-011-0/+1
|
* Kernel: Implemented shared memory permissions.Subv2016-05-131-0/+1
|
* VideoCore: Run include-what-you-use and fix most includes.Emmanuel Gil Peyrot2016-04-301-1/+0
|
* DSP_DSP: Add return IPC headersMerryMage2016-04-271-0/+1
|
* GSP: Return proper error codes for register writespurpasmart962016-03-311-0/+1
|
* HLE/FS: Implemented GetFormatInfoSubv2016-03-201-0/+1
| | | | Format information is currently only implemented for the ExtSaveData, SharedExtSaveData and SaveData archives, the information is stored in a file alongside the root folder of the archive.
* HLE/FS: Return the proper error codes on file Read/Write operations.Subv2016-03-201-0/+1
| | | | These operations are limited by the open flags specified while opening the file.
* HLE/FS: Corrected the error codes for CreateFileSubv2016-03-201-1/+3
|
* core: Use unrestricted union to hold storage of ResultVal valueYuri Kunde Schlesner2016-03-051-42/+16
|
* BitField: Make trivially copyable and remove assignment operatorMerryMage2016-02-121-4/+4
|
* HLE/SVC: Implement UnmapMemoryBlock.Subv2016-01-141-0/+1
| | | | This implementation will need to be (almost completely) changed when we implement multiprocess support.
* Common: Cleanup key_map includes.Emmanuel Gil Peyrot2015-06-281-1/+1
|
* Common: Remove common.hYuri Kunde Schlesner2015-05-071-0/+1
|
* result: Make comparison operators take referencesLioncash2015-02-281-2/+2
| | | | It's unnecessary to make copies for simple comparisons like this.
* Convert a few C stdlib asserts to Citra's own assertsarchshift2015-02-191-6/+4
|
* Asserts: break/crash program, fit to style guide; log.h->assert.harchshift2015-02-111-1/+1
| | | | | | | Involves making asserts use printf instead of the log functions (log functions are asynchronous and, as such, the log won't be printed in time) As such, the log type argument was removed (printf obviously can't use it, and it's made obsolete by the file and line printing) Also removed some GEKKO cruft.
* ResultVal: Fixed compilation when reassigning a ResultVal.Subv2015-02-101-3/+3
|
* Remove result.h InvalidHandleYuri Kunde Schlesner2015-01-301-5/+0
| | | | | It was only being used in two places, where it was replaced by a local constant.
* Additions to ResultVal to make it more convenient to use.Yuri Kunde Schlesner2015-01-301-1/+25
|
* Logging: Log all called service functions (under trace). Compile out all trace logs under release for performance.archshift2015-01-101-2/+2
|
* License changepurpasmart962014-12-211-1/+1
|
* Filesystem/Archives: Implemented the SaveData archiveSubv2014-12-181-0/+2
| | | | | | | | | | The savedata for each game is stored in /savedata/<ProgramID> for NCCH files. ELF files and 3DSX files use the folder 0 because they have no ID information Got rid of the code duplication in File and Directory Files that deal with the host machine's file system now live in DiskFile, similarly for directories and DiskDirectory and archives with DiskArchive. FS_U: Use the correct error code when a file wasn't found
* HLE: Revamp error handling throrough the HLE codeYuri Kunde Schlesner2014-11-241-0/+400
All service calls in the CTR OS return result codes indicating the success or failure of the call. Previous to this commit, Citra's HLE emulation of services and the kernel universally either ignored errors or returned dummy -1 error codes. This commit makes an initial effort to provide an infrastructure for error reporting and propagation which can be use going forward to make HLE calls accurately return errors as the original system. A few parts of the code have been updated to use the new system where applicable. One part of this effort is the definition of the `ResultCode` type, which provides facilities for constructing and parsing error codes in the structured format used by the CTR. The `ResultVal` type builds on `ResultCode` by providing a container for values returned by function that can report errors. It enforces that correct error checking will be done on function returns by preventing the use of the return value if the function returned an error code. Currently this change is mostly internal since errors are still suppressed on the ARM<->HLE border, as a temporary compatibility hack. As functionality is implemented and tested this hack can be eventually removed.