xref: /openbmc/linux/drivers/android/binder_internal.h (revision 5b9633af298bfd1de650f6774d3fada546543101)
13ad20fe3SChristian Brauner /* SPDX-License-Identifier: GPL-2.0 */
23ad20fe3SChristian Brauner 
33ad20fe3SChristian Brauner #ifndef _LINUX_BINDER_INTERNAL_H
43ad20fe3SChristian Brauner #define _LINUX_BINDER_INTERNAL_H
53ad20fe3SChristian Brauner 
63ad20fe3SChristian Brauner #include <linux/export.h>
73ad20fe3SChristian Brauner #include <linux/fs.h>
83ad20fe3SChristian Brauner #include <linux/list.h>
93ad20fe3SChristian Brauner #include <linux/miscdevice.h>
103ad20fe3SChristian Brauner #include <linux/mutex.h>
113ad20fe3SChristian Brauner #include <linux/stddef.h>
123ad20fe3SChristian Brauner #include <linux/types.h>
133ad20fe3SChristian Brauner #include <linux/uidgid.h>
143ad20fe3SChristian Brauner 
153ad20fe3SChristian Brauner struct binder_context {
163ad20fe3SChristian Brauner 	struct binder_node *binder_context_mgr_node;
173ad20fe3SChristian Brauner 	struct mutex context_mgr_node_lock;
183ad20fe3SChristian Brauner 	kuid_t binder_context_mgr_uid;
193ad20fe3SChristian Brauner 	const char *name;
203ad20fe3SChristian Brauner };
213ad20fe3SChristian Brauner 
223ad20fe3SChristian Brauner /**
233ad20fe3SChristian Brauner  * struct binder_device - information about a binder device node
243ad20fe3SChristian Brauner  * @hlist:          list of binder devices (only used for devices requested via
253ad20fe3SChristian Brauner  *                  CONFIG_ANDROID_BINDER_DEVICES)
263ad20fe3SChristian Brauner  * @miscdev:        information about a binder character device node
273ad20fe3SChristian Brauner  * @context:        binder context information
283ad20fe3SChristian Brauner  * @binderfs_inode: This is the inode of the root dentry of the super block
293ad20fe3SChristian Brauner  *                  belonging to a binderfs mount.
303ad20fe3SChristian Brauner  */
313ad20fe3SChristian Brauner struct binder_device {
323ad20fe3SChristian Brauner 	struct hlist_node hlist;
333ad20fe3SChristian Brauner 	struct miscdevice miscdev;
343ad20fe3SChristian Brauner 	struct binder_context context;
353ad20fe3SChristian Brauner 	struct inode *binderfs_inode;
363ad20fe3SChristian Brauner };
373ad20fe3SChristian Brauner 
383ad20fe3SChristian Brauner extern const struct file_operations binder_fops;
393ad20fe3SChristian Brauner 
403ad20fe3SChristian Brauner #ifdef CONFIG_ANDROID_BINDERFS
413ad20fe3SChristian Brauner extern bool is_binderfs_device(const struct inode *inode);
423ad20fe3SChristian Brauner #else
433ad20fe3SChristian Brauner static inline bool is_binderfs_device(const struct inode *inode)
443ad20fe3SChristian Brauner {
453ad20fe3SChristian Brauner 	return false;
463ad20fe3SChristian Brauner }
473ad20fe3SChristian Brauner #endif
483ad20fe3SChristian Brauner 
49*5b9633afSChristian Brauner #ifdef CONFIG_ANDROID_BINDERFS
50*5b9633afSChristian Brauner extern int __init init_binderfs(void);
51*5b9633afSChristian Brauner #else
52*5b9633afSChristian Brauner static inline int __init init_binderfs(void)
53*5b9633afSChristian Brauner {
54*5b9633afSChristian Brauner 	return 0;
55*5b9633afSChristian Brauner }
56*5b9633afSChristian Brauner #endif
57*5b9633afSChristian Brauner 
583ad20fe3SChristian Brauner #endif /* _LINUX_BINDER_INTERNAL_H */
59