Nekotekina
6b1df1ce31
fs: add long path support on Windows
...
Extend path limit with \\?\ prefix.
2019-10-14 19:42:13 +03:00
Nekotekina
c4ccac9a9c
[TSX] Fix XABORT handling
...
Break repeat loop after explicit transaction abort.
May have performance consequences.
2019-10-13 19:35:12 +03:00
Nekotekina
ac712bf4e3
lf_queue: remove explicit notify(), notify in push() instead
...
Should be cheap enough now if there are no waiters.
2019-10-12 22:45:17 +03:00
Nekotekina
5624b001ae
lf_queue: add range-for support (endless loop with waiting)
2019-10-12 22:37:52 +03:00
Nekotekina
6a443c0fbd
Deprecate thread_ctrl::spawn
2019-10-12 19:14:50 +03:00
Nekotekina
8e21f4d5d4
Remove g_thread_count
...
Unnecessary global which is bad to reason about.
Possibly fix a but in SPRX loader.
2019-10-12 16:45:41 +03:00
plappermaul
925f2ce02f
Use Linux timers for sleeps up to 1ms ( #6697 )
...
* Use Linux timers for sleeps up to 1ms (v3)
The current sleep timer implementation basically offers two variants. Either
wait the specified time exactly with a condition variable (as host) or use a
combination of it with a thread yielding busy loop afterwards (usleep timer).
While the second one is very precise it consumes CPU loops for each wait call
below 50us. Games like Bomberman Ultra spam 30us waits and the emulator hogs
low power CPUs. Switching to host mode reduces CPU consumption but gives a
~50us penalty for each wait call. Thus extending all sleeps by a factor of
more than two.
The following bugfix tries to improve the system timer for Linux by using
Linux native timers for small wait calls below 1ms. This has two effects.
- Host wait setting has much less wait overhead
- usleep wait setting produces lower CPU overhead
2019-10-09 20:03:34 +03:00
Nekotekina
8f604ddded
Fix log format misuse
...
Harden log channel methods against non-constant string.
2019-10-09 02:14:52 +03:00
Nekotekina
a29d4150df
GDB Server: fix and cleanup
...
Move source files to Emu/GDB.cpp, GDB.h
Remove "WITH_GDB" option, enable GDB Server by default.
Change class name to gdb_thread.
Alias for external access gdb_server.
Change config option name to "GDB Server"
Bind on 127.0.0.1 by default.
2019-10-09 00:11:44 +03:00
Nekotekina
aa659f3c36
Fix minor warning
2019-10-06 20:40:53 +03:00
Nekotekina
cf13dee1f3
Prioritize vip_lock in shared_mutex
...
Should fix some deadlock issues.
2019-10-06 16:03:38 +03:00
Nekotekina
8031180373
Add dummy alert param to thread_ctrl::wait API
2019-10-06 16:03:10 +03:00
Rajko Stojadinovic
297e3c5996
Make windows_file::stat return the same mtime as fs::stat
2019-10-05 14:25:34 +03:00
kd-11
4a19a2dd24
rsx: Explicity describe transfer regions for both source and destination blocks
2019-10-04 18:10:46 +03:00
Nekotekina
21885264f7
Improve to_se conversion template
...
Add sizeof check instead of filtering out 1-byte types.
2019-09-28 15:39:50 +03:00
Nekotekina
bd1a24b894
Tidy endianness support (se_t) implementation
...
Move se_t and se_storage to util/endian.hpp
Use single template instead of two specializations.
Add minor optimization for MSVC.
Remove v128 dependency.
Try to enable intrinsics for unaligned data.
Fix minor bug in u16/u32/u64 specializations.
2019-09-28 15:39:50 +03:00
kd-11
2275259bf5
rsx: Properly scale overlay passes to match drawable area
2019-09-28 13:24:14 +03:00
Nekotekina
50fc5dfde5
Use g_fxo for rsx::rsx_replay_thread
2019-09-26 23:26:36 +03:00
Megamouse
4594148409
Input: move some pad handler logic to the parent class
2019-09-24 21:09:24 +02:00
Nekotekina
8f47f9517a
Fix fs::create_path
...
Don't try to create already existing parents
2019-09-24 16:18:28 +03:00
Nekotekina
aa8a7b3e8a
Make errors in Emu::Init verbose and don't crash
...
Allow TTY.log to be disabled if file access failed
Add fs::error::isdir
2019-09-24 05:01:00 +03:00
Nekotekina
9710473a2e
atomic.hpp: use native semaphores on Windows
...
Windows: drop keyed events
Linux: keep using native futex
Implement unused POSIX semaphore path
Implement fallback semaphore with pure std (OSX, BSD, etc)
2019-09-24 05:01:00 +03:00
Nekotekina
feee3838eb
Revert "Revert "Remove `shared_cond` and simplify reservation waiting""
...
This reverts commit b70c08a2e8
.
2019-09-24 05:01:00 +03:00
Nekotekina
3121fecc8f
cond_variable: fix warning in cond.h for MSVC
2019-09-21 03:59:43 +03:00
Nekotekina
a797b350a0
Improve strcpy_trunc
...
Zero all remaining array
2019-09-21 03:59:43 +03:00
Nekotekina
3092914527
typeindices.hpp: add typeindex() helper
2019-09-19 02:16:14 +03:00
Nekotekina
c7bf6421f4
typeindices.hpp: rename typeinfo_v to typelist_v
2019-09-19 02:16:14 +03:00
Nekotekina
75941e62a8
named_thread: implement default thread name support
2019-09-17 02:46:34 +03:00
Nekotekina
b70c08a2e8
Revert "Remove `shared_cond` and simplify reservation waiting"
...
This reverts commit 0a96497e13
.
2019-09-14 00:02:48 +03:00
Nekotekina
c9170bbb88
Fix lf_queue::wait
...
Remove incorrect loop
2019-09-13 23:52:18 +03:00
Nekotekina
c1b0934f72
Simplify thread_base::join()
...
Use waitable atomics
2019-09-10 19:25:39 +03:00
Nekotekina
0a96497e13
Remove `shared_cond` and simplify reservation waiting
...
Use atomic wait for reservations
Cleanup some obsolete code
2019-09-10 19:25:39 +03:00
Nekotekina
d13ff285d1
Rewrite `cond_variable` to use waitable atomics
...
Increase max_timeout and fix max_timeout usage
2019-09-10 19:25:39 +03:00
Nekotekina
92a75cfa80
Remove `unique_cond`
...
Not very useful.
2019-09-10 19:25:39 +03:00
Nekotekina
a45f86a4a2
Remove `notifier` class
...
Poorly implemented condition variable.
2019-09-10 19:25:39 +03:00
Nekotekina
b91661ae71
Remove timeout support from lf_queue::wait
...
Add notify method and use atomic wait
2019-09-10 19:25:39 +03:00
Nekotekina
faba366f89
named_thread: install atomic wait callback
2019-09-10 18:48:46 +03:00
Jan Beich
53e7f6c5a5
Thread: drop is_leaf_function after 5e3bacbd9b
2019-09-10 17:41:15 +03:00
Nekotekina
aaf1b4c668
Fix gcc warning in bit_cast
2019-09-08 19:27:29 +03:00
Kaiwen Xu
68071ddf83
Convert EROFS error
2019-09-05 23:05:30 +03:00
RipleyTom
6bdab5322c
Revert File.h encoding.
2019-09-03 08:46:50 +02:00
isJuhn
08c12f4c00
File.cpp: add rounding_alignment argument to get_dir_size to allow GetSizeKB functions to report size more accurately
2019-09-03 03:19:49 +03:00
Nekotekina
81a110f346
Fix system time wraparound
...
Implement utils::udiv128, utils::div128
2019-08-30 22:02:25 +03:00
Nekotekina
2740fafa64
Use g_fxo for page_fault_notification_entries
2019-08-22 02:13:39 +03:00
Nekotekina
a85a8796d3
Use g_fxo for page_fault_event_entries
2019-08-22 02:13:39 +03:00
Nekotekina
7a3aa02dc1
StrFmt.h: remove some dead code with UB
...
Global variable is unused but written concurrently.
2019-08-22 02:13:39 +03:00
Eladash
960c8e6538
Partial compilation fix for WTH_GDB build
2019-08-18 04:01:16 +03:00
Nekotekina
11a43e25d7
typeindices.hpp - start index from 0
...
Starting it from 1 makes it more error-prone to use.
2019-08-17 23:40:51 +03:00
Nekotekina
4df1c16099
Implement stx::typeinfo_v (util/typeindices.hpp)
...
Move and generalize logic from typemap.h
2019-08-14 21:04:25 +03:00
Nekotekina
9f9309055f
typemap: remove "shared" type support
...
Need to fix design mistakes of putting too much into the same bag.
2019-08-14 20:28:34 +03:00
Nekotekina
d41d7b5e24
typemap: remove "polymorphic" type support
...
Unnecessary complexity
2019-08-14 20:28:34 +03:00
Nekotekina
f8f3067deb
Always check page_allocated in vm::check_addr
2019-08-14 20:28:34 +03:00
Nekotekina
4f22559ff0
Remove dumb overloads of atomic_op, fetch_op
...
And lf_queue::apply.
Fix inlining problem by passing F by value.
2019-08-14 20:28:34 +03:00
RipleyTom
87bf0386c4
Screenshot function
2019-08-14 19:24:42 +02:00
Eladash
95f22b76c6
Fixup after #6329
2019-08-13 04:56:00 +03:00
Eladash
6d3fc3a386
core config: Expose min/max ranges of integral settings and use it
2019-08-13 04:56:00 +03:00
Eladash
d48d424b19
Return immediatly from fs::remove_all on failure to remove entries
...
This way error code will be reflected properly
2019-08-12 14:37:23 +03:00
Eladash
25e47e0de0
Fix vm::check_addr memory state check
2019-08-10 19:47:37 +03:00
Nekotekina
8886414013
Use atomic wait in shared_mutex and semaphore
2019-07-29 03:04:55 +03:00
Nekotekina
f63e89f9b4
Implement waitable atomics
...
Moved Atomic.h to util/atomic.hpp
List source files in CMakeLists.txt
2019-07-29 03:04:55 +03:00
Nekotekina
ec2db8edbc
Correct get_int_t to get_uint_t.
...
Add get_sint_t.
2019-07-29 00:12:07 +03:00
Eladash
997e3046e3
vm/sys_overlay Improvements
...
- Implement sys_overlay_load_module_by_fd.
- Implement special segment allocation when ppc_seg flag is specified.
2019-07-28 14:23:58 +03:00
Nekotekina
090c71aa7c
TSX: Improve cpu_thread::suspend_all implementation
...
Implement low_lock and vip_lock (for shared_mutex).
Try to simplify suspend_all implementation with updated shared_mutex.
2019-07-24 17:25:52 +03:00
Zangetsu38
a98a2b79d0
thread scheduler: Add scheduler for zen2 and refactor for zen(+).
2019-07-21 23:02:11 +03:00
Nekotekina
4e4c896136
Expand thread affinity mask to u64
...
Also fix and note __APPLE__ path.
2019-07-20 15:58:28 +03:00
Nekotekina
c062000288
Add experimental TSC frequency detection
2019-07-15 17:20:12 +03:00
Eladash
c727760537
Fix g_exec_addr addres check for access violations
2019-07-13 16:59:58 +03:00
Eladash
537d3f2548
Log last function on debug pause or exception, dump cpu_thread state on access violation
2019-07-10 17:35:39 +03:00
eladash
0979207cc6
Log currently PPU HLE function executed after access violation
...
old functionality retrieved
2019-07-10 17:35:39 +03:00
Eladash
9d9e158b9a
Make more use of the new get_int_t
2019-07-09 11:52:34 +03:00
Eladash
d57b4dc8f3
rsx: Refactor rsx_decode.h and bugfixes
2019-07-09 11:52:34 +03:00
Nekotekina
db4bc6f6be
Add RESTRICT macro
...
Applied as C keyword 'restrict'
2019-07-08 19:43:16 +03:00
msuih
503e023815
Explicitly downcast integers
2019-07-01 04:33:23 +03:00
msuih
d57124d075
Explicitly cast size_t to integer types
2019-07-01 04:33:23 +03:00
Eladash
1ee7b91646
Refactoring ( #6143 )
...
Prefer vm::ptr<>::ptr over vm::get_addr.
Prefer vm::_ptr/base over vm::g_base_addr with offset.
Added methods atomic_t<>::bts and atomic_t<>::btr .
Removed obsolute rsx:🧵 :Read/WriteIO32 methods.
Removed wrong check in semaphore_release.
Added handling for PUTRx commands for RawSPU MFC proxy.
Prefer overloaded methods of v128 instead of _mm_... in VPKSHUS ppu interpreter precise.
Fixed more potential overflows that may result in wrong behaviour.
Added io/size alignment check for sys_rsx_context_iounmap.
Added rsx::constants::local_mem_base which represents RSX local memory base address.
Removed obsolute rsx:🧵 :main_mem_addr/ioSize/ioAddress members.
2019-06-29 01:27:49 +03:00
JohnHolmesII
232a35b6fc
Various small warning fixes
...
-Indentation warnings
-prevent shift overflow
-This was declared extern in all contexts. Remove this for initialization
-Fix main return types. OH CANADA!
-Silence extraneos 'unused expression' warning
-Force use return value (warning)
-Remove tautological compare copy-pasta (char always < 256)
2019-06-28 01:45:29 +03:00
JohnHolmesII
d0eae7bab1
Fix -Wsign-compare a little bit
...
Explicitly mark loop types (per review)
2019-06-28 01:45:29 +03:00
JohnHolmesII
be521ff0ab
Fix warnings related to parentheses
2019-06-25 20:36:32 -07:00
Lassi Hämäläinen
e9e87b8bd9
Add missing #includes to header files
...
- Multiple header files where missing #includes to other headers that
where used in the header. Correct header was included in correct
order in source files which caused everything to compile.
- Added missing #includes so header files correctly include all their
dependencies and fixes problems with IDEs being unable to parse
headers correctly due to missing symbols
2019-06-25 17:11:10 +03:00
Eladash
cd0ef99df5
Fix BE endianess arch support in semaphore_406e ( #6116 )
...
Add raw() methods for endianness support types and make use of it.
2019-06-21 19:29:49 +03:00
Nekotekina
5d45a3e47d
Implement cpu_thread::suspend_all
...
Remove Accurate PUTLLC option.
Implement fallback path for SPU transactions.
2019-06-19 20:36:12 +03:00
Rui Pinheiro
b94730fa95
Fix dynamic_library::loaded
2019-06-16 21:31:38 +03:00
kd-11
0d906d6974
rsx: Remove surface aa_mode hacks
2019-06-14 16:19:52 +03:00
scribam
497f0c26e7
utilities: Add constexpr to color4_base
...
For consistency with the others colorX_base
2019-06-12 10:59:31 +01:00
Eladash
d6db61c594
misc atomics: Use std::atomic_thread_fence (MSVC)
2019-06-11 12:18:04 +03:00
Nekotekina
1dedeb37bf
Fix lf_queue_base::wait
...
Add missing state change
2019-06-05 15:51:25 +03:00
Nekotekina
b2e08100ff
Fix sad bug
2019-06-04 19:13:30 +03:00
Nekotekina
9dc0368079
Rename cond_x16 to shared_cond
...
Extend capacity from 16 to 32.
Remove redundant m_total counter.
2019-06-04 16:37:50 +03:00
Nekotekina
447029a700
Implement fs::file::write_gather (Vectored I/O)
2019-06-03 23:18:39 +03:00
Nekotekina
31994dd3b2
Rename cond_one to unique_cond
...
Remove redundant in_cv in cellVdec
2019-06-02 23:22:16 +03:00
Nekotekina
0333942795
Change utils::popcnt16 to popcnt32
...
Use __builtin_popcount if available.
2019-06-02 23:22:16 +03:00
Nekotekina
dfd50d0185
Implement std::bit_cast<>
...
Partial implementation of std::bit_cast from C++20.
Also fix most strict-aliasing rule break warnings (gcc).
2019-06-02 23:22:16 +03:00
scribam
790962425c
Fix some "-Wpedantic" warnings
2019-06-01 22:59:23 +03:00
scribam
09c9996f31
Use empty() instead of comparing size() with 0
...
Recommendation from Clang-Tidy: https://clang.llvm.org/extra/clang-tidy/checks/readability-container-size-empty.html
2019-06-01 22:59:23 +03:00
Malcolm Jestadt
f90f68d129
Detect tsx_force_abort presence and print to log
2019-06-01 17:46:57 +03:00
Nekotekina
71b71537a0
SPU TSX: implement Accurate PUTLLC option
...
Allow spurious PUTLLC failure if disabled (default).
2019-05-25 22:23:23 +03:00
Nekotekina
a6cde36dc4
Link LLVMAsmParser library
2019-05-19 17:46:55 +03:00
scribam
786dc6ef40
Use if constexpr in hash_struct function
2019-05-12 18:32:11 +03:00
scribam
6c5ea068c9
Remove redundant semicolons
...
Fix "-Wextra-semi" warnings
2019-05-12 18:32:11 +03:00
Nekotekina
5d33d9a3d9
Enable most warnings in GCC
2019-05-11 02:13:19 +03:00