bunnei
5eda606952
Merge pull request #7711 from bunnei/fix-service-thread-race-v2
...
hle: kernel: Fix service_threads access to be thread safe V2.
2022-01-14 22:22:39 -08:00
bunnei
b54cbc985e
hle: kernel: k_memory_manager: Clear pages on allocation & free.
...
- Heap pages should be zero'd.
- Also explicitly passed along heap allocation option.
2022-01-14 21:16:33 -08:00
bunnei
4064e03568
Merge pull request #7707 from german77/slow-update
...
service/hid: Decrease motion update rate
2022-01-14 17:13:30 -08:00
bunnei
f499c8177e
core: hle: kernel: KThread: Integrate with KWorkerTask and implement DoWorkerTaskImpl.
...
- This is used to terminate a thread asynchronously after it has been exited.
- This fixes a crash that can occur in Pokemon Sword/Shield because a thread is incorrectly closed on svcExitThread, then, the thread is destroyed on svcCloseHandle while it is still scheduled.
- Instead, we now wait for the thread to no longer be scheduled on all cores before destroying it from KWorkerTaskManager, which is accurate to HOS behavior.
2022-01-14 16:44:14 -08:00
bunnei
d8b3f665db
core: hle: kernel: KProcess: Integrate with KWorkerTask and add unimplemented DoWorkerTaskImpl.
2022-01-14 16:44:14 -08:00
bunnei
03884b7ea6
core: hle: kernel: KThread: Replace Suspend with UpdateState & various updates.
...
- This makes our implementations of these more closely match HOS.
2022-01-14 16:44:14 -08:00
bunnei
c905044e1b
core: hle: kernel: Instantiate a kernel instance of KWorkerTaskManager.
2022-01-14 16:44:14 -08:00
bunnei
bf32fcc817
core: hle: kernel: Add KWorkerTask and KWorkerTaskManager.
...
- These primitives are used to dispatch asynchronous kernel tasks from KThread and KProcess.
2022-01-14 16:43:59 -08:00
bunnei
cc112f971e
hle: kernel: Fix service_threads access to be thread safe V2.
...
- PR #7699 attempted to fix CreateServiceThread and ReleaseServiceThread to be thread safe, but inadvertently introduced a possible dead-lock.
- With this PR, we use a worker thread to manage the service thread list, allowing it only to be accessed by a single thread, and guaranteeing threads will not destroy themselves.
- Fixes a rare crash in Pokemon Sword/Shield, I've now run this game for ~12 hours non-stop and am quite confident this is a good solution for this issue.
2022-01-14 16:02:57 -08:00
Mai M
b2d45a4072
Merge pull request #7699 from bunnei/fix-service-thread-race
...
hle: kernel: Fix service_threads access to be thread safe.
2022-01-14 00:46:16 -05:00
bunnei
2147240e47
hle: kernel: Fix service_threads access to be thread safe.
...
- CreateServiceThread and ReleaseServiceThread can be accessed by different threads, uses a lock to make this thread safe.
- Fixes a rare crash in Pokemon Sword/Shield that can occur when a new service thread is being created while an old one is being destroyed.
2022-01-13 21:26:10 -08:00
Narr the Reg
8185509683
service/hid: Decrease motion update rate
...
Motion stops working in Mario Tennis in swing mode if the update rate is too fast even when HW it updates at the same speed. 10ms it's the minimum period that the game needs to start working again.
2022-01-12 22:55:33 -06:00
bunnei
49a0e4330e
hle: kernel: k_page_table: Update SetProcessMemoryPermission.
2022-01-11 16:28:11 -08:00
bunnei
6ac44f3bdc
hle: service: ldr: UnmapCodeMemory BSS only when set.
2022-01-11 16:28:11 -08:00
bunnei
6123b6ea45
hle: kernel: k_page_table: ReadAndWrite -> UserReadWrite.
2022-01-11 16:28:11 -08:00
bunnei
081669c334
hle: kernel: k_page_table: Rename *ProcessCodeMemory -> *CodeMemory.
2022-01-11 16:28:11 -08:00
bunnei
af4696657c
core: hle: kernel: svc: Updates to SetMemoryAttribute and SetMemoryPermission.
2022-01-08 12:18:14 -08:00
bunnei
b9a313057e
core: hle: kernel: k_page_table: Update CheckMemoryState.
2022-01-08 03:20:57 -08:00
bunnei
afb06b1495
Merge pull request #7636 from vonchenplus/buffer_queue_query
...
core:hle:service:nvflinger Implement few type in bufferqueue query method
2022-01-04 11:28:49 -08:00
ameerj
7652543231
Revert "Merge pull request #7668 from ameerj/fence-stop-token"
...
This reverts commit e773354477
, reversing
changes made to abbbdc2bc0
.
2022-01-03 20:28:54 -05:00
ameerj
d866916f42
gpu: Use std::stop_token in WaitFence for VSync thread
...
Fixes a hang that may occur when stopping emulation and the VSync thread is blocked on the syncpoint condition variable.
2022-01-03 12:31:33 -05:00
bunnei
3a89723d97
core: hle: kernel: Implement thread pinning.
...
- We largely had the mechanics in place for thread pinning, this change hooks these up.
- Validated with tests https://github.com/Atmosphere-NX/Atmosphere/blob/master/tests/TestSvc/source/test_thread_pinning.cpp .
2021-12-30 15:50:45 -08:00
Feng Chen
1eec9590c3
Remove invalid assertion statement
2021-12-28 18:51:11 +08:00
Feng Chen
88e1e7f14b
Implement few type in bufferqueue query method
2021-12-28 18:51:03 +08:00
bunnei
091463a429
core: hle: kernel: Updated implementation of svcSetHeapSize.
...
- Updates our svcSetHeapSize with latest HOS, furthermore allowing heap size to properly be extended/shrunk.
- Validated with tests https://github.com/Atmosphere-NX/Atmosphere/blob/master/tests/TestSvc/source/test_set_heap_size.cpp .
2021-12-28 01:25:20 -08:00
bunnei
9a0648ff0a
Merge pull request #7621 from bunnei/set-mem-perm
...
core: hle: kernel: Implement SetMemoryPermission.
2021-12-27 23:33:11 -08:00
bunnei
4e7a6639d2
core: hle: kernel: Implement SetMemoryPermission.
...
- Not seen in any games yet, but validated with kernel tests.
2021-12-23 01:10:36 -08:00
bunnei
a0c7d93b84
core: hle: kernel: KThread: X18 should be a cryptographically random number.
...
- This was added with firmware 11.0.0 (https://switchbrew.org/wiki/11.0.0 ).
- X18 is OR'd by kernel with 1, to make sure it is odd.
2021-12-23 00:03:39 -08:00
bunnei
49e3c073a5
hle: kernel: svc: GetInfo: Fix error checking with IdleTickCount.
...
- Enforce tha the supplied handle is invalid, not valid.
- This gets Witcher 3 booting.
2021-12-21 22:41:23 -08:00
bunnei
5e24f7ed31
Merge pull request #7481 from german77/gyro-bias
...
service/hid: Improve console motion accuracy
2021-12-21 00:13:54 -08:00
bunnei
ee6d40d414
Merge pull request #7597 from bunnei/remove-global-lock
...
core: hle: Remove global HLE lock.
2021-12-20 14:24:50 -08:00
ameerj
55650c5b75
kernel: Manually destroy the current process during shut down
...
Avoids a memory leak.
2021-12-19 01:38:25 -05:00
bunnei
c73841500a
core: hle: Remove global HLE lock.
...
- This was added early on as a hack to protect against some concurrency issues.
- It's not clear that this serves any purpose anymore, and if it does, individual components should be fixed rather than using a global recursive mutex.
2021-12-17 16:05:51 -08:00
Narr the Reg
c82e6dc810
core/hid: Cancel any vibration after the test
2021-12-16 13:35:15 -06:00
Valeri
04301e1a8a
Remove erroneous #pragma once
2021-12-13 16:49:01 +03:00
bunnei
280c779898
Merge pull request #7462 from bunnei/kernel-improve-scheduling
...
Kernel: Improve threading & scheduling V3
2021-12-12 22:43:25 -08:00
Narr the Reg
316f80af87
service/hid: Improve console motion accuracy
2021-12-12 23:26:04 -06:00
bunnei
46366c6dca
Merge pull request #7519 from itsmeft24/master
...
kernel: svc: Implement ProcessMemory and CodeMemory SVCs
2021-12-09 00:29:09 -08:00
bunnei
5f7e73c74a
Merge pull request #7525 from german77/notifa
...
service/notif: Add notif:a and stub ListAlarmSettings, Initialize
2021-12-07 23:31:44 -08:00
bunnei
f6e8e61e3e
Merge pull request #7521 from german77/dual_single_joycons
...
service/hid: Implement SetNpadJoyAssignmentMode
2021-12-07 21:03:42 -08:00
bunnei
815189eaf3
Merge pull request #7488 from vonchenplus/support_multiple_videos_playing
...
Support multiple videos playing
2021-12-07 18:38:14 -08:00
itsmeft24
e05c86aa3c
Update k_code_memory.h
2021-12-07 16:58:23 -05:00
itsmeft24
d197246880
make KCodeMemory::GetSourceAddress const
...
Co-authored-by: Mai M. <mathew1800@gmail.com>
2021-12-07 07:58:33 -05:00
bunnei
257d3c9ecf
hle: kernel k_scheduler: EnableScheduling: Remove redundant GetCurrentThreadPointer calls.
2021-12-06 16:39:18 -08:00
bunnei
9a9e7dd78b
hle: kernel k_process: Remove unnecessary .at usage with thread pinning methods.
2021-12-06 16:39:18 -08:00
bunnei
834c25f4d9
hle: kernel: Remove unnecessary virtual specifier on NotifyAvailable.
2021-12-06 16:39:18 -08:00
bunnei
a63af9860b
hle: kernel: Remove unnecessary virtual specifier on EndWait.
2021-12-06 16:39:18 -08:00
bunnei
3f8eb44e7d
hle: kernel: k_light_condition_variable: Revert unnecessary license comment changes.
2021-12-06 16:39:18 -08:00
bunnei
2e8d737a96
hle: kernel: k_condition_variable: Revert unnecessary style changes.
2021-12-06 16:39:18 -08:00
bunnei
0d1bdfc1d4
hle: kernel: Remove unnecessary virtual specifier on CancelWait.
2021-12-06 16:39:18 -08:00
bunnei
d7f6d516ce
hle: kernel: service_thread: Force stop threads on destruction.
2021-12-06 16:39:18 -08:00
bunnei
e596fac6ee
hle: kernel: k_light_lock: Implement CancelWait.
...
- Fixes a crash in Megadimension Neptunia VII.
2021-12-06 16:39:18 -08:00
bunnei
efb5de1c5f
hle: kernel: service_thread: Use std::jthread.
...
- Fixes a potential deadlock on service thread shutdown.
2021-12-06 16:39:18 -08:00
bunnei
a2384a18fa
hle: kernel: k_thread: Skip reschedule on DisableDispatch with SC.
2021-12-06 16:39:18 -08:00
bunnei
42697527ba
hle: kernel: k_thread: Rename sleeping_queue -> wait_queue.
2021-12-06 16:39:18 -08:00
bunnei
e3d156ab0e
hle: kernel: svc: Fix deadlock that can occur with single core.
2021-12-06 16:39:18 -08:00
bunnei
0d9afdedc4
hle: kernel: k_thread: Treat dummy threads as a special type.
2021-12-06 16:39:18 -08:00
FernandoS27
894ed14ebc
hle: kernel: fix timing on thread preemption
2021-12-06 16:39:18 -08:00
FernandoS27
3c2a451f47
hle: kernel: fix scheduling ops from HLE host thread.
2021-12-06 16:39:17 -08:00
bunnei
abbea575cf
hle: kernel: Add a flag for indicating that the kernel is currently shutting down.
2021-12-06 16:39:17 -08:00
bunnei
2c49a65d2b
hle: kernel: KSynchronizationObject: Fix variable shadowing.
2021-12-06 16:39:17 -08:00
bunnei
8f4ff06c4c
hle: kernel: Cleanup to match coding style.
2021-12-06 16:39:17 -08:00
bunnei
316a2dd22a
hle: kernel: KProcess: Improvements for thread pinning.
2021-12-06 16:39:17 -08:00
bunnei
4c74761155
hle: kernel: KThreadQueue: Remove deprecated code.
2021-12-06 16:39:17 -08:00
bunnei
f3d6e31e78
hle: kernel: KConditionVariable: Various updates & simplifications.
2021-12-06 16:39:17 -08:00
bunnei
f62c7091a2
hle: kernel: KThread: Migrate to updated KThreadQueue (part 2).
2021-12-06 16:39:17 -08:00
bunnei
b0671c7cfa
hle: kernel: KThread: Migrate to updated KThreadQueue (part 1).
2021-12-06 16:39:17 -08:00
bunnei
beb55cb90e
hle: kernel: KConditionVariable: Migrate to updated KThreadQueue.
2021-12-06 16:39:17 -08:00
bunnei
e942d97540
hle: kernel: KServerSession: Migrate to updated KThreadQueue.
2021-12-06 16:39:17 -08:00
bunnei
5dff28290f
hle: kernel: KLightConditionVariable: Migrate to updated KThreadQueue.
2021-12-06 16:39:17 -08:00
bunnei
423acf53b7
hle: kernel: KLightLock: Migrate to updated KThreadQueue.
2021-12-06 16:39:17 -08:00
bunnei
15c721b909
hle: kernel: KAddressArbiter: Migrate to updated KThreadQueue.
2021-12-06 16:39:17 -08:00
bunnei
2f89456041
hle: kernel: KThread: Remove tracking of sync object from threads.
2021-12-06 16:39:17 -08:00
bunnei
bc1399204b
hle: kernel: Update KThreadQueue and migrate KSynchronizationObject.
2021-12-06 16:39:17 -08:00
bunnei
3dc803a430
core: hle: kernel: Disable dispatch count tracking on single core.
...
- This would have limited value, and would be a mess to handle properly.
2021-12-06 16:39:17 -08:00
bunnei
d14b8fc747
core: hle: kernel: k_thread: Mark KScopedDisableDispatch as nodiscard.
2021-12-06 16:39:17 -08:00
bunnei
07690572f7
core: hle: kernel: k_auto_object: Add GetName method.
...
- Useful purely for debugging.
2021-12-06 16:39:16 -08:00
bunnei
3239442de6
core: hle: kernel: DisableDispatch on suspend threads.
2021-12-06 16:39:16 -08:00
bunnei
284015dfd7
core: hle: kernel: k_scheduler: Improve DisableScheduling and EnableScheduling.
2021-12-06 16:39:16 -08:00
bunnei
178584e56f
core: hle: kernel: Use CurrentPhysicalCoreIndex as appropriate.
2021-12-06 16:39:16 -08:00
bunnei
629f9274ac
core: hle: kernel: k_scheduler: Remove unnecessary MakeCurrentProcess.
2021-12-06 16:39:16 -08:00
bunnei
13c82d042f
core: hle: kernel: k_scheduler: Improve ScheduleImpl.
2021-12-06 16:39:16 -08:00
bunnei
f412d2027a
core: hle: kernel: k_scheduler: Improve Unload.
2021-12-06 16:39:16 -08:00
bunnei
f13fce3953
core: hle: kernel: k_process: DisableDispatch on main thread.
2021-12-06 16:39:16 -08:00
bunnei
4c18a207a4
core: hle: kernel: k_handle_table: Use KScopedDisableDispatch as necessary.
2021-12-06 16:39:16 -08:00
bunnei
04daefa488
core: hle: kernel: k_thread: Add KScopedDisableDispatch.
2021-12-06 16:39:16 -08:00
bunnei
3bd5d4b6f8
core: hle: kernel: Ensure idle threads are closed before destroying scheduler.
2021-12-06 16:39:16 -08:00
bunnei
669a2d2c67
core: hle: kernel: Reflect non-emulated threads as core 3.
2021-12-06 16:39:16 -08:00
bunnei
bafee97589
Merge pull request #7524 from german77/hid_stub
...
service/hid: Stub SetNpadCaptureButtonAssignment and ClearNpadCaptureButtonAssignment
2021-12-06 13:06:18 -08:00
german77
ac1bfe228f
service/notif: Add notif:a and stub ListAlarmSettings,Initialize
...
Used by ring fit adventure 1.2.0
2021-12-06 10:36:37 -06:00
itsmeft24
8ed2748820
fix formatting
2021-12-06 11:02:33 -05:00
itsmeft24
e10903cab9
move private members below public members
2021-12-06 10:37:13 -05:00
itsmeft24
4bdacdedc1
fix formatting
2021-12-06 10:37:09 -05:00
itsmeft24
32854a2992
fix formatting
...
Co-authored-by: Mai M. <mathew1800@gmail.com>
2021-12-06 07:58:28 -05:00
german77
189741b521
service/hid: Stub SetNpadCaptureButtonAssignment and ClearNpadCaptureButtonAssignment
...
Used by ring fit adventure 1.2.0
2021-12-05 22:44:31 -06:00
itsmeft24
14c03b9748
fix formatting
2021-12-05 19:00:29 -05:00
itsmeft24
8254f238b9
Remove unnecessary includes
2021-12-05 18:49:40 -05:00
german77
d6ae9c68f8
service/hid: Implement SetNpadJoyAssignmentMode
2021-12-05 16:18:23 -06:00
itsmeft24
b7d80c127f
Add copyright notice
2021-12-05 16:49:52 -05:00
ameerj
41aec2773f
general: Add missing copyright notices
2021-12-05 16:18:53 -05:00
itsmeft24
8aef8f39d8
kernel: svc: Implement Map/UnmapProcessMemory and Create/ControlCodeMemory
...
Used by Skyline modding framework
2021-12-05 15:04:08 -05:00
german77
7fe455e42e
core/hid: Ensure only valid npad are connected
2021-12-04 23:20:18 -06:00
Feng Chen
5462485cc3
Address feedback
2021-12-05 00:06:14 +08:00
bunnei
a2fb5a13b2
Merge pull request #7489 from Morph1984/steady-clock
...
general: Replace high_resolution_clock with steady_clock
2021-12-03 16:08:20 -08:00
Morph
f138731e2f
service: am: ISelfController: Stub SaveCurrentScreenshot
...
- Used by Disney Magical World 2: Enchanted Edition
2021-12-02 20:12:24 -05:00
Morph
762b8ad448
general: Replace high_resolution_clock with steady_clock
...
On some OSes, high_resolution_clock is an alias to system_clock and is not monotonic in nature. Replace this with steady_clock.
2021-12-02 14:20:43 -05:00
Feng Chen
2c47f8aa18
Support multiple videos playing
2021-12-02 12:48:42 +08:00
Morph
505ae5ea1b
service: friend: Implement GetCompletionEvent
...
- Used by Super Bomberman R Online
2021-11-30 12:19:21 -05:00
Morph
322339a5fd
npad: Return NpadButton in GetAndResetPressState
...
We were previously truncating this to a u32 as there were no known buttons that used the full 64 bits of this type. Fix this now that we know they are used.
2021-11-29 19:21:51 -05:00
Morph
410df5446e
general: Fix handheld typo
2021-11-29 17:22:59 -05:00
bunnei
11a9bff36d
Merge pull request #7438 from german77/homebrew2
...
Core: Stub services and functions needed for checkpoint
2021-11-28 00:54:48 -08:00
Narr the Reg
54f007efc6
core/ns: Implement GetReadOnlyApplicationControlDataInterface
...
Used in checkpoint homebrew
2021-11-27 20:30:16 -06:00
Narr the Reg
50d8e753c5
core/pdm: Stub QueryPlayStatisticsByApplicationIdAndUserAccountId
...
Used in checkpoint homebrew
2021-11-27 20:30:16 -06:00
german77
51df96b7c0
settings: Add debug setting to enable all controllers
2021-11-27 20:24:37 -06:00
Narr the Reg
f966c05a74
core/hid: Stub GetUniquePadsFromNpad
...
Used in checkpoint homebrew
2021-11-27 09:03:10 -06:00
Narr the Reg
23bf2e3bb6
service/hid: Finish converting LIFO objects and address some nits
2021-11-24 20:30:29 -06:00
german77
42949738f2
kraken: Address comments from review
...
Fix compiler bug
2021-11-24 20:30:28 -06:00
german77
f4e5f89e6f
core/hid: Improve accuary of mouse implementation
2021-11-24 20:30:28 -06:00
german77
654d76e79e
core/hid: Fully implement native mouse
2021-11-24 20:30:28 -06:00
german77
b673857d7d
core/hid: Improve accuracy of the keyboard implementation
2021-11-24 20:30:28 -06:00
german77
7fcfe24a3e
core/hid: Fix keyboard alignment
2021-11-24 20:30:28 -06:00
german77
71f9b90dd9
core/hid: Remove usage of native types, fix a couple of errors with motion
2021-11-24 20:30:28 -06:00
german77
e7eee36d52
service/hid: Remove includes of core.h and settings.h
2021-11-24 20:30:27 -06:00
german77
b21fcd9527
service/hid: Add support for new controllers
2021-11-24 20:30:27 -06:00
german77
5d0f3540c4
core/hid: Rename NpadType to NpadStyleIndex
2021-11-24 20:30:27 -06:00
german77
77fa4d4bf6
second commit lion review
2021-11-24 20:30:26 -06:00
german77
2b1b0c2a30
kraken: Address comments from review
...
start lion review
2021-11-24 20:30:26 -06:00
german77
2d3a63b289
core/hid: Update structs to 13.1.0
2021-11-24 20:30:26 -06:00
german77
064ddacf49
core/hid: Rework battery mappings
2021-11-24 20:30:26 -06:00
german77
f01dac3bf9
service/hid: Fix memory allocated incorrectly
2021-11-24 20:30:25 -06:00
german77
b564f024f0
Morph review first wave
2021-11-24 20:30:25 -06:00
german77
e2e5f1beaf
service/hid: Match shared memory closer to HW
2021-11-24 20:30:25 -06:00
german77
b5e72de753
kraken: Address comments from review
...
review fixes
2021-11-24 20:30:25 -06:00
german77
95cf66b655
service/hid: Use ring buffer for gestures
2021-11-24 20:30:25 -06:00
german77
85052b8662
service/hid: Fix gesture input
2021-11-24 20:30:25 -06:00
german77
af55dd1935
configuration: Migrate controller settings to emulated controller
2021-11-24 20:30:25 -06:00
german77
601ac43495
core/hid: Only signal when needed
2021-11-24 20:30:24 -06:00
german77
4d308fd0b4
hid: Fix controller connection/disconnection
2021-11-24 20:30:24 -06:00
german77
e0da5c1bbc
kraken: Fix errors from rebase and format files
2021-11-24 20:30:24 -06:00
german77
06a5ef5874
core/hid: Add output devices
2021-11-24 20:30:24 -06:00
german77
510c7d2953
core/frontend: Update applets
2021-11-24 20:30:24 -06:00
german77
c87ad2d0d6
service/hid: Rewrite npad to use ring lifo and the emulated controller
2021-11-24 20:30:24 -06:00
german77
a2ad5762e6
service/hid: Update console sixaxis to the emulated console
2021-11-24 20:30:24 -06:00
german77
800a66d25a
service/hid: Update mouse and keyboard to use ring lifo and the emulated device
2021-11-24 20:30:24 -06:00
german77
afe2d667d9
service/hid: Update touch and gestures to use ring lifo and the emulated console
2021-11-24 20:30:24 -06:00
german77
072559dede
service/hid: Update debug pad, xpad, stubbed and controller base to use ring lifo and the emulated controller
2021-11-24 20:30:23 -06:00
german77
dbe0301102
service/hid: Use remove duplicated code, update names
2021-11-24 20:30:23 -06:00
german77
db08721dcc
service/hid: Create ring LIFO
2021-11-24 20:30:23 -06:00
german77
6e2c84042d
settings: Cleanup settings
2021-11-24 20:30:23 -06:00
bunnei
daecbd3a7f
Merge pull request #7394 from Morph1984/svc-SetMemoryPermission
...
kernel: svc: Implement SetProcessMemoryPermission
2021-11-22 14:06:09 -08:00