This source file includes following definitions.
- is_binderfs_device
- binderfs_create_file
- binderfs_remove_file
- init_binderfs
1
2
3 #ifndef _LINUX_BINDER_INTERNAL_H
4 #define _LINUX_BINDER_INTERNAL_H
5
6 #include <linux/export.h>
7 #include <linux/fs.h>
8 #include <linux/list.h>
9 #include <linux/miscdevice.h>
10 #include <linux/mutex.h>
11 #include <linux/refcount.h>
12 #include <linux/stddef.h>
13 #include <linux/types.h>
14 #include <linux/uidgid.h>
15
16 struct binder_context {
17 struct binder_node *binder_context_mgr_node;
18 struct mutex context_mgr_node_lock;
19 kuid_t binder_context_mgr_uid;
20 const char *name;
21 };
22
23
24
25
26
27
28
29
30
31
32 struct binder_device {
33 struct hlist_node hlist;
34 struct miscdevice miscdev;
35 struct binder_context context;
36 struct inode *binderfs_inode;
37 refcount_t ref;
38 };
39
40
41
42
43
44
45 struct binderfs_mount_opts {
46 int max;
47 int stats_mode;
48 };
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 struct binderfs_info {
65 struct ipc_namespace *ipc_ns;
66 struct dentry *control_dentry;
67 kuid_t root_uid;
68 kgid_t root_gid;
69 struct binderfs_mount_opts mount_opts;
70 int device_count;
71 struct dentry *proc_log_dir;
72 };
73
74 extern const struct file_operations binder_fops;
75
76 extern char *binder_devices_param;
77
78 #ifdef CONFIG_ANDROID_BINDERFS
79 extern bool is_binderfs_device(const struct inode *inode);
80 extern struct dentry *binderfs_create_file(struct dentry *dir, const char *name,
81 const struct file_operations *fops,
82 void *data);
83 extern void binderfs_remove_file(struct dentry *dentry);
84 #else
85 static inline bool is_binderfs_device(const struct inode *inode)
86 {
87 return false;
88 }
89 static inline struct dentry *binderfs_create_file(struct dentry *dir,
90 const char *name,
91 const struct file_operations *fops,
92 void *data)
93 {
94 return NULL;
95 }
96 static inline void binderfs_remove_file(struct dentry *dentry) {}
97 #endif
98
99 #ifdef CONFIG_ANDROID_BINDERFS
100 extern int __init init_binderfs(void);
101 #else
102 static inline int __init init_binderfs(void)
103 {
104 return 0;
105 }
106 #endif
107
108 int binder_stats_show(struct seq_file *m, void *unused);
109 DEFINE_SHOW_ATTRIBUTE(binder_stats);
110
111 int binder_state_show(struct seq_file *m, void *unused);
112 DEFINE_SHOW_ATTRIBUTE(binder_state);
113
114 int binder_transactions_show(struct seq_file *m, void *unused);
115 DEFINE_SHOW_ATTRIBUTE(binder_transactions);
116
117 int binder_transaction_log_show(struct seq_file *m, void *unused);
118 DEFINE_SHOW_ATTRIBUTE(binder_transaction_log);
119
120 struct binder_transaction_log_entry {
121 int debug_id;
122 int debug_id_done;
123 int call_type;
124 int from_proc;
125 int from_thread;
126 int target_handle;
127 int to_proc;
128 int to_thread;
129 int to_node;
130 int data_size;
131 int offsets_size;
132 int return_error_line;
133 uint32_t return_error;
134 uint32_t return_error_param;
135 char context_name[BINDERFS_MAX_NAME + 1];
136 };
137
138 struct binder_transaction_log {
139 atomic_t cur;
140 bool full;
141 struct binder_transaction_log_entry entry[32];
142 };
143
144 extern struct binder_transaction_log binder_transaction_log;
145 extern struct binder_transaction_log binder_transaction_log_failed;
146 #endif