Add srvGetServiceHandleDirect()

This commit is contained in:
fincs 2015-09-16 23:57:28 +02:00
parent 04ed53659a
commit e409f1ea1d
2 changed files with 16 additions and 10 deletions

View File

@ -4,6 +4,7 @@ Result srvInit(void);
Result srvExit(void); Result srvExit(void);
Handle *srvGetSessionHandle(void); Handle *srvGetSessionHandle(void);
Result srvRegisterClient(void); Result srvRegisterClient(void);
Result srvGetServiceHandleDirect(Handle* out, const char* name);
Result srvGetServiceHandle(Handle* out, const char* name); Result srvGetServiceHandle(Handle* out, const char* name);
Result srvRegisterService(Handle* out, const char* name, int maxSessions); Result srvRegisterService(Handle* out, const char* name, int maxSessions);
Result srvUnregisterService(const char* name); Result srvUnregisterService(const char* name);

View File

@ -116,19 +116,10 @@ Result srvRegisterClient(void)
return cmdbuf[1]; return cmdbuf[1];
} }
Result srvGetServiceHandle(Handle* out, const char* name) Result srvGetServiceHandleDirect(Handle* out, const char* name)
{ {
Result rc = 0; Result rc = 0;
/* Look in service-list given to us by loader. If we find find a match,
we return it. */
Handle h = __get_handle_from_list(name);
if(h != 0) {
return svcDuplicateHandle(out, h);
}
/* Normal request to service manager. */
u32* cmdbuf = getThreadCommandBuffer(); u32* cmdbuf = getThreadCommandBuffer();
cmdbuf[0] = 0x50100; cmdbuf[0] = 0x50100;
strcpy((char*) &cmdbuf[1], name); strcpy((char*) &cmdbuf[1], name);
@ -141,6 +132,20 @@ Result srvGetServiceHandle(Handle* out, const char* name)
return cmdbuf[1]; return cmdbuf[1];
} }
Result srvGetServiceHandle(Handle* out, const char* name)
{
/* Look in service-list given to us by loader. If we find find a match,
we return it. */
Handle h = __get_handle_from_list(name);
if(h != 0) {
return svcDuplicateHandle(out, h);
}
/* Normal request to service manager. */
return srvGetServiceHandleDirect(out, name);
}
Result srvRegisterService(Handle* out, const char* name, int maxSessions) Result srvRegisterService(Handle* out, const char* name, int maxSessions)
{ {
u32* cmdbuf = getThreadCommandBuffer(); u32* cmdbuf = getThreadCommandBuffer();