10 #include "../kernel/svc.h" 11 #include "../kernel/ipc.h" 111 s->handle = parent->handle;
113 s->object_id = object_id;
static bool serviceIsDomainSubservice(Service *s)
Returns whether a service is a domain subservice.
Definition: sm.h:61
static bool serviceIsOverride(Service *s)
Returns whether a service is overriden in the homebrew environment.
Definition: sm.h:34
Normal service.
Definition: sm.h:16
Domain.
Definition: sm.h:17
void smAddOverrideHandle(u64 name, Handle handle)
Overrides a service with a custom IPC service handle.
static bool serviceIsActive(Service *s)
Returns whether a service has been initialized.
Definition: sm.h:43
static Result serviceConvertToDomain(Service *s)
Converts a regular service to a domain.
Definition: sm.h:121
static Result ipcCloseObjectById(Handle session, u32 object_id)
Closes a domain object by ID.
Definition: ipc.h:634
u32 Handle
Kernel object handle.
Definition: types.h:45
static void serviceClose(Service *s)
Closes a service.
Definition: sm.h:132
Service object structure.
Definition: sm.h:23
u32 Result
Function error code result type.
Definition: types.h:46
Result smUnregisterService(const char *name)
Unregisters a previously registered service in SM.
static Result ipcCloseSession(Handle session)
Closes the IPC session with proper clean up.
Definition: ipc.h:515
Domain subservice;.
Definition: sm.h:18
uint64_t u64
64-bit unsigned integer.
Definition: types.h:24
#define IPC_INVALID_OBJECT_ID
IPC invalid object ID.
Definition: ipc.h:18
uint32_t u32
32-bit unsigned integer.
Definition: types.h:23
static void serviceCreate(Service *s, Handle h)
Creates a service object from an IPC session handle.
Definition: sm.h:98
void smExit(void)
Uninitializes SM.
Uninitialized service.
Definition: sm.h:15
static Result ipcDispatch(Handle session)
Dispatches an IPC request.
Definition: ipc.h:331
Result smInitialize(void)
Initializes SM.
ServiceType
Service type.
Definition: sm.h:14
Service overriden in the homebrew environment.
Definition: sm.h:19
Result smGetService(Service *service_out, const char *name)
Requests a service from SM.
static void serviceCreateDomainSubservice(Service *s, Service *parent, u32 object_id)
Creates a domain subservice object from a parent service.
Definition: sm.h:110
u64 smEncodeName(const char *name)
Encodes a service name as a 64-bit integer.
static Result serviceCloseObjectById(Service *s, u32 object_id)
Closes a domain object by ID.
Definition: sm.h:80
#define R_SUCCEEDED(res)
Checks whether a result code indicates success.
Definition: result.h:10
Result smGetServiceOriginal(Handle *handle_out, u64 name)
Requests a service from SM, as an IPC session handle directly.
static Result serviceIpcDispatch(Service *s)
Dispatches an IPC request to a service.
Definition: sm.h:89
Handle smGetServiceOverride(u64 name)
Retrieves an overriden service in the homebrew environment.
Result smRegisterService(Handle *handle_out, const char *name, bool is_light, int max_sessions)
Creates and registers a new service within SM.
Result svcCloseHandle(Handle handle)
Closes a handle, decrementing the reference count of the corresponding kernel object.
static u32 serviceGetObjectId(Service *s)
For a domain/domain subservice, return the associated object ID.
Definition: sm.h:70
bool smHasInitialized(void)
Check whether SM is initialized.
static Result ipcConvertSessionToDomain(Handle session, u32 *object_id_out)
Converts an IPC session handle into a domain.
Definition: ipc.h:531
static bool serviceIsDomain(Service *s)
Returns whether a service is a domain.
Definition: sm.h:52