Commit Graph

225 Commits

Author SHA1 Message Date
dc4fe2fbd5 svc: Fix string formatting for CreateThread. 2018-01-01 15:48:08 -05:00
9e8608e8b1 svc: Stub out svcWaitSynchronization.
- This does not matter until we implement other kernel objects, mutexes use svcLockMutex for waiting.
2018-01-01 14:47:57 -05:00
aa7c824ea4 svc: Implement svcExitProcess. 2018-01-01 14:38:34 -05:00
9b8afed5f7 svc: Implement svcUnlockMutex. 2018-01-01 14:04:36 -05:00
b9950cd4b0 svc: Implement svcLockMutex. 2018-01-01 14:02:26 -05:00
1cb978eb82 thread: Keep track of the initially created handle.
This is kinda crufty, but we need it for now to update guest state variables.
2017-12-31 17:23:36 -05:00
45debfe4fd svc: Implement svcExitThread. 2017-12-31 16:11:27 -05:00
9d0c3bda7f svc: Implement svcCreateThread. 2017-12-31 16:10:01 -05:00
001091fa72 svc: Cleanup svcGetThreadPriority. 2017-12-31 16:06:11 -05:00
283c63645d svc: Stub out svcGetCurrentProcessorNumber. 2017-12-31 16:01:04 -05:00
8a7f8f3e2c svc: Implement svcSetThreadPriority. 2017-12-31 15:58:16 -05:00
960e8dc5e5 svc: Change SignalProcessWideKey to a stub. 2017-12-31 15:55:11 -05:00
3a91a62b8f svc: Implement svcUnmapMemory. 2017-12-31 15:22:49 -05:00
a3228d9b77 svc: Minor cleanups. 2017-12-30 13:40:28 -05:00
8ab33616ac svc: Implement svcStartThread. 2017-12-30 13:37:07 -05:00
834fa5db65 kernel: Add SyncObject primitive, use it for ClientSession. 2017-12-28 23:12:28 -05:00
6e021f22b8 svc: Implement MapMemory. 2017-12-28 21:38:38 -05:00
7618b5237d svc: Implement SetHeapSize. 2017-12-28 15:29:52 -05:00
266c1c8020 svc: Implement GetThreadId and GetProcessId. 2017-10-23 00:15:45 -04:00
dcd6bb82f7 hle: Fix QueryMemory response for MemoryInfo. 2017-10-19 23:00:46 -04:00
960a1416de hle: Initial implementation of NX service framework and IPC. 2017-10-14 22:18:42 -04:00
78bc2b70bb svc: Some logging cleanup. 2017-10-14 17:35:21 -04:00
cb889f9220 svc: Initial nx impl. for QueryMemory, ConnectToPort, SendSyncRequest, etc. 2017-10-14 17:30:07 -04:00
56d718b2a1 Merge pull request #2793 from Subv/replyandreceive
Kernel/SVC: Partially implemented svcReplyAndReceive
2017-06-29 17:05:22 -05:00
b53fa9514f Kernel/SVC: Pass the current thread as a parameter to ClientSession::SendSyncRequest. 2017-06-29 12:30:34 -05:00
88c93a7436 Kernel/SVC: Partially implemented svcReplyAndReceive.
It behaves mostly as WaitSynchronizationN with wait_all = false, except for IPC buffer translation.

The target thread of an IPC response will now wake up when responding.
IPC buffer translation is currently not implemented.
Error passing back to svcSendSyncRequest is currently not implemented.
2017-06-25 23:38:28 -05:00
e192d417ec Kernel: Implement AcceptSession SVC 2017-06-23 11:26:37 -07:00
aa0f3047d3 Kernel: Implement CreateSessionToPort SVC 2017-06-23 11:22:02 -07:00
f94093d0fd Kernel: Implement CreateSession SVC 2017-06-22 00:39:27 -07:00
be031989ee Kernel: Move HandleTable to a separate file 2017-05-29 17:34:39 -07:00
64ecf81a3c Kernel: Move WaitObject to a separate file
Now that HandleTable doesn't directly depend on WaitObject anymore, this
can be separated from the main kernel.h header.
2017-05-29 16:16:46 -07:00
9453223075 Kernel: Removed HandleTable::GetWaitObject
This isn't necessary anymore since plain Get works correctly for
WaitObjects.
2017-05-29 15:10:06 -07:00
2cdb40d709 Kernel: Centralize error definitions in errors.h 2017-05-24 21:06:00 -07:00
6577bbc3c5 Remove ability to load symbol maps
This was now mostly unused except by thread creation, which used a
symbol of the entrypoint, if available, to name the thread.
2017-05-07 15:33:07 -07:00
31f9c1ab5d Fix OutputDebugString syscall 2017-04-01 04:09:39 -05:00
b5dbc6cb98 Refined thread launch on syscore error messages 2017-03-09 08:18:18 -05:00
0be77c3ae4 Timers: Return an error when calling SetTimer with negative timeouts. 2017-02-21 20:51:56 -05:00
1ddff14511 Threads: Check the process' resource limit for the max allowed priority when creating a thread and remove the priority clamping code. 2017-01-11 16:38:05 -05:00
f2f2572fed Thread: Added priority range checking to svcSetThreadPriority and removed priority clamping code from Thread::SetPriority. 2017-01-11 16:38:04 -05:00
b5eac78b43 Merge pull request #2410 from Subv/sleepthread
Don't yield execution in SleepThread(0) if there are no available threads to run
2017-01-06 22:01:33 -05:00
f0199a17f6 Kernel: Fix SharedMemory objects always returning error when addr = 0 (#2404)
Closes #2400
2017-01-06 08:21:22 -05:00
fc2266130b Kernel: Don't attempt to yield execution in SleepThread(0) if there are no available threads to run.
With this we avoid an useless temporary deschedule of the current thread.
2017-01-05 19:11:34 -05:00
fd95b6ee26 Kernel: Remove Thread::wait_objects_index and use wait_objects to hold all the objects that a thread is waiting on. 2017-01-05 09:40:14 -05:00
cef5f45de2 Kernel: Use different thread statuses when a thread calls WaitSynchronization1 and WaitSynchronizationN with wait_all = true.
This commit removes the overly general THREADSTATUS_WAIT_SYNCH and replaces it with two more granular statuses:

THREADSTATUS_WAIT_SYNCH_ANY when a thread waits on objects via WaitSynchronization1 or WaitSynchronizationN with wait_all = false.

THREADSTATUS_WAIT_SYNCH_ALL when a thread waits on objects via WaitSynchronizationN with wait_all = true.
2017-01-04 15:58:50 -05:00
d3ff5b91e1 Kernel/Mutex: Propagate thread priority changes to other threads inheriting the priority via mutexes 2017-01-04 15:58:48 -05:00
b6a0355568 Kernel/Mutex: Update a mutex priority when a thread stops waiting on it. 2017-01-04 15:58:47 -05:00
7abf185390 Kernel/Mutex: Implemented priority inheritance.
The implementation is based on reverse engineering of the 3DS's kernel.

A mutex holder's priority will be temporarily boosted to the best priority among any threads that want to acquire any of its held mutexes.
When the holder releases the mutex, it's priority will be boosted to the best priority among the threads that want to acquire any of its remaining held mutexes.
2017-01-04 15:58:46 -05:00
e6a7723f2f Kernel: Object ShouldWait and Acquire calls now take a thread as a parameter.
This will be useful when implementing mutex priority inheritance.
2017-01-04 15:58:45 -05:00
38a90882a4 Kernel/Synch: Do not attempt a reschedule on every syscall.
Not all syscalls should cause reschedules, this commit attempts to remedy that, however, it still does not cover all cases.
2017-01-04 15:58:44 -05:00
e26fbfd1d7 core: Replace "AppCore" nomenclature with just "CPU". 2016-12-22 00:27:46 -05:00