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