mirror of
https://github.com/switchbrew/libnx.git
synced 2025-07-04 18:42:15 +02:00
Compare commits
No commits in common. "cb6f366a2a21e15945e3523909e784500e1e8191" and "4fcdb6eb34b20f1f65eb9791fe513a710a001bea" have entirely different histories.
cb6f366a2a
...
4fcdb6eb34
@ -473,23 +473,14 @@ NX_INLINE Result serviceDispatchImpl(
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define serviceMacroDetectIsSameType(a, b) __builtin_types_compatible_p(typeof(a), typeof(b))
|
|
||||||
#define serviceMacroDetectIsPointerOrArray(p) (__builtin_classify_type(p) == 5)
|
|
||||||
#define serviceMacroDecay(p) (&*__builtin_choose_expr(serviceMacroDetectIsPointerOrArray(p), p, NULL))
|
|
||||||
#define serviceMacroDetectIsPointer(p) serviceMacroDetectIsSameType(p, serviceMacroDecay(p))
|
|
||||||
|
|
||||||
#define serviceDispatch(_s,_rid,...) \
|
#define serviceDispatch(_s,_rid,...) \
|
||||||
serviceDispatchImpl((_s),(_rid),NULL,0,NULL,0,(SfDispatchParams){ __VA_ARGS__ })
|
serviceDispatchImpl((_s),(_rid),NULL,0,NULL,0,(SfDispatchParams){ __VA_ARGS__ })
|
||||||
|
|
||||||
#define serviceDispatchIn(_s,_rid,_in,...) \
|
#define serviceDispatchIn(_s,_rid,_in,...) \
|
||||||
({ _Static_assert(!(serviceMacroDetectIsPointer(_in))); \
|
serviceDispatchImpl((_s),(_rid),&(_in),sizeof(_in),NULL,0,(SfDispatchParams){ __VA_ARGS__ })
|
||||||
serviceDispatchImpl((_s),(_rid),&(_in),sizeof(_in),NULL,0,(SfDispatchParams){ __VA_ARGS__ }); })
|
|
||||||
|
|
||||||
#define serviceDispatchOut(_s,_rid,_out,...) \
|
#define serviceDispatchOut(_s,_rid,_out,...) \
|
||||||
({ _Static_assert(!(serviceMacroDetectIsPointer(_out))); \
|
serviceDispatchImpl((_s),(_rid),NULL,0,&(_out),sizeof(_out),(SfDispatchParams){ __VA_ARGS__ })
|
||||||
serviceDispatchImpl((_s),(_rid),NULL,0,&(_out),sizeof(_out),(SfDispatchParams){ __VA_ARGS__ }); })
|
|
||||||
|
|
||||||
#define serviceDispatchInOut(_s,_rid,_in,_out,...) \
|
#define serviceDispatchInOut(_s,_rid,_in,_out,...) \
|
||||||
({ _Static_assert(!(serviceMacroDetectIsPointer(_in))); \
|
serviceDispatchImpl((_s),(_rid),&(_in),sizeof(_in),&(_out),sizeof(_out),(SfDispatchParams){ __VA_ARGS__ })
|
||||||
_Static_assert(!(serviceMacroDetectIsPointer(_out))); \
|
|
||||||
serviceDispatchImpl((_s),(_rid),&(_in),sizeof(_in),&(_out),sizeof(_out),(SfDispatchParams){ __VA_ARGS__ }); })
|
|
||||||
|
@ -109,7 +109,7 @@ Result capscGenerateApplicationAlbumEntry(CapsApplicationAlbumEntry *appEntry, c
|
|||||||
Result capscSaveAlbumScreenShotFile(const CapsAlbumFileId *file_id, const void* buffer, u64 buffer_size) {
|
Result capscSaveAlbumScreenShotFile(const CapsAlbumFileId *file_id, const void* buffer, u64 buffer_size) {
|
||||||
if (hosversionBefore(2,0,0) || hosversionAtLeast(4,0,0))
|
if (hosversionBefore(2,0,0) || hosversionAtLeast(4,0,0))
|
||||||
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
return MAKERESULT(Module_Libnx, LibnxError_IncompatSysVer);
|
||||||
return serviceDispatchIn(&g_capscSrv, 2201, *file_id,
|
return serviceDispatchIn(&g_capscSrv, 2201, file_id,
|
||||||
.buffer_attrs = { SfBufferAttr_HipcMapTransferAllowsNonSecure | SfBufferAttr_HipcMapAlias | SfBufferAttr_In },
|
.buffer_attrs = { SfBufferAttr_HipcMapTransferAllowsNonSecure | SfBufferAttr_HipcMapAlias | SfBufferAttr_In },
|
||||||
.buffers = { { buffer, buffer_size }, },
|
.buffers = { { buffer, buffer_size }, },
|
||||||
);
|
);
|
||||||
|
@ -60,17 +60,13 @@ NX_INLINE Result _fsObjectDispatchImpl(
|
|||||||
_fsObjectDispatchImpl((_s),(_rid),NULL,0,NULL,0,(SfDispatchParams){ __VA_ARGS__ })
|
_fsObjectDispatchImpl((_s),(_rid),NULL,0,NULL,0,(SfDispatchParams){ __VA_ARGS__ })
|
||||||
|
|
||||||
#define _fsObjectDispatchIn(_s,_rid,_in,...) \
|
#define _fsObjectDispatchIn(_s,_rid,_in,...) \
|
||||||
({ _Static_assert(!(serviceMacroDetectIsPointer(_in))); \
|
_fsObjectDispatchImpl((_s),(_rid),&(_in),sizeof(_in),NULL,0,(SfDispatchParams){ __VA_ARGS__ })
|
||||||
_fsObjectDispatchImpl((_s),(_rid),&(_in),sizeof(_in),NULL,0,(SfDispatchParams){ __VA_ARGS__ }); })
|
|
||||||
|
|
||||||
#define _fsObjectDispatchOut(_s,_rid,_out,...) \
|
#define _fsObjectDispatchOut(_s,_rid,_out,...) \
|
||||||
({ _Static_assert(!(serviceMacroDetectIsPointer(_out))); \
|
_fsObjectDispatchImpl((_s),(_rid),NULL,0,&(_out),sizeof(_out),(SfDispatchParams){ __VA_ARGS__ })
|
||||||
_fsObjectDispatchImpl((_s),(_rid),NULL,0,&(_out),sizeof(_out),(SfDispatchParams){ __VA_ARGS__ }); })
|
|
||||||
|
|
||||||
#define _fsObjectDispatchInOut(_s,_rid,_in,_out,...) \
|
#define _fsObjectDispatchInOut(_s,_rid,_in,_out,...) \
|
||||||
({ _Static_assert(!(serviceMacroDetectIsPointer(_in))); \
|
_fsObjectDispatchImpl((_s),(_rid),&(_in),sizeof(_in),&(_out),sizeof(_out),(SfDispatchParams){ __VA_ARGS__ })
|
||||||
_Static_assert(!(serviceMacroDetectIsPointer(_out))); \
|
|
||||||
_fsObjectDispatchImpl((_s),(_rid),&(_in),sizeof(_in),&(_out),sizeof(_out),(SfDispatchParams){ __VA_ARGS__ }); })
|
|
||||||
|
|
||||||
NX_GENERATE_SERVICE_GUARD(fs);
|
NX_GENERATE_SERVICE_GUARD(fs);
|
||||||
|
|
||||||
|
@ -1503,7 +1503,7 @@ Result nsCompareApplicationDeliveryInfo(const NsApplicationDeliveryInfo *info0,
|
|||||||
Service srv={0};
|
Service srv={0};
|
||||||
Result rc = nsGetApplicationManagerInterface(&srv);
|
Result rc = nsGetApplicationManagerInterface(&srv);
|
||||||
|
|
||||||
if (R_SUCCEEDED(rc)) rc = serviceDispatchOut(&srv, 2005, *out,
|
if (R_SUCCEEDED(rc)) rc = serviceDispatchOut(&srv, 2005, out,
|
||||||
.buffer_attrs = {
|
.buffer_attrs = {
|
||||||
SfBufferAttr_HipcMapAlias | SfBufferAttr_In,
|
SfBufferAttr_HipcMapAlias | SfBufferAttr_In,
|
||||||
SfBufferAttr_HipcMapAlias | SfBufferAttr_In,
|
SfBufferAttr_HipcMapAlias | SfBufferAttr_In,
|
||||||
@ -1710,7 +1710,7 @@ Result nsCompareSystemDeliveryInfo(const NsSystemDeliveryInfo *info0, const NsSy
|
|||||||
Service srv={0};
|
Service srv={0};
|
||||||
Result rc = nsGetApplicationManagerInterface(&srv);
|
Result rc = nsGetApplicationManagerInterface(&srv);
|
||||||
|
|
||||||
if (R_SUCCEEDED(rc)) rc = serviceDispatchOut(&srv, 2015, *out,
|
if (R_SUCCEEDED(rc)) rc = serviceDispatchOut(&srv, 2015, out,
|
||||||
.buffer_attrs = {
|
.buffer_attrs = {
|
||||||
SfBufferAttr_HipcMapAlias | SfBufferAttr_In,
|
SfBufferAttr_HipcMapAlias | SfBufferAttr_In,
|
||||||
SfBufferAttr_HipcMapAlias | SfBufferAttr_In,
|
SfBufferAttr_HipcMapAlias | SfBufferAttr_In,
|
||||||
|
Loading…
Reference in New Issue
Block a user