rpcsx/rpcs3/Emu/Cell/Modules
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
..
cell_FreeType2.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellAdec.cpp cellAdec implementation part 2: LPCM decoder (#16381) 2024-12-18 20:21:56 +02:00
cellAdec.h cellAdec implementation part 2: LPCM decoder (#16381) 2024-12-18 20:21:56 +02:00
cellAtrac.cpp HLE: fix some types 2022-01-02 18:18:31 +03:00
cellAtrac.h HLE: fix some types 2022-01-02 18:18:31 +03:00
cellAtracMulti.cpp HLE: fix some types 2022-01-02 18:18:31 +03:00
cellAtracMulti.h HLE: fix some types 2022-01-02 18:18:31 +03:00
cellAtracXdec.cpp cellAtracXdec: fix FFmpeg warning 2024-09-18 07:57:10 +02:00
cellAtracXdec.h cellAtracXdec: review fixes 2024-09-14 19:37:21 +02:00
cellAudio.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cellAudio.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cellAudioIn.h GUI Utilities: Implement instruction search, PPU/SPU disasm improvements (#10968) 2021-10-12 23:12:30 +03:00
cellAudioOut.cpp sys_net improvements (#15584) 2024-05-13 05:35:08 +03:00
cellAudioOut.h Savestates: save cellAudioOut 2022-07-06 19:43:25 +03:00
cellAuthDialog.cpp hle: cellAuthDialog 2020-02-22 16:03:14 +03:00
cellAvconfExt.cpp cellAudioIn: reduce log spam 2023-07-31 13:19:55 +03:00
cellBgdl.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellBgdl.h Remove BOM markers 2020-12-06 15:30:12 +03:00
cellCamera.cpp cellCamera: try to fix internal state on stop 2024-12-18 03:54:25 +01:00
cellCamera.h Use u64 for system_time_t, as s64 doesn't make much sense in a microsecond context. 2023-02-22 23:57:20 +01:00
cellCelp8Enc.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellCelp8Enc.h Add usz alias for std::size_t 2020-12-18 12:23:53 +03:00
cellCelpEnc.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellCelpEnc.h Add usz alias for std::size_t 2020-12-18 12:23:53 +03:00
cellCrossController.cpp cellMsgDialog: only abort dialogs that were actually spawned by cellMsgDialog 2024-09-20 20:43:57 +02:00
cellCrossController.h Remove BOM markers 2020-12-06 15:30:12 +03:00
cellDaisy.cpp Enable -Wunused-parameter 2021-03-06 18:07:08 +03:00
cellDaisy.h Remove BOM markers 2020-12-06 15:30:12 +03:00
cellDmux.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cellDmux.h cellDmuxPamf: add module + stubs 2024-11-23 17:01:25 +02:00
cellDmuxPamf.cpp cellDmuxPamf: add module + stubs 2024-11-23 17:01:25 +02:00
cellDmuxPamf.h cellDmuxPamf: add module + stubs 2024-11-23 17:01:25 +02:00
cellDtcpIpUtility.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellFiber.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellFiber.h HLE: fix some types 2022-01-02 18:18:31 +03:00
cellFont.cpp cellFont: some stubs 2024-01-11 22:35:00 +01:00
cellFont.h cellFont: some stubs 2024-01-11 22:35:00 +01:00
cellFontFT.cpp cellFont: some stubs 2024-01-11 22:35:00 +01:00
cellFontFT.h Add missing #includes to header files 2019-06-25 17:11:10 +03:00
cellFs.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cellFs.h More random changes 2021-04-11 14:01:51 +03:00
cellGame.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cellGame.h cellGame: Enable disc insert/eject based on disc mount state 2024-04-05 14:45:10 +02:00
cellGameExec.cpp cellGameExec: fix warnings 2022-05-05 12:23:12 +02:00
cellGcmSys.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cellGcmSys.h HLE cellGcmSys: Make IOTable accurate 2020-02-19 18:11:30 +00:00
cellGem.cpp ps move tracker: set max of radii to 50% 2024-12-21 14:36:24 +01:00
cellGem.h cellGem: implement real ps move handler 2024-11-16 09:45:31 +01:00
cellGifDec.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cellGifDec.h cellGifDec: random stuff because I was bored 2022-07-18 22:23:25 +02:00
cellHttp.cpp Warning fixes 2022-09-17 16:35:02 +03:00
cellHttp.h stub cellHttp 2022-06-19 07:07:31 +02:00
cellHttpUtil.cpp Fix typos, improve consistency 2023-07-28 13:09:06 +03:00
cellHttpUtil.h stub cellHttp 2022-06-19 07:07:31 +02:00
cellImeJp.cpp cellImeJp: fix character deletion after change to cursor 2024-01-20 21:59:02 +01:00
cellImeJp.h cellImeJp: fix character deletion after change to cursor 2024-01-20 21:59:02 +01:00
cellJpgDec.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cellJpgDec.h Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
cellJpgEnc.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellJpgEnc.h Remove BOM markers 2020-12-06 15:30:12 +03:00
cellKb.cpp Replace sys_io log channel with cell module log channels 2024-06-23 15:54:13 +02:00
cellKb.h Warning fixes 2022-09-17 16:35:02 +03:00
cellKey2char.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellL10n.cpp Make compile with msvc, clang and gcc on Windows 2023-07-11 21:40:30 +03:00
cellL10n.h Clean vm::ps3 namespace use 2018-02-09 17:49:37 +03:00
cellLibprof.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellMic.cpp cellMic: add 16-bit PCM to 32-bit float conversion for DSP stream (#16030) 2024-09-03 23:25:24 +02:00
cellMic.h cellMic: add 16-bit PCM to 32-bit float conversion for DSP stream (#16030) 2024-09-03 23:25:24 +02:00
cellMouse.cpp Replace sys_io log channel with cell module log channels 2024-06-23 15:54:13 +02:00
cellMouse.h Split BEType.h to util/v128.hpp and util/to_endian.hpp 2020-12-13 16:34:45 +03:00
cellMsgDialog.cpp cellMsgDialog: only abort dialogs that were actually spawned by cellMsgDialog 2024-09-20 20:43:57 +02:00
cellMsgDialog.h cellMsgDialog: only abort dialogs that were actually spawned by cellMsgDialog 2024-09-20 20:43:57 +02:00
cellMusic.cpp cellMusic 2024-04-20 11:55:49 +02:00
cellMusic.h cellMusic: Implement some error checking 2022-09-12 15:04:23 +03:00
cellMusicDecode.cpp cellMusicDecode: fix random pop at the end of a stream 2024-01-10 22:34:13 +01:00
cellMusicDecode.h cellMusic/Decode: implement playlist shuffle and repeat 2022-07-22 08:42:43 +02:00
cellMusicExport.cpp HLE: use original filename for media exports 2024-05-04 22:18:44 +02:00
cellMusicSelectionContext.cpp More constexpr 2024-11-16 15:10:20 +01:00
cellNetAoi.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellNetCtl.cpp Add some extra param handling for cellNetCtlGetInfo 2024-09-27 19:14:09 +02:00
cellNetCtl.h Qt: add system cmd dialog 2023-01-16 17:26:05 +01:00
cellOskDialog.cpp fix some warnings and typos 2024-04-19 01:29:22 +02:00
cellOskDialog.h cellOskDialog: improve kb event hook callback 2023-01-28 21:51:36 +01:00
cellOvis.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellPad.cpp cellGem: implement real ps move handler 2024-11-16 09:45:31 +01:00
cellPad.h Savestates/cellPad: Save old controller state 2024-01-01 11:58:00 +02:00
cellPamf.cpp cellPamf implementation (#15143) 2024-02-29 21:45:28 +01:00
cellPamf.h cellPamf implementation (#15143) 2024-02-29 21:45:28 +01:00
cellPesmUtility.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellPhotoDecode.cpp cellPhotoDecode: allow dev_bdvd paths 2024-12-19 18:01:10 +01:00
cellPhotoExport.cpp HLE: use original filename for media exports 2024-05-04 22:18:44 +02:00
cellPhotoImport.cpp cellPhotoImport: better log channel name for string search in logs 2023-10-25 07:13:12 +02:00
cellPng.h Add missing #includes to header files 2019-06-25 17:11:10 +03:00
cellPngDec.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cellPngDec.h More random changes 2021-04-11 14:01:51 +03:00
cellPngEnc.cpp Warning fixes 2022-09-17 16:35:02 +03:00
cellPngEnc.h cellPngEnc 2022-08-06 10:35:10 +02:00
cellPrint.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellRec.cpp Qt: Replace QMap with std::map 2024-11-06 09:34:32 +01:00
cellRec.h cellRec: add more logging 2022-12-10 03:24:40 +01:00
cellRemotePlay.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellRemotePlay.h Remove BOM markers 2020-12-06 15:30:12 +03:00
cellResc.cpp Enable -Wunused-parameter 2021-03-06 18:07:08 +03:00
cellResc.h Add usz alias for std::size_t 2020-12-18 12:23:53 +03:00
cellRtc.cpp cellRtc: review fixes 2024-04-27 13:33:09 +02:00
cellRtc.h cellRtc: replace vm::check_addr() with sys_memory_get_page_attribute() 2024-04-27 13:33:09 +02:00
cellRtcAlarm.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellRudp.cpp Enable -Wunused-parameter 2021-03-06 18:07:08 +03:00
cellRudp.h Remove BOM markers 2020-12-06 15:30:12 +03:00
cellSail.cpp recording: cleanup audio config members 2023-11-23 21:19:31 +01:00
cellSail.h Test alterable aggregates via overriding be_t 2021-04-25 19:00:16 +03:00
cellSailRec.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellSaveData.cpp cellSaveData: Add autosave indicator (#15720) 2024-11-04 21:53:34 +01:00
cellSaveData.h save-overlays: add entry size info 2021-04-30 00:30:26 +02:00
cellScreenshot.cpp Silence logging of cellScreenShot 2024-03-26 21:35:53 +02:00
cellScreenshot.h fixed_typemap.hpp: make it a bit fool-proof 2021-03-02 21:58:49 +03:00
cellSearch.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cellSearch.h Add missing #includes to header files 2019-06-25 17:11:10 +03:00
cellSheap.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellSpudll.cpp Reintroduce LOG_CHANNEL 2018-08-25 15:39:00 +03:00
cellSpudll.h Add missing #includes to header files 2019-06-25 17:11:10 +03:00
cellSpurs.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cellSpurs.h cellSpurs: Fix ready count 2023-05-19 14:18:51 +03:00
cellSpursJq.cpp More random changes 2021-04-11 14:01:51 +03:00
cellSpursJq.h Clean vm::ps3 namespace use 2018-02-09 17:49:37 +03:00
cellSpursSpu.cpp Initial Linux Aarch64 support 2022-01-15 06:48:04 +03:00
cellSsl.cpp stub cellHttp 2022-06-19 07:07:31 +02:00
cellSsl.h stub cellHttp 2022-06-19 07:07:31 +02:00
cellStorage.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellStorage.h More random changes 2021-04-11 14:01:51 +03:00
cellSubDisplay.cpp cellSubDisplay: add error checks 2022-10-10 21:26:27 +02:00
cellSubDisplay.h cellSubDisplay: add error checks 2022-10-10 21:26:27 +02:00
cellSync.cpp utils/atomic.hpp: Make atomic_op reject non-non-const lvalue 2024-11-02 21:43:35 +02:00
cellSync.h SPU LLVM: Avoid notifications in cellSync SPU functions 2024-05-21 16:37:54 +03:00
cellSync2.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellSync2.h Add missing #includes to header files 2019-06-25 17:11:10 +03:00
cellSysCache.cpp fixup hdd1 cache 2024-01-20 22:15:07 +02:00
cellSysconf.cpp HLE: more error checks 2022-06-22 21:47:06 +02:00
cellSysconf.h Remove BOM markers 2020-12-06 15:30:12 +03:00
cellSysmodule.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellSysutil.cpp cellSysutil: Implement dispatcher callback unloading 2024-05-19 09:26:26 +03:00
cellSysutil.h cellSysutil: Implement dispatcher callback unloading 2024-05-19 09:26:26 +03:00
cellSysutilAp.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellSysutilAvc.cpp Implement old matching API 2024-09-19 20:34:56 +02:00
cellSysutilAvc.h cellSysutilAvcExt: fix some params and size of long (the disassembly makes zero sense with s64) 2024-09-06 17:17:17 +02:00
cellSysutilAvc2.cpp Improve CB accuracy for Avc2 2024-05-19 19:16:30 +02:00
cellSysutilAvc2.h fix CellSysutilAvc2InitParam 2024-04-13 01:41:41 +02:00
cellSysutilAvcExt.cpp Set cellSysutilAvcExtInitOptionParam to notice 2024-09-08 20:04:30 +02:00
cellSysutilMisc.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellSysutilNpEula.cpp Improve sceNpEula 2024-01-07 14:50:45 +01:00
cellUsbd.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellUsbd.h Remove BOM markers 2020-12-06 15:30:12 +03:00
cellUsbpspcm.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellUserInfo.cpp rsx/overlays: Putting it all together 2023-02-24 00:46:53 +03:00
cellUserInfo.h Implement most of cellUserInfo 2021-04-23 05:50:19 +03:00
cellVdec.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cellVdec.h cellVdecDecodeAuEx2: some REd guesswork 2022-04-21 22:22:33 +02:00
cellVideoExport.cpp HLE: use original filename for media exports 2024-05-04 22:18:44 +02:00
cellVideoOut.cpp cellVideoOutGetDeviceInfo: Fix Interlace typo for 1080p 2024-05-05 01:38:54 +02:00
cellVideoOut.h HLE: more error checks 2022-06-22 21:47:06 +02:00
cellVideoPlayerUtility.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellVideoUpload.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
cellVideoUpload.h Remove BOM markers 2020-12-06 15:30:12 +03:00
cellVoice.cpp sys_net improvements (#15584) 2024-05-13 05:35:08 +03:00
cellVoice.h Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
cellVpost.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
cellVpost.h Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
cellWebBrowser.cpp fixed_typemap.hpp: make it a bit fool-proof 2021-03-02 21:58:49 +03:00
cellWebBrowser.h Add missing #includes to header files 2019-06-25 17:11:10 +03:00
HLE_PATCHES.cpp Remove whitespace 2023-02-15 08:58:02 +01:00
libad_async.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
libad_core.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
libfs_utility_init.cpp Stub libfs_utility_init to bypass FSCK checks by vsh. 2021-07-17 18:56:07 +02:00
libfs_utility_init.h Stub libfs_utility_init to bypass FSCK checks by vsh. 2021-07-17 18:56:07 +02:00
libmedi.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
libmixer.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
libmixer.h Remove BOM markers 2020-12-06 15:30:12 +03:00
libsnd3.cpp Enable -Wunused-parameter 2021-03-06 18:07:08 +03:00
libsnd3.h Remove BOM markers 2020-12-06 15:30:12 +03:00
libsynth2.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
libsynth2.h Split BEType.h to util/v128.hpp and util/to_endian.hpp 2020-12-13 16:34:45 +03:00
sceNp.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sceNp.h IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sceNp2.cpp Fake sceNpMatching2GetLobbyInfoList 2024-09-26 21:12:10 +02:00
sceNp2.h sceNp: fix size_t data types 2023-12-30 19:07:35 +01:00
sceNpClans.cpp sceNp: fix size_t data types 2023-12-30 19:07:35 +01:00
sceNpClans.h sceNp: add some constants 2022-05-10 21:55:35 +02:00
sceNpCommerce2.cpp Implement old matching API 2024-09-19 20:34:56 +02:00
sceNpCommerce2.h sceNpCommerce2: add some error checks 2024-01-27 08:31:16 +01:00
sceNpMatchingInt.cpp Implement old matching API 2024-09-19 20:34:56 +02:00
sceNpPlus.cpp RPCN 1.1 2024-02-05 09:44:29 +01:00
sceNpPlus.h Add stubs. 2022-04-10 18:28:57 +02:00
sceNpSns.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sceNpSns.h Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
sceNpTrophy.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sceNpTrophy.h sceNpTrophy: Initial commSign checking of CreateContext 2023-07-25 21:40:35 +03:00
sceNpTus.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sceNpTus.h rpcn 0.8 2023-12-29 19:22:49 +01:00
sceNpUtil.cpp rpcn: signaling handler improvements & upnp 2023-02-21 15:41:41 +01:00
sceNpUtil.h sceNpUtil: implement skeleton bandwidth test 2022-07-12 22:45:40 +02:00
StaticHLE.cpp PPU: Add new patch function for SONIC 06 2022-12-09 21:16:05 +03:00
StaticHLE.h More random changes 2021-04-11 14:01:51 +03:00
sys_crashdump.cpp Move sys_crashdump to it's own file and make it a module itself 2021-03-08 22:57:35 +03:00
sys_crashdump.h HLE: fix some types 2022-01-02 18:18:31 +03:00
sys_game_.cpp Implemented sys_game_board_storage_read() 2022-09-04 13:28:05 +03:00
sys_heap.cpp Savestates Support For PS3 Emulation (#10478) 2022-07-04 16:02:17 +03:00
sys_io_.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_libc.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
sys_libc_.cpp Add debugging info for when sys_tty_write is executed 2021-09-12 19:05:26 +03:00
sys_lv2dbg.cpp Enable -Wunused-parameter 2021-03-06 18:07:08 +03:00
sys_lv2dbg.h Add missing #includes to header files 2019-06-25 17:11:10 +03:00
sys_lwcond_.cpp Fix HLE sys_lwcond_signal_to 2023-12-19 15:34:07 +02:00
sys_lwmutex_.cpp Decrease some include madness 2023-04-26 21:37:44 +02:00
sys_mempool.cpp IDM: Implement lock-free smart pointers (#16403) 2024-12-22 20:59:48 +02:00
sys_mmapper_.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
sys_net_.cpp Enable -Wunused-parameter 2021-03-06 18:07:08 +03:00
sys_net_.h Clean vm::ps3 namespace use 2018-02-09 17:49:37 +03:00
sys_ppu_thread_.cpp vm: Remove vm::dealloc_verbose_nothrow 2021-01-15 17:37:52 +03:00
sys_prx_.cpp Enable -Wunused-parameter 2021-03-06 18:07:08 +03:00
sys_rsxaudio_.cpp Remove BOM markers 2020-12-06 15:30:12 +03:00
sys_spinlock.cpp Savestates: HLE state saving POC in sys_lwmutex 2022-07-06 19:43:25 +03:00
sys_spu_.cpp SPU TG: Simplify state of saved SPU image data 2021-05-01 19:43:00 +03:00
sysPrxForUser.cpp Use u64 for system_time_t, as s64 doesn't make much sense in a microsecond context. 2023-02-22 23:57:20 +01:00
sysPrxForUser.h sys_prx: more constants 2021-04-23 22:02:52 +02:00