1/* SPDX-License-Identifier: GPL-2.0 */
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/stddef.h>
12#include <linux/types.h>
13#include <linux/uidgid.h>
14
15struct binder_context {
16 struct binder_node *binder_context_mgr_node;
17 struct mutex context_mgr_node_lock;
18 kuid_t binder_context_mgr_uid;
19 const char *name;
20};
21
22/**
23 * struct binder_device - information about a binder device node
24 * @hlist: list of binder devices (only used for devices requested via
25 * CONFIG_ANDROID_BINDER_DEVICES)
26 * @miscdev: information about a binder character device node
27 * @context: binder context information
28 * @binderfs_inode: This is the inode of the root dentry of the super block
29 * belonging to a binderfs mount.
30 */
31struct binder_device {
32 struct hlist_node hlist;
33 struct miscdevice miscdev;
34 struct binder_context context;
35 struct inode *binderfs_inode;
36};
37
38extern const struct file_operations binder_fops;
39
40#ifdef CONFIG_ANDROID_BINDERFS
41extern bool is_binderfs_device(const struct inode *inode);
42#else
43static inline bool is_binderfs_device(const struct inode *inode)
44{
45 return false;
46}
47#endif
48
49#ifdef CONFIG_ANDROID_BINDERFS
50extern int __init init_binderfs(void);
51#else
52static inline int __init init_binderfs(void)
53{
54 return 0;
55}
56#endif
57
58#endif /* _LINUX_BINDER_INTERNAL_H */
59