rpcs3/rpcs3/Emu/Cell/lv2
Elad 575a245f8d
IDM: Implement lock-free smart pointers (#16403)
Replaces `std::shared_pointer` with `stx::atomic_ptr` and `stx::shared_ptr`.

Notes to programmers:

* This pr kills the use of `dynamic_cast`, `std::dynamic_pointer_cast` and `std::weak_ptr` on IDM objects, possible replacement is to save the object ID on the base object, then use idm::check/get_unlocked to the destination type via the saved ID which may be null. Null pointer check is how you can tell type mismatch (as dynamic cast) or object destruction (as weak_ptr locking).
* Double-inheritance on IDM objects should be used with care, `stx::shared_ptr` does not support constant-evaluated pointer offsetting to parent/child type.
* `idm::check/get_unlocked` can now be used anywhere.

Misc fixes:
* Fixes some segfaults with RPCN with interaction with IDM.
* Fix deadlocks in access violation handler due locking recursion.
* Fixes race condition in process exit-spawn on memory containers read.
* Fix bug that theoretically can prevent RPCS3 from booting - fix `id_manager::typeinfo` comparison to compare members instead of `memcmp` which can fail spuriously on padding bytes.
* Ensure all IDM inherited types of base, either has `id_base` or `id_type` defined locally, this allows to make getters such as `idm::get_unlocked<lv2_socket, lv2_socket_raw>()` which were broken before. (requires save-states invalidation)
* Removes broken operator[] overload of `stx::shared_ptr` and `stx::single_ptr` for non-array types.
2024-12-22 20:59:48 +02:00
..
sys_net IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
lv2.cpp CELL: Rewrite reservation notification postponing 2024-11-30 18:06:34 +02:00
sys_bdemu.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
sys_bdemu.h Move error_code to ErrorCodes.h 2020-12-12 15:12:01 +03:00
sys_btsetting.cpp
sys_btsetting.h Move error_code to ErrorCodes.h 2020-12-12 15:12:01 +03:00
sys_cond.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_cond.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_config.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_config.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_console.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
sys_console.h Remove whitespace 2023-02-15 08:58:02 +01:00
sys_crypto_engine.cpp
sys_crypto_engine.h Move error_code to ErrorCodes.h 2020-12-12 15:12:01 +03:00
sys_dbg.cpp PPU/sys_dbg: Implement self-modifying code 2023-12-03 12:57:21 +02:00
sys_dbg.h Move error_code to ErrorCodes.h 2020-12-12 15:12:01 +03:00
sys_event.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_event.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_event_flag.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_event_flag.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_fs.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_fs.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_game.cpp sys_ppu_thread: Fixed up sys_ppu_thread_join()'s check for detached threads 2024-06-10 07:44:49 +03:00
sys_game.h sys_game: Fixed potential bugs in sys_game_get_system_sw_version() 2023-05-06 10:26:37 +03:00
sys_gamepad.cpp More random changes 2021-04-11 14:01:51 +03:00
sys_gamepad.h Replace uint8_t with u8 2020-12-18 12:23:53 +03:00
sys_gpio.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
sys_gpio.h Move error_code to ErrorCodes.h 2020-12-12 15:12:01 +03:00
sys_hid.cpp LV2/cellPad: Implement priority-based connection updates 2023-08-10 09:31:49 +03:00
sys_hid.h LV2/cellPad: Implement priority-based connection updates 2023-08-10 09:31:49 +03:00
sys_interrupt.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_interrupt.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_io.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_io.h Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
sys_lwcond.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_lwcond.h LV2: Make _sys_lwcond_destroy wait for lwmutex lock 2023-06-02 08:54:46 +03:00
sys_lwmutex.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_lwmutex.h Minor fix of sys_lwmutex_destroy 2024-06-12 11:31:56 +03:00
sys_memory.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_memory.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_mmapper.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_mmapper.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_mutex.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_mutex.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_net.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_net.h sys_net: Implement sys_net_abort 2022-07-17 14:53:03 +03:00
sys_overlay.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_overlay.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_ppu_thread.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_ppu_thread.h kernel-explorer: Implement PPU scheduler state information 2021-05-21 18:12:36 +02:00
sys_process.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_process.h sys_sm: Implemented sys_sm_shutdown() (#13048) 2022-12-11 09:10:06 +01:00
sys_prx.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_prx.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_rsx.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_rsx.h VSH Improvements (#13172) 2023-01-09 20:03:01 +03:00
sys_rsxaudio.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_rsxaudio.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_rwlock.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_rwlock.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_semaphore.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_semaphore.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_sm.cpp Misc and minor improvements of syscalls used by VSH (#13067) 2022-12-13 07:33:17 +01:00
sys_sm.h Misc and minor improvements of syscalls used by VSH (#13067) 2022-12-13 07:33:17 +01:00
sys_spu.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_spu.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_ss.cpp Silence sys_ss_access_control_engine 2024-11-01 10:43:46 +02:00
sys_ss.h lv2: stub sys_time syscalls, add error code to sys_ss 2024-04-27 13:33:09 +02:00
sys_storage.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_storage.h Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
sys_sync.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_time.cpp Fix get_system_time() 2024-10-29 19:26:33 +02:00
sys_time.h lv2: stub sys_time syscalls, add error code to sys_ss 2024-04-27 13:33:09 +02:00
sys_timer.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_timer.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_trace.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
sys_trace.h Move types.h to util/types.hpp 2020-12-12 15:12:01 +03:00
sys_tty.cpp sys_tty: Reduce thread dump log spam 2024-05-21 14:19:12 +03:00
sys_tty.h Add debugging info for when sys_tty_write is executed 2021-09-12 19:05:26 +03:00
sys_uart.cpp Rename enum values to be more precise 2024-05-05 01:38:54 +02:00
sys_uart.h More sys_uart packets (#11332) 2022-01-10 03:43:54 +03:00
sys_usbd.cpp input: log all config file content if used 2024-08-08 22:34:20 +02:00
sys_usbd.h Hotplug support for emulated devices 2024-05-14 09:05:03 +02:00
sys_vm.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_vm.h sys_vm: Argument checking fixes 2024-10-14 20:15:14 +03:00