Commit Graph

109 Commits

Author SHA1 Message Date
Steveice10
16b26e73c9 HLE: Add pxi:dev stub. 2017-12-09 14:45:56 -08:00
Subv
30bffb1964 HLE/Services: Convert err:f to the new ServiceFramework. 2017-12-04 14:03:11 -05:00
bunnei
b2a99043e3
Merge pull request #2968 from Subv/hle_thread_pause
Kernel/Threads: Add a new thread status that will allow using a Kernel::Event to put a guest thread to sleep inside an HLE handler until said event is signaled
2017-11-29 10:45:48 -05:00
Subv
95df4e674a Services/AC: Converted the ac:i and ac:u services to the new service framework. 2017-10-27 19:39:19 -05:00
Subv
f9d55ecf3f HLE: Implemented SleepClientThread and ContinueClientThread functions to make performing async tasks on the host while in an HLE service function easier.
An HLE service function that wants to perform an async operation should put the caller guest thread to sleep using SleepClientThread, passing in a callback to execute when the thread is resumed.
SleepClientThread returns a ThreadContinuationToken that should be stored and used with ContinueClientThread to resume the guest thread when the host async operation completes.
2017-09-30 11:16:55 -05:00
Subv
3d86e3afc4 Services/NS: Port ns:s to the new service framework. 2017-09-16 10:52:45 -05:00
Yuri Kunde Schlesner
b21dfbb295 Merge pull request #2790 from yuriks/remove-movefrom
Remove ResultVal::MoveFrom
2017-06-20 22:04:09 -07: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
0dfafdbe59 Kernel/IPC: Make HLERequestContext usable from outside kernel 2017-06-18 16:05:12 -07:00
Yuri Kunde Schlesner
8cb65fe65a Kernel: Basic support for IPC translation for HLE services 2017-06-11 13:10:21 -07:00
Yuri Kunde Schlesner
20e5abb308 ServiceFramework: Use separate copy of command buffer
Copy the IPC command buffer to/from the request context before/after the
handler is invoked. This is part of a move away from using global data
for handling IPC requests.
2017-06-11 13:07:33 -07:00
Yuri Kunde Schlesner
6f368abe13 Service/sm: Convert 'srv:' to ServiceFramework 2017-06-08 20:59:19 -07:00
Yuri Kunde Schlesner
c92a8a6154 Service: Remove a few redundant namespace qualifiers 2017-06-08 00:11:37 -07:00
Yuri Kunde Schlesner
84c497292a Service: Add new ServiceFramework framework for writing HLE services
The old "Interface" class had a few problems such as using free
functions (Which didn't allow you to write the service handler as if it
were a regular class.) which weren't very extensible. (Only received one
parameter with a pointer to the Interface object.)

The new ServiceFramework aims to solve these problems by working with
member functions and passing a generic context struct as parameter. This
struct can be extended in the future without having to update all
existing service implementations.
2017-06-08 00:11:37 -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
23ec6b3d8f Service: Make service registration part of the sm implementation
Also enhances the GetServiceHandle implementation to be more accurate.
2017-06-06 02:57:04 -07:00
Yuri Kunde Schlesner
1eee09f364 Service: Move SRV interface to a new sm/ subdirectory
This will contain the implementation of the sm (Service Manager) system
module.
2017-06-06 02:57:04 -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
bunnei
597a7c615c Merge pull request #2308 from mailwl/ac-i
Service/AC: add ac:i service
2017-01-12 10:12:46 -05:00
mailwl
f2985f7080 Service/NFC: stub GetTagInRangeEvent
Fix Fatal Error in Mini-Mario & Friends - amiibo Challenge
2016-12-30 09:40:54 +03:00
mailwl
c6f4b93f2e Service/AC: add ac:i service 2016-12-30 09:20:11 +03:00
mailwl
069a88dad7 Service/NWM: add nwm services 2016-12-22 22:51:27 +03:00
bunnei
bdb6956879 Merge pull request #2314 from mailwl/account
Service/ACT: move ACT services to folder
2016-12-15 13:51:29 -05: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
mailwl
5dea1faedd Service/ACT: move ACT services to folder 2016-12-14 09:05:46 +03:00
Lioncash
963aedd8cc Add all services to the Service namespace
Previously there was a split where some of the services were in the
Service namespace and others were not.
2016-12-11 00:07:27 +00: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
deb83c9fc5 Kernel/IPC: Small codestyle cleanup 2016-12-09 12:39: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
2061d2014d service: Add mvd and qtm services
Adds the two New3DS-only modules.

3dbrew was used for command information.
2016-12-08 04:34:03 -05:00
Lioncash
e8a960f6a1 service: Add nfc services
3dbrew was used for the command information.
2016-12-08 03:24:41 -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
dd8887c8cf KServerPorts now have an HLE handler "template", which is inherited by all ServerSessions created from it. 2016-12-05 11:02:08 -05:00
Subv
009b15b3aa A bit of a redesign.
Sessions and Ports are now detached from each other.
HLE services are handled by means of a SessionRequestHandler class, Interface now inherits from this class.
The File and Directory classes are no longer kernel objects, but SessionRequestHandlers instead, bound to a ServerSession when requested.
File::OpenLinkFile now creates a new session pair and binds the File instance to it.
2016-11-30 23:12:35 -05:00
Subv
c5e7e0fa26 IPC/HLE: Associate the ClientSessions with their parent port's HLE interface if it exists.
Pass the triggering ServerSession to the HLE command handler to differentiate which session caused the request.
2016-11-30 23:04:00 -05:00
Subv
c19afd2118 Kernel/HLE: Service::Interface no longer inherits from any Kernel object, and is now its own standalone class.
Interface is now used by aggregation in ClientPort, to forward service commands to their HLE implementation if needed.
2016-11-30 23:03:59 -05:00
Subv
073653e858 Kernel/IPC: Use Ports and Sessions as the fundamental building block of Inter Process Communication.
All handles obtained via srv::GetServiceHandle or svcConnectToPort are references to ClientSessions.
Service modules will wait on the counterpart of those ClientSessions (Called ServerSessions) using svcReplyAndReceive or svcWaitSynchronization[1|N], and will be awoken when a SyncRequest is performed.

HLE Interfaces are now ClientPorts which override the HandleSyncRequest virtual member function to perform command handling immediately.
2016-11-30 23:02:05 -05:00
Yuri Kunde Schlesner
84fbbe2629 Use negative priorities to avoid special-casing the self-include 2016-09-21 00:15:56 -07:00
Emmanuel Gil Peyrot
ebdae19fd2 Remove empty newlines in #include blocks.
This makes clang-format useful on those.

Also add a bunch of forgotten transitive includes, which otherwise
prevented compilation.
2016-09-21 11:15:47 +09:00
Emmanuel Gil Peyrot
dc8479928c Sources: Run clang-format on everything. 2016-09-18 09:38:01 +09:00
wwylele
1c9612b791 LDR: Implement CRO 2016-08-27 21:38:06 +08:00
Lioncash
64b6a7c006 service: Add other DLP services
Specifically, dlp::CLNT and dlp::FKCL

Moves them to their own folder like with other services.
2016-06-04 19:43:33 -04:00
András Domonkos
960297e577 Update ACT:U and create ACT:A (#1809)
* Update ACT_U
* Create act_a.h
* Create act_a.cpp
* Add service ACT:A
* Add ACT:A source and header
* Fix wrong header
2016-05-17 21:28:25 -04:00
bunnei
dccadce074 Merge pull request #1435 from mailwl/frd_u
frd:u: Initial stub some functions
2016-04-05 23:04:35 -04:00
exhalatio
bbdfbe44e6 Dummy implementation dlp:SRVR Service. 2016-04-03 06:05:20 +09:00
mailwl
81d988b022 frd:u: Initial stub some functions 2016-03-27 10:08:04 +03:00
JamePeng
dd0b8047eb Reorganize the ndm service path for dummy implement function
SuspendDaemons , ResumeDaemons , OverrideDefaultDaemons

The NDM file move to /core/hle/service/ndm/ now!
2016-03-15 00:42:47 +08:00