Commit graph

151 commits

Author SHA1 Message Date
Sebastian Valle 125f5d1e68
Merge pull request #3284 from Subv/session_data
HLE/Services: Allow specifying a SessionData template parameter to ServiceFramework.
2017-12-16 09:14:34 -05:00
Subv b5bfaaae29 HLE/FS: Use the SessionData parameter of ServiceFramework in the File class. 2017-12-14 18:24:03 -05:00
Subv daecd812b0 HLE/Services: Allow specifying a SessionData template parameter to ServiceFramework.
Some services can have multiple clients at the same time, and they identify the different clients using the server session as a key.
This parameter (if present) should be a structure that contains the per-session data for each service.
The data can be retrieved using ServiceFramework::GetSessionData(session)
2017-12-14 18:24:02 -05:00
Subv 2552efac01 HLE/FS: Use PopEnum in OpenFile. 2017-12-13 19:51:36 -05:00
Subv d790ac465c HLE/FS: Use IPCHelper in CreateFile. 2017-12-13 19:51:21 -05:00
Subv 92e71aff57 HLE/FS: Use IPCHelper in DeleteDirectoryRecursively. 2017-12-12 17:48:15 -05:00
Subv 67382e46c0 HLE/FS: Use IPCHelper in DeleteDirectory. 2017-12-12 17:48:12 -05:00
Subv b631f77d11 HLE/FS: Use IPCHelper in RenameFile. 2017-12-12 17:48:10 -05:00
Subv a6c69bfca0 HLE/FS: Use IPCHelper in DeleteFile. 2017-12-12 17:48:07 -05:00
Subv e9a70ce2fc HLE/FS: Use IPCHelper in OpenFileDirectly. 2017-12-12 17:48:03 -05:00
Subv c9ddd5b0ae HLE/FS: Implemented FSFile::OpenSubFile.
The File class now holds a list of connected sessions along with data unique to each session.

A subfile is a window into an existing file. They have a few limitations compared to normal files:

* They can't be written to.
* They can't be flushed.
* Their size can not be changed.
* New subfiles can't be created from another subfile.
2017-12-12 13:34:02 -05:00
Merry 5c802d35ef
Merge pull request #3262 from lioncash/warn
common/core: Silence initialization order warnings
2017-12-11 19:52:53 +00:00
Lioncash c31f932afe common/core: Silence initialization order warnings 2017-12-10 19:50:45 -05:00
Subv 0ac82af50f HLE/FS: Stubbed GetNumSeeds to always return 0 seeds.
We don't yet implement the SEEDDB store.
This number is supposed to be modified by the AddSeed function (0x087A0180) but there's too little info about it on 3dbrew.
2017-12-10 13:08:04 -05:00
Subv 7d038b9bd8 HLE/FS: Implemented FS::GetProgramLaunchInfo.
This function is used by the DLP system module during the DLPSRVR initialization.
2017-12-09 18:46:34 -05:00
wwylele 6050d000fa fs: correct header code; remove dead code 2017-12-05 16:34:01 +02:00
wwylele fda023c9fa ipc_helper: split PushMoveObjects and PushCopyObjects 2017-12-04 19:46:44 +02:00
wwylele a79a8d17fa FS: transform File to ServiceFramework 2017-12-03 00:05:20 +02:00
Subv c9c1ba0952 Kernel/IPC: Implement StaticBuffer translation for HLE services that use the HLERequestContext architecture.
The real kernel requires services to set up their static buffer targets ahead of time. This implementation does not require that and will simply create the storage for the buffers as they are processed in the incoming IPC request.

Static buffers are kept in an unordered_map keyed by their buffer id, and are written into the already-setup area of the request thread when responding an IPC request.

This fixes a regression (crash) introduced in #2992.

This PR introduces more warnings due to the [[deprecated]] attribute being added to void PushStaticBuffer(VAddr buffer_vaddr, size_t size, u8 buffer_id); and VAddr PopStaticBuffer(size_t* data_size);
2017-11-12 11:00:00 -05:00
wwylele 499508389c core: clear format warnings 2017-11-01 12:35:32 +02:00
shinyquagsire23 1ac5137655 file_sys/archive_ncch: Use AM to get title content path, add ExeFS support and support for additional content indexes 2017-10-18 21:19:40 -06:00
Huw Pascoe a13ab958cb Fixed type conversion ambiguity 2017-09-30 09:34:35 +01:00
Subv 774e7deae8 HLE/Archives: Allow multiple loaded applications to access their SelfNCCH archive independently.
The loaders now register each loaded ROM with the SelfNCCH factory, which keeps the data around for the duration of the emulation session.

When opening the SelfNCCH archive, the factory queries the current program's programid and uses that as a key to the map that contains the NCCHData structure (RomFS, Icon, Banner, etc).

3dsx files do not have a programid and will use a default of 0 for this value, thus, only 1 3dsx file with RomFS is loadable at the same time.
2017-09-25 09:45:02 -05:00
Yuri Kunde Schlesner 723dc644fa ResultVal: Remove MoveFrom()
Replace it with std::move(result_val).Unwrap(), or Foo().Unwrap() in
case you already have an rvalue.
2017-06-18 19:03:15 -07:00
Yuri Kunde Schlesner d96a9e0c11 Service: Remove unnecessary includes from service.h
This has a huge fallout in terms of needing to fix other files because
all service implementations included that file.
2017-06-06 02:57:23 -07:00
Yuri Kunde Schlesner 6354d08359 Kernel: Add a dedicated SetHleHandler method to ServerPort/ServerSession
This allows attaching a HLE handle to a ServerPort at any point after it
is created, allowing port/session creation to be generic between HLE and
regular services.
2017-06-06 02:56:32 -07:00
Yuri Kunde Schlesner e626a520ca HLE: Move SessionRequestHandler from Service:: to Kernel::
Most of the code that works with this is or will be in the kernel, so
it's a more appropriate place for it to be.
2017-06-05 23:40:11 -07:00
TheKoopaKingdom f008b22e3b Addressed Bunnei's review comments, and made some other tweaks:
- Deleted GetStatus() because it wasn't used anywhere outside of Core::System.
 - Fixed design flaw where the message bar status could be set despite the game being stopped.
2017-06-02 18:40:39 -04:00
TheKoopaKingdom 59de38b965 Switched to the ERROR_NOT_FOUND constant from errors.h. 2017-06-02 18:40:39 -04:00
TheKoopaKingdom cea19fd659 Moved whitelist checks from FS_User to the Archive_NCCH handler. 2017-06-02 18:40:27 -04:00
TheKoopaKingdom a8aef599e0 Created a whitelist of system archives to prevent false positives creating dialogs. 2017-06-02 18:28:14 -04:00
TheKoopaKingdom 37bec598ea Made some changes from review comments:
- Made LoadKernelSystemMode return a pair consisting of a system mode and a result code (Could use review).
- Deleted ErrorOpenGL error code in favor of just having ErrorVideoCore.
- Made dialog messages more clear.
- Compared archive ID in fs_user.cpp to ArchiveIdCode::NCCH as opposed to hex magic.
- Cleaned up some other stuff.
2017-06-02 18:28:14 -04:00
TheKoopaKingdom 1ecb322daa Added system for handling core errors in citra-qt. 2017-06-02 18:27:56 -04:00
Yuri Kunde Schlesner a5810d61da FS: Remove unused result definition 2017-05-24 21:06:00 -07:00
Yuri Kunde Schlesner 2cdb40d709 Kernel: Centralize error definitions in errors.h 2017-05-24 21:06:00 -07:00
Yuri Kunde Schlesner 92be29adba FileSys: Move all result description to errors.h 2017-05-24 21:06:00 -07:00
wwylele 20544977da loader: use self NCCH archive 2017-02-13 13:57:38 +02:00
Lectem 8baae9d982 IPC helpers example 2016-12-26 14:07:29 +01:00
bunnei 5ac5cbeab7 Address clang-format issues. 2016-12-21 23:48:14 -05:00
bunnei 4fc8b8229e core: Remove HLE module, consolidate code & various cleanups. 2016-12-21 23:48:13 -05:00
wwylele a7cd452ea1 FS: fix debug build from #2249 2016-12-16 00:22:36 +02:00
Yuri Kunde Schlesner 905fc92ce1 Merge pull request #2249 from Subv/sessions_v3
Kernel/IPC: Use Ports and Sessions as the fundamental building block of Inter Process Communication.
2016-12-14 20:35:33 -08:00
Subv 016307ae65 Fixed the codestyle to match our clang-format rules. 2016-12-14 12:45:36 -05:00
Subv ebbb55ec8f Moved the HLE command buffer translation task to ServerSession instead of the HLE handler superclass. 2016-12-09 12:52:12 -05:00
Subv 386112da32 Added a framework for partially handling Session disconnections.
Further implementation will happen in a future commit.

Fixes a regression.
2016-12-08 15:01:10 -05:00
Subv f9bcf89510 Use std::move where appropriate. 2016-12-08 11:06:19 -05:00
Lioncash 006e6a7f4a fs_user: Update function table
Updated based off information from 3dbrew.
2016-12-08 00:56:46 -05:00
bunnei 8d529a5cda Merge pull request #2232 from wwylele/other-save
FS: implement archives for other game save data
2016-12-07 10:17:02 -05:00
Subv 00f0c77570 Split SessionRequestHandler::HandleSyncRequest into HandleSyncRequest, TranslateRequest and HandleSyncRequestImpl.
HandleSyncRequest now takes care of calling the command buffer translate function before actually invoking the command handler for HLE services.
2016-12-05 12:05:00 -05:00
Subv 2eceee3a4c Fixed the rebase mistakes. 2016-11-30 23:28:31 -05:00