Commit graph

5932 commits

Author SHA1 Message Date
german77 b2359f1527 hidbus: Implement hidbus and ringcon 2022-04-16 00:49:21 -05:00
Fernando S 34710065e8
Merge pull request #8172 from bunnei/kernel-mutex
hle: kernel: Use std::mutex instead of spin locks for most kernel locking.
2022-04-16 00:05:04 +02:00
Liam f17aaeccf9 service: jit: Implement the JIT service 2022-04-13 08:41:27 -04:00
bunnei ca2accfb25
Merge pull request #8165 from bunnei/ensure-session-port-cleanup
Kernel: Track open references to KServerPort and KServerSession.
2022-04-12 14:01:40 -07:00
bunnei dc2dd5d5a6
Merge pull request #8178 from tech-ticks/skyline-icache-fix
hle: kernel: Invalidate entire icache in UnmapProcessMemory and UnmapCodeMemory (fixes #8174)
2022-04-12 11:23:20 -07:00
bunnei 3f0b93925f core: hle: kernel: k_thread: Rework dummy thread waiting. 2022-04-11 21:15:38 -07:00
bunnei 965c05b43d core: hle: service: Allocate a service thread. 2022-04-11 21:13:40 -07:00
bunnei ae38b8bf5e hle: kernel: k_spin_lock: Remove unused ThreadPause. 2022-04-11 21:13:40 -07:00
bunnei 8deaac8bd1 hle: kernel: Use std::mutex instead of spin locks for most kernel locking. 2022-04-11 21:13:40 -07:00
bunnei fd5e1e80da
Merge pull request #8157 from lat9nq/kernel-races
kernel: Fix some data races
2022-04-11 21:13:01 -07:00
Jan Beich d13e48e002 service: sfdnsres: add missing includes for some BSDs after 82d46a974a
src/core/hle/service/sockets/sfdnsres.cpp: In function 'Service::Sockets::NetDbError Service::Sockets::AddrInfoErrorToNetDbError(s32)':
src/core/hle/service/sockets/sfdnsres.cpp:66:10: error: 'EAI_NODATA' was not declared in this scope; did you mean 'EAI_NONAME'?
   66 |     case EAI_NODATA:
      |          ^~~~~~~~~~
      |          EAI_NONAME
src/core/hle/service/sockets/sfdnsres.cpp: In function 'std::vector<unsigned char> Service::Sockets::SerializeAddrInfo(const addrinfo*, s32, std::string_view)':
src/core/hle/service/sockets/sfdnsres.cpp:127:53: error: 'sockaddr_in' does not name a type; did you mean 'SockAddrIn'?
  127 |                 const auto addr = *reinterpret_cast<sockaddr_in*>(current->ai_addr);
      |                                                     ^~~~~~~~~~~
      |                                                     SockAddrIn
src/core/hle/service/sockets/sfdnsres.cpp:127:64: error: expected '>' before '*' token
  127 |                 const auto addr = *reinterpret_cast<sockaddr_in*>(current->ai_addr);
      |                                                                ^
src/core/hle/service/sockets/sfdnsres.cpp:127:64: error: expected '(' before '*' token
  127 |                 const auto addr = *reinterpret_cast<sockaddr_in*>(current->ai_addr);
      |                                                                ^
      |                                                                (
src/core/hle/service/sockets/sfdnsres.cpp:127:65: error: expected primary-expression before '>' token
  127 |                 const auto addr = *reinterpret_cast<sockaddr_in*>(current->ai_addr);
      |                                                                 ^
src/core/hle/service/sockets/sfdnsres.cpp:127:84: error: expected ')' before ';' token
  127 |                 const auto addr = *reinterpret_cast<sockaddr_in*>(current->ai_addr);
      |                                                                                    ^
      |                                                                                    )
src/core/hle/service/sockets/sfdnsres.cpp:148:53: error: 'sockaddr_in6' does not name a type; did you mean 'SockAddrIn6'?
  148 |                 const auto addr = *reinterpret_cast<sockaddr_in6*>(current->ai_addr);
      |                                                     ^~~~~~~~~~~~
      |                                                     SockAddrIn6
src/core/hle/service/sockets/sfdnsres.cpp:148:65: error: expected '>' before '*' token
  148 |                 const auto addr = *reinterpret_cast<sockaddr_in6*>(current->ai_addr);
      |                                                                 ^
src/core/hle/service/sockets/sfdnsres.cpp:148:65: error: expected '(' before '*' token
  148 |                 const auto addr = *reinterpret_cast<sockaddr_in6*>(current->ai_addr);
      |                                                                 ^
      |                                                                 (
src/core/hle/service/sockets/sfdnsres.cpp:148:66: error: expected primary-expression before '>' token
  148 |                 const auto addr = *reinterpret_cast<sockaddr_in6*>(current->ai_addr);
      |                                                                  ^
src/core/hle/service/sockets/sfdnsres.cpp:148:85: error: expected ')' before ';' token
  148 |                 const auto addr = *reinterpret_cast<sockaddr_in6*>(current->ai_addr);
      |                                                                                     ^
      |                                                                                     )
2022-04-11 22:26:37 +00:00
Fernando S 4ad6bca31c
Merge pull request #8171 from tech-ticks/skyline-improvements
Improvements for game modding with Skyline, DNS resolution
2022-04-10 23:40:54 +02:00
tech-ticks 3b91d213b1 hle: kernel: Invalidate entire icache in UnmapProcessMemory and UnmapCodeMemory (fixes #8174) 2022-04-09 13:29:19 +02:00
bunnei a7f73d606f hle: kernel: Unify and integrate reference tracking for KServerPort/KServerSession.
- These are not managed elsewhere, and need to be tracked and closed on emulation shutdown.
2022-04-08 14:13:22 -07:00
bunnei b44a564792 hle: kernel: k_server_port: Release ref-counted host emulation members on Destroy. 2022-04-08 14:11:40 -07:00
bunnei 788bebb160 hle: kernel: k_auto_object: Move unregister with kernel to after Destroy.
- Destructor is no longer invoked, so our object counting was off.
2022-04-08 14:11:40 -07:00
bunnei d737652d08 hle: service: sm: Remove manual tracking of KServerPorts. 2022-04-08 14:11:39 -07:00
bunnei f55fc850a2 hle: kernel: hle_ipc: HasSessionRequestHandler: Check if domain handler is expired rather than locking. 2022-04-08 14:11:39 -07:00
bunnei 04efd729d6
Merge pull request #8169 from merryhime/scoped_lock
Replace lock_guard with scoped_lock
2022-04-08 14:01:42 -07:00
tech-ticks 82d46a974a service: sfdnsres: Implement DNS address resolution 2022-04-08 21:28:03 +02:00
merry 50b10c4bac
Merge pull request #8167 from Tachi107/patch-1
fix: remove #pragma once in .cpp file
2022-04-07 22:47:43 +01:00
tech-ticks 1c3983c12e service: bsd: Add keepalive socket option 2022-04-07 23:30:23 +02:00
Merry d79274a5d9 core/hle: Standardize scoped_lock initializers 2022-04-07 19:44:07 +01:00
Merry 1f275eb077 core/hle: Replace lock_guard with scoped_lock 2022-04-07 19:44:07 +01:00
Fernando S 50192eb4ad
Merge pull request #8148 from merryhime/interrupts
dynarmic: Better interrupts
2022-04-07 16:21:41 +02:00
Andrea Pappacoda 5ca67332ee
fix: remove #pragma once in .cpp file 2022-04-07 12:03:47 +02:00
bunnei 172137f1a0
Merge pull request #8164 from liamwhite/jit-stub
service: jit: stub JIT service
2022-04-06 18:34:45 -07:00
Liam 0cfcee95c7 service: jit: stub JIT service 2022-04-06 20:07:01 -04:00
bunnei eb8c8db899
Merge pull request #8122 from bunnei/improve-thread-usage
Improve usage of service host threads
2022-04-06 12:25:25 -07:00
german77 8c089f4e2a service: hid: Partially revert #8123 2022-04-05 22:35:38 -05:00
bunnei 12dc4d0527
Merge pull request #8137 from bunnei/improve-nvflinger-2
Follow-up fixes for NVFlinger rewrite (Part 2)
2022-04-05 19:11:28 -07:00
lat9nq b976cac49d k_system_control: Fix data race
`return distribution(gen)` is a data race between a read and a write in
two threads, reported by TSan. Remove static random number generators so
they aren't using the same generator.
2022-04-05 19:55:56 -04:00
lat9nq 983916e919 k_auto_object: Fix data race
Change the memory order to acqure-release when we decrement the
reference count. Prevents a race with line 89 reported by TSan.
2022-04-03 21:47:58 -04:00
lat9nq 6bcbbb29e7 k_thread: Fix data race
TSan reports a data race between writing at cpp:1162 and reading at
h:262. Make the thread_state atomic to prevent this.
2022-04-03 21:47:58 -04:00
lat9nq d6a0666268 k_process: Fix data race
TSan reported a race between thread 36 and thread 34, a read at :225 and
a write at :225 respectively. Make total_proces_running_time_ticks
atomic to avoid this race.
2022-04-03 21:47:57 -04:00
lat9nq 5b5a1b7fa7 kernel: Fix current_process race
TSan reported a race at :258 and :803, so make current_process an atomic
pointer.
2022-04-03 21:47:57 -04:00
lat9nq 83b86d915a k_scheduler_lock: Fix data race
TSan reports a race between the main thread and T37 during
IsLockedByCurrentThread and when it's set at the end of Lock(),
respectively. Set owner_thread to an atomic pointer to fix it.

Co-authored-by: bunnei <bunneidev@gmail.com>
2022-04-03 21:47:57 -04:00
merry f8b8af47ad dynarmic: Better interrupts 2022-04-03 16:39:48 +01:00
bunnei 2d1af6beee
Merge pull request #8135 from Morph1984/websession-hack
applets/web: Keep foreground (websession) web applet open
2022-04-02 20:49:51 -07:00
bunnei b5910ad0ba
Merge pull request #8123 from german77/bombslinger
service: hid: Remove inaccurate behavior on initialization
2022-04-02 20:12:45 -07:00
german77 3e5469a974 service: npad: Default initialize shared memory 2022-04-02 19:43:49 -06:00
Andrea Pappacoda 0c214cb5b9
fix: typos 2022-04-02 16:34:07 +02:00
bunnei fdf4909f97 hle: service: nvflinger: buffer_queue_producer: Cleanup & fixes. 2022-04-01 22:59:35 -07:00
bunnei 4036e37bbe hle: service: nvflinger: consumer_base: Cleanup & fixes. 2022-04-01 22:58:40 -07:00
bunnei 30b07878ba hle: service: nvflinger: buffer_queue_producer: Cleanup & add GetReleasedBuffers. 2022-04-01 22:58:02 -07:00
bunnei 7610554b1e hle: service: nvflinger: buffer_queue_core: Cleanup & fixes. 2022-04-01 22:56:32 -07:00
bunnei f9371f36a4 hle: service: nvflinger: Use correct logger namespace. 2022-04-01 22:55:44 -07:00
Morph 93f010c988 hle: service: nvdrv: Create a service thread where appropriate. 2022-04-02 01:24:30 -04:00
bunnei d02bf6dab1 hle: service: vi: Create a service thread where appropriate. 2022-04-02 01:24:30 -04:00
bunnei 99770653bb hle: service: bsd: Create a service thread where appropriate. 2022-04-02 01:24:30 -04:00
bunnei 2afef2b609 hle: service: filesystem: Create a service thread where appropriate. 2022-04-02 01:24:30 -04:00
bunnei 11120b5b1e hle: service: audio: Create a service thread where appropriate. 2022-04-02 01:24:30 -04:00
bunnei bf1750664c hle: service: Add option for service interfaces to create or use the default thread. 2022-04-02 01:24:30 -04:00
bunnei 864523327f hle: kernel: Create a default thread for services that do not need their own host thread. 2022-04-02 01:24:30 -04:00
Morph 1166c3910d applets/web: Keep foreground (websession) web applet open
This is a hack to keep the foreground (websession) web applet open in games using these such as Super Mario 3D All-Stars.
2022-04-01 22:50:01 -04:00
Fernando S 078a6cb0cb
Merge pull request #8116 from ameerj/nvhost_ctrl_bad_param
nvhost_ctrl: Only mark EventState::Busy as BadParameter
2022-04-01 01:29:46 +02:00
german77 9346f0b33d service: hid: Remove inaccurate behavior on initialization 2022-03-31 12:35:57 -06:00
bunnei c6aa4ec687
Merge pull request #8120 from german77/signal
service: hid: Signal event on AcquireNpadStyleSetUpdateEventHandle
2022-03-30 22:45:40 -07:00
bunnei 365c6ad753
Merge pull request #8090 from bunnei/fix-skyline
Kernel Memory Updates (Part 7): Various fixes to code memory (Skyline support)
2022-03-30 18:23:37 -07:00
Narr the Reg c04e65c254 service: hid: Signal event on AcquireNpadStyleSetUpdateEventHandle 2022-03-30 17:09:28 -06:00
ameerj 69807dd208 nvhost_ctrl: Only mark EventState::Busy as BadParameter
Fixes an svc break in Kirby and the Forgotten Land with async GPU enabled.
2022-03-29 15:13:30 -04:00
Fernando S 99654721eb
Merge pull request #8088 from bunnei/fixup-nvflinger
Follow-up fixes for NVFlinger rewrite
2022-03-27 13:09:59 +02:00
bunnei 9408100a80 hle: kernel: k_page_table: Fix implementations of LockForCodeMemory & UnlockForCodeMemory. 2022-03-26 01:49:34 -07:00
bunnei 0c75913bf2 hle: kernel: k_page_table: Implement LockMemoryAndOpen & UnlockMemory. 2022-03-26 01:46:41 -07:00
bunnei 1b3dba329a hle: kernel: svc: MapProcessMemory: Fix usage of KPageLinkedList to use physical address space. 2022-03-26 01:35:37 -07:00
bunnei 3bc0c2a625 hle: kernel: svc: CreateCodeMemory: Remove log of 'out' host pointer.
- This does not seem terribly useful and is inconsistent with other usage.
2022-03-26 01:34:29 -07:00
bunnei 94543f129e hle: kernel: k_code_memory: Fix usage of KPageLinkedList to use physical address space. 2022-03-26 01:33:16 -07:00
bunnei 5b667f5e52 hle: kernel: k_page_table: Implement MakeAndOpenPageGroup & MakePageGroup. 2022-03-26 01:25:52 -07:00
bunnei c975a51ae7 hle: kernel: k_page_table: Add IsHeapPhysicalAddress method. 2022-03-26 01:23:43 -07:00
bunnei f29410d821 hle: kernel: k_page_linked_list: Add Empty method. 2022-03-26 01:02:42 -07:00
bunnei 4e2401c11a hle: kernel: svc: UnmapProcessCodeMemory: Fix inverted alignment check. 2022-03-26 01:01:55 -07:00
bunnei 664d8c8732
Merge pull request #8041 from Morph1984/inline-swkbd
applets/swkbd: Add support for an updated inline software keyboard
2022-03-25 23:19:11 -07:00
bunnei 25faca8ea7 hle: service: nvflinger: buffer_queue: Remove AutoLock and fix free buffer tracking. 2022-03-25 23:01:03 -07:00
bunnei 07c7f96fb2 hle: service: nvflinger: buffer_queue_consumer: Use scoped_lock instead of unique_lock. 2022-03-25 22:59:06 -07:00
bunnei 13aa0a1f24 hle: service: nvflinger: consumer_base: Use scoped_lock instead of unique_lock. 2022-03-25 22:58:52 -07:00
bunnei 741a8c3034 hle: service: nvflinger: Remove unused BufferQueue. 2022-03-25 22:58:23 -07:00
bunnei c64e1ae104 hle: nvflinger: ConsumerBase: Mark ctor as explicit. 2022-03-24 18:13:34 -07:00
bunnei 02dbb2ed54 hle: vi: NativeWindow: Fix trivially copyable issues. 2022-03-24 18:13:34 -07:00
bunnei c9d28c30f0 hle: nvdrv: nvdata: buffer_queue_producer: Minor cleanup. 2022-03-24 18:13:34 -07:00
bunnei 241ecae867 hle: nvdrv: nvdata: Cleanup NvFence static assert. 2022-03-24 18:13:34 -07:00
bunnei 81eefcaa76 hle: nvflinger: Remove unused unordered_map include. 2022-03-24 18:13:34 -07:00
bunnei 3b13f5e43b hle: nvflinger: buffer_queue_consumer: AcquireBuffer: Fix typo. 2022-03-24 18:13:34 -07:00
bunnei 4d9488033f hle: nvflinger: Merge Rect with Common::Rectangle. 2022-03-24 18:13:33 -07:00
bunnei e524def8c0 hle: nvflinger: buffer_queue_core: Declare default dtor. 2022-03-24 18:13:33 -07:00
bunnei 8e35eedf22 hle: nvflinger: buffer_queue_producer: DequeueBuffer: Remove unnecessary lock. 2022-03-24 18:13:33 -07:00
bunnei 0ce308047e hle: nvflinger: consumer_base: StillTracking: Should be const. 2022-03-24 18:13:33 -07:00
bunnei 480c79edba hle: nvflinger: graphic_buffer_producer: Remove unnecessary pragma pack. 2022-03-24 18:13:33 -07:00
bunnei 7db60fe7da hle: nvflinger: parcel: Reserve token size. 2022-03-24 18:13:33 -07:00
bunnei ddd5a2b1c6 hle: nvflinger: buffer_queue_core: StillTracking: Take const reference. 2022-03-24 18:13:33 -07:00
bunnei 53058ae73f hle: nvflinger: buffer_queue_core: Cleanup locking. 2022-03-24 18:13:33 -07:00
bunnei 650c9d0d62 hle: nvflinger: Use std::chrono for present_ns. 2022-03-24 18:13:33 -07:00
bunnei ca12a77670 hle: nvflinger: Migrate android namespace -> Service::android. 2022-03-24 18:13:33 -07:00
bunnei 5849c9a4cd hle: nvflinger: BufferQueueProducer: Handle SetPreallocatedBuffer with empty buffer.
- Used by Naruto Ultimate Ninja Storm.
2022-03-24 18:13:33 -07:00
bunnei 7f4165fc05 hle: vi: Integrate new NVFlinger and HosBinderDriverServer service. 2022-03-24 18:13:33 -07:00
bunnei a87812c6a1 hle: nvflinger: Add implementation for HosBinderDriverServer service. 2022-03-24 18:13:33 -07:00
bunnei 56284bff6c hle: nvflinger: Add implementation for BufferQueueProducer class. 2022-03-24 18:13:33 -07:00
bunnei bfff7b58fd hle: nvflinger: Add implementation for BufferQueueCore class. 2022-03-24 18:13:33 -07:00
bunnei 6e7f687df4 hle: nvflinger: Add implementation for BufferQueueConsumer class. 2022-03-24 18:13:32 -07:00
bunnei 41983bc0ca hle: nvflinger: Add implementation for QueueBufferInput and QueueBufferOutput structs. 2022-03-24 18:13:32 -07:00
bunnei 0057159066 hle: nvflinger: Add implementation for BufferItemConsumer class. 2022-03-24 18:13:32 -07:00