Commit graph

111 commits

Author SHA1 Message Date
Subv ef1d5cda06 Threads: Implemented a sequential thread id 2014-12-04 08:13:53 -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 e3d1ffff4b Merge pull request #225 from bunnei/fix-release-mutex
Mutex: Changed behavior to always release mutex for all threads.
2014-11-30 08:47:49 -05:00
bunnei de851ba1a1 Thread: Check that thread is actually in "wait state" when verifying wait. 2014-11-26 15:04:08 -05:00
bunnei a449e0e11a Mutex: Changed behavior to always release mutex for all threads. 2014-11-26 14:38:42 -05:00
Yuri Kunde Schlesner 8189593255 Use pointers instead of passing handles around in some functions. 2014-11-24 17:08:37 -02:00
Yuri Kunde Schlesner 22c86824a4 Remove duplicated docs/update them for changed parameters. 2014-11-24 17:08:36 -02: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
bunnei ef1b16a7eb Merge pull request #191 from archshift/deletexyz
Added DeleteFile and DeleteDirectory functions to FS:USER and the archives.
2014-11-23 20:02:23 -05:00
archshift 8aeadbd95a Added DeleteFile and DeleteDirectory functions to FS:USER and the archives. 2014-11-23 00:33:43 -08:00
bunnei c0cd0fa78e Merge pull request #211 from linkmauve/master
Remove trailing spaces from the entire project
2014-11-19 15:24:46 -05:00
bunnei 112768f436 Merge pull request #208 from lioncash/statics
Add static to some variables
2014-11-19 09:39:20 -05: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
Lioncash 7cbecde2ca Add static to some variables 2014-11-18 20:04:00 -05:00
Lioncash 1a8f466217 Remove extraneous semicolons 2014-11-18 08:27:16 -05:00
bunnei 11641b5e79 Archive: Fixed to not destroy archive handle on close. 2014-11-17 22:19:14 -05:00
bunnei bcb0dbf7e1 Archive: Fixed close archive before freeing. 2014-11-17 22:19:14 -05:00
bunnei 3e09c07378 FS_User: Support FileSye::Path in a more generic way.
added a todo to kernel archive
2014-11-17 22:18:58 -05:00
bunnei a3107a6b57 FileSys: Updated backend code to use FileSys::Path instead of string for paths. 2014-11-17 21:49:24 -05:00
Lioncash ac58b76e71 Fix two format strings. 2014-11-14 12:08:26 -05:00
archshift 04c90c395d Added CreateDirectory function to service/fs.cpp, and in Archive. 2014-11-02 10:48:28 -08:00
Sean 9a012ff007 Fix some warnings 2014-10-29 20:26:15 -04:00
Yuri Kunde Schlesner d72708c1f5 Add override keyword through the code.
This was automated using `clang-modernize`.
2014-10-26 16:18:05 -02:00
Emmanuel Gil Peyrot 0be5c03176 FileSys: split the constructor into an Open method, in order to notify the opener something went wrong.
Kernel: Return an invalid handle to OpenFile when it failed to open.
2014-10-06 19:58:42 +02:00
Emmanuel Gil Peyrot 23c2fbfc7a FileSys/Kernel: Implement SetSize service call for File objects. 2014-10-06 19:58:37 +02:00
archshift 1966f7b0ad Use the citra user path for the sdmc directory 2014-09-21 09:34:33 -07:00
Emmanuel Gil Peyrot 3a570a9fee Kernel: Implement the Close command for Archive, File and Directory. 2014-09-17 14:35:46 +00:00
Emmanuel Gil Peyrot c197ce2180 Kernel: Add a Directory object and a getter for it from an Archive object. 2014-09-17 14:35:46 +00:00
Emmanuel Gil Peyrot 19d04f3abe Kernel: Add a File object and a getter for it from an Archive object. 2014-09-17 14:35:46 +00:00
Lioncash 741321ac24 Core: Get rid of unnecessary switch statement in Kernel 2014-09-14 21:31:09 -04:00
archshift 6e606c515f core: Prune redundant includes 2014-09-08 17:54:14 -07:00
bunnei 304999dfeb Threading: Fix thread starting to execute first instruction correctly. 2014-08-28 17:51:49 -04:00
archshift 4c4a01bf41 Added FS functions to Archive and Archive_RomFS 2014-08-22 15:45:10 -07:00
Lioncash ab4648d3ca Core: Use std::array for managing kernel object space
These avoid relying on memset for clearing the arrays.
2014-08-19 00:32:48 -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
bunnei d4bd2f2e5d Thread: Added more descriptive comment to WaitCurrentThread. 2014-08-06 18:19:59 -04:00
bunnei 2542350b85 AddressArbiter: Removed unnecessary HLE::Reschedule. 2014-08-05 23:54:28 -04:00
bunnei 60078baab1 AddressArbiter: Fixed bug with break statements missing from case statements. 2014-08-05 23:54:27 -04:00
bunnei 7a1f813be1 Kernel: Updated Event and Mutex to specify handle that they are blocking for. 2014-08-05 20:14:51 -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 ba840d3200 Thread: Added functions to resume threads from address arbitration.
Thread: Cleaned up arbitrate address functions.

Thread: Cleaned up ArbitrateAllThreads function.
2014-07-08 18:46:15 -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 e547128185 Kernel: Added support for shared memory objects.
SharedMemory: Added optional name field for tracking known objects.
2014-07-05 01:21:05 -04:00
bunnei 542700ccb7 Archive: Added Init/Shutdown methods to reset kernel archive state. 2014-07-04 20:37:51 -04:00
bunnei 17a6148f9d FileSys: Added preliminary support for applications reading the RomFS archive.
Archive: Fixed brace ugliness for neobrain :)

FS: Commented out unused local variables to prevent warnings.

...But keeping them here for future use.

archive_romfs: Removed unused #include.
2014-07-04 20:37:45 -04:00
bunnei 8b8c8f4c13 Kernel: Added stubbed code to support creation of kernel Archive objects. 2014-06-27 16:58:30 -04:00
bunnei b45a38f557 Kernel: Removed unnecessary "#pragma once". 2014-06-13 09:51:20 -04:00
bunnei f49ac3a2d7 Kernel: Added freeing of kernel objects on emulator shutdown. 2014-06-13 09:51:19 -04:00
bunnei 83a4ad2885 Event: Updated several log messages to be assertions. 2014-06-13 09:51:18 -04:00
bunnei b62ef4bbd2 Thread: Renamed occurrences of "t" to "thread" to improve readability. 2014-06-13 09:51:17 -04:00