libnx v4.9.0
Loading...
Searching...
No Matches
binder.h
1#pragma once
2#include "../types.h"
3#include "../kernel/event.h"
4#include "../sf/service.h"
5
6#define BINDER_FIRST_CALL_TRANSACTION 0x1
7
8typedef struct {
9 bool created;
10 bool initialized;
11 s32 id;
12 size_t dummy;
13 Service* relay;
14} Binder;
15
16// Note: binderClose will not close the session_handle provided to binderCreate.
17void binderCreate(Binder* b, s32 id);
18void binderClose(Binder* b);
19
20Result binderInitSession(Binder* b, Service* relay);
21
22Result binderTransactParcel(
23 Binder* b, u32 code,
24 void* parcel_data, size_t parcel_data_size,
25 void* parcel_reply, size_t parcel_reply_size,
26 u32 flags);
27
28Result binderConvertErrorCode(s32 code);
29
30Result binderAdjustRefcount(Binder* b, s32 addval, s32 type);
31Result binderGetNativeHandle(Binder* b, u32 unk0, Event *event_out);
32
33static inline Result binderIncreaseWeakRef(Binder* b)
34{
35 return binderAdjustRefcount(b, 1, 0);
36}
37
38static inline Result binderDecreaseWeakRef(Binder* b)
39{
40 return binderAdjustRefcount(b, -1, 0);
41}
42
43static inline Result binderIncreaseStrongRef(Binder* b)
44{
45 return binderAdjustRefcount(b, 1, 1);
46}
47
48static inline Result binderDecreaseStrongRef(Binder* b)
49{
50 return binderAdjustRefcount(b, -1, 1);
51}
Definition binder.h:8
Kernel-mode event structure.
Definition event.h:13
Service object structure.
Definition service.h:14
u32 Result
Function error code result type.
Definition types.h:44
int32_t s32
32-bit signed integer.
Definition types.h:27
uint32_t u32
32-bit unsigned integer.
Definition types.h:21