PS3 emulator/debugger
Go to file
Eladash f2997e4c00 LV2: Fix the most annoying race ever
Timeline of the race:
1. The PPU is in SLEEP state. state = suspend.
2. lv2_obj::awake is called on the traced thread and is now in ONPROC state, state = signal.
3. lv2_obj::awake is called by another thread externally with a priority higher than our traced thread and appends it to g_pending. state = suspend + signal.
4. lv2_obj::sleep/set_priority (higering priority) is called on any thread which is in ONPROC. Causing it to enter SLEEP or RUNNING state, while the traced thread is back in queue in ONPROC. state = suspend + signal.
5. The traced thread finally calls lv2_obj::awake on itself, g_pending decrements to 0 and we a have a rescheduling event, after XOR state = 0!!! (no signal)
6. In check_state: cpu_sleep_called is now true and remains this way.
7. Another thread with a higher prioty kicks in and appends the traced thread into g_pending. state = suspend.
8. The traced thread is at cpu_thread::cpu_wait(), and that's where it's gonna spend the rest of its life.
2022-08-11 12:44:40 +03:00
.ci Fix shellcheck errors 2022-07-17 15:14:02 +03:00
.github Fix minor issues with issue templates 2022-07-25 21:28:24 +02:00
3rdparty Update MoltenVK (#12456) 2022-08-07 20:54:31 +01:00
bin Move test elfs to test dir 2022-06-02 23:19:34 +02:00
buildfiles
darwin/util
llvm@5521155be5 PPU LLVM arm64+macOS port (#12115) 2022-06-14 15:28:38 +03:00
llvm_build
rpcs3 LV2: Fix the most annoying race ever 2022-08-11 12:44:40 +03:00
Utilities shared_mutex: Optimize busy-waiting by detecting waiters and try to steal the notifying bit 2022-08-07 20:23:54 +03:00
.cirrus.yml Docker version bump 2022-07-17 15:14:02 +03:00
.clang-format
.editorconfig
.gdbinit
.gitignore Move test elfs to test dir 2022-06-02 23:19:34 +02:00
.gitmodules
azure-pipelines.yml
BUILDING.md Add base-devel to Arch Linux in Building.md 2022-05-26 08:01:39 +02:00
CMakeLists.txt Warn about LTO and adds an option to remove LTO flags 2022-05-22 23:03:20 +02:00
git-clang-format
LICENSE
objdump.cpp
pre-commit.readme
README.md
rpcs3.sln Implement PINE IPC Server 2022-06-19 17:56:50 +02:00
usertype.dat

RPCS3

Azure Build Status Cirrus CI - Base Branch Build Status RPCS3 discord server

The world's first free and open-source PlayStation 3 emulator/debugger, written in C++ for Windows and Linux.

You can find some basic information on our website. Game info is being populated on the Wiki. For discussion about this emulator, PS3 emulation, and game compatibility reports, please visit our forums and our Discord server.

Support Lead Developers Nekotekina and kd-11 on Patreon

Contributing

If you want to help the project but do not code, the best way to help out is to test games and make bug reports. See:

If you want to contribute as a developer, please take a look at the following pages:

You should also contact any of the developers in the forums or in the Discord server to learn more about the current state of the emulator.

Building

See BUILDING.md for more information about how to setup an environment to build RPCS3.

Running

Check our friendly quickstart guide to make sure your computer meets the minimum system requirements to run RPCS3.

Don't forget to have your graphics driver up to date and to install the Visual C++ Redistributable Packages for Visual Studio 2019 if you are a Windows user.

License

Most files are licensed under the terms of GNU GPL-2.0-only License; see LICENSE file for details. Some files may be licensed differently; check appropriate file headers for details.