Commit Graph
16 Commits
Author SHA1 Message Date
Henrik Rydgård 85efe6ba7c Instance: lock the shared counter for real, and don't hand out ID 0
The POSIX path used mlock() as though it were a mutex. mlock only pins pages in
RAM - it provides no mutual exclusion at all, so the read-modify-write of the
cross-process instance counter was unsynchronized. Two instances launched at the
same moment could both come away with PPSSPP_ID == 1, at which point both pass
IsFirstInstance() and write ppsspp.ini over each other, and both compute the same
adhoc local IP. Take an advisory lock on the shm fd instead. (The Windows path was
already fine - it uses a named mutex.)

Also, next/total are uint8_t in a segment that outlives the processes using it, so
next climbs across runs and wraps. Landing on 0 is worse than it looks: it isn't a
valid instance id, IsFirstInstance() fails, and config saving is silently disabled
from then on. Skip past it on wrap.
2026-08-31 12:53:34 +02:00
Henrik Rydgård e01ca5b057 Logging API change (refactor) (#19324)
* Rename LogType to Log

* Explicitly use the Log:: enum when logging. Allows for autocomplete when editing.

* Mac/ARM64 buildfix

* Do the same with the hle result log macros

* Rename the log names to mixed case while at it.

* iOS buildfix

* Qt buildfix attempt, ARM32 buildfix
2024-07-14 14:42:59 +02:00
Jan Beich e6b84efc55 Instance: add missing include after 1bace55583
Core/Instance.cpp:148:55: error: use of undeclared identifier 'S_IRUSR'
        hIDMapFile = shm_open(ID_SHM_NAME, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
                                                             ^
Core/Instance.cpp:148:65: error: use of undeclared identifier 'S_IWUSR'
        hIDMapFile = shm_open(ID_SHM_NAME, O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
                                                                       ^
2021-09-24 01:18:53 +00:00
iota97 1bace55583 Add permission to shm_open 2021-09-21 16:08:38 +02:00
Unknown W. Brackets af5618705c http: Remove timeoutless requests.
Let's always have timeouts.  This timeout is reset even when a single byte
is sent, so it's pretty generous.
2021-05-01 11:20:05 -07:00
M4xw 76051ac9b5 Switch: Disable multi-instance tracking. 2021-03-04 21:07:13 -08:00
Unknown W. Brackets 13ec384dbe Build: Explicitly include ppsspp_config.h.
This adds it to all files that use it.  Not all our builds include the
file.
2021-03-02 21:04:03 -08:00
Unknown W. Brackets da2e722794 Windows: Fix some format warnings. 2021-02-14 10:30:10 -08:00
Jan Beich 901c3c53de Instance: add missing headers more POSIX systems
Core/Instance.cpp:90:56: error: use of undeclared identifier 'PROT_READ'
        InstanceInfo *buf = (InstanceInfo *)mmap(0, BUF_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, hIDMapFile, 0);
                                                              ^
Core/Instance.cpp:90:68: error: use of undeclared identifier 'PROT_WRITE'
        InstanceInfo *buf = (InstanceInfo *)mmap(0, BUF_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, hIDMapFile, 0);
                                                                          ^
Core/Instance.cpp:90:80: error: use of undeclared identifier 'MAP_SHARED'
        InstanceInfo *buf = (InstanceInfo *)mmap(0, BUF_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, hIDMapFile, 0);
                                                                                      ^
Core/Instance.cpp:91:13: error: use of undeclared identifier 'MAP_FAILED'
        if (buf == MAP_FAILED) {
                   ^
Core/Instance.cpp:147:37: error: use of undeclared identifier 'O_CREAT'
        hIDMapFile = shm_open(ID_SHM_NAME, O_CREAT | O_RDWR, 0);
                                           ^
Core/Instance.cpp:147:47: error: use of undeclared identifier 'O_RDWR'
        hIDMapFile = shm_open(ID_SHM_NAME, O_CREAT | O_RDWR, 0);
                                                     ^
Core/Instance.cpp:185:3: error: use of undeclared identifier 'shm_unlink'
                shm_unlink(ID_SHM_NAME);     // If program exited or crashed before unlinked the shared memory object and it's contents will persist.
                ^
2020-12-27 05:25:05 +00:00
Unknown W. Brackets b0ca635414 Windows: Show instance counter only with peers. 2020-08-18 06:59:49 -07:00
Unknown W. Brackets 09a3d1f7cb Net: Use locking consistently for instance counter. 2020-08-18 06:59:49 -07:00
Henrik Rydgård f617bfce29 Disable the instance counter in libretro builds.
Dunno if it might help #13271...
2020-08-11 22:32:41 +02:00
Henrik Rydgård f9a1a0eee5 Fix issue where after a backend change restart, the new instance was considered secondary. 2020-08-06 10:19:58 +02:00
Henrik Rydgård fb0b3b3351 Another buildfix 2020-07-20 14:09:08 +02:00
Henrik Rydgård 7858980cbf Buildfix 2020-07-20 13:11:11 +02:00
Henrik Rydgård fa0b9dc1bc Make the instance counter global and initialized at startup.
Turn off config saving for secondary instances.
2020-07-20 11:40:54 +02:00