ldr: update SetProgramArguments for 11.0.0 abi change (#507)

This commit is contained in:
SciresM 2020-12-01 03:01:33 -08:00 committed by GitHub
parent e5ae43f4c2
commit 8ce231e7c9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -24,7 +24,7 @@ LDR_GENERATE_SERVICE_INIT(Shell, shel);
LDR_GENERATE_SERVICE_INIT(Dmnt, dmnt); LDR_GENERATE_SERVICE_INIT(Dmnt, dmnt);
LDR_GENERATE_SERVICE_INIT(Pm, pm); LDR_GENERATE_SERVICE_INIT(Pm, pm);
static Result _ldrSetProgramArguments(Service* srv, u64 program_id, const void *args, size_t args_size) { static Result _ldrSetProgramArgumentsDeprecated(Service* srv, u64 program_id, const void *args, size_t args_size) {
const struct { const struct {
u32 args_size; u32 args_size;
u32 pad; u32 pad;
@ -37,6 +37,21 @@ static Result _ldrSetProgramArguments(Service* srv, u64 program_id, const void *
); );
} }
static Result _ldrSetProgramArgumentsModern(Service* srv, u64 program_id, const void *args, size_t args_size) {
return serviceDispatchIn(srv, 0, program_id,
.buffer_attrs = { SfBufferAttr_In | SfBufferAttr_HipcPointer },
.buffers = { { args, args_size } },
);
}
static Result _ldrSetProgramArguments(Service* srv, u64 program_id, const void *args, size_t args_size) {
if (hosversionAtLeast(11,0,0)) {
return _ldrSetProgramArgumentsModern(srv, program_id, args, args_size);
} else {
return _ldrSetProgramArgumentsDeprecated(srv, program_id, args, args_size);
}
}
static Result _ldrFlushArguments(Service* srv) { static Result _ldrFlushArguments(Service* srv) {
return serviceDispatch(srv, 1); return serviceDispatch(srv, 1);
} }