summaryrefslogtreecommitdiffstats
path: root/src/tests (unfollow)
Commit message (Collapse)AuthorFilesLines
2021-08-13logging: Simplify and make thread-safeyzct123451-0/+2
This simplifies the logging system. This also fixes some lost messages on startup. The simplification is simple. I removed unused functions and moved most things in the .h to the .cpp. I replaced the unnecessary linked list with its contents laid out as three member variables. Anything that went through the linked list now directly accesses the backends. Generic functions are replaced with those for each specific use case and there aren't many. This change increases coupling but we gain back more KISS and encapsulation. With those changes it was easy to make it thread-safe. I just removed the mutex and turned a boolean atomic. I was planning to use this thread-safety in my next PR about stacktraces. It was actually async-signal-safety at first but I ended up using a different approach. Anyway getting rid of the linked list is important for that because have the list of backends constantly changing complicates things.
2021-07-23shader_recompiler,video_core: Cleanup some GCC and Clang errorslat9nq1-0/+2
Mostly fixing unused *, implicit conversion, braced scalar init, fpermissive, and some others. Some Clang errors likely remain in video_core, and std::ranges is still a pertinent issue in shader_recompiler shader_recompiler: cmake: Force bracket depth to 1024 on Clang Increases the maximum fold expression depth thread_worker: Include condition_variable Don't use list initializers in control flow Co-authored-by: ReinUsesLisp <reinuseslisp@airmail.cc>
2021-07-10Buffer Cache: Address Feedback.Fernando Sahmkow1-1/+1
2021-07-09Buffer Cache: Fix High Downloads and don't predownload on Extreme.Fernando Sahmkow1-1/+1
2021-07-09common: Add unique functionReinUsesLisp2-0/+109
2021-06-24common: Replace common_sizes into user-literalsWunkolo1-1/+3
Removes common_sizes.h in favor of having `_KiB`, `_MiB`, `_GiB`, etc user-literals within literals.h. To keep the global namespace clean, users will have to use: ``` using namespace Common::Literals; ``` to access these literals.
2021-06-11tests: Add tests for host memoryReinUsesLisp2-0/+184
2021-05-26common: fs: Rework the Common Filesystem interface to make use of std::filesystem (#6270)Morph1-1/+0
* common: fs: fs_types: Create filesystem types Contains various filesystem types used by the Common::FS library * common: fs: fs_util: Add std::string to std::u8string conversion utility * common: fs: path_util: Add utlity functions for paths Contains various utility functions for getting or manipulating filesystem paths used by the Common::FS library * common: fs: file: Rewrite the IOFile implementation * common: fs: Reimplement Common::FS library using std::filesystem * common: fs: fs_paths: Add fs_paths to replace common_paths * common: fs: path_util: Add the rest of the path functions * common: Remove the previous Common::FS implementation * general: Remove unused fs includes * string_util: Remove unused function and include * nvidia_flags: Migrate to the new Common::FS library * settings: Migrate to the new Common::FS library * logging: backend: Migrate to the new Common::FS library * core: Migrate to the new Common::FS library * perf_stats: Migrate to the new Common::FS library * reporter: Migrate to the new Common::FS library * telemetry_session: Migrate to the new Common::FS library * key_manager: Migrate to the new Common::FS library * bis_factory: Migrate to the new Common::FS library * registered_cache: Migrate to the new Common::FS library * xts_archive: Migrate to the new Common::FS library * service: acc: Migrate to the new Common::FS library * applets/profile: Migrate to the new Common::FS library * applets/web: Migrate to the new Common::FS library * service: filesystem: Migrate to the new Common::FS library * loader: Migrate to the new Common::FS library * gl_shader_disk_cache: Migrate to the new Common::FS library * nsight_aftermath_tracker: Migrate to the new Common::FS library * vulkan_library: Migrate to the new Common::FS library * configure_debug: Migrate to the new Common::FS library * game_list_worker: Migrate to the new Common::FS library * config: Migrate to the new Common::FS library * configure_filesystem: Migrate to the new Common::FS library * configure_per_game_addons: Migrate to the new Common::FS library * configure_profile_manager: Migrate to the new Common::FS library * configure_ui: Migrate to the new Common::FS library * input_profiles: Migrate to the new Common::FS library * yuzu_cmd: config: Migrate to the new Common::FS library * yuzu_cmd: Migrate to the new Common::FS library * vfs_real: Migrate to the new Common::FS library * vfs: Migrate to the new Common::FS library * vfs_libzip: Migrate to the new Common::FS library * service: bcat: Migrate to the new Common::FS library * yuzu: main: Migrate to the new Common::FS library * vfs_real: Delete the contents of an existing file in CreateFile Current usages of CreateFile expect to delete the contents of an existing file, retain this behavior for now. * input_profiles: Don't iterate the input profile dir if it does not exist Silences an error produced in the log if the directory does not exist. * game_list_worker: Skip parsing file if the returned VfsFile is nullptr Prevents crashes in GetLoader when the virtual file is nullptr * common: fs: Validate paths for path length * service: filesystem: Open the mod load directory as read only
2021-03-07common: Fiber: use a reference for YieldTo.bunnei1-14/+14
- Fixes another small leak.
2021-03-06Revert "core: Switch to unique_ptr for usage of Common::Fiber."bunnei1-18/+21
2021-02-28[network] Error handling reformcomex2-0/+29
`network.cpp` has several error paths which either: - report "Unhandled host socket error=n" and return `SUCCESS`, or - switch on a few possible errors, log them, and translate them to Errno; the same switch statement is copied and pasted in multiple places in the code Convert these paths to use a helper function `GetAndLogLastError`, which is roughly the equivalent of one of the switch statements, but: - handling more cases (both ones that were already in `Errno`, and a few more I added), and - using OS functions to convert the error to a string when logging, so it'll describe the error even if it's not one of the ones in the switch statement. - To handle this, refactor the logic in `GetLastErrorMsg` to expose a new function `NativeErrorToString` which takes the error number explicitly as an argument. And improve the Windows version a bit. Also, add a test which exercises two random error paths.
2021-02-27core: Switch to unique_ptr for usage of Common::Fiber.bunnei1-21/+18
- With using unique_ptr instead of shared_ptr, we have more explicit ownership of the context. - Fixes a memory leak due to circular reference of the shared pointer.
2021-02-18common/cityhash: Use common typesReinUsesLisp1-2/+2
Allow sharing return types with the rest of the code base. For example, we use 'u128 = std::array<u64, 2>', meanwhile Google's code uses 'uint128 = std::pair<u64, u64>'. While we are at it, use size_t instead of std::size_t.
2021-02-18tests: Add tests for CityHashReinUsesLisp2-0/+23
2021-02-13tests/buffer_base: Add cached CPU writes testsReinUsesLisp1-0/+76
Ensure the behavior of the previous commit in tests.
2021-02-06ring_buffer: Remove granularity template argumentMerryMage1-5/+5
Non-obvious bug in RingBuffer::Push(std::vector<T>&) when granularity != 1 Just remove it altogether because we do not have a use for granularity != 1
2021-01-15common/bit_util: Replace CLZ/CTZ operations with standardized onesLioncash2-24/+0
Makes for less code that we need to maintain.
2021-01-13tests: Add unit tests for the GPU range tracking buffer containerReinUsesLisp2-0/+474
Due to how error prone the container design is, this commit adds unit tests for it. Some tests taken from here are based on bugs from using this buffer container in games, so if we ever break it in the future in a way that might harm games, the tests should fail.
2021-01-09tests/ring_buffer: Silence signed/unsigned mismatch warningsReinUsesLisp1-15/+15
2021-01-02general: Fix various spelling errorsMorph1-2/+2
2021-01-01memory: Remove MemoryHookMerryMage3-240/+0
2020-12-06hle: kernel: Separate KScheduler from GlobalSchedulerContext class.bunnei2-56/+0
2020-11-27tests: Fix warning about comparison between signed and unsignedcomex1-2/+2
2020-10-28tests: Fix data race in fibers testReinUsesLisp1-31/+40
Previous to this commit, the tests were using operator[] from unordered_map to query elements but this silently inserts empty elements when they don't exist. If all threads were executed without concurrency, this wouldn't be an issue, but the same unordered_map could be written from two threads at the same time. This is a data race and makes some previously inserted elements invisible for a short period of time, causing them to insert and return an empty element. This default constructed element (a zero) was used to index an array of fibers that asserted when one of them was nullptr, shutting the test session off. To address this issue, lock on thread id reads and writes. This could be a shared mutex to allow concurrent reads, but the definition of std::this_thread::get_id is fuzzy when using non-standard techniques like fibers. I opted to use a standard mutex. While we are at it, fix the included headers.
2020-08-03tests/core_timing: Remove pragma optimize(off)Lioncash1-9/+5
I made a review comment about this in the PR that this was introduced in (#3955, commit 71c4779211dc081a3b2dd4af52edad5748e7a7f5), but it seems to have been missed. We shouldn't be using this pragma here because it's MSVC specific. This causes warnings on other compilers. The test it's surrounding is *extremely* dubious, but for the sake of silencing warnings on other compilers, we can mark "placebo" as volatile and be on with it.
2020-07-28core_timing: Make use of uintptr_t to represent user_dataLioncash1-2/+2
Makes the interface future-proofed for supporting other platforms in the event we ever support platforms with differing pointer sizes. This way, we have a type in place that is always guaranteed to be able to represent a pointer exactly.
2020-07-16core_timing: Make TimedCallback take std::chrono::nanosecondsLioncash1-6/+8
Enforces our desired time units directly with a concrete type.
2020-07-16core_timing: Make use of std::chrono with ScheduleEventLioncash1-5/+8
2020-06-28Core/Common: Address Feedback.Fernando Sahmkow1-1/+1
2020-06-27Tests/CoreTiming: Correct host timing tests.Fernando Sahmkow2-157/+14
2020-06-27CoreTiming: Correct rebase bugs and other miscellaneous things.Fernando Sahmkow1-4/+6
2020-06-27General: Cleanup legacy code.Fernando Sahmkow1-0/+1
2020-06-27General: Recover Prometheus project from harddrive failure Fernando Sahmkow2-100/+85
This commit: Implements CPU Interrupts, Replaces Cycle Timing for Host Timing, Reworks the Kernel's Scheduler, Introduce Idle State and Suspended State, Recreates the bootmanager, Initializes Multicore system.
2020-06-18Tests/HostTiming: Correct GCC Compile error.Fernando Sahmkow1-15/+14
2020-06-18Common/Fiber: Implement Rewinding.Fernando Sahmkow1-0/+46
2020-06-18Common/Tests: Address FeedbackFernando Sahmkow2-24/+24
2020-06-18Common/Tests: Clang Format.Fernando Sahmkow1-9/+14
2020-06-18Common: Implement WallClock Interface and implement a native clock for x64Fernando Sahmkow1-26/+19
2020-06-18Tests: Add base tests to host timingFernando Sahmkow2-0/+151
2020-06-18Common: Polish Fiber class, add comments, asserts and more tests.Fernando Sahmkow1-1/+94
2020-06-18Tests: Add tests for fibers and refactor/fix Fiber classFernando Sahmkow2-0/+215
2020-04-17arm_test_common: Updates for new VMM.bunnei1-6/+2
2020-04-17General: Resolve warnings related to missing declarationsLioncash1-8/+10
2019-11-27core/memory: Migrate over memory mapping functions to the new Memory classLioncash1-7/+8
Migrates all of the direct mapping facilities over to the new memory class. In the process, this also obsoletes the need for memory_setup.h, so we can remove it entirely from the project.
2019-11-27core_timing: Use better reference tracking for EventType. (#3159)bunnei1-66/+18
* core_timing: Use better reference tracking for EventType. - Moves ownership of the event to the caller, ensuring we don't fire events for destroyed objects. - Removes need for unique names - we won't be using this for save states anyways.
2019-10-12Core_Timing: Fix tests.Fernando Sahmkow1-2/+2
2019-10-09Core Timing: General corrections and added tests.Fernando Sahmkow1-3/+153
2019-10-09Tests: Eliminate old Core Timing TestsFernando Sahmkow1-193/+0
2019-06-16Core_Timing: Make core_timing threadsafe by default.Fernando Sahmkow1-10/+10
The old implementation had faulty Threadsafe methods where events could be missing. This implementation unifies unsafe/safe methods and makes core timing thread safe overall.
2019-06-10kernel: Differentiate kernel and user processes when picking IDZach Hilman1-1/+2
This allows kernel internal type processes to be assigned IDs in the KIP range while userland processes are assigned in the user range.
2019-04-07kernel: Handle page table switching within MakeCurrentProcess()Lioncash1-2/+1
Centralizes the page table switching to one spot, rather than making calling code deal with it everywhere.
2019-03-27Fixes and corrections on formatting.Fernando Sahmkow2-30/+11
2019-03-27Add MultiLevelQueue TestsFernando Sahmkow2-0/+56
2019-03-27Implement intrinsics CountTrailingZeroes and test it.Fernando Sahmkow2-0/+43
2019-03-17core: Move PageTable struct into Common.bunnei2-5/+6
2019-03-08kernel: Make the address arbiter instance per-processLioncash1-1/+1
Now that we have the address arbiter extracted to its own class, we can fix an innaccuracy with the kernel. Said inaccuracy being that there isn't only one address arbiter. Each process instance contains its own AddressArbiter instance in the actual kernel. This fixes that and gets rid of another long-standing issue that could arise when attempting to create more than one process.
2019-03-05kernel/address_arbiter: Pass in system instance to constructorLioncash1-3/+3
Allows getting rid of reliance on the global accessor functions and instead operating on the provided system instance.
2019-02-16core_timing: Convert core timing into a classLioncash1-103/+112
Gets rid of the largest set of mutable global state within the core. This also paves a way for eliminating usages of GetInstance() on the System class as a follow-up. Note that no behavioral changes have been made, and this simply extracts the functionality into a class. This also has the benefit of making dependencies on the core timing functionality explicit within the relevant interfaces.
2019-02-12core_timing: Rename CoreTiming namespace to Core::TimingLioncash1-84/+85
Places all of the timing-related functionality under the existing Core namespace to keep things consistent, rather than having the timing utilities sitting in its own completely separate namespace.
2019-02-06common/bitfield: make it endianness-awareWeiyi Wang2-0/+91
2018-10-30global: Use std::optional instead of boost::optional (#1578)Frederic L2-10/+10
* get rid of boost::optional * Remove optional references * Use std::reference_wrapper for optional references * Fix clang format * Fix clang format part 2 * Adressed feedback * Fix clang format and MacOS build
2018-10-10kernel/thread: Use a regular pointer for the owner/current processLioncash1-1/+2
There's no real need to use a shared pointer in these cases, and only makes object management more fragile in terms of how easy it would be to introduce cycles. Instead, just do the simple thing of using a regular pointer. Much of this is just a hold-over from citra anyways. It also doesn't make sense from a behavioral point of view for a process' thread to prolong the lifetime of the process itself (the process is supposed to own the thread, not the other way around).
2018-09-30kernel/process: Make data member variables privateLioncash1-1/+1
Makes the public interface consistent in terms of how accesses are done on a process object. It also makes it slightly nicer to reason about the logic of the process class, as we don't want to expose everything to external code.
2018-09-25memory: Dehardcode the use of a 36-bit address spaceLioncash1-2/+5
Given games can also request a 32-bit or 39-bit address space, we shouldn't be hardcoding the address space range as 36-bit.
2018-09-15Tests: Remove glad test OS X work-aroundYuri Kunde Schlesner2-16/+0
2018-09-15Port #4182 from Citra: "Prefix all size_t with std::"fearlessTobi3-18/+19
2018-09-08common: Implement a ring bufferMerryMage2-0/+131
2018-08-29kernel: Eliminate kernel global stateLioncash2-1/+3
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-08externals: Update catch to 2.3.0Lioncash4-4/+4
Updates the library from 2.2.3 to 2.3.0
2018-08-03core/memory: Get rid of 3DS leftoversLioncash2-57/+0
Removes leftover code from citra that isn't needed.
2018-07-20arm_test_common: Get rid of truncation warningsLioncash1-2/+5
Explicitly cast the value to a u8 to show that this is intentional.
2018-07-20arm_test_common: Make file static variable a member variable of the testing environmentLioncash2-2/+5
Gets rid of file-static behavior.
2018-07-20arm_test_common: Add missing header guardLioncash1-0/+2
2018-07-19Virtual Filesystem 2: Electric Boogaloo (#676)Zach Hilman2-39/+0
* Virtual Filesystem * Fix delete bug and documentate * Review fixes + other stuff * Fix puyo regression
2018-03-14core: Move process creation out of global state.bunnei2-6/+6
2018-03-02Kernel: Store the program id in the Process class instead of the CodeSet class.Subv2-5/+5
There may be many CodeSets per Process, so it's wasteful and overcomplicated to store the program id in each of them.
2018-01-27memory: Replace all memory hooking with Special regionsMerryMage2-25/+29
2018-01-21Format: Run the new clang format on everythingJames Rowe1-1/+3
2018-01-18CMakeLists: Derive the source directory grouping from targets themselvesLioncash1-15/+11
Removes the need to store to separate SRC and HEADER variables, and then construct the target in most cases.
2018-01-13Fix build on macOS and linuxMerryMage1-1/+1
2018-01-09CoreTiming: Reworked CoreTiming (cherry-picked from Citra #3119)B3n302-0/+238
* CoreTiming: New CoreTiming; Add Test for CoreTiming
2018-01-03arm: Remove SkyEye/Dyncom code that is ARMv6-only.bunnei3-13507/+0
2017-10-15hle: Initial implementation of NX service framework and IPC.bunnei2-217/+0
2017-09-30nso: Refactor and allocate .bss section.bunnei1-2/+2
2017-09-30Moved down_count to CoreTimingHuw Pascoe1-1/+1
2017-09-27Tests: Added Memory::IsValidVirtualAddress tests.Subv2-0/+57
2017-09-27Tests: Fixed ARM VFP testsSubv1-9/+13
2017-09-24memory: Add GetCurrentPageTable/SetCurrentPageTableMerryMage1-1/+1
Don't expose Memory::current_page_table as a global.
2017-09-15Tests/VFP: Use a standalone pagetable for the TestEnvironment memory operations.Subv1-4/+14
This fixes building the tests
2017-07-23tests: Add tests for vaddMerryMage5-2/+13510
2017-07-23tests: Arm testing frameworkMerryMage3-0/+208
2017-06-22Kernel: Fix typo in test nameYuri Kunde Schlesner1-1/+1
2017-06-21Kernel/IPC: Support translation of null handlesYuri Kunde Schlesner1-0/+23
Missed this in my first implementation. Thanks to @wwylele for pointing out that this was missing.
2017-06-19Kernel/IPC: Add tests for HLERequestContext buffer translationYuri Kunde Schlesner2-2/+196
2017-05-28CMake: Create an INTERFACE target for CatchYuri Kunde Schlesner1-4/+2
2017-05-28CMake: Correct inter-module dependencies and library visibilityYuri Kunde Schlesner1-2/+3
Modules didn't correctly define their dependencies before, which relied on the frontends implicitly including every module for linking to succeed. Also changed every target_link_libraries call to specify visibility of dependencies to avoid leaking definitions to dependents when not necessary.
2017-03-01Common: add ParamPackagewwylele2-0/+26
2016-12-07tests: add missing libcore dependency after 75ee2f8c6702Jan Beich1-1/+1
$ (cmake -DENABLE_SDL2:BOOL=false /path/to/citra; gmake) [...] [ 85%] Linking CXX executable tests ../common/libcommon.a(microprofile.cpp.o): In function `MicroProfileThreadStart(pthread**, void* (*)(void*))': src/common/microprofile.cpp:(.text+0x41): undefined reference to `pthread_create' c++: error: linker command failed with exit code 1 (use -v to see invocation)
2016-11-19tests: add a work-around for macOS linking errorwwylele2-0/+15
2016-11-19FileSys: add PathParserwwylele2-0/+39
2016-05-19Tests: Run tests on CIMerryMage1-0/+2
2016-05-19tests: Infrastructure for unit testsMerryMage2-0/+23