Yuri Kunde Schlesner
664c79ff47
Thread: Modernize two functions that slipped through previous rebases
2015-02-02 15:37:01 -02:00
Yuri Kunde Schlesner
8779b31fe6
Make Port/Service registration and querying more HW-accurate
2015-02-02 15:36:59 -02:00
Yuri Kunde Schlesner
58b544db99
SVC: Use CASCADE_RESULT in SVC handlers
2015-01-30 11:49:46 -02:00
Yuri Kunde Schlesner
09ae6e1fa3
Remove result.h InvalidHandle
...
It was only being used in two places, where it was replaced by a local
constant.
2015-01-30 11:49:45 -02:00
Yuri Kunde Schlesner
44f90340dc
SVC: Change return type of handlers to ResultCode
2015-01-30 11:49:44 -02:00
Yuri Kunde Schlesner
d52d859936
Kernel: Convert Event to not use Handles
2015-01-30 11:49:43 -02:00
Yuri Kunde Schlesner
ad80ff1e32
Kernel: Convert Timer to (mostly) not use Handles
2015-01-30 11:47:07 -02:00
Yuri Kunde Schlesner
882b6fed75
Kernel: Convert Mutex to not use Handles
2015-01-30 11:47:06 -02:00
Yuri Kunde Schlesner
38e7122f23
Kernel: Convert AddressArbiter to not use Handles
2015-01-30 11:47:06 -02:00
Yuri Kunde Schlesner
d9b19be1d9
Kernel: Convert Semaphore to not use Handles
2015-01-30 11:47:05 -02:00
Yuri Kunde Schlesner
4bb33dfc30
Kernel: Convert SharedMemory to not use Handles
2015-01-30 11:47:04 -02:00
bunnei
206cabc0e4
Merge pull request #412 from purpasmart96/svc_table_cleanup
...
SVC: Update the SVC function table
2015-01-28 17:36:23 -05:00
purpasmart96
62f4365db1
SVC: Update the SVC function table
2015-01-26 20:42:28 -08:00
bunnei
731154f79e
WaitSynchronization: Added a result code for invalid result, fixed bug.
2015-01-21 20:49:43 -05:00
bunnei
68ddaaa2f5
Thread: Fix WaitSynchronization1 to not set register 1 on thread wakeup.
2015-01-21 20:48:46 -05:00
bunnei
15b6a4d9ad
Kernel: Changed "ShouldWait" to return bool and "Acquire" to return void.
2015-01-21 20:47:49 -05:00
bunnei
c68eb15695
WaitObject: Renamed "Wait" to "ShouldWait", made "ShouldWait" and "Acquire" pure virtual.
2015-01-21 20:47:49 -05:00
bunnei
d2759c578e
Kernel: Reschedule on SignalEvent and SendSyncRequest, fix some bugs.
2015-01-21 20:47:47 -05:00
bunnei
9412996c8f
Kernel: Moved Wait and Acquire to WaitObject, added way to retrieve a WaitObject safely.
2015-01-21 20:47:46 -05:00
bunnei
c06d64528a
SVC: Removed a Sleep that made no sense
...
- Would deadlock the calling thread
- Code would never get hit anyways
2015-01-21 20:47:45 -05:00
bunnei
254e4ebd58
AddressArbiter: Changed to Kernel::Object, big cleanup, removed code that made no sense.
2015-01-21 20:47:45 -05:00
bunnei
e5a9f1c644
Kernel: Get rid of WaitTypes and simplify lots of code, removing hacks.
2015-01-21 20:47:38 -05:00
bunnei
6deb1a0119
WaitSynchronizationN: Improved comments
2015-01-21 19:12:51 -05:00
bunnei
6643673f28
WaitSynchronizationN: Refactor to fix several bugs
...
- Separate wait checking from waiting the current thread
- Resume thread when wait_all=true only if all objects are available at once
- Set output to correct wait object index when there are duplicate handles
2015-01-21 19:11:47 -05:00
bunnei
aa01c57ae9
Kernel: Separate WaitSynchronization into Wait and Acquire methods.
2015-01-21 19:10:24 -05:00
bunnei
627e96fc15
WaitSynchronizationN: Handle case where handles=nullptr.
2015-01-21 19:09:10 -05:00
bunnei
f5c6d367c9
WaitSynchronizationN: Handle case where handle_count is invalid.
2015-01-21 19:09:09 -05:00
bunnei
064be2b86f
WaitSynchronizationN: Handle case where handle_count=0.
2015-01-21 19:09:09 -05:00
bunnei
7faf2d8e06
WaitSynchronizationN: Implement return values
2015-01-21 19:09:03 -05:00
Subv
9e2ae289b8
AddrArbiter: Implement arbitration types 3 and 4.
2015-01-13 14:49:26 -05:00
Subv
38da198aa1
SVC: Wake up the thread after the delay in WaitSync1
2015-01-11 10:42:59 -05:00
archshift
228843c43e
Logging: Log all called service functions (under trace). Compile out all trace logs under release for performance.
2015-01-10 14:32:10 -08:00
Yuri Kunde Schlesner
8ad41775cc
Kernel: Start using boost::intrusive_ptr for lifetime management
2015-01-09 19:43:52 -02:00
bunnei
6ae12424df
Merge pull request #444 from yuriks/handle-reform2
...
Kernel Lifetime Reform Pt. 2
2015-01-09 12:59:35 -05:00
bunnei
86e07124ad
Merge pull request #436 from kevinhartman/system-core
...
Warn if a new thread is intended to be run on the system CPU core
2015-01-09 11:14:35 -05:00
Yuri Kunde Schlesner
9bf8462b96
Thread: Reduce use of Handles and move some funcs to inside the class.
2015-01-09 04:02:15 -02:00
Yuri Kunde Schlesner
7b3452c730
Move ThreadContext to core/core.h and deal with the fallout
2015-01-09 03:51:55 -02:00
bunnei
d46f650036
Merge pull request #255 from Subv/cbranch_3
...
Implemented timers
2015-01-08 22:38:33 -05:00
Subv
07044651ef
SVC: Implemented the Timer service calls.
2015-01-08 21:22:14 -05:00
Subv
dfc440785a
SVC: Fixed SleepThread.
...
It will now properly wait the specified number of nanoseconds and then wake up the thread.
2015-01-08 18:39:12 -05:00
Kevin Hartman
63be6aaadd
Warn if a new thread is intended to be run on the system CPU core until we implement correct scheduling for such a thread.
2015-01-07 14:14:48 -08:00
Subv
97a7381d29
SOC_U: Preliminary implementation of sockets.
...
Stubbed CreateMemoryBlock
Using Berkeley sockets, and Winsock2.2 on Windows.
So far ftpony creates the socket and accepts incoming connections
SOC_U: Renamed functions to maintain consistency
Also prevents possible scope errors / conflicts with the actual Berkeley socket functions
SOCU: Close all the opened sockets when cleaning up SOCU
2014-12-31 10:51:44 -05:00
Yuri Kunde Schlesner
7e2903cb74
Kernel: New handle manager
...
This handle manager more closely mirrors the behaviour of the CTR-OS
one. In addition object ref-counts and support for DuplicateHandle have
been added.
Note that support for DuplicateHandle is still experimental, since parts
of the kernel still use Handles internally, which will likely cause
troubles if two different handles to the same object are used to e.g.
wait on a synchronization primitive.
2014-12-28 11:52:55 -02:00
Yuri Kunde Schlesner
73fba22c01
Rename ObjectPool to HandleTable
2014-12-28 11:52:52 -02:00
bunnei
0de6a08d75
Merge pull request #291 from purpasmart96/license
...
License change
2014-12-21 16:05:44 -05:00
purpasmart96
ebfd831ccb
License change
2014-12-20 21:20:24 -08:00
bunnei
4fcdbed9f6
Thread: Wait current thread on svc_SleepThread
...
- Removed unused VBLANK sleep mode
- Added error log for bad context switch
- Renamed VerifyWait to CheckWaitType to be more clear
2014-12-20 23:20:19 -05:00
bunnei
7bae450379
Merge pull request #185 from purpasmart96/mem_perm
...
Kernel: Add missing permissions
2014-12-17 20:56:04 -05:00
Yuri Kunde Schlesner
e321decf98
Remove SyncRequest from K::Object and create a new K::Session type
...
This is a first step at fixing the conceptual insanity that is our
handling of service and IPC calls. For now, interfaces still directly
derived from Session because we don't have the infrastructure to do it
properly. (That is, Processes and scheduling them.)
2014-12-15 18:26:17 -02:00
Subv
1051795c32
Kernel/Semaphores: Fixed build
2014-12-13 13:43:01 -05:00
Subv
49b31badba
SVC: Implemented ReleaseSemaphore.
...
This behavior was tested on hardware, however i'm still not sure what use the "initial_count" parameter has
2014-12-13 13:40:10 -05:00
Subv
82c84883a5
SVC: Implemented svcCreateSemaphore
...
ToDo: Implement svcReleaseSemaphore
* Some testing against hardware needed
2014-12-13 13:40:09 -05:00
Yuri Kunde Schlesner
0600e2d8b5
Convert old logging calls to new logging macros
2014-12-13 02:08:02 -02:00
bunnei
4cb7a44d4e
MemMap: Renamed "GSP" heap to "linear", as this is not specific to GSP.
...
- Linear simply indicates that the mapped physical address is always MappedVAddr+0x0C000000, thus this memory can be used for hardware devices' DMA (such as the GPU).
2014-12-12 00:15:47 -05:00
Subv
029ff9f1fd
SVC: Implemented GetThreadId.
...
For now threads are using their Handle value as their Id, it should not really cause any problems because Handle values are unique in Citra, but it should be changed. I left a ToDo there because this is not correct behavior as per hardware.
2014-12-04 00:25:35 -05:00
bunnei
f985469901
SVC: Add debug log to ArbitrateAddress.
2014-11-26 15:04:07 -05:00
bunnei
e0e7443517
SVC: SleepThread should yield to the next ready thread.
2014-11-26 15:04:07 -05:00
Yuri Kunde Schlesner
c2588403c0
HLE: Revamp error handling throrough the HLE code
...
All service calls in the CTR OS return result codes indicating the
success or failure of the call. Previous to this commit, Citra's HLE
emulation of services and the kernel universally either ignored errors
or returned dummy -1 error codes.
This commit makes an initial effort to provide an infrastructure for
error reporting and propagation which can be use going forward to make
HLE calls accurately return errors as the original system. A few parts
of the code have been updated to use the new system where applicable.
One part of this effort is the definition of the `ResultCode` type,
which provides facilities for constructing and parsing error codes in
the structured format used by the CTR.
The `ResultVal` type builds on `ResultCode` by providing a container for
values returned by function that can report errors. It enforces that
correct error checking will be done on function returns by preventing
the use of the return value if the function returned an error code.
Currently this change is mostly internal since errors are still
suppressed on the ARM<->HLE border, as a temporary compatibility hack.
As functionality is implemented and tested this hack can be eventually
removed.
2014-11-24 17:08:36 -02:00
Emmanuel Gil Peyrot
f5d38649c7
Remove trailing spaces in every file but the ones imported from SkyEye, AOSP or generated
2014-11-19 09:03:07 +00:00
purpasmart96
66431bceda
Kernel:Add missing permissions in shared memory & svc
2014-11-18 15:57:25 -08:00
Lioncash
72846c418e
core: Mark some hle functions as static
...
These functions are not referred to by their linkage name outside of the translation unit, so they can be marked as static.
2014-11-17 22:41:49 -05:00
Sean
9a012ff007
Fix some warnings
2014-10-29 20:26:15 -04:00
bunnei
532a9e80a0
Merge pull request #99 from archshift/ext-check
...
loader.cpp: improved file extension checking, made Upper/LowerStr useful, moved string_util into Common namespace
2014-09-11 00:04:36 -04:00
archshift
6e606c515f
core: Prune redundant includes
2014-09-08 17:54:14 -07:00
archshift
5472fd4d9b
Added string_util to common, small changes in loader.cpp
2014-09-08 15:43:22 -07:00
bunnei
e9c5c563a5
Merge pull request #55 from lioncash/string
...
Core: Alter the kernel string functions to use std::string instead of const char*.
2014-08-18 21:42:44 -04:00
bunnei
10f25866e2
SVC: Added support for svc_GetSystemTick.
...
Changed HLE function return methods to be static inline functions.
2014-08-18 21:26:20 -04:00
Lioncash
98fa3f7cba
Core: Alter the kernel string functions to use std::string instead of const char*.
...
Most functions already operate on std::strings. This also removes the need to manually null terminate thread names.
2014-08-17 23:12:20 -04:00
Lioncash
986dd27392
Core: Fix a formatting error in svc.cpp
...
entry_point would not be added to the string. Also used StringFromFormat
so that the buffer is unnecessary.
2014-08-17 14:28:39 -04:00
bunnei
66f91b4346
SVC: Fixed typo with MapMemoryBlock DEBUG_LOG call.
2014-08-07 20:27:11 -04:00
bunnei
4d4607041b
SVC: Removed ArbitrateAddress log message that spams to much.
2014-08-05 23:53:58 -04:00
bunnei
3eb89f3e98
Kernel: Added preliminary support for address arbiters.
...
AddressArbiter: Added documentation comment, fixed whitespace issue.
AddressArbiter: Fixed incorrect comment, reordered if-statement to be more clear.
SVC: Removed trailing whitespace.
2014-07-08 18:46:38 -04:00
bunnei
7ff92c36ed
SharedMemory: Updated MapSharedMemory to use an enum for permissions.
...
- Also added some safety checks to MapSharedMemory.
2014-07-05 10:24:54 -04:00
bunnei
7b7a435094
GSP: Fixed to use real shared memory object, various cleanups.
...
- Previously, used a hard-coded shared memory handle of 0x10002000 (as used by libctru homebrew)
GSP: Added name for shared memory.
GSP: Cleaned up assertion message.
2014-07-05 10:24:52 -04:00
bunnei
8957622d10
SVC: Renamed all function wrapper templates to Wrap, moved to HLE namespace.
2014-06-13 09:51:17 -04:00
bunnei
862db811f0
SVC: Cleaned up function wrappers to pass in correct argument types.
2014-06-13 09:51:15 -04:00
bunnei
4d6c96b7d8
SVC: Moved declaration of "wait" variable in SendSyncRequest for improved readability.
2014-06-13 09:51:13 -04:00
bunnei
c95972275e
HLE: Updated all uses of NULL to nullptr (to be C++11 compliant)
2014-06-13 09:51:13 -04:00
bunnei
d7363322c7
HLE: Updated various handle debug assertions to be more clear.
2014-06-13 09:51:11 -04:00
bunnei
f5c7c15434
Kernel: Added real support for thread and event blocking
...
- SVC: Added ExitThread support
- SVC: Added SignalEvent support
- Thread: Added WAITTYPE_EVENT for waiting threads for event signals
- Thread: Added support for blocking on other threads to finish (e.g. Thread::Join)
- Thread: Added debug function for printing current threads ready for execution
- Thread: Removed hack/broken thread ready state code from Kernel::Reschedule
- Mutex: Moved WaitCurrentThread from SVC to Mutex::WaitSynchronization
- Event: Added support for blocking threads on event signalling
Kernel: Added missing algorithm #include for use of std::find on non-Windows platforms.
2014-06-13 09:51:02 -04:00
bunnei
477b0caca4
svc: updated WaitSynchronizationN to properly use first pointer argument
2014-06-02 17:54:07 -04:00
bunnei
4819e9a60f
svc: changed DuplicateHandle log message from "error" to "debug"
2014-06-01 22:33:53 -04:00
bunnei
3fb31fbc57
svc: added GetThreadPriority and SetThreadPriority, added (incomplete) DuplicateHandle support
2014-06-01 22:12:54 -04:00
bunnei
10447d1f48
kernel: changed main thread priority to default, updated Kernel::Reschedule to use PrepareReschedule
2014-06-01 21:42:50 -04:00
bunnei
15c7d81706
svc: cleaned up function_wrappers, updated various SVCs to make use of pointer arguments
2014-06-01 20:48:29 -04:00
bunnei
f2f638492b
svc: updated waitSychronization to not overwrite handle on return, added stub for SleepThread (does nothing)
2014-06-01 10:37:19 -04:00
bunnei
c404d22036
hle: cleaned up log messages
2014-05-29 23:26:58 -04:00
bunnei
b0bad47c0e
svc: updated OutputDebugString to use OS_LOG
2014-05-29 23:04:18 -04:00
bunnei
6d267142ad
svc: changed unimplemented SVC log messages from "debug" messages to "error" messages
2014-05-29 20:26:27 -04:00
bunnei
58af0da792
svc: added svcClearEvent, stubbed function for svcArbitrateAddress, and various fixes
...
- force kernel reschedule after svcWaitSynchronization
- fixed some bugs with passing in pointer arguments
- cleaned up some comments and log messages
2014-05-29 20:24:51 -04:00
bunnei
47e781e80a
svc: implemented WaitSynchronization1, WaitSynchronizationN, and CreateEvent
2014-05-27 22:41:09 -04:00
bunnei
58a3adcdd2
kernel: updated SyncRequest to take boolean thread wait result as a parameter
2014-05-26 22:12:46 -04:00
bunnei
6e51c56fe4
svc: added some assertions
2014-05-26 21:57:10 -04:00
bunnei
9f7ed2d027
svc: changed SendSyncRequest to use Kernel::Object SyncRequest (instead of just service Interface class)
2014-05-26 21:17:10 -04:00
bunnei
15d2ab1b33
svc: added stub for DuplicateHandle SVC call
2014-05-26 20:55:48 -04:00
bunnei
f8a98ab022
svc: added a check to ensure that a service was implemented before attempting to connect to its port
2014-05-22 22:49:29 -04:00
bunnei
b99ac2c3d6
thread: renamed "WaitCurThread" to "WaitCurrentThread", removed unused "reason" argument
2014-05-22 19:36:56 -04:00
bunnei
7c0b006076
thread: removed unused SwitchContext/Reschedule reason field, added missing arg parameter to SVC CreateThread
2014-05-22 19:32:45 -04:00
bunnei
06e3c3d55a
svc: added Kernel::Reschedule to svc WaitSynchronization1, updated log messages to include newly created handles
2014-05-21 21:41:40 -04:00
bunnei
706584f007
svc: enabled use of newly created kernel thread handle
2014-05-20 23:36:35 -04:00
bunnei
eb537c560a
mutex: refactored the interface to code to return a Mutex* handle
2014-05-20 23:23:58 -04:00
bunnei
978e1d4653
mutex: initial commit of HLE module
2014-05-20 23:03:45 -04:00
bunnei
08e6a9bf89
svc: added some comments
2014-05-20 22:57:54 -04:00
bunnei
75c6d2a8fa
thread: moved threading calls to the Kernel namespace
2014-05-20 19:37:46 -04:00
bunnei
143bba2045
renamed "syscall" module to "svc" (more accurate naming)
2014-05-20 18:28:38 -04:00