typedef unsigned char undefined; typedef unsigned char bool; typedef unsigned char byte; typedef unsigned char dwfenc; typedef unsigned int dword; typedef long long longlong; typedef unsigned long qword; typedef unsigned char uchar; typedef unsigned int uint; typedef unsigned long ulong; typedef unsigned long long ulonglong; typedef unsigned char undefined1; typedef unsigned int undefined4; typedef unsigned long undefined8; typedef unsigned short ushort; typedef unsigned short word; typedef ulong size_t; typedef ulong sizetype; typedef bool _Bool; typedef struct ucounts ucounts, *Pucounts; typedef struct hlist_node hlist_node, *Phlist_node; typedef struct user_namespace user_namespace, *Puser_namespace; typedef struct kuid_t kuid_t, *Pkuid_t; typedef struct atomic_t atomic_t, *Patomic_t; typedef struct uid_gid_map uid_gid_map, *Puid_gid_map; typedef struct kgid_t kgid_t, *Pkgid_t; typedef struct ns_common ns_common, *Pns_common; typedef struct work_struct work_struct, *Pwork_struct; typedef struct ctl_table_set ctl_table_set, *Pctl_table_set; typedef struct ctl_table_header ctl_table_header, *Pctl_table_header; typedef ulonglong __u64; typedef __u64 u64; typedef uint __kernel_uid32_t; typedef __kernel_uid32_t uid_t; typedef uint __u32; typedef __u32 u32; typedef union anon_union.conflict42a9f_for_field_1 anon_union.conflict42a9f_for_field_1, *Panon_union.conflict42a9f_for_field_1; typedef uint __kernel_gid32_t; typedef __kernel_gid32_t gid_t; typedef struct atomic64_t atomic64_t, *Patomic64_t; typedef struct atomic64_t atomic_long_t; typedef struct proc_ns_operations proc_ns_operations, *Pproc_ns_operations; typedef struct list_head list_head, *Plist_head; typedef struct ctl_dir ctl_dir, *Pctl_dir; typedef union anon_union.conflict411bd_for_field_0 anon_union.conflict411bd_for_field_0, *Panon_union.conflict411bd_for_field_0; typedef struct completion.conflict completion.conflict, *Pcompletion.conflict; typedef struct ctl_table ctl_table, *Pctl_table; // WARNING! conflicting data type names: /DWARF/types.h/size_t - /stddef.h/size_t typedef longlong __kernel_loff_t; typedef __kernel_loff_t loff_t; typedef struct ctl_table_root ctl_table_root, *Pctl_table_root; typedef struct ctl_node ctl_node, *Pctl_node; typedef struct hlist_head hlist_head, *Phlist_head; typedef struct uid_gid_extent uid_gid_extent, *Puid_gid_extent; typedef struct anon_struct.conflict42a75 anon_struct.conflict42a75, *Panon_struct.conflict42a75; typedef struct rb_root rb_root, *Prb_root; typedef struct anon_struct.conflict4117f anon_struct.conflict4117f, *Panon_struct.conflict4117f; typedef struct callback_head callback_head, *Pcallback_head; typedef struct wait_queue_head.conflict wait_queue_head.conflict, *Pwait_queue_head.conflict; typedef struct wait_queue_head.conflict wait_queue_head_t.conflict; typedef ushort umode_t; typedef struct ctl_table_poll.conflict ctl_table_poll.conflict, *Pctl_table_poll.conflict; typedef struct rb_node rb_node, *Prb_node; typedef struct spinlock.conflict spinlock.conflict, *Pspinlock.conflict; typedef struct spinlock.conflict spinlock_t.conflict; typedef struct wait_queue_head wait_queue_head, *Pwait_queue_head; typedef struct wait_queue_head wait_queue_head_t; typedef union anon_union.conflict14099_for_field_0 anon_union.conflict14099_for_field_0, *Panon_union.conflict14099_for_field_0; typedef struct spinlock spinlock, *Pspinlock; typedef struct spinlock spinlock_t; typedef struct raw_spinlock.conflict raw_spinlock.conflict, *Praw_spinlock.conflict; typedef union anon_union.conflicte29_for_field_0 anon_union.conflicte29_for_field_0, *Panon_union.conflicte29_for_field_0; typedef struct qspinlock qspinlock, *Pqspinlock; typedef struct qspinlock arch_spinlock_t; typedef struct raw_spinlock raw_spinlock, *Praw_spinlock; typedef union anon_union.conflictd36_for_field_0 anon_union.conflictd36_for_field_0, *Panon_union.conflictd36_for_field_0; typedef struct anon_struct.conflictcf4 anon_struct.conflictcf4, *Panon_struct.conflictcf4; typedef struct anon_struct.conflictd15 anon_struct.conflictd15, *Panon_struct.conflictd15; typedef uchar __u8; typedef __u8 u8; typedef ushort __u16; typedef __u16 u16; struct list_head { struct list_head * next; struct list_head * prev; }; struct atomic64_t { long counter; }; struct work_struct { atomic_long_t data; struct list_head entry; void (* func)(struct work_struct *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct anon_struct.conflictd15 { u16 locked_pending; u16 tail; }; struct atomic_t { int counter; }; struct anon_struct.conflictcf4 { u8 locked; u8 pending; }; union anon_union.conflictd36_for_field_0 { struct atomic_t val; struct anon_struct.conflictcf4 field_1; struct anon_struct.conflictd15 field_2; }; struct hlist_node { struct hlist_node * next; struct hlist_node * * pprev; }; struct kuid_t { uid_t val; }; struct ucounts { struct hlist_node node; struct user_namespace * ns; struct kuid_t uid; int count; struct atomic_t ucount[9]; undefined field_0x44; undefined field_0x45; undefined field_0x46; undefined field_0x47; }; struct qspinlock { union anon_union.conflictd36_for_field_0 field_0; }; struct raw_spinlock.conflict { arch_spinlock_t raw_lock; uint magic; uint owner_cpu; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; void * owner; }; union anon_union.conflict14099_for_field_0 { struct raw_spinlock.conflict rlock; }; struct rb_node { ulong __rb_parent_color; struct rb_node * rb_right; struct rb_node * rb_left; }; struct ctl_node { struct rb_node node; struct ctl_table_header * header; }; struct anon_struct.conflict4117f { struct ctl_table * ctl_table; int used; int count; int nreg; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; }; struct hlist_head { struct hlist_node * first; }; struct callback_head { struct callback_head * next; void (* func)(struct callback_head *); }; union anon_union.conflict411bd_for_field_0 { struct anon_struct.conflict4117f field_0; struct callback_head rcu; }; struct ctl_table_header { union anon_union.conflict411bd_for_field_0 field_0; struct completion.conflict * unregistering; struct ctl_table * ctl_table_arg; struct ctl_table_root * root; struct ctl_table_set * set; struct ctl_dir * parent; struct ctl_node * node; struct hlist_head inodes; }; struct rb_root { struct rb_node * rb_node; }; struct ctl_dir { struct ctl_table_header header; struct rb_root root; }; struct ctl_table_set { int (* is_seen)(struct ctl_table_set *); struct ctl_dir dir; }; struct ctl_table_root { struct ctl_table_set default_set; ctl_table_set * (* lookup)(struct ctl_table_root *); void (* set_ownership)(struct ctl_table_header *, struct ctl_table *, struct kuid_t *, struct kgid_t *); int (* permissions)(struct ctl_table_header *, struct ctl_table *); }; struct uid_gid_extent { u32 first; u32 lower_first; u32 count; }; struct ns_common { atomic_long_t stashed; struct proc_ns_operations * ops; uint inum; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; }; struct anon_struct.conflict42a75 { struct uid_gid_extent * forward; struct uid_gid_extent * reverse; }; union anon_union.conflict42a9f_for_field_1 { struct uid_gid_extent extent[5]; struct anon_struct.conflict42a75 field_1; undefined1 field2[64]; // Automatically generated padding to match DWARF declared size }; struct uid_gid_map { u32 nr_extents; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; union anon_union.conflict42a9f_for_field_1 field_1; }; struct raw_spinlock { arch_spinlock_t raw_lock; }; union anon_union.conflicte29_for_field_0 { struct raw_spinlock rlock; }; struct spinlock { union anon_union.conflicte29_for_field_0 field_0; }; struct wait_queue_head { spinlock_t lock; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct list_head head; }; struct ctl_table_poll.conflict { struct atomic_t event; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; wait_queue_head_t wait; undefined field_0x20; undefined field_0x21; undefined field_0x22; undefined field_0x23; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; undefined field_0x28; undefined field_0x29; undefined field_0x2a; undefined field_0x2b; undefined field_0x2c; undefined field_0x2d; undefined field_0x2e; undefined field_0x2f; }; struct kgid_t { gid_t val; }; struct spinlock.conflict { union anon_union.conflict14099_for_field_0 field_0; }; struct wait_queue_head.conflict { spinlock_t.conflict lock; struct list_head head; }; struct completion.conflict { uint done; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; wait_queue_head_t.conflict wait; }; struct ctl_table { char * procname; void * data; int maxlen; umode_t mode; undefined field_0x16; undefined field_0x17; struct ctl_table * child; int (* proc_handler)(struct ctl_table *, int, void *, size_t *, loff_t *); struct ctl_table_poll.conflict * poll; void * extra1; void * extra2; }; struct proc_ns_operations { }; struct user_namespace { struct uid_gid_map uid_map; struct uid_gid_map gid_map; struct uid_gid_map projid_map; struct atomic_t count; undefined field_0xdc; undefined field_0xdd; undefined field_0xde; undefined field_0xdf; struct user_namespace * parent; int level; struct kuid_t owner; struct kgid_t group; undefined field_0xf4; undefined field_0xf5; undefined field_0xf6; undefined field_0xf7; struct ns_common ns; ulong flags; struct work_struct work; struct ctl_table_set set; struct ctl_table_header * sysctls; struct ucounts * ucounts; int ucount_max[9]; undefined field_0x1dc; undefined field_0x1dd; undefined field_0x1de; undefined field_0x1df; u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; typedef union anon_union.conflict42a9f anon_union.conflict42a9f, *Panon_union.conflict42a9f; union anon_union.conflict42a9f { struct uid_gid_extent extent[5]; struct anon_struct.conflict42a75 field_1; undefined1 field2[64]; // Automatically generated padding to match DWARF declared size }; typedef enum ucount_type { UCOUNT_CGROUP_NAMESPACES=6, UCOUNT_COUNTS=9, UCOUNT_INOTIFY_INSTANCES=7, UCOUNT_INOTIFY_WATCHES=8, UCOUNT_IPC_NAMESPACES=3, UCOUNT_MNT_NAMESPACES=5, UCOUNT_NET_NAMESPACES=4, UCOUNT_PID_NAMESPACES=1, UCOUNT_USER_NAMESPACES=0, UCOUNT_UTS_NAMESPACES=2 } ucount_type; typedef struct dma_map_ops dma_map_ops, *Pdma_map_ops; typedef struct device device, *Pdevice; typedef u64 dma_addr_t; typedef uint gfp_t; typedef struct vm_area_struct vm_area_struct, *Pvm_area_struct; typedef struct sg_table sg_table, *Psg_table; typedef struct page page, *Ppage; typedef enum dma_data_direction { DMA_BIDIRECTIONAL=0, DMA_FROM_DEVICE=2, DMA_NONE=3, DMA_TO_DEVICE=1 } dma_data_direction; typedef struct scatterlist scatterlist, *Pscatterlist; typedef u64 phys_addr_t; typedef struct device_private device_private, *Pdevice_private; typedef struct kobject kobject, *Pkobject; typedef struct device_type device_type, *Pdevice_type; typedef struct kobj_uevent_env kobj_uevent_env, *Pkobj_uevent_env; typedef struct mutex mutex, *Pmutex; typedef struct bus_type bus_type, *Pbus_type; typedef struct device_driver device_driver, *Pdevice_driver; typedef struct device.conflict device.conflict, *Pdevice.conflict; typedef struct pm_message pm_message, *Ppm_message; typedef struct pm_message pm_message_t; typedef struct dev_links_info dev_links_info, *Pdev_links_info; typedef struct dev_pm_info dev_pm_info, *Pdev_pm_info; typedef int __s32; typedef __s32 s32; typedef struct dev_pm_domain dev_pm_domain, *Pdev_pm_domain; // WARNING! conflicting data type names: /DWARF/types.h/bool - /bool typedef struct irq_domain irq_domain, *Pirq_domain; typedef struct dev_pin_info dev_pin_info, *Pdev_pin_info; typedef struct device_dma_parameters device_dma_parameters, *Pdevice_dma_parameters; typedef struct dma_coherent_mem dma_coherent_mem, *Pdma_coherent_mem; typedef struct cma cma, *Pcma; typedef struct removed_region removed_region, *Premoved_region; typedef struct dev_archdata dev_archdata, *Pdev_archdata; typedef struct device_node device_node, *Pdevice_node; typedef struct fwnode_handle fwnode_handle, *Pfwnode_handle; typedef u32 __kernel_dev_t; typedef __kernel_dev_t dev_t; typedef struct klist_node klist_node, *Pklist_node; typedef struct class class, *Pclass; typedef struct attribute_group attribute_group, *Pattribute_group; typedef struct attribute attribute, *Pattribute; typedef struct bin_attribute bin_attribute, *Pbin_attribute; typedef long __kernel_long_t; typedef __kernel_long_t __kernel_ssize_t; typedef __kernel_ssize_t ssize_t; typedef struct file file, *Pfile; typedef struct iommu_group iommu_group, *Piommu_group; typedef struct iommu_fwspec iommu_fwspec, *Piommu_fwspec; typedef struct mm_struct.conflict mm_struct.conflict, *Pmm_struct.conflict; typedef struct pgprot_t pgprot_t, *Ppgprot_t; typedef union anon_union.conflict5551_for_field_9 anon_union.conflict5551_for_field_9, *Panon_union.conflict5551_for_field_9; typedef struct anon_vma_for_anon_vma anon_vma_for_anon_vma, *Panon_vma_for_anon_vma; typedef struct vm_operations_struct vm_operations_struct, *Pvm_operations_struct; typedef int vm_fault_t; typedef struct vm_fault vm_fault, *Pvm_fault; typedef enum page_entry_size { PE_SIZE_PMD=1, PE_SIZE_PTE=0, PE_SIZE_PUD=2 } page_entry_size; typedef union anon_union.conflict5393_for_field_1 anon_union.conflict5393_for_field_1, *Panon_union.conflict5393_for_field_1; typedef union anon_union.conflict53c5_for_field_2 anon_union.conflict53c5_for_field_2, *Panon_union.conflict53c5_for_field_2; typedef struct mem_cgroup mem_cgroup, *Pmem_cgroup; typedef struct kset.conflict kset.conflict, *Pkset.conflict; typedef struct kobj_type kobj_type, *Pkobj_type; typedef struct kobj_ns_type_operations kobj_ns_type_operations, *Pkobj_ns_type_operations; typedef struct sock sock, *Psock; typedef struct kernfs_node kernfs_node, *Pkernfs_node; typedef struct kref kref, *Pkref; typedef struct dev_pm_ops dev_pm_ops, *Pdev_pm_ops; typedef struct optimistic_spin_queue optimistic_spin_queue, *Poptimistic_spin_queue; typedef struct bus_type.conflict bus_type.conflict, *Pbus_type.conflict; typedef struct module module, *Pmodule; typedef enum probe_type { PROBE_DEFAULT_STRATEGY=0, PROBE_FORCE_SYNCHRONOUS=2, PROBE_PREFER_ASYNCHRONOUS=1 } probe_type; typedef struct of_device_id of_device_id, *Pof_device_id; typedef struct acpi_device_id acpi_device_id, *Pacpi_device_id; typedef struct device_type.conflict device_type.conflict, *Pdevice_type.conflict; typedef struct mutex.conflict mutex.conflict, *Pmutex.conflict; typedef struct dev_pm_info.conflict dev_pm_info.conflict, *Pdev_pm_info.conflict; typedef struct class.conflict class.conflict, *Pclass.conflict; typedef struct dev_pm_ops.conflict dev_pm_ops.conflict, *Pdev_pm_ops.conflict; typedef struct driver_private driver_private, *Pdriver_private; typedef struct iommu_ops iommu_ops, *Piommu_ops; typedef struct subsys_private subsys_private, *Psubsys_private; typedef enum dl_dev_state { DL_DEV_DRIVER_BOUND=2, DL_DEV_NO_DRIVER=0, DL_DEV_PROBING=1, DL_DEV_UNBINDING=3 } dl_dev_state; typedef struct completion completion, *Pcompletion; typedef struct wakeup_source wakeup_source, *Pwakeup_source; typedef struct timer_list timer_list, *Ptimer_list; typedef struct wake_irq wake_irq, *Pwake_irq; typedef enum rpm_request { RPM_REQ_AUTOSUSPEND=3, RPM_REQ_IDLE=1, RPM_REQ_NONE=0, RPM_REQ_RESUME=4, RPM_REQ_SUSPEND=2 } rpm_request; typedef enum rpm_status { RPM_ACTIVE=0, RPM_RESUMING=1, RPM_SUSPENDED=2, RPM_SUSPENDING=3 } rpm_status; typedef struct pm_subsys_data pm_subsys_data, *Ppm_subsys_data; typedef struct dev_pm_qos dev_pm_qos, *Pdev_pm_qos; typedef struct irq_domain_ops irq_domain_ops, *Pirq_domain_ops; typedef enum irq_domain_bus_token { DOMAIN_BUS_ANY=0, DOMAIN_BUS_FSL_MC_MSI=6, DOMAIN_BUS_IPI=5, DOMAIN_BUS_NEXUS=4, DOMAIN_BUS_PCI_MSI=2, DOMAIN_BUS_PLATFORM_MSI=3, DOMAIN_BUS_WAKEUP=7, DOMAIN_BUS_WIRED=1 } irq_domain_bus_token; typedef struct irq_fwspec irq_fwspec, *Pirq_fwspec; typedef ulong irq_hw_number_t; typedef struct irq_data irq_data, *Pirq_data; typedef struct irq_domain_chip_generic irq_domain_chip_generic, *Pirq_domain_chip_generic; typedef struct radix_tree_root radix_tree_root, *Pradix_tree_root; typedef struct pinctrl pinctrl, *Ppinctrl; typedef struct pinctrl_state pinctrl_state, *Ppinctrl_state; typedef u32 phandle; typedef struct property property, *Pproperty; typedef struct fwnode_operations fwnode_operations, *Pfwnode_operations; typedef struct fwnode_reference_args fwnode_reference_args, *Pfwnode_reference_args; typedef struct fwnode_endpoint fwnode_endpoint, *Pfwnode_endpoint; typedef union anon_union.conflict7eb0_for_f_u anon_union.conflict7eb0_for_f_u, *Panon_union.conflict7eb0_for_f_u; typedef struct path path, *Ppath; typedef struct inode inode, *Pinode; typedef struct file_operations file_operations, *Pfile_operations; typedef struct kiocb kiocb, *Pkiocb; typedef struct iov_iter iov_iter, *Piov_iter; typedef struct dir_context dir_context, *Pdir_context; typedef uint __poll_t; typedef struct poll_table_struct poll_table_struct, *Ppoll_table_struct; typedef void * fl_owner_t; typedef struct file_lock file_lock, *Pfile_lock; typedef struct pipe_inode_info pipe_inode_info, *Ppipe_inode_info; typedef struct seq_file seq_file, *Pseq_file; typedef enum rw_hint { WRITE_LIFE_EXTREME=5, WRITE_LIFE_LONG=4, WRITE_LIFE_MEDIUM=3, WRITE_LIFE_NONE=1, WRITE_LIFE_NOT_SET=0, WRITE_LIFE_SHORT=2 } rw_hint; typedef uint fmode_t; typedef struct fown_struct fown_struct, *Pfown_struct; typedef struct cred cred, *Pcred; typedef struct file_ra_state file_ra_state, *Pfile_ra_state; typedef struct address_space address_space, *Paddress_space; typedef u32 errseq_t; typedef struct anon_struct.conflict16ebb_for_field_0 anon_struct.conflict16ebb_for_field_0, *Panon_struct.conflict16ebb_for_field_0; typedef u64 pteval_t; typedef struct anon_struct.conflict552e anon_struct.conflict552e, *Panon_struct.conflict552e; typedef struct pmd_t pmd_t, *Ppmd_t; typedef struct pud_t pud_t, *Ppud_t; typedef struct pte_t pte_t, *Ppte_t; typedef struct page * pgtable_t; typedef struct anon_struct.conflict4ffb anon_struct.conflict4ffb, *Panon_struct.conflict4ffb; typedef struct anon_struct.conflict51df anon_struct.conflict51df, *Panon_struct.conflict51df; typedef struct anon_struct.conflict5217 anon_struct.conflict5217, *Panon_struct.conflict5217; typedef struct anon_struct.conflict5250 anon_struct.conflict5250, *Panon_struct.conflict5250; typedef struct anon_struct.conflict529c anon_struct.conflict529c, *Panon_struct.conflict529c; typedef struct anon_struct.conflict52db anon_struct.conflict52db, *Panon_struct.conflict52db; typedef struct kset_uevent_ops.conflict kset_uevent_ops.conflict, *Pkset_uevent_ops.conflict; typedef struct sysfs_ops sysfs_ops, *Psysfs_ops; typedef enum kobj_ns_type { KOBJ_NS_TYPES=2, KOBJ_NS_TYPE_NET=1, KOBJ_NS_TYPE_NONE=0 } kobj_ns_type; typedef union anon_union.conflict9ad6_for_field_7 anon_union.conflict9ad6_for_field_7, *Panon_union.conflict9ad6_for_field_7; typedef union kernfs_node_id kernfs_node_id, *Pkernfs_node_id; typedef struct kernfs_iattrs kernfs_iattrs, *Pkernfs_iattrs; typedef struct refcount_struct refcount_struct, *Prefcount_struct; typedef struct refcount_struct refcount_t; typedef enum module_state { MODULE_STATE_COMING=1, MODULE_STATE_GOING=2, MODULE_STATE_LIVE=0, MODULE_STATE_UNFORMED=3 } module_state; typedef struct module_kobject module_kobject, *Pmodule_kobject; typedef struct module_attribute module_attribute, *Pmodule_attribute; typedef struct module_kobject.conflict module_kobject.conflict, *Pmodule_kobject.conflict; typedef struct module.conflict module.conflict, *Pmodule.conflict; typedef struct kernel_symbol kernel_symbol, *Pkernel_symbol; typedef struct kernel_param kernel_param, *Pkernel_param; typedef struct exception_table_entry exception_table_entry, *Pexception_table_entry; typedef struct module_layout module_layout, *Pmodule_layout; typedef struct mod_arch_specific mod_arch_specific, *Pmod_arch_specific; typedef struct bug_entry bug_entry, *Pbug_entry; typedef struct mod_kallsyms mod_kallsyms, *Pmod_kallsyms; typedef struct module_sect_attrs module_sect_attrs, *Pmodule_sect_attrs; typedef struct module_notes_attrs module_notes_attrs, *Pmodule_notes_attrs; typedef int tracepoint_ptr_t; typedef struct jump_entry jump_entry, *Pjump_entry; typedef struct trace_event_call trace_event_call, *Ptrace_event_call; typedef struct trace_eval_map trace_eval_map, *Ptrace_eval_map; typedef ulong kernel_ulong_t; typedef struct wakeup_source.conflict wakeup_source.conflict, *Pwakeup_source.conflict; typedef struct pm_subsys_data.conflict pm_subsys_data.conflict, *Ppm_subsys_data.conflict; typedef longlong __s64; typedef __s64 s64; typedef s64 ktime_t; typedef struct pm_domain_data pm_domain_data, *Ppm_domain_data; typedef struct irq_common_data irq_common_data, *Pirq_common_data; typedef struct irq_chip irq_chip, *Pirq_chip; typedef struct cpumask cpumask, *Pcpumask; typedef struct msi_msg msi_msg, *Pmsi_msg; typedef enum irqchip_irq_state { IRQCHIP_STATE_ACTIVE=1, IRQCHIP_STATE_LINE_LEVEL=3, IRQCHIP_STATE_MASKED=2, IRQCHIP_STATE_PENDING=0 } irqchip_irq_state; typedef struct irq_domain.conflict irq_domain.conflict, *Pirq_domain.conflict; typedef enum irq_gc_flags { IRQ_GC_BE_IO=16, IRQ_GC_INIT_MASK_CACHE=1, IRQ_GC_INIT_NESTED_LOCK=2, IRQ_GC_MASK_CACHE_PER_TYPE=4, IRQ_GC_NO_MASK=8 } irq_gc_flags; typedef struct irq_chip_generic irq_chip_generic, *Pirq_chip_generic; typedef struct radix_tree_node radix_tree_node, *Pradix_tree_node; typedef struct llist_node llist_node, *Pllist_node; typedef struct vfsmount vfsmount, *Pvfsmount; typedef struct dentry dentry, *Pdentry; typedef struct posix_acl posix_acl, *Pposix_acl; typedef struct inode_operations inode_operations, *Pinode_operations; typedef struct delayed_call delayed_call, *Pdelayed_call; typedef struct iattr iattr, *Piattr; typedef struct kstat kstat, *Pkstat; typedef struct fiemap_extent_info fiemap_extent_info, *Pfiemap_extent_info; typedef struct timespec64 timespec64, *Ptimespec64; typedef struct super_block super_block, *Psuper_block; typedef union anon_union.conflict7b65_for_field_12 anon_union.conflict7b65_for_field_12, *Panon_union.conflict7b65_for_field_12; typedef ulong blkcnt_t; typedef struct rw_semaphore rw_semaphore, *Prw_semaphore; typedef struct bdi_writeback bdi_writeback, *Pbdi_writeback; typedef union anon_union.conflict7b87_for_field_36 anon_union.conflict7b87_for_field_36, *Panon_union.conflict7b87_for_field_36; typedef struct file_lock_context file_lock_context, *Pfile_lock_context; typedef union anon_union.conflict7ba9_for_field_46 anon_union.conflict7ba9_for_field_46, *Panon_union.conflict7ba9_for_field_46; typedef struct fsnotify_mark_connector fsnotify_mark_connector, *Pfsnotify_mark_connector; typedef struct fscrypt_info fscrypt_info, *Pfscrypt_info; typedef struct fsverity_info fsverity_info, *Pfsverity_info; typedef struct fasync_struct fasync_struct, *Pfasync_struct; typedef struct file_lock_operations file_lock_operations, *Pfile_lock_operations; typedef struct lock_manager_operations lock_manager_operations, *Plock_manager_operations; typedef union anon_union.conflict825d_for_fl_u anon_union.conflict825d_for_fl_u, *Panon_union.conflict825d_for_fl_u; typedef struct seq_operations seq_operations, *Pseq_operations; typedef struct rwlock_t rwlock_t, *Prwlock_t; typedef struct pid pid, *Ppid; typedef enum pid_type { PIDTYPE_MAX=4, PIDTYPE_PGID=2, PIDTYPE_PID=0, PIDTYPE_SID=3, PIDTYPE_TGID=1 } pid_type; typedef struct kernel_cap_struct kernel_cap_struct, *Pkernel_cap_struct; typedef struct kernel_cap_struct kernel_cap_t; typedef struct key key, *Pkey; typedef struct user_struct user_struct, *Puser_struct; typedef struct group_info group_info, *Pgroup_info; typedef union anon_union.conflict9612_for_field_24 anon_union.conflict9612_for_field_24, *Panon_union.conflict9612_for_field_24; typedef struct rb_root_cached rb_root_cached, *Prb_root_cached; typedef struct address_space_operations address_space_operations, *Paddress_space_operations; typedef struct writeback_control writeback_control, *Pwriteback_control; typedef ulong sector_t; typedef struct kiocb.conflict kiocb.conflict, *Pkiocb.conflict; typedef enum migrate_mode { MIGRATE_ASYNC=0, MIGRATE_SYNC=2, MIGRATE_SYNC_LIGHT=1, MIGRATE_SYNC_NO_COPY=3 } migrate_mode; typedef uint isolate_mode_t; typedef struct swap_info_struct swap_info_struct, *Pswap_info_struct; typedef struct pgd_t pgd_t, *Ppgd_t; typedef struct rw_semaphore.conflict rw_semaphore.conflict, *Prw_semaphore.conflict; typedef struct mm_rss_stat mm_rss_stat, *Pmm_rss_stat; typedef struct linux_binfmt linux_binfmt, *Plinux_binfmt; typedef struct mm_context_t mm_context_t, *Pmm_context_t; typedef struct core_state.conflict core_state.conflict, *Pcore_state.conflict; typedef struct kioctx_table kioctx_table, *Pkioctx_table; typedef struct uprobes_state uprobes_state, *Puprobes_state; typedef u64 pmdval_t; typedef union anon_union.conflict516c_for_field_0 anon_union.conflict516c_for_field_0, *Panon_union.conflict516c_for_field_0; typedef struct kmem_cache kmem_cache, *Pkmem_cache; typedef union anon_union.conflict51bb_for_field_3 anon_union.conflict51bb_for_field_3, *Panon_union.conflict51bb_for_field_3; typedef union anon_union.conflict527d_for_field_3 anon_union.conflict527d_for_field_3, *Panon_union.conflict527d_for_field_3; typedef struct dev_pagemap dev_pagemap, *Pdev_pagemap; typedef struct percpu_ref percpu_ref, *Ppercpu_ref; typedef struct kernfs_elem_dir kernfs_elem_dir, *Pkernfs_elem_dir; typedef struct kernfs_elem_symlink kernfs_elem_symlink, *Pkernfs_elem_symlink; typedef struct kernfs_elem_attr kernfs_elem_attr, *Pkernfs_elem_attr; typedef struct anon_struct.conflict9a99 anon_struct.conflict9a99, *Panon_struct.conflict9a99; typedef struct module_param_attrs module_param_attrs, *Pmodule_param_attrs; typedef struct kernel_param.conflict kernel_param.conflict, *Pkernel_param.conflict; typedef struct kernel_param_ops kernel_param_ops, *Pkernel_param_ops; typedef char __s8; typedef __s8 s8; typedef union anon_union.conflictcff2_for_field_6 anon_union.conflictcff2_for_field_6, *Panon_union.conflictcff2_for_field_6; typedef struct mod_tree_node.conflict mod_tree_node.conflict, *Pmod_tree_node.conflict; typedef struct mod_plt_sec mod_plt_sec, *Pmod_plt_sec; typedef struct plt_entry plt_entry, *Pplt_entry; typedef struct elf64_sym elf64_sym, *Pelf64_sym; typedef struct elf64_sym Elf64_Sym; typedef u64 jump_label_t; typedef struct msi_desc msi_desc, *Pmsi_desc; typedef struct irq_domain_ops.conflict irq_domain_ops.conflict, *Pirq_domain_ops.conflict; typedef struct raw_spinlock raw_spinlock_t; typedef struct irq_chip_type irq_chip_type, *Pirq_chip_type; typedef struct irq_desc irq_desc, *Pirq_desc; typedef union anon_union.conflict4d02_for_field_6 anon_union.conflict4d02_for_field_6, *Panon_union.conflict4d02_for_field_6; typedef struct seqcount seqcount, *Pseqcount; typedef struct seqcount seqcount_t; typedef struct hlist_bl_node hlist_bl_node, *Phlist_bl_node; typedef struct qstr qstr, *Pqstr; typedef struct lockref lockref, *Plockref; typedef struct dentry_operations dentry_operations, *Pdentry_operations; typedef union anon_union.conflict1837_for_field_12 anon_union.conflict1837_for_field_12, *Panon_union.conflict1837_for_field_12; typedef union anon_union.conflict185c_for_d_u anon_union.conflict185c_for_d_u, *Panon_union.conflict185c_for_d_u; typedef u32 uint32_t; typedef struct fiemap_extent fiemap_extent, *Pfiemap_extent; typedef __s64 time64_t; typedef struct file_system_type file_system_type, *Pfile_system_type; typedef struct super_operations super_operations, *Psuper_operations; typedef struct kstatfs kstatfs, *Pkstatfs; typedef struct dquot dquot, *Pdquot; typedef struct shrink_control shrink_control, *Pshrink_control; typedef struct dquot_operations dquot_operations, *Pdquot_operations; typedef longlong qsize_t; typedef struct kprojid_t kprojid_t, *Pkprojid_t; typedef struct kqid kqid, *Pkqid; typedef struct quotactl_ops quotactl_ops, *Pquotactl_ops; typedef struct qc_info qc_info, *Pqc_info; typedef struct qc_dqblk qc_dqblk, *Pqc_dqblk; typedef struct qc_state qc_state, *Pqc_state; typedef struct export_operations export_operations, *Pexport_operations; typedef struct xattr_handler xattr_handler, *Pxattr_handler; typedef struct fscrypt_operations fscrypt_operations, *Pfscrypt_operations; typedef struct fsverity_operations fsverity_operations, *Pfsverity_operations; typedef struct unicode_map unicode_map, *Punicode_map; typedef struct hlist_bl_head hlist_bl_head, *Phlist_bl_head; typedef struct block_device block_device, *Pblock_device; typedef struct backing_dev_info backing_dev_info, *Pbacking_dev_info; typedef struct mtd_info mtd_info, *Pmtd_info; typedef struct quota_info quota_info, *Pquota_info; typedef struct sb_writers sb_writers, *Psb_writers; typedef struct uuid_t uuid_t, *Puuid_t; typedef struct shrinker shrinker, *Pshrinker; typedef struct workqueue_struct workqueue_struct, *Pworkqueue_struct; typedef struct list_lru list_lru, *Plist_lru; typedef struct task_struct task_struct, *Ptask_struct; typedef struct percpu_counter.conflict percpu_counter.conflict, *Ppercpu_counter.conflict; typedef struct bdi_writeback_congested bdi_writeback_congested, *Pbdi_writeback_congested; typedef struct fprop_local_percpu fprop_local_percpu, *Pfprop_local_percpu; typedef enum wb_reason { WB_REASON_BACKGROUND=0, WB_REASON_FORKER_THREAD=7, WB_REASON_FREE_MORE_MEM=5, WB_REASON_FS_FREE_SPACE=6, WB_REASON_LAPTOP_TIMER=4, WB_REASON_MAX=8, WB_REASON_PERIODIC=3, WB_REASON_SYNC=2, WB_REASON_VMSCAN=1 } wb_reason; typedef struct delayed_work delayed_work, *Pdelayed_work; typedef struct cdev cdev, *Pcdev; typedef struct nfs_lock_info nfs_lock_info, *Pnfs_lock_info; typedef struct nfs4_lock_info nfs4_lock_info, *Pnfs4_lock_info; typedef struct anon_struct.conflict8239 anon_struct.conflict8239, *Panon_struct.conflict8239; typedef struct qrwlock qrwlock, *Pqrwlock; typedef struct qrwlock arch_rwlock_t; typedef struct upid upid, *Pupid; typedef s32 int32_t; typedef int32_t key_serial_t; typedef union anon_union.conflict9481_for_field_2 anon_union.conflict9481_for_field_2, *Panon_union.conflict9481_for_field_2; typedef struct key_user key_user, *Pkey_user; typedef union anon_union.conflict94a0_for_field_6 anon_union.conflict94a0_for_field_6, *Panon_union.conflict94a0_for_field_6; typedef uint32_t key_perm_t; typedef union anon_union.conflict94e0_for_field_15 anon_union.conflict94e0_for_field_15, *Panon_union.conflict94e0_for_field_15; typedef union anon_union.conflict951a_for_field_16 anon_union.conflict951a_for_field_16, *Panon_union.conflict951a_for_field_16; typedef struct key_restriction key_restriction, *Pkey_restriction; typedef struct key_type key_type, *Pkey_type; typedef union key_payload key_payload, *Pkey_payload; typedef struct ratelimit_state ratelimit_state, *Pratelimit_state; typedef enum writeback_sync_modes { WB_SYNC_ALL=1, WB_SYNC_NONE=0 } writeback_sync_modes; typedef struct file.conflict file.conflict, *Pfile.conflict; typedef struct plist_node plist_node, *Pplist_node; typedef struct swap_cluster_info swap_cluster_info, *Pswap_cluster_info; typedef struct swap_cluster_list swap_cluster_list, *Pswap_cluster_list; typedef struct percpu_cluster percpu_cluster, *Ppercpu_cluster; typedef struct swap_extent swap_extent, *Pswap_extent; typedef struct block_device.conflict1 block_device.conflict1, *Pblock_device.conflict1; typedef u64 pgdval_t; typedef struct raw_spinlock.conflict raw_spinlock_t.conflict; typedef struct task_struct.conflict task_struct.conflict, *Ptask_struct.conflict; typedef struct core_thread.conflict core_thread.conflict, *Pcore_thread.conflict; typedef struct xol_area xol_area, *Pxol_area; typedef struct anon_struct.conflict513f anon_struct.conflict513f, *Panon_struct.conflict513f; typedef struct anon_struct.conflict5185 anon_struct.conflict5185, *Panon_struct.conflict5185; typedef struct mm_struct mm_struct, *Pmm_struct; typedef struct vmem_altmap vmem_altmap, *Pvmem_altmap; typedef struct resource resource, *Presource; typedef enum memory_type { MEMORY_DEVICE_FS_DAX=3, MEMORY_DEVICE_PRIVATE=1, MEMORY_DEVICE_PUBLIC=2 } memory_type; typedef struct kernfs_root kernfs_root, *Pkernfs_root; typedef struct kernfs_ops kernfs_ops, *Pkernfs_ops; typedef struct kernfs_open_file kernfs_open_file, *Pkernfs_open_file; typedef struct kernfs_open_node kernfs_open_node, *Pkernfs_open_node; typedef struct kparam_string kparam_string, *Pkparam_string; typedef struct kparam_array kparam_array, *Pkparam_array; typedef struct latch_tree_node latch_tree_node, *Platch_tree_node; typedef struct elf64_shdr elf64_shdr, *Pelf64_shdr; typedef __u32 __le32; typedef __u32 Elf64_Word; typedef __u16 Elf64_Half; typedef __u64 Elf64_Addr; typedef __u64 Elf64_Xword; typedef struct irq_chip_regs irq_chip_regs, *Pirq_chip_regs; typedef struct irqaction irqaction, *Pirqaction; typedef enum irqreturn { IRQ_HANDLED=1, IRQ_NONE=0, IRQ_WAKE_THREAD=2 } irqreturn; typedef enum irqreturn irqreturn_t; typedef struct irq_affinity_notify irq_affinity_notify, *Pirq_affinity_notify; typedef struct cpumask cpumask_t; typedef struct proc_dir_entry proc_dir_entry, *Pproc_dir_entry; typedef union anon_union.conflict177a_for_field_0 anon_union.conflict177a_for_field_0, *Panon_union.conflict177a_for_field_0; typedef union anon_union.conflict172d_for_field_0 anon_union.conflict172d_for_field_0, *Panon_union.conflict172d_for_field_0; typedef union anon_union.conflict2127_for_field_13 anon_union.conflict2127_for_field_13, *Panon_union.conflict2127_for_field_13; typedef struct lock_class_key lock_class_key, *Plock_class_key; typedef struct mem_dqblk mem_dqblk, *Pmem_dqblk; typedef __kernel_uid32_t projid_t; typedef union anon_union.conflict6a84_for_field_0 anon_union.conflict6a84_for_field_0, *Panon_union.conflict6a84_for_field_0; typedef enum quota_type { GRPQUOTA=1, PRJQUOTA=2, USRQUOTA=0 } quota_type; typedef struct qc_type_state qc_type_state, *Pqc_type_state; typedef struct hd_struct hd_struct, *Phd_struct; typedef struct gendisk gendisk, *Pgendisk; typedef struct request_queue request_queue, *Prequest_queue; typedef struct mem_dqinfo mem_dqinfo, *Pmem_dqinfo; typedef struct quota_format_ops quota_format_ops, *Pquota_format_ops; typedef struct percpu_rw_semaphore percpu_rw_semaphore, *Ppercpu_rw_semaphore; typedef struct list_lru_node list_lru_node, *Plist_lru_node; typedef struct thread_info thread_info, *Pthread_info; typedef struct sched_class sched_class, *Psched_class; typedef struct sched_entity sched_entity, *Psched_entity; typedef struct sched_rt_entity sched_rt_entity, *Psched_rt_entity; typedef struct task_group task_group, *Ptask_group; typedef struct sched_dl_entity sched_dl_entity, *Psched_dl_entity; typedef union rcu_special rcu_special, *Prcu_special; typedef struct rcu_node rcu_node, *Prcu_node; typedef struct sched_info sched_info, *Psched_info; typedef struct vmacache vmacache, *Pvmacache; typedef struct task_rss_stat task_rss_stat, *Ptask_rss_stat; typedef struct restart_block restart_block, *Prestart_block; typedef int __kernel_pid_t; typedef __kernel_pid_t pid_t; typedef struct prev_cputime prev_cputime, *Pprev_cputime; typedef struct task_cputime task_cputime, *Ptask_cputime; typedef struct nameidata nameidata, *Pnameidata; typedef struct fs_struct fs_struct, *Pfs_struct; typedef struct files_struct files_struct, *Pfiles_struct; typedef struct nsproxy nsproxy, *Pnsproxy; typedef struct signal_struct signal_struct, *Psignal_struct; typedef struct sighand_struct sighand_struct, *Psighand_struct; typedef struct sigset_t sigset_t, *Psigset_t; typedef struct sigpending sigpending, *Psigpending; typedef struct audit_context audit_context, *Paudit_context; typedef struct seccomp seccomp, *Pseccomp; typedef struct wake_q_node wake_q_node, *Pwake_q_node; typedef struct rt_mutex_waiter rt_mutex_waiter, *Prt_mutex_waiter; typedef struct bio_list bio_list, *Pbio_list; typedef struct blk_plug blk_plug, *Pblk_plug; typedef struct reclaim_state reclaim_state, *Preclaim_state; typedef struct io_context io_context, *Pio_context; typedef struct siginfo siginfo, *Psiginfo; typedef struct siginfo siginfo_t; typedef struct task_io_accounting task_io_accounting, *Ptask_io_accounting; typedef struct nodemask_t nodemask_t, *Pnodemask_t; typedef struct css_set css_set, *Pcss_set; typedef struct robust_list_head robust_list_head, *Probust_list_head; typedef struct compat_robust_list_head compat_robust_list_head, *Pcompat_robust_list_head; typedef struct futex_pi_state futex_pi_state, *Pfutex_pi_state; typedef struct perf_event_context perf_event_context, *Pperf_event_context; typedef struct rseq rseq, *Prseq; typedef struct page_frag page_frag, *Ppage_frag; typedef struct task_delay_info task_delay_info, *Ptask_delay_info; typedef struct uprobe_task uprobe_task, *Puprobe_task; typedef struct vm_struct vm_struct, *Pvm_struct; typedef union anon_union.conflict24f12_for_field_182 anon_union.conflict24f12_for_field_182, *Panon_union.conflict24f12_for_field_182; typedef struct thread_struct thread_struct, *Pthread_struct; typedef struct file_operations.conflict file_operations.conflict, *Pfile_operations.conflict; typedef struct inode.conflict inode.conflict, *Pinode.conflict; typedef struct file_lock.conflict file_lock.conflict, *Pfile_lock.conflict; typedef struct nlm_lockowner nlm_lockowner, *Pnlm_lockowner; typedef struct nfs4_lock_state nfs4_lock_state, *Pnfs4_lock_state; typedef union anon_union.conflictda3_for_field_0 anon_union.conflictda3_for_field_0, *Panon_union.conflictda3_for_field_0; typedef struct pid_namespace pid_namespace, *Ppid_namespace; typedef struct keyring_index_key keyring_index_key, *Pkeyring_index_key; typedef struct anon_struct.conflict94bf anon_struct.conflict94bf, *Panon_struct.conflict94bf; typedef struct anon_struct.conflict94f9 anon_struct.conflict94f9, *Panon_struct.conflict94f9; typedef struct path.conflict path.conflict, *Ppath.conflict; typedef struct fown_struct.conflict fown_struct.conflict, *Pfown_struct.conflict; typedef struct address_space.conflict address_space.conflict, *Paddress_space.conflict; typedef struct thread_info.conflict thread_info.conflict, *Pthread_info.conflict; typedef struct pid.conflict pid.conflict, *Ppid.conflict; typedef struct prev_cputime.conflict prev_cputime.conflict, *Pprev_cputime.conflict; typedef struct sysv_sem sysv_sem, *Psysv_sem; typedef struct sysv_shm sysv_shm, *Psysv_shm; typedef struct ftrace_ret_stack ftrace_ret_stack, *Pftrace_ret_stack; typedef union anon_union.conflict1678d_for_field_161 anon_union.conflict1678d_for_field_161, *Panon_union.conflict1678d_for_field_161; typedef struct anon_struct.conflict56d7_for_field_0 anon_struct.conflict56d7_for_field_0, *Panon_struct.conflict56d7_for_field_0; typedef phys_addr_t resource_size_t; typedef struct idr idr, *Pidr; typedef struct kernfs_syscall_ops kernfs_syscall_ops, *Pkernfs_syscall_ops; typedef __u64 Elf64_Off; typedef struct anon_struct.conflict1759 anon_struct.conflict1759, *Panon_struct.conflict1759; typedef struct anon_struct.conflict170c anon_struct.conflict170c, *Panon_struct.conflict170c; typedef struct anon_struct.conflict456b anon_struct.conflict456b, *Panon_struct.conflict456b; typedef union anon_union.conflict4582 anon_union.conflict4582, *Panon_union.conflict4582; typedef struct quota_format_type.conflict quota_format_type.conflict, *Pquota_format_type.conflict; typedef struct rcu_sync rcu_sync, *Prcu_sync; typedef struct rcuwait rcuwait, *Prcuwait; typedef struct list_lru_one list_lru_one, *Plist_lru_one; typedef struct list_lru_memcg list_lru_memcg, *Plist_lru_memcg; typedef ulong mm_segment_t; typedef struct load_weight load_weight, *Pload_weight; typedef struct sched_statistics sched_statistics, *Psched_statistics; typedef struct cfs_rq cfs_rq, *Pcfs_rq; typedef struct sched_avg sched_avg, *Psched_avg; typedef struct hrtimer hrtimer, *Phrtimer; typedef enum hrtimer_restart { HRTIMER_NORESTART=0, HRTIMER_RESTART=1 } hrtimer_restart; typedef struct anon_struct.conflict44ea anon_struct.conflict44ea, *Panon_struct.conflict44ea; typedef union anon_union.conflictb84_for_field_1 anon_union.conflictb84_for_field_1, *Panon_union.conflictb84_for_field_1; typedef struct uts_namespace uts_namespace, *Puts_namespace; typedef struct ipc_namespace ipc_namespace, *Pipc_namespace; typedef struct mnt_namespace mnt_namespace, *Pmnt_namespace; typedef struct net net, *Pnet; typedef struct cgroup_namespace cgroup_namespace, *Pcgroup_namespace; typedef struct seccomp_filter seccomp_filter, *Pseccomp_filter; typedef struct io_cq io_cq, *Pio_cq; typedef union anon_union.conflict3ae1_for__sifields anon_union.conflict3ae1_for__sifields, *Panon_union.conflict3ae1_for__sifields; typedef struct cgroup_subsys_state cgroup_subsys_state, *Pcgroup_subsys_state; typedef struct cgroup cgroup, *Pcgroup; typedef union anon_union.conflict3eea_for_rseq_cs anon_union.conflict3eea_for_rseq_cs, *Panon_union.conflict3eea_for_rseq_cs; typedef enum uprobe_task_state { UTASK_RUNNING=0, UTASK_SSTEP=1, UTASK_SSTEP_ACK=2, UTASK_SSTEP_TRAPPED=3 } uprobe_task_state; typedef union anon_union.conflict4ec1_for_field_1 anon_union.conflict4ec1_for_field_1, *Panon_union.conflict4ec1_for_field_1; typedef struct uprobe uprobe, *Puprobe; typedef struct return_instance return_instance, *Preturn_instance; typedef union anon_union.conflictb84 anon_union.conflictb84, *Panon_union.conflictb84; typedef struct cpu_context cpu_context, *Pcpu_context; typedef struct anon_struct.conflict1422_for_uw anon_struct.conflict1422_for_uw, *Panon_struct.conflict1422_for_uw; typedef struct debug_info debug_info, *Pdebug_info; typedef struct inode_operations.conflict inode_operations.conflict, *Pinode_operations.conflict; typedef struct dentry.conflict dentry.conflict, *Pdentry.conflict; typedef struct iattr.conflict iattr.conflict, *Piattr.conflict; typedef struct super_block.conflict super_block.conflict, *Psuper_block.conflict; typedef struct file_lock_context.conflict file_lock_context.conflict, *Pfile_lock_context.conflict; typedef union anon_union.conflict1ee53_for_field_41 anon_union.conflict1ee53_for_field_41, *Panon_union.conflict1ee53_for_field_41; typedef struct fasync_struct.conflict fasync_struct.conflict, *Pfasync_struct.conflict; typedef struct file_lock_operations.conflict file_lock_operations.conflict, *Pfile_lock_operations.conflict; typedef struct lock_manager_operations.conflict lock_manager_operations.conflict, *Plock_manager_operations.conflict; typedef struct anon_struct.conflictd72 anon_struct.conflictd72, *Panon_struct.conflictd72; typedef struct assoc_array assoc_array, *Passoc_array; typedef struct rwlock_t.conflict rwlock_t.conflict, *Prwlock_t.conflict; typedef struct radix_tree_root.conflict radix_tree_root.conflict, *Pradix_tree_root.conflict; typedef struct address_space_operations.conflict address_space_operations.conflict, *Paddress_space_operations.conflict; typedef struct sem_undo_list sem_undo_list, *Psem_undo_list; typedef struct core_state core_state, *Pcore_state; typedef struct quota_format_ops.conflict quota_format_ops.conflict, *Pquota_format_ops.conflict; typedef struct dquot.conflict dquot.conflict, *Pdquot.conflict; typedef enum rcu_sync_type { RCU_BH_SYNC=2, RCU_SCHED_SYNC=1, RCU_SYNC=0 } rcu_sync_type; typedef struct util_est util_est, *Putil_est; typedef struct timerqueue_node timerqueue_node, *Ptimerqueue_node; typedef struct hrtimer_clock_base hrtimer_clock_base, *Phrtimer_clock_base; typedef struct anon_struct.conflicta5a anon_struct.conflicta5a, *Panon_struct.conflicta5a; typedef struct anon_struct.conflictb01 anon_struct.conflictb01, *Panon_struct.conflictb01; typedef struct anon_struct.conflictb34 anon_struct.conflictb34, *Panon_struct.conflictb34; typedef union anon_union.conflict5d93_for_field_2 anon_union.conflict5d93_for_field_2, *Panon_union.conflict5d93_for_field_2; typedef union anon_union.conflict5db2_for_field_3 anon_union.conflict5db2_for_field_3, *Panon_union.conflict5db2_for_field_3; typedef struct anon_struct.conflict3924 anon_struct.conflict3924, *Panon_struct.conflict3924; typedef struct anon_struct.conflict3945 anon_struct.conflict3945, *Panon_struct.conflict3945; typedef struct anon_struct.conflict397e anon_struct.conflict397e, *Panon_struct.conflict397e; typedef struct anon_struct.conflict39ab anon_struct.conflict39ab, *Panon_struct.conflict39ab; typedef struct anon_struct.conflict3a78 anon_struct.conflict3a78, *Panon_struct.conflict3a78; typedef struct anon_struct.conflict3a93 anon_struct.conflict3a93, *Panon_struct.conflict3a93; typedef struct anon_struct.conflict3ab4 anon_struct.conflict3ab4, *Panon_struct.conflict3ab4; typedef struct cgroup_subsys cgroup_subsys, *Pcgroup_subsys; typedef struct cgroup_taskset cgroup_taskset, *Pcgroup_taskset; typedef struct rcu_work rcu_work, *Prcu_work; typedef struct cgroup_file cgroup_file, *Pcgroup_file; typedef struct cgroup_root cgroup_root, *Pcgroup_root; typedef struct cgroup_rstat_cpu cgroup_rstat_cpu, *Pcgroup_rstat_cpu; typedef struct cgroup_base_stat cgroup_base_stat, *Pcgroup_base_stat; typedef struct cgroup_freezer_state cgroup_freezer_state, *Pcgroup_freezer_state; typedef struct anon_struct.conflict4e7f anon_struct.conflict4e7f, *Panon_struct.conflict4e7f; typedef struct anon_struct.conflict4ea0 anon_struct.conflict4ea0, *Panon_struct.conflict4ea0; typedef struct user_fpsimd_state user_fpsimd_state, *Puser_fpsimd_state; typedef struct perf_event perf_event, *Pperf_event; typedef struct lockref.conflict lockref.conflict, *Plockref.conflict; typedef struct dentry_operations.conflict dentry_operations.conflict, *Pdentry_operations.conflict; typedef union anon_union.conflict1c63b_for_field_12 anon_union.conflict1c63b_for_field_12, *Panon_union.conflict1c63b_for_field_12; typedef struct file_system_type.conflict file_system_type.conflict, *Pfile_system_type.conflict; typedef struct super_operations.conflict super_operations.conflict, *Psuper_operations.conflict; typedef struct dquot_operations.conflict dquot_operations.conflict, *Pdquot_operations.conflict; typedef struct quotactl_ops.conflict quotactl_ops.conflict, *Pquotactl_ops.conflict; typedef struct block_device.conflict block_device.conflict, *Pblock_device.conflict; typedef struct quota_info.conflict quota_info.conflict, *Pquota_info.conflict; typedef struct sb_writers.conflict sb_writers.conflict, *Psb_writers.conflict; typedef struct shrinker.conflict shrinker.conflict, *Pshrinker.conflict; typedef struct list_lru.conflict list_lru.conflict, *Plist_lru.conflict; typedef struct assoc_array_ptr assoc_array_ptr, *Passoc_array_ptr; typedef struct core_thread core_thread, *Pcore_thread; typedef struct hrtimer_cpu_base hrtimer_cpu_base, *Phrtimer_cpu_base; typedef int __kernel_clockid_t; typedef __kernel_clockid_t clockid_t; typedef struct timerqueue_head timerqueue_head, *Ptimerqueue_head; typedef enum timespec_type { TT_COMPAT=2, TT_NATIVE=1, TT_NONE=0 } timespec_type; typedef union anon_union.conflictab1_for_field_2 anon_union.conflictab1_for_field_2, *Panon_union.conflictab1_for_field_2; typedef struct pollfd pollfd, *Ppollfd; typedef int __kernel_timer_t; typedef union sigval sigval, *Psigval; typedef union sigval sigval_t; typedef __kernel_long_t __kernel_clock_t; typedef union anon_union.conflict3a4e_for_field_1 anon_union.conflict3a4e_for_field_1, *Panon_union.conflict3a4e_for_field_1; typedef struct cftype cftype, *Pcftype; typedef union anon_union.conflict1c5ad_for_field_0 anon_union.conflict1c5ad_for_field_0, *Panon_union.conflict1c5ad_for_field_0; typedef union anon_union.conflict1cf41_for_field_13 anon_union.conflict1cf41_for_field_13, *Panon_union.conflict1cf41_for_field_13; typedef struct percpu_rw_semaphore.conflict percpu_rw_semaphore.conflict, *Ppercpu_rw_semaphore.conflict; typedef struct list_lru_node.conflict list_lru_node.conflict, *Plist_lru_node.conflict; typedef struct timespec timespec, *Ptimespec; typedef struct compat_timespec compat_timespec, *Pcompat_timespec; typedef struct anon_struct.conflict39f0 anon_struct.conflict39f0, *Panon_struct.conflict39f0; typedef struct anon_struct.conflict3a2d anon_struct.conflict3a2d, *Panon_struct.conflict3a2d; typedef struct anon_struct.conflict1c589 anon_struct.conflict1c589, *Panon_struct.conflict1c589; typedef struct rcu_sync.conflict rcu_sync.conflict, *Prcu_sync.conflict; typedef struct rcuwait.conflict rcuwait.conflict, *Prcuwait.conflict; typedef __kernel_long_t __kernel_time_t; typedef s32 compat_time_t; typedef struct task_struct.conflict1 task_struct.conflict1, *Ptask_struct.conflict1; typedef struct io_context.conflict io_context.conflict, *Pio_context.conflict; typedef struct io_cq.conflict io_cq.conflict, *Pio_cq.conflict; struct dev_pm_ops.conflict { int (* prepare)(struct device.conflict *); void (* complete)(struct device.conflict *); int (* suspend)(struct device.conflict *); int (* resume)(struct device.conflict *); int (* freeze)(struct device.conflict *); int (* thaw)(struct device.conflict *); int (* poweroff)(struct device.conflict *); int (* restore)(struct device.conflict *); int (* suspend_late)(struct device.conflict *); int (* resume_early)(struct device.conflict *); int (* freeze_late)(struct device.conflict *); int (* thaw_early)(struct device.conflict *); int (* poweroff_late)(struct device.conflict *); int (* restore_early)(struct device.conflict *); int (* suspend_noirq)(struct device.conflict *); int (* resume_noirq)(struct device.conflict *); int (* freeze_noirq)(struct device.conflict *); int (* thaw_noirq)(struct device.conflict *); int (* poweroff_noirq)(struct device.conflict *); int (* restore_noirq)(struct device.conflict *); int (* runtime_suspend)(struct device.conflict *); int (* runtime_resume)(struct device.conflict *); int (* runtime_idle)(struct device.conflict *); }; struct user_fpsimd_state { __int128 unsigned vregs[32]; __u32 fpsr; __u32 fpcr; __u32 __reserved[2]; }; struct trace_event_call { }; struct pm_subsys_data { spinlock_t lock; uint refcount; struct list_head clock_list; struct pm_domain_data * domain_data; }; struct jump_entry { jump_label_t code; jump_label_t target; jump_label_t key; }; struct radix_tree_root { spinlock_t xa_lock; gfp_t gfp_mask; struct radix_tree_node * rnode; }; struct idr { struct radix_tree_root idr_rt; uint idr_base; uint idr_next; }; struct kernfs_root { struct kernfs_node * kn; uint flags; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct idr ino_idr; u32 last_ino; u32 next_generation; struct kernfs_syscall_ops * syscall_ops; struct list_head supers; wait_queue_head_t deactivate_waitq; }; struct dev_pm_qos { }; struct bio_list { }; union anon_union.conflict7b87_for_field_36 { struct hlist_head i_dentry; struct callback_head i_rcu; }; struct timespec64 { time64_t tv_sec; long tv_nsec; }; union anon_union.conflict7b65_for_field_12 { uint i_nlink; uint __i_nlink; }; struct rb_root_cached { struct rb_root rb_root; struct rb_node * rb_leftmost; }; struct optimistic_spin_queue { struct atomic_t tail; }; struct rw_semaphore { atomic_long_t count; struct list_head wait_list; raw_spinlock_t wait_lock; struct optimistic_spin_queue osq; struct task_struct * owner; long m_count; }; struct address_space { struct inode * host; struct radix_tree_root i_pages; struct atomic_t i_mmap_writable; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; struct rb_root_cached i_mmap; struct rw_semaphore i_mmap_rwsem; ulong nrpages; ulong nrexceptional; ulong writeback_index; struct address_space_operations * a_ops; ulong flags; spinlock_t private_lock; gfp_t gfp_mask; struct list_head private_list; void * private_data; errseq_t wb_err; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; union anon_union.conflict7ba9_for_field_46 { struct pipe_inode_info * i_pipe; struct block_device * i_bdev; struct cdev * i_cdev; char * i_link; uint i_dir_seq; }; struct inode { umode_t i_mode; ushort i_opflags; struct kuid_t i_uid; struct kgid_t i_gid; uint i_flags; struct posix_acl * i_acl; struct posix_acl * i_default_acl; struct inode_operations * i_op; struct super_block * i_sb; struct address_space * i_mapping; void * i_security; ulong i_ino; union anon_union.conflict7b65_for_field_12 field_12; dev_t i_rdev; loff_t i_size; struct timespec64 i_atime; struct timespec64 i_mtime; struct timespec64 i_ctime; spinlock_t i_lock; ushort i_bytes; u8 i_blkbits; u8 i_write_hint; blkcnt_t i_blocks; ulong i_state; struct rw_semaphore i_rwsem; ulong dirtied_when; ulong dirtied_time_when; struct hlist_node i_hash; struct list_head i_io_list; struct bdi_writeback * i_wb; int i_wb_frn_winner; u16 i_wb_frn_avg_time; u16 i_wb_frn_history; struct list_head i_lru; struct list_head i_sb_list; struct list_head i_wb_list; union anon_union.conflict7b87_for_field_36 field_36; struct atomic64_t i_version; struct atomic64_t i_sequence; struct atomic_t i_count; struct atomic_t i_dio_count; struct atomic_t i_writecount; undefined field_0x16c; undefined field_0x16d; undefined field_0x16e; undefined field_0x16f; struct file_operations * i_fop; struct file_lock_context * i_flctx; struct address_space i_data; struct list_head i_devices; union anon_union.conflict7ba9_for_field_46 field_46; __u32 i_generation; __u32 i_fsnotify_mask; struct fsnotify_mark_connector * i_fsnotify_marks; struct fscrypt_info * i_crypt_info; struct fsverity_info * i_verity_info; void * i_private; u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct iov_iter { }; struct path { struct vfsmount * mnt; struct dentry * dentry; }; struct module_notes_attrs { }; struct llist_node { struct llist_node * next; }; struct anon_struct.conflict1759 { u32 hash; u32 len; }; union anon_union.conflict177a_for_field_0 { struct anon_struct.conflict1759 field_0; u64 hash_len; }; struct qstr { union anon_union.conflict177a_for_field_0 field_0; uchar * name; }; struct irq_domain_chip_generic { uint irqs_per_chip; uint num_chips; uint irq_flags_to_clear; uint irq_flags_to_set; enum irq_gc_flags gc_flags; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; struct irq_chip_generic *[0] gc; }; struct linux_binfmt { }; struct cpumask { ulong bits[1]; }; struct irq_common_data { uint state_use_accessors; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; void * handler_data; struct msi_desc * msi_desc; cpumask_var_t affinity; cpumask_var_t effective_affinity; }; struct mutex { atomic_long_t owner; spinlock_t wait_lock; struct optimistic_spin_queue osq; struct list_head wait_list; }; struct refcount_struct { struct atomic_t refs; }; struct kref { refcount_t refcount; }; struct kobject { char * name; struct list_head entry; struct kobject * parent; struct kset.conflict * kset; struct kobj_type * ktype; struct kernfs_node * sd; struct kref kref; uint state_initialized:1; uint state_in_sysfs:1; uint state_add_uevent_sent:1; uint state_remove_uevent_sent:1; uint uevent_suppress:1; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct irq_data { u32 mask; uint irq; ulong hwirq; struct irq_common_data * common; struct irq_chip * chip; struct irq_domain.conflict * domain; struct irq_data * parent_data; void * chip_data; }; struct irq_desc { struct irq_common_data irq_common_data; struct irq_data irq_data; uint * kstat_irqs; void (* handle_irq)(struct irq_desc *); struct irqaction * action; uint status_use_accessors; uint core_internal_state__do_not_mess_with_it; uint depth; uint wake_depth; uint tot_count; uint irq_count; ulong last_unhandled; uint irqs_unhandled; struct atomic_t threads_handled; int threads_handled_last; undefined field_0xa4; undefined field_0xa5; undefined field_0xa6; undefined field_0xa7; raw_spinlock_t lock; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; undefined field_0xb0; undefined field_0xb1; undefined field_0xb2; undefined field_0xb3; undefined field_0xb4; undefined field_0xb5; undefined field_0xb6; undefined field_0xb7; undefined field_0xb8; undefined field_0xb9; undefined field_0xba; undefined field_0xbb; undefined field_0xbc; undefined field_0xbd; undefined field_0xbe; undefined field_0xbf; struct cpumask * percpu_enabled; struct cpumask * percpu_affinity; struct cpumask * affinity_hint; struct irq_affinity_notify * affinity_notify; ulong threads_oneshot; struct atomic_t threads_active; undefined field_0xec; undefined field_0xed; undefined field_0xee; undefined field_0xef; wait_queue_head_t wait_for_threads; undefined field_0x108; undefined field_0x109; undefined field_0x10a; undefined field_0x10b; undefined field_0x10c; undefined field_0x10d; undefined field_0x10e; undefined field_0x10f; undefined field_0x110; undefined field_0x111; undefined field_0x112; undefined field_0x113; undefined field_0x114; undefined field_0x115; undefined field_0x116; undefined field_0x117; uint nr_actions; uint no_suspend_depth; uint cond_suspend_depth; uint force_resume_depth; struct proc_dir_entry * dir; struct callback_head rcu; struct kobject kobj; struct mutex request_mutex; undefined field_0x1c0; undefined field_0x1c1; undefined field_0x1c2; undefined field_0x1c3; undefined field_0x1c4; undefined field_0x1c5; undefined field_0x1c6; undefined field_0x1c7; undefined field_0x1c8; undefined field_0x1c9; undefined field_0x1ca; undefined field_0x1cb; undefined field_0x1cc; undefined field_0x1cd; undefined field_0x1ce; undefined field_0x1cf; undefined field_0x1d0; undefined field_0x1d1; undefined field_0x1d2; undefined field_0x1d3; undefined field_0x1d4; undefined field_0x1d5; undefined field_0x1d6; undefined field_0x1d7; int parent_irq; undefined field_0x1dc; undefined field_0x1dd; undefined field_0x1de; undefined field_0x1df; struct module.conflict * owner; char * name; undefined field_0x1f0; undefined field_0x1f1; undefined field_0x1f2; undefined field_0x1f3; undefined field_0x1f4; undefined field_0x1f5; undefined field_0x1f6; undefined field_0x1f7; undefined field_0x1f8; undefined field_0x1f9; undefined field_0x1fa; undefined field_0x1fb; undefined field_0x1fc; undefined field_0x1fd; undefined field_0x1fe; undefined field_0x1ff; }; struct assoc_array { struct assoc_array_ptr * root; ulong nr_leaves_on_tree; }; struct mem_dqblk { qsize_t dqb_bhardlimit; qsize_t dqb_bsoftlimit; qsize_t dqb_curspace; qsize_t dqb_rsvspace; qsize_t dqb_ihardlimit; qsize_t dqb_isoftlimit; qsize_t dqb_curinodes; time64_t dqb_btime; time64_t dqb_itime; }; struct percpu_counter.conflict { raw_spinlock_t lock; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; undefined field_0x8; undefined field_0x9; undefined field_0xa; undefined field_0xb; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; undefined field_0x10; undefined field_0x11; undefined field_0x12; undefined field_0x13; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; s64 count; struct list_head list; s32 * counters; }; struct bus_type.conflict { // Missing member lock_key : lock_class_key at offset 0xa8 [zero-length member] char * name; char * dev_name; struct device.conflict * dev_root; struct attribute_group * * bus_groups; struct attribute_group * * dev_groups; struct attribute_group * * drv_groups; int (* match)(struct device.conflict *, struct device_driver *); int (* uevent)(struct device.conflict *, struct kobj_uevent_env *); int (* probe)(struct device.conflict *); void (* sync_state)(struct device.conflict *); int (* remove)(struct device.conflict *); void (* shutdown)(struct device.conflict *); int (* online)(struct device.conflict *); int (* offline)(struct device.conflict *); int (* suspend)(struct device.conflict *, pm_message_t); int (* resume)(struct device.conflict *); int (* num_vf)(struct device.conflict *); int (* dma_configure)(struct device.conflict *); struct dev_pm_ops.conflict * pm; struct iommu_ops * iommu_ops; struct subsys_private * p; bool need_parent_lock; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct core_thread { struct task_struct * task; struct core_thread * next; }; struct completion { uint done; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; wait_queue_head_t wait; }; struct core_state { struct atomic_t nr_threads; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct core_thread dumper; struct completion startup; }; struct assoc_array_ptr { }; struct iattr { uint ia_valid; umode_t ia_mode; undefined field_0x6; undefined field_0x7; struct kuid_t ia_uid; struct kgid_t ia_gid; loff_t ia_size; struct timespec64 ia_atime; struct timespec64 ia_mtime; struct timespec64 ia_ctime; struct file * ia_file; }; struct qc_type_state { uint flags; uint spc_timelimit; uint ino_timelimit; uint rt_spc_timelimit; uint spc_warnlimit; uint ino_warnlimit; uint rt_spc_warnlimit; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; ulonglong ino; blkcnt_t blocks; blkcnt_t nextents; }; struct qc_state { uint s_incoredqs; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct qc_type_state s_state[3]; }; struct signal_struct { }; struct compat_timespec { compat_time_t tv_sec; s32 tv_nsec; }; struct list_lru_one { struct list_head list; long nr_items; }; struct list_lru_node { spinlock_t lock; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct list_lru_one lru; struct list_lru_memcg * memcg_lrus; long nr_items; undefined field_0x30; undefined field_0x31; undefined field_0x32; undefined field_0x33; undefined field_0x34; undefined field_0x35; undefined field_0x36; undefined field_0x37; undefined field_0x38; undefined field_0x39; undefined field_0x3a; undefined field_0x3b; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; }; struct timespec { __kernel_time_t tv_sec; long tv_nsec; }; struct attribute_group { char * name; umode_t (* is_visible)(struct kobject *, struct attribute *, int); umode_t (* is_bin_visible)(struct kobject *, struct bin_attribute *, int); struct attribute * * attrs; struct bin_attribute * * bin_attrs; }; struct fsnotify_mark_connector { }; struct anon_struct.conflict52db { struct dev_pagemap * pgmap; ulong hmm_data; ulong _zd_pad_1; }; struct anon_struct.conflict5185 { uint inuse:16; uint objects:15; uint frozen:1; }; union anon_union.conflict51bb_for_field_3 { void * s_mem; ulong counters; struct anon_struct.conflict5185 field_2; }; struct anon_struct.conflict1c589 { spinlock_t.conflict lock; int count; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; }; struct irq_domain_ops.conflict { int (* match)(struct irq_domain.conflict *, struct device_node *, enum irq_domain_bus_token); int (* select)(struct irq_domain.conflict *, struct irq_fwspec *, enum irq_domain_bus_token); int (* map)(struct irq_domain.conflict *, uint, irq_hw_number_t); void (* unmap)(struct irq_domain.conflict *, uint); int (* xlate)(struct irq_domain.conflict *, struct device_node *, u32 *, uint, ulong *, uint *); int (* alloc)(struct irq_domain.conflict *, uint, uint, void *); void (* free)(struct irq_domain.conflict *, uint, uint); int (* activate)(struct irq_domain.conflict *, struct irq_data *, bool); void (* deactivate)(struct irq_domain.conflict *, struct irq_data *); int (* translate)(struct irq_domain.conflict *, struct irq_fwspec *, ulong *, uint *); }; struct shrinker { ulong (* count_objects)(struct shrinker *, struct shrink_control *); ulong (* scan_objects)(struct shrinker *, struct shrink_control *); long batch; int seeks; uint flags; struct list_head list; int id; undefined field_0x34; undefined field_0x35; undefined field_0x36; undefined field_0x37; atomic_long_t * nr_deferred; }; struct class.conflict { char * name; struct module * owner; struct attribute_group * * class_groups; struct attribute_group * * dev_groups; struct kobject * dev_kobj; int (* dev_uevent)(struct device.conflict *, struct kobj_uevent_env *); char * (* devnode)(struct device.conflict *, umode_t *); void (* class_release)(struct class.conflict *); void (* dev_release)(struct device.conflict *); int (* shutdown_pre)(struct device.conflict *); struct kobj_ns_type_operations * ns_type; void * (* namespace)(struct device.conflict *); void (* get_ownership)(struct device.conflict *, struct kuid_t *, struct kgid_t *); struct dev_pm_ops.conflict * pm; struct subsys_private * p; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct rw_semaphore.conflict { atomic_long_t count; struct list_head wait_list; raw_spinlock_t.conflict wait_lock; struct optimistic_spin_queue osq; undefined field_0x34; undefined field_0x35; undefined field_0x36; undefined field_0x37; struct task_struct.conflict * owner; long m_count; }; struct mm_rss_stat { atomic_long_t count[5]; }; struct uprobes_state { struct xol_area * xol_area; }; struct mm_context_t { struct atomic64_t id; void * vdso; ulong flags; }; struct anon_struct.conflict16ebb_for_field_0 { struct vm_area_struct * mmap; struct rb_root mm_rb; u64 vmacache_seqnum; ulong (* get_unmapped_area)(struct file *, ulong, ulong, ulong, ulong); ulong mmap_base; ulong mmap_legacy_base; ulong task_size; ulong highest_vm_end; struct pgd_t * pgd; struct atomic_t mm_users; struct atomic_t mm_count; atomic_long_t pgtables_bytes; int map_count; undefined field_0x5c; undefined field_0x5d; undefined field_0x5e; undefined field_0x5f; spinlock_t.conflict page_table_lock; struct rw_semaphore.conflict mmap_sem; struct list_head mmlist; ulong hiwater_rss; ulong hiwater_vm; ulong total_vm; ulong locked_vm; ulong pinned_vm; ulong data_vm; ulong exec_vm; ulong stack_vm; ulong def_flags; spinlock_t.conflict arg_lock; ulong start_code; ulong end_code; ulong start_data; ulong end_data; ulong start_brk; ulong brk; ulong start_stack; ulong arg_start; ulong arg_end; ulong env_start; ulong env_end; ulong saved_auxv[46]; struct mm_rss_stat rss_stat; struct linux_binfmt * binfmt; struct mm_context_t context; ulong flags; struct core_state.conflict * core_state; struct atomic_t membarrier_state; undefined field_0x354; undefined field_0x355; undefined field_0x356; undefined field_0x357; spinlock_t.conflict ioctx_lock; struct kioctx_table * ioctx_table; struct user_namespace * user_ns; struct file * exe_file; struct atomic_t tlb_flush_pending; undefined field_0x38c; undefined field_0x38d; undefined field_0x38e; undefined field_0x38f; struct uprobes_state uprobes_state; struct work_struct async_put_work; }; union sigval { int sival_int; void * sival_ptr; }; struct anon_struct.conflict397e { __kernel_pid_t _pid; __kernel_uid32_t _uid; sigval_t _sigval; }; struct core_thread.conflict { struct task_struct.conflict * task; struct core_thread.conflict * next; }; struct core_state.conflict { struct atomic_t nr_threads; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct core_thread.conflict dumper; struct completion.conflict startup; }; struct util_est { uint enqueued; uint ewma; }; union anon_union.conflict1c5ad_for_field_0 { struct anon_struct.conflict1c589 field_0; }; struct file_operations { struct module * owner; loff_t (* llseek)(struct file *, loff_t, int); ssize_t (* read)(struct file *, char *, size_t, loff_t *); ssize_t (* write)(struct file *, char *, size_t, loff_t *); ssize_t (* read_iter)(struct kiocb *, struct iov_iter *); ssize_t (* write_iter)(struct kiocb *, struct iov_iter *); int (* iterate)(struct file *, struct dir_context *); int (* iterate_shared)(struct file *, struct dir_context *); __poll_t (* poll)(struct file *, struct poll_table_struct *); long (* unlocked_ioctl)(struct file *, uint, ulong); long (* compat_ioctl)(struct file *, uint, ulong); int (* mmap)(struct file *, struct vm_area_struct *); ulong mmap_supported_flags; int (* open)(struct inode *, struct file *); int (* flush)(struct file *, fl_owner_t); int (* release)(struct inode *, struct file *); int (* fsync)(struct file *, loff_t, loff_t, int); int (* fasync)(int, struct file *, int); int (* lock)(struct file *, int, struct file_lock *); ssize_t (* sendpage)(struct file *, struct page *, int, size_t, loff_t *, int); ulong (* get_unmapped_area)(struct file *, ulong, ulong, ulong, ulong); int (* check_flags)(int); int (* flock)(struct file *, int, struct file_lock *); ssize_t (* splice_write)(struct pipe_inode_info *, struct file *, loff_t *, size_t, uint); ssize_t (* splice_read)(struct file *, loff_t *, struct pipe_inode_info *, size_t, uint); int (* setlease)(struct file *, long, struct file_lock * *, void * *); long (* fallocate)(struct file *, int, loff_t, loff_t); void (* show_fdinfo)(struct seq_file *, struct file *); ssize_t (* copy_file_range)(struct file *, loff_t, struct file *, loff_t, size_t, uint); int (* clone_file_range)(struct file *, loff_t, struct file *, loff_t, u64); int (* dedupe_file_range)(struct file *, loff_t, struct file *, loff_t, u64); int (* fadvise)(struct file *, loff_t, loff_t, int); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct kernfs_elem_symlink { struct kernfs_node * target_kn; }; struct kernfs_elem_dir { ulong subdirs; struct rb_root children; struct kernfs_root * root; }; struct kernfs_elem_attr { struct kernfs_ops * ops; struct kernfs_open_node * open; loff_t size; struct kernfs_node * notify_next; }; union anon_union.conflict9ad6_for_field_7 { struct kernfs_elem_dir dir; struct kernfs_elem_symlink symlink; struct kernfs_elem_attr attr; }; struct pgd_t { pgdval_t pgd; }; struct sigset_t { ulong sig[1]; }; struct sigpending { struct list_head list; struct sigset_t signal; }; struct dquot_operations { int (* write_dquot)(struct dquot *); dquot * (* alloc_dquot)(struct super_block *, int); void (* destroy_dquot)(struct dquot *); int (* acquire_dquot)(struct dquot *); int (* release_dquot)(struct dquot *); int (* mark_dirty)(struct dquot *); int (* write_info)(struct super_block *, int); qsize_t * (* get_reserved_space)(struct inode *); int (* get_projid)(struct inode *, struct kprojid_t *); int (* get_inode_usage)(struct inode *, qsize_t *); int (* get_next_id)(struct super_block *, struct kqid *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct files_struct { }; struct device_type.conflict { char * name; struct attribute_group * * groups; int (* uevent)(struct device.conflict *, struct kobj_uevent_env *); char * (* devnode)(struct device.conflict *, umode_t *, struct kuid_t *, struct kgid_t *); void (* release)(struct device.conflict *); struct dev_pm_ops.conflict * pm; }; struct reclaim_state { ulong reclaimed_slab; }; struct hd_struct { }; struct list_lru.conflict { struct list_lru_node.conflict * node; }; struct key_user { }; struct poll_table_struct { }; struct anon_struct.conflictb34 { struct pollfd * ufds; int nfds; int has_timeout; ulong tv_sec; ulong tv_nsec; }; union anon_union.conflictab1_for_field_2 { struct timespec * rmtp; struct compat_timespec * compat_rmtp; }; struct anon_struct.conflictb01 { clockid_t clockid; enum timespec_type type; union anon_union.conflictab1_for_field_2 field_2; u64 expires; }; struct anon_struct.conflicta5a { u32 * uaddr; u32 val; u32 flags; u32 bitset; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; u64 time; u32 * uaddr2; }; union anon_union.conflictb84 { struct anon_struct.conflicta5a futex; struct anon_struct.conflictb01 nanosleep; struct anon_struct.conflictb34 poll; }; struct anon_struct.conflict456b { u64 android_kabi_reserved1; }; union anon_union.conflict1678d_for_field_161 { uint frozen:1; struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide48; union anon_union.conflictb84 field_2; }; struct fscrypt_operations { }; struct load_weight { ulong weight; u32 inv_weight; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; }; struct sched_statistics { u64 wait_start; u64 wait_max; u64 wait_count; u64 wait_sum; u64 iowait_count; u64 iowait_sum; u64 sleep_start; u64 sleep_max; s64 sum_sleep_runtime; u64 block_start; u64 block_max; u64 exec_max; u64 slice_max; u64 nr_migrations_cold; u64 nr_failed_migrations_affine; u64 nr_failed_migrations_running; u64 nr_failed_migrations_hot; u64 nr_forced_migrations; u64 nr_wakeups; u64 nr_wakeups_sync; u64 nr_wakeups_migrate; u64 nr_wakeups_local; u64 nr_wakeups_remote; u64 nr_wakeups_affine; u64 nr_wakeups_affine_attempts; u64 nr_wakeups_passive; u64 nr_wakeups_idle; }; struct sched_avg { u64 last_update_time; u64 load_sum; u64 runnable_load_sum; u32 util_sum; u32 period_contrib; ulong load_avg; ulong runnable_load_avg; ulong util_avg; struct util_est util_est; }; struct sched_entity { struct load_weight load; ulong runnable_weight; struct rb_node run_node; struct list_head group_node; uint on_rq; undefined field_0x44; undefined field_0x45; undefined field_0x46; undefined field_0x47; u64 exec_start; u64 sum_exec_runtime; u64 vruntime; u64 prev_sum_exec_runtime; u64 nr_migrations; struct sched_statistics statistics; int depth; undefined field_0x14c; undefined field_0x14d; undefined field_0x14e; undefined field_0x14f; struct sched_entity * parent; struct cfs_rq * cfs_rq; struct cfs_rq * my_q; undefined field_0x168; undefined field_0x169; undefined field_0x16a; undefined field_0x16b; undefined field_0x16c; undefined field_0x16d; undefined field_0x16e; undefined field_0x16f; undefined field_0x170; undefined field_0x171; undefined field_0x172; undefined field_0x173; undefined field_0x174; undefined field_0x175; undefined field_0x176; undefined field_0x177; undefined field_0x178; undefined field_0x179; undefined field_0x17a; undefined field_0x17b; undefined field_0x17c; undefined field_0x17d; undefined field_0x17e; undefined field_0x17f; struct sched_avg avg; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; undefined field_0x1e0; undefined field_0x1e1; undefined field_0x1e2; undefined field_0x1e3; undefined field_0x1e4; undefined field_0x1e5; undefined field_0x1e6; undefined field_0x1e7; undefined field_0x1e8; undefined field_0x1e9; undefined field_0x1ea; undefined field_0x1eb; undefined field_0x1ec; undefined field_0x1ed; undefined field_0x1ee; undefined field_0x1ef; undefined field_0x1f0; undefined field_0x1f1; undefined field_0x1f2; undefined field_0x1f3; undefined field_0x1f4; undefined field_0x1f5; undefined field_0x1f6; undefined field_0x1f7; undefined field_0x1f8; undefined field_0x1f9; undefined field_0x1fa; undefined field_0x1fb; undefined field_0x1fc; undefined field_0x1fd; undefined field_0x1fe; undefined field_0x1ff; }; struct anon_struct.conflict513f { struct page * next; int pages; int pobjects; }; union anon_union.conflict516c_for_field_0 { struct list_head slab_list; struct anon_struct.conflict513f field_1; }; struct anon_struct.conflict51df { union anon_union.conflict516c_for_field_0 field_0; struct kmem_cache * slab_cache; void * freelist; union anon_union.conflict51bb_for_field_3 field_3; }; struct fprop_local_percpu { struct percpu_counter.conflict events; uint period; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; raw_spinlock_t lock; undefined field_0x44; undefined field_0x45; undefined field_0x46; undefined field_0x47; undefined field_0x48; undefined field_0x49; undefined field_0x4a; undefined field_0x4b; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; undefined field_0x50; undefined field_0x51; undefined field_0x52; undefined field_0x53; undefined field_0x54; undefined field_0x55; undefined field_0x56; undefined field_0x57; }; struct anon_struct.conflict3924 { __kernel_pid_t _pid; __kernel_uid32_t _uid; }; struct anon_struct.conflict39ab { __kernel_pid_t _pid; __kernel_uid32_t _uid; int _status; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; __kernel_clock_t _utime; __kernel_clock_t _stime; }; struct anon_struct.conflict3945 { __kernel_timer_t _tid; int _overrun; sigval_t _sigval; int _sys_private; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; }; struct anon_struct.conflict3a93 { long _band; int _fd; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; }; struct anon_struct.conflict3a2d { char _dummy_pkey[8]; __u32 _pkey; }; struct anon_struct.conflict39f0 { char _dummy_bnd[8]; void * _lower; void * _upper; }; union anon_union.conflict3a4e_for_field_1 { short _addr_lsb; struct anon_struct.conflict39f0 _addr_bnd; struct anon_struct.conflict3a2d _addr_pkey; }; struct anon_struct.conflict3a78 { void * _addr; union anon_union.conflict3a4e_for_field_1 field_1; }; struct anon_struct.conflict3ab4 { void * _call_addr; int _syscall; uint _arch; }; union anon_union.conflict3ae1_for__sifields { int _pad[28]; struct anon_struct.conflict3924 _kill; struct anon_struct.conflict3945 _timer; struct anon_struct.conflict397e _rt; struct anon_struct.conflict39ab _sigchld; struct anon_struct.conflict3a78 _sigfault; struct anon_struct.conflict3a93 _sigpoll; struct anon_struct.conflict3ab4 _sigsys; }; struct siginfo { int si_signo; int si_errno; int si_code; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; union anon_union.conflict3ae1_for__sifields _sifields; }; struct workqueue_struct { }; struct unicode_map { }; struct request_queue { }; struct rcu_node { }; struct pipe_inode_info { }; struct anon_struct.conflict4e7f { // Missing member autask : arch_uprobe_task at offset 0x0 [zero-length member] ulong vaddr; }; struct anon_struct.conflict4ea0 { struct callback_head dup_xol_work; ulong dup_xol_addr; }; union anon_union.conflict4ec1_for_field_1 { struct anon_struct.conflict4e7f field_0; struct anon_struct.conflict4ea0 field_1; }; struct rcuwait.conflict { struct task_struct.conflict1 * task; }; struct rcu_sync.conflict { int gp_state; int gp_count; wait_queue_head_t.conflict gp_wait; int cb_state; undefined field_0x34; undefined field_0x35; undefined field_0x36; undefined field_0x37; struct callback_head cb_head; enum rcu_sync_type gp_type; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; }; struct percpu_rw_semaphore.conflict { struct rcu_sync.conflict rss; uint * read_count; struct rw_semaphore.conflict rw_sem; struct rcuwait.conflict writer; int readers_block; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; }; struct nfs4_lock_state { }; struct timer_list { struct hlist_node entry; ulong expires; void (* function)(struct timer_list *); u32 flags; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct wakeup_source.conflict { char * name; int id; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct list_head entry; spinlock_t lock; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; undefined field_0x28; undefined field_0x29; undefined field_0x2a; undefined field_0x2b; undefined field_0x2c; undefined field_0x2d; undefined field_0x2e; undefined field_0x2f; undefined field_0x30; undefined field_0x31; undefined field_0x32; undefined field_0x33; undefined field_0x34; undefined field_0x35; undefined field_0x36; undefined field_0x37; struct wake_irq * wakeirq; struct timer_list timer; ulong timer_expires; ktime_t total_time; ktime_t max_time; ktime_t last_time; ktime_t start_prevent_time; ktime_t prevent_sleep_time; ulong event_count; ulong active_count; ulong relax_count; ulong expire_count; ulong wakeup_count; struct device.conflict * dev; bool active:1; bool autosleep_enabled:1; undefined field_0xd9; undefined field_0xda; undefined field_0xdb; undefined field_0xdc; undefined field_0xdd; undefined field_0xde; undefined field_0xdf; }; struct list_lru { struct list_lru_node * node; struct list_head list; int shrinker_id; bool memcg_aware; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; }; struct module_sect_attrs { }; union anon_union.conflict527d_for_field_3 { struct mm_struct * pt_mm; struct atomic_t pt_frag_refcount; }; struct anon_struct.conflict529c { ulong _pt_pad_1; pgtable_t pmd_huge_pte; ulong _pt_pad_2; union anon_union.conflict527d_for_field_3 field_3; spinlock_t ptl; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; }; struct anon_struct.conflict5217 { ulong compound_head; uchar compound_dtor; uchar compound_order; undefined field_0xa; undefined field_0xb; struct atomic_t compound_mapcount; }; struct anon_struct.conflict4ffb { struct list_head lru; struct address_space * mapping; ulong index; ulong private; }; struct anon_struct.conflict5250 { ulong _compound_pad_1; ulong _compound_pad_2; struct list_head deferred_list; }; union anon_union.conflict5393_for_field_1 { struct anon_struct.conflict4ffb field_0; struct anon_struct.conflict51df field_1; struct anon_struct.conflict5217 field_2; struct anon_struct.conflict5250 field_3; struct anon_struct.conflict529c field_4; struct anon_struct.conflict52db field_5; struct callback_head callback_head; }; struct file_lock_operations.conflict { void (* fl_copy_lock)(struct file_lock.conflict *, struct file_lock.conflict *); void (* fl_release_private)(struct file_lock.conflict *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct cgroup_namespace { refcount_t count; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct ns_common ns; struct user_namespace * user_ns; struct ucounts * ucounts; struct css_set * root_cset; }; struct upid { int nr; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct pid_namespace * ns; }; struct perf_event { }; struct mem_cgroup { }; struct lock_manager_operations.conflict { int (* lm_compare_owner)(struct file_lock.conflict *, struct file_lock.conflict *); ulong (* lm_owner_key)(struct file_lock.conflict *); fl_owner_t (* lm_get_owner)(fl_owner_t); void (* lm_put_owner)(fl_owner_t); void (* lm_notify)(struct file_lock.conflict *); int (* lm_grant)(struct file_lock.conflict *, int); bool (* lm_break)(struct file_lock.conflict *); int (* lm_change)(struct file_lock.conflict *, int, struct list_head *); void (* lm_setup)(struct file_lock.conflict *, void * *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct key_type { }; struct resource { resource_size_t start; resource_size_t end; char * name; ulong flags; ulong desc; struct resource * parent; struct resource * sibling; struct resource * child; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct vmem_altmap { ulong base_pfn; ulong reserve; ulong free; ulong align; ulong alloc; }; struct dev_pagemap { int (* page_fault)(struct vm_area_struct *, ulong, struct page *, uint, struct pmd_t *); void (* page_free)(struct page *, void *); struct vmem_altmap altmap; bool altmap_valid; undefined field_0x39; undefined field_0x3a; undefined field_0x3b; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; struct resource res; struct percpu_ref * ref; void (* kill)(struct percpu_ref *); struct device * dev; void * data; enum memory_type type; undefined field_0xc4; undefined field_0xc5; undefined field_0xc6; undefined field_0xc7; }; union anon_union.conflict94a0_for_field_6 { time64_t expiry; time64_t revoked_at; }; struct dir_context { int (* actor)(struct dir_context *, char *, int, loff_t, u64, uint); loff_t pos; }; struct swap_cluster_info { spinlock_t.conflict lock; uint data:24; uint flags:8; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; }; struct lock_class_key { }; struct file_system_type { // Missing member s_lock_key : lock_class_key at offset 0x48 [zero-length member] Missing member s_umount_key : lock_class_key at offset 0x48 [zero-length member] Missing member s_vfs_rename_key : lock_class_key at offset 0x48 [zero-length member] Missing member i_lock_key : lock_class_key at offset 0x48 [zero-length member] Missing member i_mutex_key : lock_class_key at offset 0x48 [zero-length member] Missing member i_mutex_dir_key : lock_class_key at offset 0x48 [zero-length member] Missing member android_kabi_reserved1 : u64 at offset 0x48 [conflict with s_writers_key] char * name; int fs_flags; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; dentry * (* mount)(struct file_system_type *, int, char *, void *); dentry * (* mount2)(struct vfsmount *, struct file_system_type *, int, char *, void *); void * (* alloc_mnt_data)(void); void (* kill_sb)(struct super_block *); struct module * owner; struct file_system_type * next; struct hlist_head fs_supers; struct lock_class_key s_writers_key[3]; undefined field_0x4b; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct nfs4_lock_info { struct nfs4_lock_state * owner; }; struct anon_struct.conflict9a99 { u32 ino; u32 generation; }; union anon_union.conflict1ee53_for_field_41 { struct pipe_inode_info * i_pipe; struct block_device.conflict * i_bdev; struct cdev * i_cdev; char * i_link; uint i_dir_seq; }; struct swap_cluster_list { struct swap_cluster_info head; struct swap_cluster_info tail; }; struct nfs_lock_info { u32 state; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct nlm_lockowner * owner; struct list_head list; }; struct anon_struct.conflict8239 { struct list_head link; int state; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; }; union anon_union.conflict825d_for_fl_u { struct nfs_lock_info nfs_fl; struct nfs4_lock_info nfs4_fl; struct anon_struct.conflict8239 afs; }; struct kprojid_t { projid_t val; }; union anon_union.conflict6a84_for_field_0 { struct kuid_t uid; struct kgid_t gid; struct kprojid_t projid; }; struct kqid { union anon_union.conflict6a84_for_field_0 field_0; enum quota_type type; }; struct dquot { struct hlist_node dq_hash; struct list_head dq_inuse; struct list_head dq_free; struct list_head dq_dirty; struct mutex dq_lock; spinlock_t dq_dqb_lock; struct atomic_t dq_count; struct super_block * dq_sb; struct kqid dq_id; loff_t dq_off; ulong dq_flags; struct mem_dqblk dq_dqb; }; struct class { char * name; struct module * owner; struct attribute_group * * class_groups; struct attribute_group * * dev_groups; struct kobject * dev_kobj; int (* dev_uevent)(struct device *, struct kobj_uevent_env *); char * (* devnode)(struct device *, umode_t *); void (* class_release)(struct class *); void (* dev_release)(struct device *); int (* shutdown_pre)(struct device *); struct kobj_ns_type_operations * ns_type; void * (* namespace)(struct device *); void (* get_ownership)(struct device *, struct kuid_t *, struct kgid_t *); struct dev_pm_ops * pm; struct subsys_private * p; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct cftype { char name[64]; ulong private; size_t max_write_len; uint flags; uint file_offset; struct cgroup_subsys * ss; struct list_head node; struct kernfs_ops * kf_ops; int (* open)(struct kernfs_open_file *); void (* release)(struct kernfs_open_file *); u64 (* read_u64)(struct cgroup_subsys_state *, struct cftype *); s64 (* read_s64)(struct cgroup_subsys_state *, struct cftype *); int (* seq_show)(struct seq_file *, void *); void * (* seq_start)(struct seq_file *, loff_t *); void * (* seq_next)(struct seq_file *, void *, loff_t *); void (* seq_stop)(struct seq_file *, void *); int (* write_u64)(struct cgroup_subsys_state *, struct cftype *, u64); int (* write_s64)(struct cgroup_subsys_state *, struct cftype *, s64); ssize_t (* write)(struct kernfs_open_file *, char *, size_t, loff_t); __poll_t (* poll)(struct kernfs_open_file *, struct poll_table_struct *); }; struct sched_info { ulong pcount; ulonglong run_delay; ulonglong last_arrival; ulonglong last_queued; }; struct kiocb { struct file * ki_filp; loff_t ki_pos; void (* ki_complete)(struct kiocb *, long, long); void * private; int ki_flags; u16 ki_hint; u16 ki_ioprio; }; struct file_lock_context { spinlock_t flc_lock; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct list_head flc_flock; struct list_head flc_posix; struct list_head flc_lease; }; struct key_restriction { int (* check)(struct key *, struct key_type *, union key_payload *, struct key *); struct key * key; struct key_type * keytype; }; struct dev_pm_ops { int (* prepare)(struct device *); void (* complete)(struct device *); int (* suspend)(struct device *); int (* resume)(struct device *); int (* freeze)(struct device *); int (* thaw)(struct device *); int (* poweroff)(struct device *); int (* restore)(struct device *); int (* suspend_late)(struct device *); int (* resume_early)(struct device *); int (* freeze_late)(struct device *); int (* thaw_early)(struct device *); int (* poweroff_late)(struct device *); int (* restore_early)(struct device *); int (* suspend_noirq)(struct device *); int (* resume_noirq)(struct device *); int (* freeze_noirq)(struct device *); int (* thaw_noirq)(struct device *); int (* poweroff_noirq)(struct device *); int (* restore_noirq)(struct device *); int (* runtime_suspend)(struct device *); int (* runtime_resume)(struct device *); int (* runtime_idle)(struct device *); }; struct pm_domain_data { }; struct vm_struct { struct vm_struct * next; void * addr; ulong size; ulong flags; struct page * * pages; uint nr_pages; undefined field_0x2c; undefined field_0x2d; undefined field_0x2e; undefined field_0x2f; phys_addr_t phys_addr; void * caller; }; struct iommu_group { }; struct inode_operations.conflict { dentry.conflict * (* lookup)(struct inode.conflict *, struct dentry.conflict *, uint); char * (* get_link)(struct dentry.conflict *, struct inode.conflict *, struct delayed_call *); int (* permission)(struct inode.conflict *, int); int (* permission2)(struct vfsmount *, struct inode.conflict *, int); posix_acl * (* get_acl)(struct inode.conflict *, int); int (* readlink)(struct dentry.conflict *, char *, int); int (* create)(struct inode.conflict *, struct dentry.conflict *, umode_t, bool); int (* link)(struct dentry.conflict *, struct inode.conflict *, struct dentry.conflict *); int (* unlink)(struct inode.conflict *, struct dentry.conflict *); int (* symlink)(struct inode.conflict *, struct dentry.conflict *, char *); int (* mkdir)(struct inode.conflict *, struct dentry.conflict *, umode_t); int (* rmdir)(struct inode.conflict *, struct dentry.conflict *); int (* mknod)(struct inode.conflict *, struct dentry.conflict *, umode_t, dev_t); int (* rename)(struct inode.conflict *, struct dentry.conflict *, struct inode.conflict *, struct dentry.conflict *, uint); int (* setattr)(struct dentry.conflict *, struct iattr.conflict *); int (* setattr2)(struct vfsmount *, struct dentry.conflict *, struct iattr.conflict *); int (* getattr)(struct path.conflict *, struct kstat *, u32, uint); ssize_t (* listxattr)(struct dentry.conflict *, char *, size_t); int (* fiemap)(struct inode.conflict *, struct fiemap_extent_info *, u64, u64); int (* update_time)(struct inode.conflict *, struct timespec64 *, int); int (* atomic_open)(struct inode.conflict *, struct dentry.conflict *, struct file.conflict *, uint, umode_t); int (* tmpfile)(struct inode.conflict *, struct dentry.conflict *, umode_t); int (* set_acl)(struct inode.conflict *, struct posix_acl *, int); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; undefined field_0xd8; undefined field_0xd9; undefined field_0xda; undefined field_0xdb; undefined field_0xdc; undefined field_0xdd; undefined field_0xde; undefined field_0xdf; undefined field_0xe0; undefined field_0xe1; undefined field_0xe2; undefined field_0xe3; undefined field_0xe4; undefined field_0xe5; undefined field_0xe6; undefined field_0xe7; undefined field_0xe8; undefined field_0xe9; undefined field_0xea; undefined field_0xeb; undefined field_0xec; undefined field_0xed; undefined field_0xee; undefined field_0xef; undefined field_0xf0; undefined field_0xf1; undefined field_0xf2; undefined field_0xf3; undefined field_0xf4; undefined field_0xf5; undefined field_0xf6; undefined field_0xf7; undefined field_0xf8; undefined field_0xf9; undefined field_0xfa; undefined field_0xfb; undefined field_0xfc; undefined field_0xfd; undefined field_0xfe; undefined field_0xff; }; struct file_ra_state { ulong start; uint size; uint async_size; uint ra_pages; uint mmap_miss; loff_t prev_pos; }; struct blk_plug { }; struct pte_t { pteval_t pte; }; struct timerqueue_node { struct rb_node node; ktime_t expires; }; struct hrtimer { struct timerqueue_node node; ktime_t _softexpires; hrtimer_restart (* function)(struct hrtimer *); struct hrtimer_clock_base * base; u8 state; u8 is_rel; u8 is_soft; undefined field_0x3b; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; u64 android_kabi_reserved1; }; struct sched_dl_entity { struct rb_node rb_node; u64 dl_runtime; u64 dl_deadline; u64 dl_period; u64 dl_bw; u64 dl_density; s64 runtime; u64 deadline; uint flags; uint dl_throttled:1; uint dl_boosted:1; uint dl_yielded:1; uint dl_non_contending:1; uint dl_overrun:1; undefined field_0x55; undefined field_0x56; undefined field_0x57; struct hrtimer dl_timer; struct hrtimer inactive_timer; }; struct anon_struct.conflict94bf { struct key_type * type; char * description; }; struct msi_msg { }; struct cdev { struct kobject kobj; struct module * owner; struct file_operations.conflict * ops; struct list_head list; dev_t dev; uint count; }; struct lockref.conflict { union anon_union.conflict1c5ad_for_field_0 field_0; }; struct proc_dir_entry { }; struct kset.conflict { struct list_head list; spinlock_t.conflict list_lock; struct kobject kobj; struct kset_uevent_ops.conflict * uevent_ops; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct kparam_string { uint maxlen; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; char * string; }; struct page_frag { struct page * page; __u32 offset; __u32 size; }; struct sighand_struct { }; struct shrink_control { gfp_t gfp_mask; int nid; ulong nr_to_scan; ulong nr_scanned; struct mem_cgroup * memcg; }; struct pm_message { int event; }; struct dev_pm_info { pm_message_t power_state; uint can_wakeup:1; uint async_suspend:1; bool in_dpm_list:1; bool is_prepared:1; bool is_suspended:1; bool is_noirq_suspended:1; bool is_late_suspended:1; bool no_pm:1; bool early_init:1; bool direct_complete:1; undefined field_0x6; undefined field_0x7; u32 driver_flags; spinlock_t lock; struct list_head entry; struct completion completion; struct wakeup_source * wakeup; bool wakeup_path:1; bool syscore:1; bool no_pm_callbacks:1; uint must_resume:1; uint may_skip_resume:1; undefined field_0x49; undefined field_0x4a; undefined field_0x4b; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; struct timer_list suspend_timer; ulong timer_expires; struct work_struct work; wait_queue_head_t wait_queue; struct wake_irq * wakeirq; struct atomic_t usage_count; struct atomic_t child_count; uint disable_depth:3; uint idle_notification:1; uint request_pending:1; uint deferred_resume:1; uint runtime_auto:1; bool ignore_children:1; uint no_callbacks:1; uint irq_safe:1; uint use_autosuspend:1; uint timer_autosuspends:1; uint memalloc_noio:1; undefined field_0xea; undefined field_0xeb; uint links_count; enum rpm_request request; enum rpm_status runtime_status; int runtime_error; int autosuspend_delay; ulong last_busy; ulong active_jiffies; ulong suspended_jiffies; ulong accounting_timestamp; struct pm_subsys_data * subsys_data; void (* set_latency_tolerance)(struct device *, s32); struct dev_pm_qos * qos; }; struct seq_operations { void * (* start)(struct seq_file *, loff_t *); void (* stop)(struct seq_file *, void *); void * (* next)(struct seq_file *, void *, loff_t *); int (* show)(struct seq_file *, void *); }; struct attribute { char * name; umode_t mode; undefined field_0xa; undefined field_0xb; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; }; struct bin_attribute { struct attribute attr; size_t size; void * private; ssize_t (* read)(struct file *, struct kobject *, struct bin_attribute *, char *, loff_t, size_t); ssize_t (* write)(struct file *, struct kobject *, struct bin_attribute *, char *, loff_t, size_t); int (* mmap)(struct file *, struct kobject *, struct bin_attribute *, struct vm_area_struct *); }; struct property { char * name; int length; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; void * value; struct property * next; struct bin_attribute attr; }; struct irq_domain { struct list_head link; char * name; struct irq_domain_ops * ops; void * host_data; uint flags; uint mapcount; struct fwnode_handle * fwnode; enum irq_domain_bus_token bus_token; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; struct irq_domain_chip_generic * gc; struct irq_domain * parent; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; irq_hw_number_t hwirq_max; uint revmap_direct_max_irq; uint revmap_size; struct radix_tree_root revmap_tree; struct mutex revmap_tree_mutex; uint[0] linear_revmap; }; struct prev_cputime { u64 utime; u64 stime; raw_spinlock_t lock; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; }; struct percpu_cluster { struct swap_cluster_info index; uint next; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; }; struct quota_format_ops { int (* check_quota_file)(struct super_block *, int); int (* read_file_info)(struct super_block *, int); int (* write_file_info)(struct super_block *, int); int (* free_file_info)(struct super_block *, int); int (* read_dqblk)(struct dquot *); int (* commit_dqblk)(struct dquot *); int (* release_dqblk)(struct dquot *); int (* get_next_id)(struct super_block *, struct kqid *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct vm_fault { struct vm_area_struct * vma; uint flags; gfp_t gfp_mask; ulong pgoff; ulong address; struct pmd_t * pmd; struct pud_t * pud; struct pte_t orig_pte; struct page * cow_page; struct mem_cgroup * memcg; struct page * page; struct pte_t * pte; spinlock_t * ptl; pgtable_t prealloc_pte; }; struct xol_area { }; struct anon_struct.conflict170c { spinlock_t lock; int count; }; union anon_union.conflict172d_for_field_0 { __u64 lock_count; struct anon_struct.conflict170c field_1; }; struct prev_cputime.conflict { u64 utime; u64 stime; raw_spinlock_t.conflict lock; }; union anon_union.conflict1c63b_for_field_12 { struct list_head d_lru; wait_queue_head_t.conflict * d_wait; }; struct cgroup_freezer_state { bool freeze; undefined field_0x1; undefined field_0x2; undefined field_0x3; int e_freeze; int nr_frozen_descendants; int nr_frozen_tasks; }; struct cgroup_file { struct kernfs_node * kn; ulong notified_at; struct timer_list notify_timer; }; struct percpu_ref { atomic_long_t count; ulong percpu_count_ptr; void (* release)(struct percpu_ref *); void (* confirm_switch)(struct percpu_ref *); bool force_atomic:1; undefined field_0x21; undefined field_0x22; undefined field_0x23; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; struct callback_head rcu; }; struct rcu_work { struct work_struct work; struct callback_head rcu; struct workqueue_struct * wq; }; struct cgroup_subsys_state { struct cgroup * cgroup; struct cgroup_subsys * ss; struct percpu_ref refcnt; struct list_head sibling; struct list_head children; struct list_head rstat_css_node; int id; uint flags; u64 serial_nr; struct atomic_t online_cnt; undefined field_0x8c; undefined field_0x8d; undefined field_0x8e; undefined field_0x8f; struct work_struct destroy_work; struct rcu_work destroy_rwork; struct cgroup_subsys_state * parent; }; struct task_cputime { u64 utime; u64 stime; ulonglong sum_exec_runtime; }; struct cgroup_base_stat { struct task_cputime cputime; }; struct cgroup { // Missing member psi : psi_group at offset 0x390 [zero-length member] Missing member bpf : cgroup_bpf at offset 0x390 [zero-length member] struct cgroup_subsys_state self; ulong flags; int id; int level; int max_depth; int nr_descendants; int nr_dying_descendants; int max_descendants; int nr_populated_csets; int nr_populated_domain_children; int nr_populated_threaded_children; int nr_threaded_children; struct kernfs_node * kn; struct cgroup_file procs_file; struct cgroup_file events_file; u16 subtree_control; u16 subtree_ss_mask; u16 old_subtree_control; u16 old_subtree_ss_mask; struct cgroup_subsys_state * subsys[5]; struct cgroup_root * root; struct list_head cset_links; struct list_head e_csets[5]; struct cgroup * dom_cgrp; struct cgroup * old_dom_cgrp; struct cgroup_rstat_cpu * rstat_cpu; struct list_head rstat_css_list; struct cgroup_base_stat pending_bstat; struct cgroup_base_stat bstat; struct prev_cputime.conflict prev_cputime; struct list_head pidlists; struct mutex pidlist_mutex; undefined field_0x320; undefined field_0x321; undefined field_0x322; undefined field_0x323; undefined field_0x324; undefined field_0x325; undefined field_0x326; undefined field_0x327; undefined field_0x328; undefined field_0x329; undefined field_0x32a; undefined field_0x32b; undefined field_0x32c; undefined field_0x32d; undefined field_0x32e; undefined field_0x32f; undefined field_0x330; undefined field_0x331; undefined field_0x332; undefined field_0x333; undefined field_0x334; undefined field_0x335; undefined field_0x336; undefined field_0x337; wait_queue_head_t offline_waitq; undefined field_0x350; undefined field_0x351; undefined field_0x352; undefined field_0x353; undefined field_0x354; undefined field_0x355; undefined field_0x356; undefined field_0x357; undefined field_0x358; undefined field_0x359; undefined field_0x35a; undefined field_0x35b; undefined field_0x35c; undefined field_0x35d; undefined field_0x35e; undefined field_0x35f; struct work_struct release_agent_work; struct atomic_t congestion_count; struct cgroup_freezer_state freezer; undefined field_0x3a4; undefined field_0x3a5; undefined field_0x3a6; undefined field_0x3a7; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; int[0] ancestor_ids; }; struct lock_manager_operations { int (* lm_compare_owner)(struct file_lock *, struct file_lock *); ulong (* lm_owner_key)(struct file_lock *); fl_owner_t (* lm_get_owner)(fl_owner_t); void (* lm_put_owner)(fl_owner_t); void (* lm_notify)(struct file_lock *); int (* lm_grant)(struct file_lock *, int); bool (* lm_break)(struct file_lock *); int (* lm_change)(struct file_lock *, int, struct list_head *); void (* lm_setup)(struct file_lock *, void * *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct sched_rt_entity { struct list_head run_list; ulong timeout; ulong watchdog_stamp; uint time_slice; ushort on_rq; ushort on_list; struct sched_rt_entity * back; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct cma { }; struct module_kobject.conflict { struct kobject kobj; struct module.conflict * mod; struct kobject * drivers_dir; struct module_param_attrs * mp; struct completion.conflict * kobj_completion; }; struct mutex.conflict { atomic_long_t owner; spinlock_t.conflict wait_lock; struct optimistic_spin_queue osq; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; struct list_head wait_list; }; struct mod_plt_sec { struct elf64_shdr * plt; int plt_num_entries; int plt_max_entries; }; struct mod_arch_specific { struct mod_plt_sec core; struct mod_plt_sec init; struct plt_entry * ftrace_trampoline; }; struct mod_kallsyms { Elf64_Sym * symtab; uint num_symtab; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; char * strtab; }; struct latch_tree_node { struct rb_node node[2]; }; struct mod_tree_node.conflict { struct module.conflict * mod; struct latch_tree_node node; }; struct module_layout { void * base; uint size; uint text_size; uint ro_size; uint ro_after_init_size; struct mod_tree_node.conflict mtn; }; struct module.conflict { enum module_state state; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct list_head list; char name[56]; struct module_kobject.conflict mkobj; struct module_attribute * modinfo_attrs; char * version; char * srcversion; struct kobject * holders_dir; struct kernel_symbol * syms; s32 * crcs; uint num_syms; undefined field_0x104; undefined field_0x105; undefined field_0x106; undefined field_0x107; struct mutex.conflict param_lock; struct kernel_param.conflict * kp; uint num_kp; uint num_gpl_syms; struct kernel_symbol * gpl_syms; s32 * gpl_crcs; bool sig_ok; bool async_probe_requested; undefined field_0x162; undefined field_0x163; undefined field_0x164; undefined field_0x165; undefined field_0x166; undefined field_0x167; struct kernel_symbol * gpl_future_syms; s32 * gpl_future_crcs; uint num_gpl_future_syms; uint num_exentries; struct exception_table_entry * extable; int (* init)(void); undefined field_0x190; undefined field_0x191; undefined field_0x192; undefined field_0x193; undefined field_0x194; undefined field_0x195; undefined field_0x196; undefined field_0x197; undefined field_0x198; undefined field_0x199; undefined field_0x19a; undefined field_0x19b; undefined field_0x19c; undefined field_0x19d; undefined field_0x19e; undefined field_0x19f; undefined field_0x1a0; undefined field_0x1a1; undefined field_0x1a2; undefined field_0x1a3; undefined field_0x1a4; undefined field_0x1a5; undefined field_0x1a6; undefined field_0x1a7; undefined field_0x1a8; undefined field_0x1a9; undefined field_0x1aa; undefined field_0x1ab; undefined field_0x1ac; undefined field_0x1ad; undefined field_0x1ae; undefined field_0x1af; undefined field_0x1b0; undefined field_0x1b1; undefined field_0x1b2; undefined field_0x1b3; undefined field_0x1b4; undefined field_0x1b5; undefined field_0x1b6; undefined field_0x1b7; undefined field_0x1b8; undefined field_0x1b9; undefined field_0x1ba; undefined field_0x1bb; undefined field_0x1bc; undefined field_0x1bd; undefined field_0x1be; undefined field_0x1bf; struct module_layout core_layout; struct module_layout init_layout; struct mod_arch_specific arch; ulong taints; uint num_bugs; undefined field_0x294; undefined field_0x295; undefined field_0x296; undefined field_0x297; struct list_head bug_list; struct bug_entry * bug_table; struct mod_kallsyms * kallsyms; struct mod_kallsyms core_kallsyms; struct module_sect_attrs * sect_attrs; struct module_notes_attrs * notes_attrs; char * args; void * percpu; uint percpu_size; uint num_tracepoints; tracepoint_ptr_t * tracepoints_ptrs; uint num_trace_bprintk_fmt; undefined field_0x304; undefined field_0x305; undefined field_0x306; undefined field_0x307; char * * trace_bprintk_fmt_start; struct trace_event_call * * trace_events; uint num_trace_events; undefined field_0x31c; undefined field_0x31d; undefined field_0x31e; undefined field_0x31f; struct trace_eval_map * * trace_evals; uint num_trace_evals; uint num_ftrace_callsites; ulong * ftrace_callsites; struct list_head source_list; struct list_head target_list; void (* exit)(void); struct atomic_t refcnt; undefined field_0x364; undefined field_0x365; undefined field_0x366; undefined field_0x367; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; undefined field_0x388; undefined field_0x389; undefined field_0x38a; undefined field_0x38b; undefined field_0x38c; undefined field_0x38d; undefined field_0x38e; undefined field_0x38f; undefined field_0x390; undefined field_0x391; undefined field_0x392; undefined field_0x393; undefined field_0x394; undefined field_0x395; undefined field_0x396; undefined field_0x397; undefined field_0x398; undefined field_0x399; undefined field_0x39a; undefined field_0x39b; undefined field_0x39c; undefined field_0x39d; undefined field_0x39e; undefined field_0x39f; undefined field_0x3a0; undefined field_0x3a1; undefined field_0x3a2; undefined field_0x3a3; undefined field_0x3a4; undefined field_0x3a5; undefined field_0x3a6; undefined field_0x3a7; undefined field_0x3a8; undefined field_0x3a9; undefined field_0x3aa; undefined field_0x3ab; undefined field_0x3ac; undefined field_0x3ad; undefined field_0x3ae; undefined field_0x3af; undefined field_0x3b0; undefined field_0x3b1; undefined field_0x3b2; undefined field_0x3b3; undefined field_0x3b4; undefined field_0x3b5; undefined field_0x3b6; undefined field_0x3b7; undefined field_0x3b8; undefined field_0x3b9; undefined field_0x3ba; undefined field_0x3bb; undefined field_0x3bc; undefined field_0x3bd; undefined field_0x3be; undefined field_0x3bf; }; struct shrinker.conflict { ulong (* count_objects)(struct shrinker.conflict *, struct shrink_control *); ulong (* scan_objects)(struct shrinker.conflict *, struct shrink_control *); long batch; int seeks; uint flags; struct list_head list; atomic_long_t * nr_deferred; }; struct posix_acl { }; union key_payload { void * rcu_data0; void * data[4]; }; struct pid.conflict { struct atomic_t count; uint level; struct hlist_head tasks[4]; wait_queue_head_t.conflict wait_pidfd; struct callback_head rcu; struct upid numbers[1]; }; struct dev_pm_info.conflict { pm_message_t power_state; uint can_wakeup:1; uint async_suspend:1; bool in_dpm_list:1; bool is_prepared:1; bool is_suspended:1; bool is_noirq_suspended:1; bool is_late_suspended:1; bool no_pm:1; bool early_init:1; bool direct_complete:1; undefined field_0x6; undefined field_0x7; u32 driver_flags; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; spinlock_t lock; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; undefined field_0x18; undefined field_0x19; undefined field_0x1a; undefined field_0x1b; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; undefined field_0x20; undefined field_0x21; undefined field_0x22; undefined field_0x23; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; struct list_head entry; struct completion.conflict completion; struct wakeup_source.conflict * wakeup; bool wakeup_path:1; bool syscore:1; bool no_pm_callbacks:1; uint must_resume:1; uint may_skip_resume:1; undefined field_0x71; undefined field_0x72; undefined field_0x73; undefined field_0x74; undefined field_0x75; undefined field_0x76; undefined field_0x77; struct timer_list suspend_timer; ulong timer_expires; struct work_struct work; wait_queue_head_t.conflict wait_queue; struct wake_irq * wakeirq; struct atomic_t usage_count; struct atomic_t child_count; uint disable_depth:3; uint idle_notification:1; uint request_pending:1; uint deferred_resume:1; uint runtime_auto:1; bool ignore_children:1; uint no_callbacks:1; uint irq_safe:1; uint use_autosuspend:1; uint timer_autosuspends:1; uint memalloc_noio:1; undefined field_0x122; undefined field_0x123; uint links_count; enum rpm_request request; enum rpm_status runtime_status; int runtime_error; int autosuspend_delay; ulong last_busy; ulong active_jiffies; ulong suspended_jiffies; ulong accounting_timestamp; struct pm_subsys_data.conflict * subsys_data; void (* set_latency_tolerance)(struct device.conflict *, s32); struct dev_pm_qos * qos; }; struct dma_coherent_mem { }; struct klist_node { void * n_klist; struct list_head n_node; struct kref n_ref; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; }; struct kparam_array { uint max; uint elemsize; uint * num; struct kernel_param_ops * ops; void * elem; }; struct kstatfs { }; struct qc_info { int i_fieldmask; uint i_flags; uint i_spc_timelimit; uint i_ino_timelimit; uint i_rt_spc_timelimit; uint i_spc_warnlimit; uint i_ino_warnlimit; uint i_rt_spc_warnlimit; }; struct anon_struct.conflict94f9 { struct list_head name_link; struct assoc_array keys; }; union anon_union.conflict951a_for_field_16 { union key_payload payload; struct anon_struct.conflict94f9 field_1; }; struct elf64_shdr { Elf64_Word sh_name; Elf64_Word sh_type; Elf64_Xword sh_flags; Elf64_Addr sh_addr; Elf64_Off sh_offset; Elf64_Xword sh_size; Elf64_Word sh_link; Elf64_Word sh_info; Elf64_Xword sh_addralign; Elf64_Xword sh_entsize; }; struct debug_info { int suspended_step; int bps_disabled; int wps_disabled; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct perf_event * hbp_break[16]; struct perf_event * hbp_watch[16]; }; union anon_union.conflict7eb0_for_f_u { struct llist_node fu_llist; struct callback_head fu_rcuhead; }; struct anon_struct.conflictd72 { u8 wlocked; u8 __lstate[3]; }; union anon_union.conflictda3_for_field_0 { struct atomic_t cnts; struct anon_struct.conflictd72 field_1; }; struct qrwlock { union anon_union.conflictda3_for_field_0 field_0; arch_spinlock_t wait_lock; }; struct rwlock_t { arch_rwlock_t raw_lock; }; struct fown_struct { struct rwlock_t lock; struct pid * pid; enum pid_type pid_type; struct kuid_t uid; struct kuid_t euid; int signum; }; struct file { union anon_union.conflict7eb0_for_f_u f_u; struct path f_path; struct inode * f_inode; struct file_operations * f_op; spinlock_t f_lock; enum rw_hint f_write_hint; atomic_long_t f_count; uint f_flags; fmode_t f_mode; struct mutex f_pos_lock; loff_t f_pos; struct fown_struct f_owner; struct cred * f_cred; struct file_ra_state f_ra; u64 f_version; void * f_security; void * private_data; struct list_head f_ep_links; struct list_head f_tfile_llink; struct address_space * f_mapping; errseq_t f_wb_err; undefined field_0xfc; undefined field_0xfd; undefined field_0xfe; undefined field_0xff; }; struct pud_t { struct pgd_t pgd; }; struct sem_undo_list { }; struct sg_table { struct scatterlist * sgl; uint nents; uint orig_nents; }; struct uprobe_task { enum uprobe_task_state state; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; union anon_union.conflict4ec1_for_field_1 field_1; struct uprobe * active_uprobe; ulong xol_vaddr; struct return_instance * return_instances; uint depth; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; }; struct mem_dqinfo { struct quota_format_type.conflict * dqi_format; int dqi_fmt_id; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct list_head dqi_dirty_list; ulong dqi_flags; uint dqi_bgrace; uint dqi_igrace; qsize_t dqi_max_spc_limit; qsize_t dqi_max_ino_limit; void * dqi_priv; }; struct quota_info.conflict { uint flags; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct rw_semaphore.conflict dqio_sem; struct inode.conflict * files[3]; struct mem_dqinfo info[3]; struct quota_format_ops.conflict * ops[3]; }; union anon_union.conflict9612_for_field_24 { int non_rcu; struct callback_head rcu; }; struct kernel_cap_struct { __u32 cap[2]; }; struct cred { struct atomic_t usage; struct kuid_t uid; struct kgid_t gid; struct kuid_t suid; struct kgid_t sgid; struct kuid_t euid; struct kgid_t egid; struct kuid_t fsuid; struct kgid_t fsgid; uint securebits; kernel_cap_t cap_inheritable; kernel_cap_t cap_permitted; kernel_cap_t cap_effective; kernel_cap_t cap_bset; kernel_cap_t cap_ambient; uchar jit_keyring; undefined field_0x51; undefined field_0x52; undefined field_0x53; undefined field_0x54; undefined field_0x55; undefined field_0x56; undefined field_0x57; struct key * session_keyring; struct key * process_keyring; struct key * thread_keyring; struct key * request_key_auth; void * security; struct user_struct * user; struct user_namespace * user_ns; struct group_info * group_info; union anon_union.conflict9612_for_field_24 field_24; }; struct anon_struct.conflict552e { struct rb_node rb; ulong rb_subtree_last; }; struct dquot_operations.conflict { int (* write_dquot)(struct dquot.conflict *); dquot.conflict * (* alloc_dquot)(struct super_block.conflict *, int); void (* destroy_dquot)(struct dquot.conflict *); int (* acquire_dquot)(struct dquot.conflict *); int (* release_dquot)(struct dquot.conflict *); int (* mark_dirty)(struct dquot.conflict *); int (* write_info)(struct super_block.conflict *, int); qsize_t * (* get_reserved_space)(struct inode.conflict *); int (* get_projid)(struct inode.conflict *, struct kprojid_t *); int (* get_inode_usage)(struct inode.conflict *, qsize_t *); int (* get_next_id)(struct super_block.conflict *, struct kqid *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct trace_eval_map { }; union anon_union.conflict24f12_for_field_182 { uint frozen:1; struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide47; union anon_union.conflictb84 field_2; }; struct return_instance { struct uprobe * uprobe; ulong func; ulong stack; ulong orig_ret_vaddr; bool chained; undefined field_0x21; undefined field_0x22; undefined field_0x23; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; struct return_instance * next; }; struct block_device.conflict { dev_t bd_dev; int bd_openers; struct inode.conflict * bd_inode; struct super_block.conflict * bd_super; struct mutex.conflict bd_mutex; void * bd_claiming; void * bd_holder; int bd_holders; bool bd_write_holder; undefined field_0x65; undefined field_0x66; undefined field_0x67; struct list_head bd_holder_disks; struct block_device.conflict * bd_contains; uint bd_block_size; u8 bd_partno; undefined field_0x85; undefined field_0x86; undefined field_0x87; struct hd_struct * bd_part; uint bd_part_count; int bd_invalidated; struct gendisk * bd_disk; struct request_queue * bd_queue; struct backing_dev_info * bd_bdi; struct list_head bd_list; ulong bd_private; int bd_fsfreeze_count; undefined field_0xcc; undefined field_0xcd; undefined field_0xce; undefined field_0xcf; struct mutex.conflict bd_fsfreeze_mutex; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct dev_archdata { void * iommu; bool dma_coherent; undefined field_0x9; undefined field_0xa; undefined field_0xb; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; }; struct sysfs_ops { ssize_t (* show)(struct kobject *, struct attribute *, char *); ssize_t (* store)(struct kobject *, struct attribute *, char *, size_t); }; struct rwlock_t.conflict { arch_rwlock_t raw_lock; uint magic; uint owner_cpu; void * owner; }; struct fasync_struct.conflict { struct rwlock_t.conflict fa_lock; int magic; int fa_fd; struct fasync_struct.conflict * fa_next; struct file.conflict * fa_file; struct callback_head fa_rcu; }; struct file_lock_operations { void (* fl_copy_lock)(struct file_lock *, struct file_lock *); void (* fl_release_private)(struct file_lock *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct writeback_control { long nr_to_write; long pages_skipped; loff_t range_start; loff_t range_end; enum writeback_sync_modes sync_mode; uint for_kupdate:1; uint for_background:1; uint tagged_writepages:1; uint for_reclaim:1; uint range_cyclic:1; uint for_sync:1; undefined field_0x25; undefined field_0x26; undefined field_0x27; }; struct address_space_operations.conflict { int (* writepage)(struct page *, struct writeback_control *); int (* readpage)(struct file.conflict *, struct page *); int (* writepages)(struct address_space.conflict *, struct writeback_control *); int (* set_page_dirty)(struct page *); int (* readpages)(struct file.conflict *, struct address_space.conflict *, struct list_head *, uint); int (* write_begin)(struct file.conflict *, struct address_space.conflict *, loff_t, uint, uint, struct page * *, void * *); int (* write_end)(struct file.conflict *, struct address_space.conflict *, loff_t, uint, uint, struct page *, void *); sector_t (* bmap)(struct address_space.conflict *, sector_t); void (* invalidatepage)(struct page *, uint, uint); int (* releasepage)(struct page *, gfp_t); void (* freepage)(struct page *); ssize_t (* direct_IO)(struct kiocb.conflict *, struct iov_iter *); int (* migratepage)(struct address_space.conflict *, struct page *, struct page *, enum migrate_mode); bool (* isolate_page)(struct page *, isolate_mode_t); void (* putback_page)(struct page *); int (* launder_page)(struct page *); int (* is_partially_uptodate)(struct page *, ulong, ulong); void (* is_dirty_writeback)(struct page *, bool *, bool *); int (* error_remove_page)(struct address_space.conflict *, struct page *); int (* swap_activate)(struct swap_info_struct *, struct file.conflict *, sector_t *); void (* swap_deactivate)(struct file.conflict *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; union anon_union.conflict3eea_for_rseq_cs { __u64 ptr64; __u64 ptr; }; struct module_kobject { struct kobject kobj; struct module * mod; struct kobject * drivers_dir; struct module_param_attrs * mp; struct completion * kobj_completion; }; struct removed_region { }; struct fwnode_handle { struct fwnode_handle * secondary; struct fwnode_operations * ops; struct device * dev; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct anon_struct.conflict44ea { u8 blocked; u8 need_qs; u8 exp_need_qs; u8 pad; }; union rcu_special { struct anon_struct.conflict44ea b; u32 s; }; struct radix_tree_root.conflict { spinlock_t.conflict xa_lock; gfp_t gfp_mask; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; struct radix_tree_node * rnode; }; struct io_context.conflict { atomic_long_t refcount; struct atomic_t active_ref; struct atomic_t nr_tasks; spinlock_t.conflict lock; ushort ioprio; undefined field_0x2a; undefined field_0x2b; int nr_batch_requests; ulong last_waited; struct radix_tree_root.conflict icq_tree; struct io_cq.conflict * icq_hint; struct hlist_head icq_list; struct work_struct release_work; }; struct sched_class { }; struct module_param_attrs { }; struct pid { struct atomic_t count; uint level; struct hlist_head tasks[4]; wait_queue_head_t wait_pidfd; struct callback_head rcu; struct upid numbers[1]; }; struct kobj_uevent_env { char * argv[3]; char * envp[64]; int envp_idx; char buf[4096]; int buflen; }; struct swap_extent { struct list_head list; ulong start_page; ulong nr_pages; sector_t start_block; }; struct plist_node { int prio; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct list_head prio_list; struct list_head node_list; }; struct swap_info_struct { ulong flags; short prio; undefined field_0xa; undefined field_0xb; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct plist_node list; char type; undefined field_0x39; undefined field_0x3a; undefined field_0x3b; uint max; uchar * swap_map; struct swap_cluster_info * cluster_info; struct swap_cluster_list free_clusters; uint lowest_bit; uint highest_bit; uint pages; uint inuse_pages; uint cluster_next; uint cluster_nr; struct percpu_cluster * percpu_cluster; struct swap_extent * curr_swap_extent; struct swap_extent first_swap_extent; struct block_device.conflict1 * bdev; struct file * swap_file; uint old_block_size; undefined field_0xf4; undefined field_0xf5; undefined field_0xf6; undefined field_0xf7; spinlock_t.conflict lock; spinlock_t.conflict cont_lock; struct work_struct discard_work; struct swap_cluster_list discard_clusters; uint write_pending; uint max_writes; struct plist_node[0] avail_lists; }; union anon_union.conflictcff2_for_field_6 { void * arg; struct kparam_string * str; struct kparam_array * arr; }; struct kernel_param.conflict { char * name; struct module.conflict * mod; struct kernel_param_ops * ops; u16 perm; s8 level; u8 flags; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; union anon_union.conflictcff2_for_field_6 field_6; }; struct net { }; struct keyring_index_key { struct key_type * type; char * description; size_t desc_len; }; union anon_union.conflict94e0_for_field_15 { struct keyring_index_key index_key; struct anon_struct.conflict94bf field_1; }; struct kset_uevent_ops.conflict { int (* filter)(struct kset.conflict *, struct kobject *); char * (* name)(struct kset.conflict *, struct kobject *); int (* uevent)(struct kset.conflict *, struct kobject *, struct kobj_uevent_env *); }; struct path.conflict { struct vfsmount * mnt; struct dentry.conflict * dentry; }; struct anon_vma_for_anon_vma { }; struct file_system_type.conflict { // Missing member s_lock_key : lock_class_key at offset 0x48 [zero-length member] Missing member s_umount_key : lock_class_key at offset 0x48 [zero-length member] Missing member s_vfs_rename_key : lock_class_key at offset 0x48 [zero-length member] Missing member i_lock_key : lock_class_key at offset 0x48 [zero-length member] Missing member i_mutex_key : lock_class_key at offset 0x48 [zero-length member] Missing member i_mutex_dir_key : lock_class_key at offset 0x48 [zero-length member] Missing member android_kabi_reserved1 : u64 at offset 0x48 [conflict with s_writers_key] char * name; int fs_flags; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; dentry.conflict * (* mount)(struct file_system_type.conflict *, int, char *, void *); dentry.conflict * (* mount2)(struct vfsmount *, struct file_system_type.conflict *, int, char *, void *); void * (* alloc_mnt_data)(void); void (* kill_sb)(struct super_block.conflict *); struct module * owner; struct file_system_type.conflict * next; struct hlist_head fs_supers; struct lock_class_key s_writers_key[3]; undefined field_0x4b; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct dev_pm_domain { struct dev_pm_ops ops; void (* detach)(struct device *, bool); int (* activate)(struct device *); void (* sync)(struct device *); void (* dismiss)(struct device *); }; struct fown_struct.conflict { struct rwlock_t.conflict lock; struct pid.conflict * pid; enum pid_type pid_type; struct kuid_t uid; struct kuid_t euid; int signum; }; struct vfsmount { }; struct iommu_fwspec { }; struct sysv_sem { struct sem_undo_list * undo_list; }; struct seqcount { uint sequence; }; struct cpu_context { ulong x19; ulong x20; ulong x21; ulong x22; ulong x23; ulong x24; ulong x25; ulong x26; ulong x27; ulong x28; ulong fp; ulong sp; ulong pc; }; struct anon_struct.conflict1422_for_uw { ulong tp_value; ulong tp2_value; struct user_fpsimd_state fpsimd_state; }; struct thread_struct { struct cpu_context cpu_context; undefined field_0x68; undefined field_0x69; undefined field_0x6a; undefined field_0x6b; undefined field_0x6c; undefined field_0x6d; undefined field_0x6e; undefined field_0x6f; struct anon_struct.conflict1422_for_uw uw; uint fpsimd_cpu; undefined field_0x294; undefined field_0x295; undefined field_0x296; undefined field_0x297; void * sve_state; uint sve_vl; uint sve_vl_onexec; ulong fault_address; ulong fault_code; struct debug_info debug; undefined field_0x3c8; undefined field_0x3c9; undefined field_0x3ca; undefined field_0x3cb; undefined field_0x3cc; undefined field_0x3cd; undefined field_0x3ce; undefined field_0x3cf; }; struct sysv_shm { struct list_head shm_clist; }; struct thread_info.conflict { ulong flags; mm_segment_t addr_limit; int preempt_count; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; }; struct task_rss_stat { int events; int count[5]; }; struct wake_q_node { struct wake_q_node * next; }; union anon_union.conflictb84_for_field_1 { struct anon_struct.conflicta5a futex; struct anon_struct.conflictb01 nanosleep; struct anon_struct.conflictb34 poll; }; struct restart_block { long (* fn)(struct restart_block *); union anon_union.conflictb84_for_field_1 field_1; }; struct nodemask_t { ulong bits[1]; }; struct vmacache { u64 seqnum; struct vm_area_struct * vmas[4]; }; struct seccomp { int mode; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct seccomp_filter * filter; }; struct task_struct.conflict1 { // Missing member ioac : task_io_accounting at offset 0x880 [zero-length member] Missing member tlb_ubc : tlbflush_unmap_batch at offset 0x948 [zero-length member] struct thread_info.conflict thread_info; long state; void * stack; struct atomic_t usage; uint flags; uint ptrace; undefined field_0x34; undefined field_0x35; undefined field_0x36; undefined field_0x37; struct llist_node wake_entry; int on_cpu; uint cpu; uint wakee_flips; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; ulong wakee_flip_decay_ts; struct task_struct.conflict1 * last_wakee; int recent_used_cpu; int wake_cpu; int on_rq; int prio; int static_prio; int normal_prio; uint rt_priority; undefined field_0x7c; undefined field_0x7d; undefined field_0x7e; undefined field_0x7f; struct sched_class * sched_class; undefined field_0x88; undefined field_0x89; undefined field_0x8a; undefined field_0x8b; undefined field_0x8c; undefined field_0x8d; undefined field_0x8e; undefined field_0x8f; undefined field_0x90; undefined field_0x91; undefined field_0x92; undefined field_0x93; undefined field_0x94; undefined field_0x95; undefined field_0x96; undefined field_0x97; undefined field_0x98; undefined field_0x99; undefined field_0x9a; undefined field_0x9b; undefined field_0x9c; undefined field_0x9d; undefined field_0x9e; undefined field_0x9f; undefined field_0xa0; undefined field_0xa1; undefined field_0xa2; undefined field_0xa3; undefined field_0xa4; undefined field_0xa5; undefined field_0xa6; undefined field_0xa7; undefined field_0xa8; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; undefined field_0xb0; undefined field_0xb1; undefined field_0xb2; undefined field_0xb3; undefined field_0xb4; undefined field_0xb5; undefined field_0xb6; undefined field_0xb7; undefined field_0xb8; undefined field_0xb9; undefined field_0xba; undefined field_0xbb; undefined field_0xbc; undefined field_0xbd; undefined field_0xbe; undefined field_0xbf; struct sched_entity se; struct sched_rt_entity rt; u64 last_sleep_ts; int boost; undefined field_0x31c; undefined field_0x31d; undefined field_0x31e; undefined field_0x31f; u64 boost_period; u64 boost_expires; struct task_group * sched_task_group; struct sched_dl_entity dl; uint btrace_seq; uint policy; int nr_cpus_allowed; undefined field_0x42c; undefined field_0x42d; undefined field_0x42e; undefined field_0x42f; cpumask_t cpus_allowed; cpumask_t cpus_requested; struct sched_info sched_info; struct list_head tasks; struct plist_node pushable_tasks; struct rb_node pushable_dl_tasks; struct mm_struct.conflict * mm; struct mm_struct.conflict * active_mm; struct vmacache vmacache; struct task_rss_stat rss_stat; int exit_state; int exit_code; int exit_signal; int pdeath_signal; ulong jobctl; uint personality; uint sched_reset_on_fork:1; uint sched_contributes_to_load:1; uint sched_migrated:1; uint sched_remote_wakeup:1; undefined field_0x51d; undefined field_0x51e; undefined field_0x51f; uint in_execve:1; uint in_iowait:1; uint no_cgroup_migration:1; undefined field_0x521; undefined field_0x522; undefined field_0x523; undefined field_0x524; undefined field_0x525; undefined field_0x526; undefined field_0x527; ulong atomic_flags; struct restart_block restart_block; pid_t pid; pid_t tgid; ulong stack_canary; struct task_struct.conflict1 * real_parent; struct task_struct.conflict1 * parent; struct list_head children; struct list_head sibling; struct task_struct.conflict1 * group_leader; struct list_head ptraced; struct list_head ptrace_entry; struct pid.conflict * thread_pid; struct hlist_node pid_links[4]; struct list_head thread_group; struct list_head thread_node; struct completion.conflict * vfork_done; int * set_child_tid; int * clear_child_tid; u64 utime; u64 stime; u64 gtime; struct prev_cputime.conflict prev_cputime; ulong nvcsw; ulong nivcsw; u64 start_time; u64 real_start_time; ulong min_flt; ulong maj_flt; struct task_cputime cputime_expires; struct list_head cpu_timers[3]; struct cred * ptracer_cred; struct cred * real_cred; struct cred * cred; char comm[16]; struct nameidata * nameidata; struct sysv_sem sysvsem; struct sysv_shm sysvshm; struct fs_struct * fs; struct files_struct * files; struct nsproxy * nsproxy; struct signal_struct * signal; struct sighand_struct * sighand; struct sigset_t blocked; struct sigset_t real_blocked; struct sigset_t saved_sigmask; struct sigpending pending; ulong sas_ss_sp; size_t sas_ss_size; uint sas_ss_flags; undefined field_0x7b4; undefined field_0x7b5; undefined field_0x7b6; undefined field_0x7b7; struct callback_head * task_works; struct audit_context * audit_context; struct seccomp seccomp; u64 parent_exec_id; u64 self_exec_id; spinlock_t.conflict alloc_lock; raw_spinlock_t.conflict pi_lock; struct wake_q_node wake_q; struct rb_root_cached pi_waiters; struct task_struct.conflict1 * pi_top_task; struct rt_mutex_waiter * pi_blocked_on; void * journal_info; struct bio_list * bio_list; struct blk_plug * plug; struct reclaim_state * reclaim_state; struct backing_dev_info * backing_dev_info; struct io_context.conflict * io_context; ulong ptrace_message; siginfo_t * last_siginfo; struct nodemask_t mems_allowed; seqcount_t mems_allowed_seq; int cpuset_mem_spread_rotor; int cpuset_slab_spread_rotor; undefined field_0x894; undefined field_0x895; undefined field_0x896; undefined field_0x897; struct css_set * cgroups; struct list_head cg_list; struct robust_list_head * robust_list; struct compat_robust_list_head * compat_robust_list; struct list_head pi_state_list; struct futex_pi_state * pi_state_cache; struct perf_event_context * perf_event_ctxp[2]; struct mutex.conflict perf_event_mutex; struct list_head perf_event_list; struct rseq * rseq; u32 rseq_len; u32 rseq_sig; ulong rseq_event_mask; struct callback_head rcu; struct pipe_inode_info * splice_pipe; struct page_frag task_frag; int nr_dirtied; int nr_dirtied_pause; ulong dirty_paused_when; u64 timer_slack_ns; u64 default_timer_slack_ns; int curr_ret_stack; int curr_ret_depth; struct ftrace_ret_stack * ret_stack; ulonglong ftrace_timestamp; struct atomic_t trace_overrun; struct atomic_t tracing_graph_pause; ulong trace; ulong trace_recursion; struct uprobe_task * utask; int pagefault_disabled; undefined field_0x9cc; undefined field_0x9cd; undefined field_0x9ce; undefined field_0x9cf; struct task_struct.conflict1 * oom_reaper_list; struct vm_struct * stack_vm_area; struct atomic_t stack_refcount; undefined field_0x9e4; undefined field_0x9e5; undefined field_0x9e6; undefined field_0x9e7; union anon_union.conflict1678d_for_field_161 field_161; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; u64 android_kabi_reserved5; u64 android_kabi_reserved6; u64 android_kabi_reserved7; u64 android_kabi_reserved8; undefined field_0xa28; undefined field_0xa29; undefined field_0xa2a; undefined field_0xa2b; undefined field_0xa2c; undefined field_0xa2d; undefined field_0xa2e; undefined field_0xa2f; struct thread_struct thread; }; struct ratelimit_state { raw_spinlock_t lock; int interval; int burst; int printed; int missed; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; ulong begin; ulong flags; }; struct user_struct { refcount_t __count; struct atomic_t processes; struct atomic_t sigpending; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; atomic_long_t epoll_watches; ulong locked_shm; ulong unix_inflight; atomic_long_t pipe_bufs; struct key * uid_keyring; struct key * session_keyring; struct hlist_node uidhash_node; struct kuid_t uid; undefined field_0x54; undefined field_0x55; undefined field_0x56; undefined field_0x57; atomic_long_t locked_vm; struct ratelimit_state ratelimit; u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct rcuwait { struct task_struct * task; }; struct irq_chip_regs { ulong enable; ulong disable; ulong mask; ulong ack; ulong eoi; ulong type; ulong polarity; }; struct irq_chip { struct device * parent_device; char * name; uint (* irq_startup)(struct irq_data *); void (* irq_shutdown)(struct irq_data *); void (* irq_enable)(struct irq_data *); void (* irq_disable)(struct irq_data *); void (* irq_ack)(struct irq_data *); void (* irq_mask)(struct irq_data *); void (* irq_mask_ack)(struct irq_data *); void (* irq_unmask)(struct irq_data *); void (* irq_eoi)(struct irq_data *); int (* irq_set_affinity)(struct irq_data *, struct cpumask *, bool); int (* irq_retrigger)(struct irq_data *); int (* irq_set_type)(struct irq_data *, uint); int (* irq_set_wake)(struct irq_data *, uint); void (* irq_bus_lock)(struct irq_data *); void (* irq_bus_sync_unlock)(struct irq_data *); void (* irq_cpu_online)(struct irq_data *); void (* irq_cpu_offline)(struct irq_data *); void (* irq_suspend)(struct irq_data *); void (* irq_resume)(struct irq_data *); void (* irq_pm_shutdown)(struct irq_data *); void (* irq_calc_mask)(struct irq_data *); void (* irq_print_chip)(struct irq_data *, struct seq_file *); int (* irq_request_resources)(struct irq_data *); void (* irq_release_resources)(struct irq_data *); void (* irq_compose_msi_msg)(struct irq_data *, struct msi_msg *); void (* irq_write_msi_msg)(struct irq_data *, struct msi_msg *); int (* irq_get_irqchip_state)(struct irq_data *, enum irqchip_irq_state, bool *); int (* irq_set_irqchip_state)(struct irq_data *, enum irqchip_irq_state, bool); int (* irq_set_vcpu_affinity)(struct irq_data *, void *); void (* ipi_send_single)(struct irq_data *, uint); void (* ipi_send_mask)(struct irq_data *, struct cpumask *); ulong flags; }; struct irq_chip_type { struct irq_chip chip; struct irq_chip_regs regs; void (* handler)(struct irq_desc *); u32 type; u32 mask_cache_priv; u32 * mask_cache; }; union anon_union.conflict5db2_for_field_3 { struct hlist_node ioc_node; struct callback_head __rcu_head; }; struct pollfd { }; union anon_union.conflict5551_for_field_9 { struct anon_struct.conflict552e shared; char * anon_name; }; struct pgprot_t { pteval_t pgprot; }; struct vm_area_struct { // Missing member vm_userfaultfd_ctx : vm_userfaultfd_ctx at offset 0xb8 [zero-length member] ulong vm_start; ulong vm_end; struct vm_area_struct * vm_next; struct vm_area_struct * vm_prev; struct rb_node vm_rb; ulong rb_subtree_gap; struct mm_struct.conflict * vm_mm; struct pgprot_t vm_page_prot; ulong vm_flags; union anon_union.conflict5551_for_field_9 field_9; struct list_head anon_vma_chain; struct anon_vma_for_anon_vma * anon_vma; struct vm_operations_struct * vm_ops; ulong vm_pgoff; struct file * vm_file; void * vm_private_data; atomic_long_t swap_readahead_info; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct cgroup_rstat_cpu { // Missing member bsync : u64_stats_sync at offset 0x0 [zero-length member] struct cgroup_base_stat bstat; struct cgroup_base_stat last_bstat; struct cgroup * updated_children; struct cgroup * updated_next; }; struct rcu_sync { int gp_state; int gp_count; wait_queue_head_t gp_wait; int cb_state; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; struct callback_head cb_head; enum rcu_sync_type gp_type; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; }; struct dev_links_info { struct list_head suppliers; struct list_head consumers; struct list_head needs_suppliers; struct list_head defer_hook; bool need_for_probe; undefined field_0x41; undefined field_0x42; undefined field_0x43; enum dl_dev_state status; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct device.conflict { struct device.conflict * parent; struct device_private * p; struct kobject kobj; char * init_name; struct device_type.conflict * type; struct mutex.conflict mutex; struct bus_type.conflict * bus; struct device_driver * driver; void * platform_data; void * driver_data; struct dev_links_info links; struct dev_pm_info.conflict power; struct dev_pm_domain * pm_domain; struct irq_domain * msi_domain; struct dev_pin_info * pins; struct list_head msi_list; struct dma_map_ops * dma_ops; u64 * dma_mask; u64 coherent_dma_mask; u64 bus_dma_mask; ulong dma_pfn_offset; struct device_dma_parameters * dma_parms; struct list_head dma_pools; struct dma_coherent_mem * dma_mem; struct cma * cma_area; struct removed_region * removed_mem; struct dev_archdata archdata; struct device_node * of_node; struct fwnode_handle * fwnode; dev_t devt; u32 id; spinlock_t devres_lock; undefined field_0x35c; undefined field_0x35d; undefined field_0x35e; undefined field_0x35f; undefined field_0x360; undefined field_0x361; undefined field_0x362; undefined field_0x363; undefined field_0x364; undefined field_0x365; undefined field_0x366; undefined field_0x367; undefined field_0x368; undefined field_0x369; undefined field_0x36a; undefined field_0x36b; undefined field_0x36c; undefined field_0x36d; undefined field_0x36e; undefined field_0x36f; struct list_head devres_head; struct klist_node knode_class; struct class.conflict * class; struct attribute_group * * groups; void (* release)(struct device.conflict *); struct iommu_group * iommu_group; struct iommu_fwspec * iommu_fwspec; bool offline_disabled:1; bool offline:1; bool of_node_reused:1; bool state_synced:1; undefined field_0x3c9; undefined field_0x3ca; undefined field_0x3cb; undefined field_0x3cc; undefined field_0x3cd; undefined field_0x3ce; undefined field_0x3cf; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; u64 android_kabi_reserved5; u64 android_kabi_reserved6; u64 android_kabi_reserved7; u64 android_kabi_reserved8; }; struct super_operations { inode * (* alloc_inode)(struct super_block *); void (* destroy_inode)(struct inode *); void (* dirty_inode)(struct inode *, int); int (* write_inode)(struct inode *, struct writeback_control *); int (* drop_inode)(struct inode *); void (* evict_inode)(struct inode *); void (* put_super)(struct super_block *); int (* sync_fs)(struct super_block *, int); int (* freeze_super)(struct super_block *); int (* freeze_fs)(struct super_block *); int (* thaw_super)(struct super_block *); int (* unfreeze_fs)(struct super_block *); int (* statfs)(struct dentry *, struct kstatfs *); int (* remount_fs)(struct super_block *, int *, char *); int (* remount_fs2)(struct vfsmount *, struct super_block *, int *, char *); void * (* clone_mnt_data)(void *); void (* copy_mnt_data)(void *, void *); void (* umount_begin)(struct super_block *); void (* umount_end)(struct super_block *, int); int (* show_options)(struct seq_file *, struct dentry *); int (* show_options2)(struct vfsmount *, struct seq_file *, struct dentry *); int (* show_devname)(struct seq_file *, struct dentry *); int (* show_path)(struct seq_file *, struct dentry *); int (* show_stats)(struct seq_file *, struct dentry *); ssize_t (* quota_read)(struct super_block *, int, char *, size_t, loff_t); ssize_t (* quota_write)(struct super_block *, int, char *, size_t, loff_t); dquot * * (* get_dquots)(struct inode *); int (* bdev_try_to_free_page)(struct super_block *, struct page *, gfp_t); long (* nr_cached_objects)(struct super_block *, struct shrink_control *); long (* free_cached_objects)(struct super_block *, struct shrink_control *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct dma_map_ops { void * (* alloc)(struct device *, size_t, dma_addr_t *, gfp_t, ulong); void (* free)(struct device *, size_t, void *, dma_addr_t, ulong); int (* mmap)(struct device *, struct vm_area_struct *, void *, dma_addr_t, size_t, ulong); int (* get_sgtable)(struct device *, struct sg_table *, void *, dma_addr_t, size_t, ulong); dma_addr_t (* map_page)(struct device *, struct page *, ulong, size_t, enum dma_data_direction, ulong); void (* unmap_page)(struct device *, dma_addr_t, size_t, enum dma_data_direction, ulong); int (* map_sg)(struct device *, struct scatterlist *, int, enum dma_data_direction, ulong); void (* unmap_sg)(struct device *, struct scatterlist *, int, enum dma_data_direction, ulong); dma_addr_t (* map_resource)(struct device *, phys_addr_t, size_t, enum dma_data_direction, ulong); void (* unmap_resource)(struct device *, dma_addr_t, size_t, enum dma_data_direction, ulong); void (* sync_single_for_cpu)(struct device *, dma_addr_t, size_t, enum dma_data_direction); void (* sync_single_for_device)(struct device *, dma_addr_t, size_t, enum dma_data_direction); void (* sync_sg_for_cpu)(struct device *, struct scatterlist *, int, enum dma_data_direction); void (* sync_sg_for_device)(struct device *, struct scatterlist *, int, enum dma_data_direction); void (* cache_sync)(struct device *, void *, size_t, enum dma_data_direction); int (* mapping_error)(struct device *, dma_addr_t); int (* dma_supported)(struct device *, u64); int (* set_dma_mask)(struct device *, u64); void * (* remap)(struct device *, void *, dma_addr_t, size_t, ulong); void (* unremap)(struct device *, void *, size_t); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct kioctx_table { }; struct nameidata { }; struct kmem_cache { }; struct group_info { struct atomic_t usage; int ngroups; struct kgid_t[0] gid; }; struct address_space_operations { int (* writepage)(struct page *, struct writeback_control *); int (* readpage)(struct file *, struct page *); int (* writepages)(struct address_space *, struct writeback_control *); int (* set_page_dirty)(struct page *); int (* readpages)(struct file *, struct address_space *, struct list_head *, uint); int (* write_begin)(struct file *, struct address_space *, loff_t, uint, uint, struct page * *, void * *); int (* write_end)(struct file *, struct address_space *, loff_t, uint, uint, struct page *, void *); sector_t (* bmap)(struct address_space *, sector_t); void (* invalidatepage)(struct page *, uint, uint); int (* releasepage)(struct page *, gfp_t); void (* freepage)(struct page *); ssize_t (* direct_IO)(struct kiocb.conflict *, struct iov_iter *); int (* migratepage)(struct address_space *, struct page *, struct page *, enum migrate_mode); bool (* isolate_page)(struct page *, isolate_mode_t); void (* putback_page)(struct page *); int (* launder_page)(struct page *); int (* is_partially_uptodate)(struct page *, ulong, ulong); void (* is_dirty_writeback)(struct page *, bool *, bool *); int (* error_remove_page)(struct address_space *, struct page *); int (* swap_activate)(struct swap_info_struct *, struct file *, sector_t *); void (* swap_deactivate)(struct file *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct qc_dqblk { int d_fieldmask; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; u64 d_spc_hardlimit; u64 d_spc_softlimit; u64 d_ino_hardlimit; u64 d_ino_softlimit; u64 d_space; u64 d_ino_count; s64 d_ino_timer; s64 d_spc_timer; int d_ino_warns; int d_spc_warns; u64 d_rt_spc_hardlimit; u64 d_rt_spc_softlimit; u64 d_rt_space; s64 d_rt_spc_timer; int d_rt_spc_warns; undefined field_0x74; undefined field_0x75; undefined field_0x76; undefined field_0x77; }; struct fwnode_operations { fwnode_handle * (* get)(struct fwnode_handle *); void (* put)(struct fwnode_handle *); bool (* device_is_available)(struct fwnode_handle *); void * (* device_get_match_data)(struct fwnode_handle *, struct device *); bool (* property_present)(struct fwnode_handle *, char *); int (* property_read_int_array)(struct fwnode_handle *, char *, uint, void *, size_t); int (* property_read_string_array)(struct fwnode_handle *, char *, char * *, size_t); fwnode_handle * (* get_parent)(struct fwnode_handle *); fwnode_handle * (* get_next_child_node)(struct fwnode_handle *, struct fwnode_handle *); fwnode_handle * (* get_named_child_node)(struct fwnode_handle *, char *); int (* get_reference_args)(struct fwnode_handle *, char *, char *, uint, uint, struct fwnode_reference_args *); fwnode_handle * (* graph_get_next_endpoint)(struct fwnode_handle *, struct fwnode_handle *); fwnode_handle * (* graph_get_remote_endpoint)(struct fwnode_handle *); fwnode_handle * (* graph_get_port_parent)(struct fwnode_handle *); int (* graph_parse_endpoint)(struct fwnode_handle *, struct fwnode_endpoint *); int (* add_links)(struct fwnode_handle *, struct device *); }; union anon_union.conflict1cf41_for_field_13 { void (* d_canonical_path)(struct path.conflict *, struct path.conflict *); struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide54; union anon_union.conflictb84 field_2; }; struct device_dma_parameters { uint max_segment_size; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; ulong segment_boundary_mask; }; struct kernfs_syscall_ops { int (* remount_fs)(struct kernfs_root *, int *, char *); int (* show_options)(struct seq_file *, struct kernfs_root *); int (* mkdir)(struct kernfs_node *, char *, umode_t); int (* rmdir)(struct kernfs_node *); int (* rename)(struct kernfs_node *, struct kernfs_node *, char *); int (* show_path)(struct seq_file *, struct kernfs_node *, struct kernfs_root *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct quotactl_ops.conflict { int (* quota_on)(struct super_block.conflict *, int, int, struct path.conflict *); int (* quota_off)(struct super_block.conflict *, int); int (* quota_enable)(struct super_block.conflict *, uint); int (* quota_disable)(struct super_block.conflict *, uint); int (* quota_sync)(struct super_block.conflict *, int); int (* set_info)(struct super_block.conflict *, int, struct qc_info *); int (* get_dqblk)(struct super_block.conflict *, struct kqid, struct qc_dqblk *); int (* get_nextdqblk)(struct super_block.conflict *, struct kqid *, struct qc_dqblk *); int (* set_dqblk)(struct super_block.conflict *, struct kqid, struct qc_dqblk *); int (* get_state)(struct super_block.conflict *, struct qc_state *); int (* rm_xquota)(struct super_block.conflict *, uint); u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct kernel_symbol { int value_offset; int name_offset; }; struct perf_event_context { }; struct hlist_bl_head { struct hlist_bl_node * first; }; struct fsverity_info { }; union anon_union.conflict4582 { }; union anon_union.conflict2127_for_field_13 { void (* d_canonical_path)(struct path *, struct path *); struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide23; union anon_union.conflict4582 field_2; }; struct dentry_operations { int (* d_revalidate)(struct dentry *, uint); int (* d_weak_revalidate)(struct dentry *, uint); int (* d_hash)(struct dentry *, struct qstr *); int (* d_compare)(struct dentry *, uint, char *, struct qstr *); int (* d_delete)(struct dentry *); int (* d_init)(struct dentry *); void (* d_release)(struct dentry *); void (* d_prune)(struct dentry *); void (* d_iput)(struct dentry *, struct inode *); char * (* d_dname)(struct dentry *, char *, int); vfsmount * (* d_automount)(struct path *); int (* d_manage)(struct path *, bool); dentry * (* d_real)(struct dentry *, struct inode *); union anon_union.conflict2127_for_field_13 field_13; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; undefined field_0x88; undefined field_0x89; undefined field_0x8a; undefined field_0x8b; undefined field_0x8c; undefined field_0x8d; undefined field_0x8e; undefined field_0x8f; undefined field_0x90; undefined field_0x91; undefined field_0x92; undefined field_0x93; undefined field_0x94; undefined field_0x95; undefined field_0x96; undefined field_0x97; undefined field_0x98; undefined field_0x99; undefined field_0x9a; undefined field_0x9b; undefined field_0x9c; undefined field_0x9d; undefined field_0x9e; undefined field_0x9f; undefined field_0xa0; undefined field_0xa1; undefined field_0xa2; undefined field_0xa3; undefined field_0xa4; undefined field_0xa5; undefined field_0xa6; undefined field_0xa7; undefined field_0xa8; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; undefined field_0xb0; undefined field_0xb1; undefined field_0xb2; undefined field_0xb3; undefined field_0xb4; undefined field_0xb5; undefined field_0xb6; undefined field_0xb7; undefined field_0xb8; undefined field_0xb9; undefined field_0xba; undefined field_0xbb; undefined field_0xbc; undefined field_0xbd; undefined field_0xbe; undefined field_0xbf; }; struct address_space.conflict { struct inode.conflict * host; struct radix_tree_root.conflict i_pages; struct atomic_t i_mmap_writable; undefined field_0x34; undefined field_0x35; undefined field_0x36; undefined field_0x37; struct rb_root_cached i_mmap; struct rw_semaphore.conflict i_mmap_rwsem; ulong nrpages; ulong nrexceptional; ulong writeback_index; struct address_space_operations.conflict * a_ops; ulong flags; spinlock_t.conflict private_lock; gfp_t gfp_mask; undefined field_0xd4; undefined field_0xd5; undefined field_0xd6; undefined field_0xd7; struct list_head private_list; void * private_data; errseq_t wb_err; undefined field_0xf4; undefined field_0xf5; undefined field_0xf6; undefined field_0xf7; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct inode.conflict { umode_t i_mode; ushort i_opflags; struct kuid_t i_uid; struct kgid_t i_gid; uint i_flags; struct posix_acl * i_acl; struct posix_acl * i_default_acl; struct inode_operations.conflict * i_op; struct super_block.conflict * i_sb; struct address_space.conflict * i_mapping; ulong i_ino; union anon_union.conflict7b65_for_field_12 field_11; dev_t i_rdev; loff_t i_size; struct timespec64 i_atime; struct timespec64 i_mtime; struct timespec64 i_ctime; spinlock_t.conflict i_lock; ushort i_bytes; u8 i_blkbits; u8 i_write_hint; undefined field_0x9c; undefined field_0x9d; undefined field_0x9e; undefined field_0x9f; blkcnt_t i_blocks; ulong i_state; struct rw_semaphore.conflict i_rwsem; ulong dirtied_when; ulong dirtied_time_when; struct hlist_node i_hash; struct list_head i_io_list; struct list_head i_lru; struct list_head i_sb_list; struct list_head i_wb_list; union anon_union.conflict7b87_for_field_36 field_31; struct atomic64_t i_version; struct atomic64_t i_sequence; struct atomic_t i_count; struct atomic_t i_dio_count; struct atomic_t i_writecount; undefined field_0x184; undefined field_0x185; undefined field_0x186; undefined field_0x187; struct file_operations.conflict * i_fop; struct file_lock_context.conflict * i_flctx; struct address_space.conflict i_data; struct list_head i_devices; union anon_union.conflict1ee53_for_field_41 field_41; __u32 i_generation; __u32 i_fsnotify_mask; struct fsnotify_mark_connector * i_fsnotify_marks; void * i_private; u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct module { enum module_state state; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct list_head list; char name[56]; struct module_kobject mkobj; struct module_attribute * modinfo_attrs; char * version; char * srcversion; struct kobject * holders_dir; struct kernel_symbol * syms; s32 * crcs; uint num_syms; undefined field_0x104; undefined field_0x105; undefined field_0x106; undefined field_0x107; struct mutex param_lock; struct kernel_param * kp; uint num_kp; uint num_gpl_syms; struct kernel_symbol * gpl_syms; s32 * gpl_crcs; bool sig_ok; bool async_probe_requested; undefined field_0x14a; undefined field_0x14b; undefined field_0x14c; undefined field_0x14d; undefined field_0x14e; undefined field_0x14f; struct kernel_symbol * gpl_future_syms; s32 * gpl_future_crcs; uint num_gpl_future_syms; uint num_exentries; struct exception_table_entry * extable; int (* init)(void); undefined field_0x178; undefined field_0x179; undefined field_0x17a; undefined field_0x17b; undefined field_0x17c; undefined field_0x17d; undefined field_0x17e; undefined field_0x17f; struct module_layout core_layout; struct module_layout init_layout; struct mod_arch_specific arch; ulong taints; uint num_bugs; undefined field_0x254; undefined field_0x255; undefined field_0x256; undefined field_0x257; struct list_head bug_list; struct bug_entry * bug_table; struct mod_kallsyms * kallsyms; struct mod_kallsyms core_kallsyms; struct module_sect_attrs * sect_attrs; struct module_notes_attrs * notes_attrs; char * args; void * percpu; uint percpu_size; uint num_tracepoints; tracepoint_ptr_t * tracepoints_ptrs; struct jump_entry * jump_entries; uint num_jump_entries; uint num_trace_bprintk_fmt; char * * trace_bprintk_fmt_start; struct trace_event_call * * trace_events; uint num_trace_events; undefined field_0x2e4; undefined field_0x2e5; undefined field_0x2e6; undefined field_0x2e7; struct trace_eval_map * * trace_evals; uint num_trace_evals; undefined field_0x2f4; undefined field_0x2f5; undefined field_0x2f6; undefined field_0x2f7; struct list_head source_list; struct list_head target_list; void (* exit)(void); struct atomic_t refcnt; undefined field_0x324; undefined field_0x325; undefined field_0x326; undefined field_0x327; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; undefined field_0x348; undefined field_0x349; undefined field_0x34a; undefined field_0x34b; undefined field_0x34c; undefined field_0x34d; undefined field_0x34e; undefined field_0x34f; undefined field_0x350; undefined field_0x351; undefined field_0x352; undefined field_0x353; undefined field_0x354; undefined field_0x355; undefined field_0x356; undefined field_0x357; undefined field_0x358; undefined field_0x359; undefined field_0x35a; undefined field_0x35b; undefined field_0x35c; undefined field_0x35d; undefined field_0x35e; undefined field_0x35f; undefined field_0x360; undefined field_0x361; undefined field_0x362; undefined field_0x363; undefined field_0x364; undefined field_0x365; undefined field_0x366; undefined field_0x367; undefined field_0x368; undefined field_0x369; undefined field_0x36a; undefined field_0x36b; undefined field_0x36c; undefined field_0x36d; undefined field_0x36e; undefined field_0x36f; undefined field_0x370; undefined field_0x371; undefined field_0x372; undefined field_0x373; undefined field_0x374; undefined field_0x375; undefined field_0x376; undefined field_0x377; undefined field_0x378; undefined field_0x379; undefined field_0x37a; undefined field_0x37b; undefined field_0x37c; undefined field_0x37d; undefined field_0x37e; undefined field_0x37f; }; struct fiemap_extent_info { uint fi_flags; uint fi_extents_mapped; uint fi_extents_max; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct fiemap_extent * fi_extents_start; }; struct fsverity_operations { }; struct fs_struct { }; struct device { struct device * parent; struct device_private * p; struct kobject kobj; char * init_name; struct device_type * type; struct mutex mutex; struct bus_type * bus; struct device_driver * driver; void * platform_data; void * driver_data; struct dev_links_info links; struct dev_pm_info power; struct dev_pm_domain * pm_domain; struct irq_domain * msi_domain; struct dev_pin_info * pins; struct list_head msi_list; struct dma_map_ops * dma_ops; u64 * dma_mask; u64 coherent_dma_mask; u64 bus_dma_mask; ulong dma_pfn_offset; struct device_dma_parameters * dma_parms; struct list_head dma_pools; struct dma_coherent_mem * dma_mem; struct cma * cma_area; struct removed_region * removed_mem; struct dev_archdata archdata; struct device_node * of_node; struct fwnode_handle * fwnode; dev_t devt; u32 id; spinlock_t devres_lock; undefined field_0x30c; undefined field_0x30d; undefined field_0x30e; undefined field_0x30f; struct list_head devres_head; struct klist_node knode_class; struct class * class; struct attribute_group * * groups; void (* release)(struct device *); struct iommu_group * iommu_group; struct iommu_fwspec * iommu_fwspec; bool offline_disabled:1; bool offline:1; bool of_node_reused:1; bool state_synced:1; undefined field_0x369; undefined field_0x36a; undefined field_0x36b; undefined field_0x36c; undefined field_0x36d; undefined field_0x36e; undefined field_0x36f; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; u64 android_kabi_reserved5; u64 android_kabi_reserved6; u64 android_kabi_reserved7; u64 android_kabi_reserved8; }; struct nsproxy { struct atomic_t count; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct uts_namespace * uts_ns; struct ipc_namespace * ipc_ns; struct mnt_namespace * mnt_ns; struct pid_namespace * pid_ns_for_children; struct net * net_ns; struct cgroup_namespace * cgroup_ns; }; struct timerqueue_head { struct rb_root head; struct timerqueue_node * next; }; struct hrtimer_clock_base { struct hrtimer_cpu_base * cpu_base; uint index; clockid_t clockid; seqcount_t seq; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; struct hrtimer * running; struct timerqueue_head active; ktime_t (* get_time)(void); ktime_t offset; }; struct hrtimer_cpu_base { raw_spinlock_t lock; uint cpu; uint active_bases; uint clock_was_set_seq; uint hres_active:1; uint in_hrtirq:1; uint hang_detected:1; uint softirq_activated:1; undefined field_0x11; undefined field_0x12; undefined field_0x13; uint nr_events; ushort nr_retries; ushort nr_hangs; uint max_hang_time; ktime_t expires_next; struct hrtimer * next_timer; ktime_t softirq_expires_next; struct hrtimer * softirq_next_timer; struct hrtimer_clock_base clock_base[8]; }; struct plt_entry { __le32 mov0; __le32 mov1; __le32 mov2; __le32 br; }; struct device_node { char * name; char * type; phandle phandle; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; char * full_name; struct fwnode_handle fwnode; struct property * properties; struct property * deadprops; struct device_node * parent; struct device_node * child; struct device_node * sibling; struct kobject kobj; ulong _flags; void * data; }; struct percpu_rw_semaphore { struct rcu_sync rss; uint * read_count; struct rw_semaphore rw_sem; struct rcuwait writer; int readers_block; undefined field_0x84; undefined field_0x85; undefined field_0x86; undefined field_0x87; }; struct futex_pi_state { }; struct thread_info { ulong flags; mm_segment_t addr_limit; u64 ttbr0; int preempt_count; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; }; struct task_io_accounting { u64 rchar; u64 wchar; u64 syscr; u64 syscw; u64 syscfs; u64 read_bytes; u64 write_bytes; u64 cancelled_write_bytes; }; struct task_struct { // Missing member tlb_ubc : tlbflush_unmap_batch at offset 0x998 [zero-length member] struct thread_info thread_info; long state; void * stack; struct atomic_t usage; uint flags; uint ptrace; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; struct llist_node wake_entry; int on_cpu; uint cpu; uint wakee_flips; undefined field_0x54; undefined field_0x55; undefined field_0x56; undefined field_0x57; ulong wakee_flip_decay_ts; struct task_struct * last_wakee; int recent_used_cpu; int wake_cpu; int on_rq; int prio; int static_prio; int normal_prio; uint rt_priority; undefined field_0x84; undefined field_0x85; undefined field_0x86; undefined field_0x87; struct sched_class * sched_class; undefined field_0x90; undefined field_0x91; undefined field_0x92; undefined field_0x93; undefined field_0x94; undefined field_0x95; undefined field_0x96; undefined field_0x97; undefined field_0x98; undefined field_0x99; undefined field_0x9a; undefined field_0x9b; undefined field_0x9c; undefined field_0x9d; undefined field_0x9e; undefined field_0x9f; undefined field_0xa0; undefined field_0xa1; undefined field_0xa2; undefined field_0xa3; undefined field_0xa4; undefined field_0xa5; undefined field_0xa6; undefined field_0xa7; undefined field_0xa8; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; undefined field_0xb0; undefined field_0xb1; undefined field_0xb2; undefined field_0xb3; undefined field_0xb4; undefined field_0xb5; undefined field_0xb6; undefined field_0xb7; undefined field_0xb8; undefined field_0xb9; undefined field_0xba; undefined field_0xbb; undefined field_0xbc; undefined field_0xbd; undefined field_0xbe; undefined field_0xbf; struct sched_entity se; struct sched_rt_entity rt; u64 last_sleep_ts; int boost; undefined field_0x31c; undefined field_0x31d; undefined field_0x31e; undefined field_0x31f; u64 boost_period; u64 boost_expires; struct task_group * sched_task_group; struct sched_dl_entity dl; uint policy; int nr_cpus_allowed; cpumask_t cpus_allowed; cpumask_t cpus_requested; int rcu_read_lock_nesting; union rcu_special rcu_read_unlock_special; struct list_head rcu_node_entry; struct rcu_node * rcu_blocked_node; ulong rcu_tasks_nvcsw; u8 rcu_tasks_holdout; u8 rcu_tasks_idx; undefined field_0x462; undefined field_0x463; int rcu_tasks_idle_cpu; struct list_head rcu_tasks_holdout_list; struct sched_info sched_info; struct list_head tasks; struct plist_node pushable_tasks; struct rb_node pushable_dl_tasks; struct mm_struct * mm; struct mm_struct * active_mm; struct vmacache vmacache; struct task_rss_stat rss_stat; int exit_state; int exit_code; int exit_signal; int pdeath_signal; ulong jobctl; uint personality; uint sched_reset_on_fork:1; uint sched_contributes_to_load:1; uint sched_migrated:1; uint sched_remote_wakeup:1; uint sched_psi_wake_requeue:1; undefined field_0x555; undefined field_0x556; undefined field_0x557; uint in_execve:1; uint in_iowait:1; uint in_user_fault:1; uint memcg_kmem_skip_account:1; uint no_cgroup_migration:1; uint use_memdelay:1; undefined field_0x559; undefined field_0x55a; undefined field_0x55b; undefined field_0x55c; undefined field_0x55d; undefined field_0x55e; undefined field_0x55f; ulong atomic_flags; struct restart_block restart_block; pid_t pid; pid_t tgid; ulong stack_canary; struct task_struct * real_parent; struct task_struct * parent; struct list_head children; struct list_head sibling; struct task_struct * group_leader; struct list_head ptraced; struct list_head ptrace_entry; struct pid * thread_pid; struct hlist_node pid_links[4]; struct list_head thread_group; struct list_head thread_node; struct completion * vfork_done; int * set_child_tid; int * clear_child_tid; u64 utime; u64 stime; u64 gtime; u64 * time_in_state; uint max_state; undefined field_0x6a4; undefined field_0x6a5; undefined field_0x6a6; undefined field_0x6a7; struct prev_cputime prev_cputime; ulong nvcsw; ulong nivcsw; u64 start_time; u64 real_start_time; ulong min_flt; ulong maj_flt; struct task_cputime cputime_expires; struct list_head cpu_timers[3]; struct cred * ptracer_cred; struct cred * real_cred; struct cred * cred; char comm[16]; struct nameidata * nameidata; ulong last_switch_count; ulong last_switch_time; struct fs_struct * fs; struct files_struct * files; struct nsproxy * nsproxy; struct signal_struct * signal; struct sighand_struct * sighand; struct sigset_t blocked; struct sigset_t real_blocked; struct sigset_t saved_sigmask; struct sigpending pending; ulong sas_ss_sp; size_t sas_ss_size; uint sas_ss_flags; undefined field_0x7e4; undefined field_0x7e5; undefined field_0x7e6; undefined field_0x7e7; struct callback_head * task_works; struct audit_context * audit_context; struct seccomp seccomp; u64 parent_exec_id; u64 self_exec_id; spinlock_t alloc_lock; raw_spinlock_t pi_lock; struct wake_q_node wake_q; struct rb_root_cached pi_waiters; struct task_struct * pi_top_task; struct rt_mutex_waiter * pi_blocked_on; void * journal_info; struct bio_list * bio_list; struct blk_plug * plug; struct reclaim_state * reclaim_state; struct backing_dev_info * backing_dev_info; struct io_context * io_context; ulong ptrace_message; siginfo_t * last_siginfo; struct task_io_accounting ioac; uint psi_flags; undefined field_0x8cc; undefined field_0x8cd; undefined field_0x8ce; undefined field_0x8cf; u64 acct_rss_mem1; u64 acct_vm_mem1; u64 acct_timexpd; struct nodemask_t mems_allowed; seqcount_t mems_allowed_seq; int cpuset_mem_spread_rotor; int cpuset_slab_spread_rotor; undefined field_0x8fc; undefined field_0x8fd; undefined field_0x8fe; undefined field_0x8ff; struct css_set * cgroups; struct list_head cg_list; struct robust_list_head * robust_list; struct compat_robust_list_head * compat_robust_list; struct list_head pi_state_list; struct futex_pi_state * pi_state_cache; struct perf_event_context * perf_event_ctxp[2]; struct mutex perf_event_mutex; struct list_head perf_event_list; struct rseq * rseq; u32 rseq_len; u32 rseq_sig; ulong rseq_event_mask; struct callback_head rcu; struct pipe_inode_info * splice_pipe; struct page_frag task_frag; struct task_delay_info * delays; int nr_dirtied; int nr_dirtied_pause; ulong dirty_paused_when; u64 timer_slack_ns; u64 default_timer_slack_ns; ulong trace; ulong trace_recursion; struct mem_cgroup * memcg_in_oom; gfp_t memcg_oom_gfp_mask; int memcg_oom_order; uint memcg_nr_pages_over_high; undefined field_0xa0c; undefined field_0xa0d; undefined field_0xa0e; undefined field_0xa0f; struct mem_cgroup * active_memcg; struct request_queue * throttle_queue; struct uprobe_task * utask; int pagefault_disabled; undefined field_0xa2c; undefined field_0xa2d; undefined field_0xa2e; undefined field_0xa2f; struct task_struct * oom_reaper_list; struct vm_struct * stack_vm_area; struct atomic_t stack_refcount; undefined field_0xa44; undefined field_0xa45; undefined field_0xa46; undefined field_0xa47; void * security; union anon_union.conflict24f12_for_field_182 field_182; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; u64 android_kabi_reserved5; u64 android_kabi_reserved6; u64 android_kabi_reserved7; u64 android_kabi_reserved8; struct thread_struct thread; undefined field_0xe60; undefined field_0xe61; undefined field_0xe62; undefined field_0xe63; undefined field_0xe64; undefined field_0xe65; undefined field_0xe66; undefined field_0xe67; undefined field_0xe68; undefined field_0xe69; undefined field_0xe6a; undefined field_0xe6b; undefined field_0xe6c; undefined field_0xe6d; undefined field_0xe6e; undefined field_0xe6f; undefined field_0xe70; undefined field_0xe71; undefined field_0xe72; undefined field_0xe73; undefined field_0xe74; undefined field_0xe75; undefined field_0xe76; undefined field_0xe77; undefined field_0xe78; undefined field_0xe79; undefined field_0xe7a; undefined field_0xe7b; undefined field_0xe7c; undefined field_0xe7d; undefined field_0xe7e; undefined field_0xe7f; }; struct uprobe { }; union anon_union.conflict9481_for_field_2 { struct list_head graveyard_link; struct rb_node serial_node; }; struct key { refcount_t usage; key_serial_t serial; union anon_union.conflict9481_for_field_2 field_2; struct rw_semaphore sem; struct key_user * user; void * security; union anon_union.conflict94a0_for_field_6 field_6; time64_t last_used_at; struct kuid_t uid; struct kgid_t gid; key_perm_t perm; ushort quotalen; ushort datalen; short state; undefined field_0x82; undefined field_0x83; undefined field_0x84; undefined field_0x85; undefined field_0x86; undefined field_0x87; ulong flags; union anon_union.conflict94e0_for_field_15 field_15; union anon_union.conflict951a_for_field_16 field_16; struct key_restriction * restrict_link; }; struct pmd_t { pmdval_t pmd; }; struct scatterlist { ulong page_link; uint offset; uint length; dma_addr_t dma_address; uint dma_length; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; }; struct seq_file { char * buf; size_t size; size_t from; size_t count; size_t pad_until; loff_t index; loff_t read_pos; u64 version; struct mutex lock; struct seq_operations * op; int poll_event; undefined field_0x6c; undefined field_0x6d; undefined field_0x6e; undefined field_0x6f; struct file * file; void * private; }; struct dentry_operations.conflict { int (* d_revalidate)(struct dentry.conflict *, uint); int (* d_weak_revalidate)(struct dentry.conflict *, uint); int (* d_hash)(struct dentry.conflict *, struct qstr *); int (* d_compare)(struct dentry.conflict *, uint, char *, struct qstr *); int (* d_delete)(struct dentry.conflict *); int (* d_init)(struct dentry.conflict *); void (* d_release)(struct dentry.conflict *); void (* d_prune)(struct dentry.conflict *); void (* d_iput)(struct dentry.conflict *, struct inode.conflict *); char * (* d_dname)(struct dentry.conflict *, char *, int); vfsmount * (* d_automount)(struct path.conflict *); int (* d_manage)(struct path.conflict *, bool); dentry.conflict * (* d_real)(struct dentry.conflict *, struct inode.conflict *); union anon_union.conflict1cf41_for_field_13 field_13; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; undefined field_0x88; undefined field_0x89; undefined field_0x8a; undefined field_0x8b; undefined field_0x8c; undefined field_0x8d; undefined field_0x8e; undefined field_0x8f; undefined field_0x90; undefined field_0x91; undefined field_0x92; undefined field_0x93; undefined field_0x94; undefined field_0x95; undefined field_0x96; undefined field_0x97; undefined field_0x98; undefined field_0x99; undefined field_0x9a; undefined field_0x9b; undefined field_0x9c; undefined field_0x9d; undefined field_0x9e; undefined field_0x9f; undefined field_0xa0; undefined field_0xa1; undefined field_0xa2; undefined field_0xa3; undefined field_0xa4; undefined field_0xa5; undefined field_0xa6; undefined field_0xa7; undefined field_0xa8; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; undefined field_0xb0; undefined field_0xb1; undefined field_0xb2; undefined field_0xb3; undefined field_0xb4; undefined field_0xb5; undefined field_0xb6; undefined field_0xb7; undefined field_0xb8; undefined field_0xb9; undefined field_0xba; undefined field_0xbb; undefined field_0xbc; undefined field_0xbd; undefined field_0xbe; undefined field_0xbf; }; struct module_attribute { struct attribute attr; ssize_t (* show)(struct module_attribute *, struct module_kobject.conflict *, char *); ssize_t (* store)(struct module_attribute *, struct module_kobject.conflict *, char *, size_t); void (* setup)(struct module.conflict *, char *); int (* test)(struct module.conflict *); void (* free)(struct module.conflict *); }; struct fiemap_extent { __u64 fe_logical; __u64 fe_physical; __u64 fe_length; __u64 fe_reserved64[2]; __u32 fe_flags; __u32 fe_reserved[3]; }; struct wake_irq { }; struct bug_entry { int bug_addr_disp; int file_disp; ushort line; ushort flags; }; struct hlist_bl_node { struct hlist_bl_node * next; struct hlist_bl_node * * pprev; }; union anon_union.conflict185c_for_d_u { struct hlist_node d_alias; struct hlist_bl_node d_in_lookup_hash; struct callback_head d_rcu; }; struct dentry.conflict { uint d_flags; seqcount_t d_seq; struct hlist_bl_node d_hash; struct dentry.conflict * d_parent; struct qstr d_name; struct inode.conflict * d_inode; uchar d_iname[32]; struct lockref.conflict d_lockref; struct dentry_operations.conflict * d_op; struct super_block.conflict * d_sb; ulong d_time; void * d_fsdata; union anon_union.conflict1c63b_for_field_12 field_12; struct list_head d_child; struct list_head d_subdirs; union anon_union.conflict185c_for_d_u d_u; u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct sb_writers.conflict { int frozen; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; wait_queue_head_t.conflict wait_unfrozen; struct percpu_rw_semaphore.conflict rw_sem[3]; }; struct kernfs_open_node { }; struct bus_type { // Missing member lock_key : lock_class_key at offset 0xa8 [zero-length member] char * name; char * dev_name; struct device * dev_root; struct attribute_group * * bus_groups; struct attribute_group * * dev_groups; struct attribute_group * * drv_groups; int (* match)(struct device *, struct device_driver *); int (* uevent)(struct device *, struct kobj_uevent_env *); int (* probe)(struct device *); void (* sync_state)(struct device *); int (* remove)(struct device *); void (* shutdown)(struct device *); int (* online)(struct device *); int (* offline)(struct device *); int (* suspend)(struct device *, pm_message_t); int (* resume)(struct device *); int (* num_vf)(struct device *); int (* dma_configure)(struct device *); struct dev_pm_ops * pm; struct iommu_ops * iommu_ops; struct subsys_private * p; bool need_parent_lock; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct io_context { atomic_long_t refcount; struct atomic_t active_ref; struct atomic_t nr_tasks; spinlock_t lock; ushort ioprio; undefined field_0x16; undefined field_0x17; int nr_batch_requests; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; ulong last_waited; struct radix_tree_root icq_tree; struct io_cq * icq_hint; struct hlist_head icq_list; struct work_struct release_work; }; struct fscrypt_info { }; struct quota_info { uint flags; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct rw_semaphore dqio_sem; struct inode * files[3]; struct mem_dqinfo info[3]; struct quota_format_ops * ops[3]; }; struct sb_writers { int frozen; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; wait_queue_head_t wait_unfrozen; struct percpu_rw_semaphore rw_sem[3]; }; struct uuid_t { __u8 b[16]; }; struct super_block { struct list_head s_list; dev_t s_dev; uchar s_blocksize_bits; undefined field_0x15; undefined field_0x16; undefined field_0x17; ulong s_blocksize; loff_t s_maxbytes; struct file_system_type * s_type; struct super_operations * s_op; struct dquot_operations * dq_op; struct quotactl_ops * s_qcop; struct export_operations * s_export_op; ulong s_flags; ulong s_iflags; ulong s_magic; struct dentry * s_root; struct rw_semaphore s_umount; int s_count; struct atomic_t s_active; void * s_security; struct xattr_handler * * s_xattr; struct fscrypt_operations * s_cop; struct key * s_master_keys; struct fsverity_operations * s_vop; struct unicode_map * s_encoding; __u16 s_encoding_flags; undefined field_0xda; undefined field_0xdb; undefined field_0xdc; undefined field_0xdd; undefined field_0xde; undefined field_0xdf; struct hlist_bl_head s_roots; struct list_head s_mounts; struct block_device * s_bdev; struct backing_dev_info * s_bdi; struct mtd_info * s_mtd; struct hlist_node s_instances; uint s_quota_types; undefined field_0x124; undefined field_0x125; undefined field_0x126; undefined field_0x127; struct quota_info s_dquot; struct sb_writers s_writers; char s_id[32]; struct uuid_t s_uuid; void * s_fs_info; uint s_max_links; fmode_t s_mode; u32 s_time_gran; undefined field_0x464; undefined field_0x465; undefined field_0x466; undefined field_0x467; struct mutex s_vfs_rename_mutex; char * s_subtype; struct dentry_operations * s_d_op; int cleancache_poolid; undefined field_0x49c; undefined field_0x49d; undefined field_0x49e; undefined field_0x49f; struct shrinker s_shrink; atomic_long_t s_remove_count; atomic_long_t s_fsnotify_inode_refs; int s_readonly_remount; undefined field_0x4f4; undefined field_0x4f5; undefined field_0x4f6; undefined field_0x4f7; struct workqueue_struct * s_dio_done_wq; struct hlist_head s_pins; struct user_namespace * s_user_ns; undefined field_0x510; undefined field_0x511; undefined field_0x512; undefined field_0x513; undefined field_0x514; undefined field_0x515; undefined field_0x516; undefined field_0x517; undefined field_0x518; undefined field_0x519; undefined field_0x51a; undefined field_0x51b; undefined field_0x51c; undefined field_0x51d; undefined field_0x51e; undefined field_0x51f; undefined field_0x520; undefined field_0x521; undefined field_0x522; undefined field_0x523; undefined field_0x524; undefined field_0x525; undefined field_0x526; undefined field_0x527; undefined field_0x528; undefined field_0x529; undefined field_0x52a; undefined field_0x52b; undefined field_0x52c; undefined field_0x52d; undefined field_0x52e; undefined field_0x52f; undefined field_0x530; undefined field_0x531; undefined field_0x532; undefined field_0x533; undefined field_0x534; undefined field_0x535; undefined field_0x536; undefined field_0x537; undefined field_0x538; undefined field_0x539; undefined field_0x53a; undefined field_0x53b; undefined field_0x53c; undefined field_0x53d; undefined field_0x53e; undefined field_0x53f; struct list_lru s_dentry_lru; undefined field_0x560; undefined field_0x561; undefined field_0x562; undefined field_0x563; undefined field_0x564; undefined field_0x565; undefined field_0x566; undefined field_0x567; undefined field_0x568; undefined field_0x569; undefined field_0x56a; undefined field_0x56b; undefined field_0x56c; undefined field_0x56d; undefined field_0x56e; undefined field_0x56f; undefined field_0x570; undefined field_0x571; undefined field_0x572; undefined field_0x573; undefined field_0x574; undefined field_0x575; undefined field_0x576; undefined field_0x577; undefined field_0x578; undefined field_0x579; undefined field_0x57a; undefined field_0x57b; undefined field_0x57c; undefined field_0x57d; undefined field_0x57e; undefined field_0x57f; struct list_lru s_inode_lru; struct callback_head rcu; struct work_struct destroy_work; struct mutex s_sync_lock; int s_stack_depth; undefined field_0x604; undefined field_0x605; undefined field_0x606; undefined field_0x607; undefined field_0x608; undefined field_0x609; undefined field_0x60a; undefined field_0x60b; undefined field_0x60c; undefined field_0x60d; undefined field_0x60e; undefined field_0x60f; undefined field_0x610; undefined field_0x611; undefined field_0x612; undefined field_0x613; undefined field_0x614; undefined field_0x615; undefined field_0x616; undefined field_0x617; undefined field_0x618; undefined field_0x619; undefined field_0x61a; undefined field_0x61b; undefined field_0x61c; undefined field_0x61d; undefined field_0x61e; undefined field_0x61f; undefined field_0x620; undefined field_0x621; undefined field_0x622; undefined field_0x623; undefined field_0x624; undefined field_0x625; undefined field_0x626; undefined field_0x627; undefined field_0x628; undefined field_0x629; undefined field_0x62a; undefined field_0x62b; undefined field_0x62c; undefined field_0x62d; undefined field_0x62e; undefined field_0x62f; undefined field_0x630; undefined field_0x631; undefined field_0x632; undefined field_0x633; undefined field_0x634; undefined field_0x635; undefined field_0x636; undefined field_0x637; undefined field_0x638; undefined field_0x639; undefined field_0x63a; undefined field_0x63b; undefined field_0x63c; undefined field_0x63d; undefined field_0x63e; undefined field_0x63f; spinlock_t s_inode_list_lock; undefined field_0x644; undefined field_0x645; undefined field_0x646; undefined field_0x647; struct list_head s_inodes; spinlock_t s_inode_wblist_lock; undefined field_0x65c; undefined field_0x65d; undefined field_0x65e; undefined field_0x65f; struct list_head s_inodes_wb; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; undefined field_0x690; undefined field_0x691; undefined field_0x692; undefined field_0x693; undefined field_0x694; undefined field_0x695; undefined field_0x696; undefined field_0x697; undefined field_0x698; undefined field_0x699; undefined field_0x69a; undefined field_0x69b; undefined field_0x69c; undefined field_0x69d; undefined field_0x69e; undefined field_0x69f; undefined field_0x6a0; undefined field_0x6a1; undefined field_0x6a2; undefined field_0x6a3; undefined field_0x6a4; undefined field_0x6a5; undefined field_0x6a6; undefined field_0x6a7; undefined field_0x6a8; undefined field_0x6a9; undefined field_0x6aa; undefined field_0x6ab; undefined field_0x6ac; undefined field_0x6ad; undefined field_0x6ae; undefined field_0x6af; undefined field_0x6b0; undefined field_0x6b1; undefined field_0x6b2; undefined field_0x6b3; undefined field_0x6b4; undefined field_0x6b5; undefined field_0x6b6; undefined field_0x6b7; undefined field_0x6b8; undefined field_0x6b9; undefined field_0x6ba; undefined field_0x6bb; undefined field_0x6bc; undefined field_0x6bd; undefined field_0x6be; undefined field_0x6bf; }; struct wakeup_source { char * name; int id; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct list_head entry; spinlock_t lock; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; struct wake_irq * wakeirq; struct timer_list timer; ulong timer_expires; ktime_t total_time; ktime_t max_time; ktime_t last_time; ktime_t start_prevent_time; ktime_t prevent_sleep_time; ulong event_count; ulong active_count; ulong relax_count; ulong expire_count; ulong wakeup_count; struct device * dev; bool active:1; bool autosleep_enabled:1; undefined field_0xc9; undefined field_0xca; undefined field_0xcb; undefined field_0xcc; undefined field_0xcd; undefined field_0xce; undefined field_0xcf; }; struct file_operations.conflict { struct module * owner; loff_t (* llseek)(struct file.conflict *, loff_t, int); ssize_t (* read)(struct file.conflict *, char *, size_t, loff_t *); ssize_t (* write)(struct file.conflict *, char *, size_t, loff_t *); ssize_t (* read_iter)(struct kiocb.conflict *, struct iov_iter *); ssize_t (* write_iter)(struct kiocb.conflict *, struct iov_iter *); int (* iterate)(struct file.conflict *, struct dir_context *); int (* iterate_shared)(struct file.conflict *, struct dir_context *); __poll_t (* poll)(struct file.conflict *, struct poll_table_struct *); long (* unlocked_ioctl)(struct file.conflict *, uint, ulong); long (* compat_ioctl)(struct file.conflict *, uint, ulong); int (* mmap)(struct file.conflict *, struct vm_area_struct *); ulong mmap_supported_flags; int (* open)(struct inode.conflict *, struct file.conflict *); int (* flush)(struct file.conflict *, fl_owner_t); int (* release)(struct inode.conflict *, struct file.conflict *); int (* fsync)(struct file.conflict *, loff_t, loff_t, int); int (* fasync)(int, struct file.conflict *, int); int (* lock)(struct file.conflict *, int, struct file_lock.conflict *); ssize_t (* sendpage)(struct file.conflict *, struct page *, int, size_t, loff_t *, int); ulong (* get_unmapped_area)(struct file.conflict *, ulong, ulong, ulong, ulong); int (* check_flags)(int); int (* flock)(struct file.conflict *, int, struct file_lock.conflict *); ssize_t (* splice_write)(struct pipe_inode_info *, struct file.conflict *, loff_t *, size_t, uint); ssize_t (* splice_read)(struct file.conflict *, loff_t *, struct pipe_inode_info *, size_t, uint); int (* setlease)(struct file.conflict *, long, struct file_lock.conflict * *, void * *); long (* fallocate)(struct file.conflict *, int, loff_t, loff_t); void (* show_fdinfo)(struct seq_file *, struct file.conflict *); ssize_t (* copy_file_range)(struct file.conflict *, loff_t, struct file.conflict *, loff_t, size_t, uint); int (* clone_file_range)(struct file.conflict *, loff_t, struct file.conflict *, loff_t, u64); int (* dedupe_file_range)(struct file.conflict *, loff_t, struct file.conflict *, loff_t, u64); int (* fadvise)(struct file.conflict *, loff_t, loff_t, int); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct super_block.conflict { struct list_head s_list; dev_t s_dev; uchar s_blocksize_bits; undefined field_0x15; undefined field_0x16; undefined field_0x17; ulong s_blocksize; loff_t s_maxbytes; struct file_system_type.conflict * s_type; struct super_operations.conflict * s_op; struct dquot_operations.conflict * dq_op; struct quotactl_ops.conflict * s_qcop; struct export_operations * s_export_op; ulong s_flags; ulong s_iflags; ulong s_magic; struct dentry.conflict * s_root; struct rw_semaphore.conflict s_umount; int s_count; struct atomic_t s_active; struct xattr_handler * * s_xattr; struct unicode_map * s_encoding; __u16 s_encoding_flags; undefined field_0xd2; undefined field_0xd3; undefined field_0xd4; undefined field_0xd5; undefined field_0xd6; undefined field_0xd7; struct hlist_bl_head s_roots; struct list_head s_mounts; struct block_device.conflict * s_bdev; struct backing_dev_info * s_bdi; struct mtd_info * s_mtd; struct hlist_node s_instances; uint s_quota_types; undefined field_0x11c; undefined field_0x11d; undefined field_0x11e; undefined field_0x11f; struct quota_info.conflict s_dquot; struct sb_writers.conflict s_writers; char s_id[32]; struct uuid_t s_uuid; void * s_fs_info; uint s_max_links; fmode_t s_mode; u32 s_time_gran; undefined field_0x4fc; undefined field_0x4fd; undefined field_0x4fe; undefined field_0x4ff; struct mutex.conflict s_vfs_rename_mutex; char * s_subtype; struct dentry_operations.conflict * s_d_op; int cleancache_poolid; undefined field_0x54c; undefined field_0x54d; undefined field_0x54e; undefined field_0x54f; struct shrinker.conflict s_shrink; atomic_long_t s_remove_count; atomic_long_t s_fsnotify_inode_refs; int s_readonly_remount; undefined field_0x59c; undefined field_0x59d; undefined field_0x59e; undefined field_0x59f; struct workqueue_struct * s_dio_done_wq; struct hlist_head s_pins; struct user_namespace * s_user_ns; undefined field_0x5b8; undefined field_0x5b9; undefined field_0x5ba; undefined field_0x5bb; undefined field_0x5bc; undefined field_0x5bd; undefined field_0x5be; undefined field_0x5bf; struct list_lru.conflict s_dentry_lru; undefined field_0x5c8; undefined field_0x5c9; undefined field_0x5ca; undefined field_0x5cb; undefined field_0x5cc; undefined field_0x5cd; undefined field_0x5ce; undefined field_0x5cf; undefined field_0x5d0; undefined field_0x5d1; undefined field_0x5d2; undefined field_0x5d3; undefined field_0x5d4; undefined field_0x5d5; undefined field_0x5d6; undefined field_0x5d7; undefined field_0x5d8; undefined field_0x5d9; undefined field_0x5da; undefined field_0x5db; undefined field_0x5dc; undefined field_0x5dd; undefined field_0x5de; undefined field_0x5df; undefined field_0x5e0; undefined field_0x5e1; undefined field_0x5e2; undefined field_0x5e3; undefined field_0x5e4; undefined field_0x5e5; undefined field_0x5e6; undefined field_0x5e7; undefined field_0x5e8; undefined field_0x5e9; undefined field_0x5ea; undefined field_0x5eb; undefined field_0x5ec; undefined field_0x5ed; undefined field_0x5ee; undefined field_0x5ef; undefined field_0x5f0; undefined field_0x5f1; undefined field_0x5f2; undefined field_0x5f3; undefined field_0x5f4; undefined field_0x5f5; undefined field_0x5f6; undefined field_0x5f7; undefined field_0x5f8; undefined field_0x5f9; undefined field_0x5fa; undefined field_0x5fb; undefined field_0x5fc; undefined field_0x5fd; undefined field_0x5fe; undefined field_0x5ff; struct list_lru.conflict s_inode_lru; struct callback_head rcu; struct work_struct destroy_work; struct mutex.conflict s_sync_lock; int s_stack_depth; undefined field_0x684; undefined field_0x685; undefined field_0x686; undefined field_0x687; undefined field_0x688; undefined field_0x689; undefined field_0x68a; undefined field_0x68b; undefined field_0x68c; undefined field_0x68d; undefined field_0x68e; undefined field_0x68f; undefined field_0x690; undefined field_0x691; undefined field_0x692; undefined field_0x693; undefined field_0x694; undefined field_0x695; undefined field_0x696; undefined field_0x697; undefined field_0x698; undefined field_0x699; undefined field_0x69a; undefined field_0x69b; undefined field_0x69c; undefined field_0x69d; undefined field_0x69e; undefined field_0x69f; undefined field_0x6a0; undefined field_0x6a1; undefined field_0x6a2; undefined field_0x6a3; undefined field_0x6a4; undefined field_0x6a5; undefined field_0x6a6; undefined field_0x6a7; undefined field_0x6a8; undefined field_0x6a9; undefined field_0x6aa; undefined field_0x6ab; undefined field_0x6ac; undefined field_0x6ad; undefined field_0x6ae; undefined field_0x6af; undefined field_0x6b0; undefined field_0x6b1; undefined field_0x6b2; undefined field_0x6b3; undefined field_0x6b4; undefined field_0x6b5; undefined field_0x6b6; undefined field_0x6b7; undefined field_0x6b8; undefined field_0x6b9; undefined field_0x6ba; undefined field_0x6bb; undefined field_0x6bc; undefined field_0x6bd; undefined field_0x6be; undefined field_0x6bf; spinlock_t.conflict s_inode_list_lock; struct list_head s_inodes; spinlock_t.conflict s_inode_wblist_lock; struct list_head s_inodes_wb; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; undefined field_0x730; undefined field_0x731; undefined field_0x732; undefined field_0x733; undefined field_0x734; undefined field_0x735; undefined field_0x736; undefined field_0x737; undefined field_0x738; undefined field_0x739; undefined field_0x73a; undefined field_0x73b; undefined field_0x73c; undefined field_0x73d; undefined field_0x73e; undefined field_0x73f; }; union anon_union.conflict1837_for_field_12 { struct list_head d_lru; wait_queue_head_t * d_wait; }; struct compat_robust_list_head { }; struct delayed_work { struct work_struct work; struct timer_list timer; struct workqueue_struct * wq; int cpu; undefined field_0x74; undefined field_0x75; undefined field_0x76; undefined field_0x77; u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct bdi_writeback { struct backing_dev_info * bdi; ulong state; ulong last_old_flush; struct list_head b_dirty; struct list_head b_io; struct list_head b_more_io; struct list_head b_dirty_time; spinlock_t.conflict list_lock; struct percpu_counter.conflict stat[4]; struct bdi_writeback_congested * congested; ulong bw_time_stamp; ulong dirtied_stamp; ulong written_stamp; ulong write_bandwidth; ulong avg_write_bandwidth; ulong dirty_ratelimit; ulong balanced_dirty_ratelimit; struct fprop_local_percpu completions; int dirty_exceeded; enum wb_reason start_all_reason; spinlock_t.conflict work_lock; struct list_head work_list; struct delayed_work dwork; ulong dirty_sleep; struct list_head bdi_node; }; struct backing_dev_info { struct list_head bdi_list; ulong ra_pages; ulong io_pages; int (* congested_fn)(void *, int); void * congested_data; char * name; struct kref refcnt; uint capabilities; uint min_ratio; uint max_ratio; uint max_prop_frac; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; atomic_long_t tot_write_bandwidth; struct bdi_writeback wb; struct list_head wb_list; struct bdi_writeback_congested * wb_congested; wait_queue_head_t wb_waitq; undefined field_0x340; undefined field_0x341; undefined field_0x342; undefined field_0x343; undefined field_0x344; undefined field_0x345; undefined field_0x346; undefined field_0x347; undefined field_0x348; undefined field_0x349; undefined field_0x34a; undefined field_0x34b; undefined field_0x34c; undefined field_0x34d; undefined field_0x34e; undefined field_0x34f; struct device * dev; struct device * owner; struct timer_list laptop_mode_wb_timer; struct dentry * debug_dir; struct dentry * debug_stats; }; struct irq_domain_ops { int (* match)(struct irq_domain *, struct device_node *, enum irq_domain_bus_token); int (* select)(struct irq_domain *, struct irq_fwspec *, enum irq_domain_bus_token); int (* map)(struct irq_domain *, uint, irq_hw_number_t); void (* unmap)(struct irq_domain *, uint); int (* xlate)(struct irq_domain *, struct device_node *, u32 *, uint, ulong *, uint *); int (* alloc)(struct irq_domain *, uint, uint, void *); void (* free)(struct irq_domain *, uint, uint); int (* activate)(struct irq_domain *, struct irq_data *, bool); void (* deactivate)(struct irq_domain *, struct irq_data *); int (* translate)(struct irq_domain *, struct irq_fwspec *, ulong *, uint *); }; struct rseq { __u32 cpu_id_start; __u32 cpu_id; union anon_union.conflict3eea_for_rseq_cs rseq_cs; __u32 flags; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; undefined field_0x18; undefined field_0x19; undefined field_0x1a; undefined field_0x1b; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; }; struct device_driver { char * name; struct bus_type.conflict * bus; struct module * owner; char * mod_name; bool suppress_bind_attrs; undefined field_0x21; undefined field_0x22; undefined field_0x23; enum probe_type probe_type; struct of_device_id * of_match_table; struct acpi_device_id * acpi_match_table; int (* probe)(struct device.conflict *); void (* sync_state)(struct device.conflict *); int (* remove)(struct device.conflict *); void (* shutdown)(struct device.conflict *); int (* suspend)(struct device.conflict *, pm_message_t); int (* resume)(struct device.conflict *); struct attribute_group * * groups; struct dev_pm_ops.conflict * pm; void (* coredump)(struct device.conflict *); struct driver_private * p; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct mnt_namespace { }; struct cfs_rq { }; struct kiocb.conflict { struct file.conflict * ki_filp; loff_t ki_pos; void (* ki_complete)(struct kiocb.conflict *, long, long); void * private; int ki_flags; u16 ki_hint; u16 ki_ioprio; }; struct mm_struct.conflict { struct anon_struct.conflict16ebb_for_field_0 field_0; ulong[0] cpu_bitmap; }; union anon_union.conflict53c5_for_field_2 { struct atomic_t _mapcount; uint page_type; uint active; int units; }; struct page { ulong flags; union anon_union.conflict5393_for_field_1 field_1; union anon_union.conflict53c5_for_field_2 field_2; struct atomic_t _refcount; struct mem_cgroup * mem_cgroup; }; struct irq_affinity_notify { uint irq; struct kref kref; struct work_struct work; void (* notify)(struct irq_affinity_notify *, cpumask_t *); void (* release)(struct kref *); }; struct super_operations.conflict { inode.conflict * (* alloc_inode)(struct super_block.conflict *); void (* destroy_inode)(struct inode.conflict *); void (* dirty_inode)(struct inode.conflict *, int); int (* write_inode)(struct inode.conflict *, struct writeback_control *); int (* drop_inode)(struct inode.conflict *); void (* evict_inode)(struct inode.conflict *); void (* put_super)(struct super_block.conflict *); int (* sync_fs)(struct super_block.conflict *, int); int (* freeze_super)(struct super_block.conflict *); int (* freeze_fs)(struct super_block.conflict *); int (* thaw_super)(struct super_block.conflict *); int (* unfreeze_fs)(struct super_block.conflict *); int (* statfs)(struct dentry.conflict *, struct kstatfs *); int (* remount_fs)(struct super_block.conflict *, int *, char *); int (* remount_fs2)(struct vfsmount *, struct super_block.conflict *, int *, char *); void * (* clone_mnt_data)(void *); void (* copy_mnt_data)(void *, void *); void (* umount_begin)(struct super_block.conflict *); void (* umount_end)(struct super_block.conflict *, int); int (* show_options)(struct seq_file *, struct dentry.conflict *); int (* show_options2)(struct vfsmount *, struct seq_file *, struct dentry.conflict *); int (* show_devname)(struct seq_file *, struct dentry.conflict *); int (* show_path)(struct seq_file *, struct dentry.conflict *); int (* show_stats)(struct seq_file *, struct dentry.conflict *); int (* bdev_try_to_free_page)(struct super_block.conflict *, struct page *, gfp_t); long (* nr_cached_objects)(struct super_block.conflict *, struct shrink_control *); long (* free_cached_objects)(struct super_block.conflict *, struct shrink_control *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct anon_struct.conflict56d7_for_field_0 { struct vm_area_struct * mmap; struct rb_root mm_rb; u64 vmacache_seqnum; ulong (* get_unmapped_area)(struct file *, ulong, ulong, ulong, ulong); ulong mmap_base; ulong mmap_legacy_base; ulong task_size; ulong highest_vm_end; struct pgd_t * pgd; struct atomic_t mm_users; struct atomic_t mm_count; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; struct rw_semaphore mmap_sem; struct list_head mmlist; ulong hiwater_rss; ulong hiwater_vm; ulong total_vm; ulong locked_vm; ulong pinned_vm; ulong data_vm; ulong exec_vm; ulong stack_vm; ulong def_flags; spinlock_t arg_lock; undefined field_0xec; undefined field_0xed; undefined field_0xee; undefined field_0xef; ulong start_code; ulong end_code; ulong start_data; ulong end_data; ulong start_brk; ulong brk; ulong start_stack; ulong arg_start; ulong arg_end; ulong env_start; ulong env_end; ulong saved_auxv[46]; struct mm_rss_stat rss_stat; struct linux_binfmt * binfmt; struct mm_context_t context; ulong flags; struct core_state * core_state; struct atomic_t membarrier_state; spinlock_t ioctx_lock; struct kioctx_table * ioctx_table; struct task_struct * owner; struct user_namespace * user_ns; struct file * exe_file; struct atomic_t tlb_flush_pending; undefined field_0x33c; undefined field_0x33d; undefined field_0x33e; undefined field_0x33f; struct uprobes_state uprobes_state; struct work_struct async_put_work; }; struct task_group { }; struct seccomp_filter { }; struct of_device_id { char name[32]; char type[32]; char compatible[128]; void * data; }; struct cgroup_subsys { cgroup_subsys_state * (* css_alloc)(struct cgroup_subsys_state *); int (* css_online)(struct cgroup_subsys_state *); void (* css_offline)(struct cgroup_subsys_state *); void (* css_released)(struct cgroup_subsys_state *); void (* css_free)(struct cgroup_subsys_state *); void (* css_reset)(struct cgroup_subsys_state *); void (* css_rstat_flush)(struct cgroup_subsys_state *, int); int (* css_extra_stat_show)(struct seq_file *, struct cgroup_subsys_state *); int (* can_attach)(struct cgroup_taskset *); void (* cancel_attach)(struct cgroup_taskset *); void (* attach)(struct cgroup_taskset *); void (* post_attach)(void); int (* can_fork)(struct task_struct.conflict *); void (* cancel_fork)(struct task_struct.conflict *); void (* fork)(struct task_struct.conflict *); void (* exit)(struct task_struct.conflict *); void (* release)(struct task_struct.conflict *); void (* bind)(struct cgroup_subsys_state *); bool early_init:1; bool implicit_on_dfl:1; bool threaded:1; bool broken_hierarchy:1; bool warned_broken_hierarchy:1; undefined field_0x91; undefined field_0x92; undefined field_0x93; int id; char * name; char * legacy_name; struct cgroup_root * root; struct idr css_idr; undefined field_0xc8; undefined field_0xc9; undefined field_0xca; undefined field_0xcb; undefined field_0xcc; undefined field_0xcd; undefined field_0xce; undefined field_0xcf; undefined field_0xd0; undefined field_0xd1; undefined field_0xd2; undefined field_0xd3; undefined field_0xd4; undefined field_0xd5; undefined field_0xd6; undefined field_0xd7; undefined field_0xd8; undefined field_0xd9; undefined field_0xda; undefined field_0xdb; undefined field_0xdc; undefined field_0xdd; undefined field_0xde; undefined field_0xdf; struct list_head cfts; struct cftype * dfl_cftypes; struct cftype * legacy_cftypes; uint depends_on; undefined field_0x104; undefined field_0x105; undefined field_0x106; undefined field_0x107; }; struct audit_context { }; struct lockref { union anon_union.conflict172d_for_field_0 field_0; }; struct dentry { uint d_flags; seqcount_t d_seq; struct hlist_bl_node d_hash; struct dentry * d_parent; struct qstr d_name; struct inode * d_inode; uchar d_iname[32]; struct lockref d_lockref; struct dentry_operations * d_op; struct super_block * d_sb; ulong d_time; void * d_fsdata; union anon_union.conflict1837_for_field_12 field_12; struct list_head d_child; struct list_head d_subdirs; union anon_union.conflict185c_for_d_u d_u; u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct dev_pin_info { struct pinctrl * p; struct pinctrl_state * default_state; struct pinctrl_state * init_state; struct pinctrl_state * sleep_state; struct pinctrl_state * idle_state; }; struct kernfs_open_file { struct kernfs_node * kn; struct file * file; struct seq_file * seq_file; void * priv; struct mutex mutex; struct mutex prealloc_mutex; int event; undefined field_0x64; undefined field_0x65; undefined field_0x66; undefined field_0x67; struct list_head list; char * prealloc_buf; size_t atomic_write_len; bool mmapped:1; bool released:1; undefined field_0x89; undefined field_0x8a; undefined field_0x8b; undefined field_0x8c; undefined field_0x8d; undefined field_0x8e; undefined field_0x8f; struct vm_operations_struct * vm_ops; }; struct irq_fwspec { struct fwnode_handle * fwnode; int param_count; u32 param[16]; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; }; struct kernel_param { char * name; struct module * mod; struct kernel_param_ops * ops; u16 perm; s8 level; u8 flags; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; union anon_union.conflictcff2_for_field_6 field_6; }; struct fwnode_reference_args { struct fwnode_handle * fwnode; uint nargs; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; u64 args[8]; }; struct mm_struct { struct anon_struct.conflict56d7_for_field_0 field_0; ulong[0] cpu_bitmap; }; struct file_lock_context.conflict { spinlock_t.conflict flc_lock; struct list_head flc_flock; struct list_head flc_posix; struct list_head flc_lease; }; struct exception_table_entry { int insn; int fixup; }; struct quotactl_ops { int (* quota_on)(struct super_block *, int, int, struct path *); int (* quota_off)(struct super_block *, int); int (* quota_enable)(struct super_block *, uint); int (* quota_disable)(struct super_block *, uint); int (* quota_sync)(struct super_block *, int); int (* set_info)(struct super_block *, int, struct qc_info *); int (* get_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *); int (* get_nextdqblk)(struct super_block *, struct kqid *, struct qc_dqblk *); int (* set_dqblk)(struct super_block *, struct kqid, struct qc_dqblk *); int (* get_state)(struct super_block *, struct qc_state *); int (* rm_xquota)(struct super_block *, uint); u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct bdi_writeback_congested { ulong state; refcount_t refcnt; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; }; struct kstat { u32 result_mask; umode_t mode; undefined field_0x6; undefined field_0x7; uint nlink; uint32_t blksize; u64 attributes; u64 attributes_mask; u64 ino; dev_t dev; dev_t rdev; struct kuid_t uid; struct kgid_t gid; loff_t size; struct timespec64 atime; struct timespec64 mtime; struct timespec64 ctime; struct timespec64 btime; u64 blocks; }; struct msi_desc { }; union anon_union.conflict5d93_for_field_2 { struct list_head q_node; struct kmem_cache * __rcu_icq_cache; }; struct ipc_namespace { }; struct iommu_ops { }; struct file.conflict { union anon_union.conflict7eb0_for_f_u f_u; struct path.conflict f_path; struct inode.conflict * f_inode; struct file_operations.conflict * f_op; spinlock_t.conflict f_lock; enum rw_hint f_write_hint; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; atomic_long_t f_count; uint f_flags; fmode_t f_mode; struct mutex.conflict f_pos_lock; loff_t f_pos; struct fown_struct.conflict f_owner; struct cred * f_cred; struct file_ra_state f_ra; u64 f_version; void * private_data; struct list_head f_ep_links; struct list_head f_tfile_llink; struct address_space.conflict * f_mapping; errseq_t f_wb_err; undefined field_0x134; undefined field_0x135; undefined field_0x136; undefined field_0x137; }; struct robust_list_head { }; struct cgroup_taskset { }; struct iattr.conflict { uint ia_valid; umode_t ia_mode; undefined field_0x6; undefined field_0x7; struct kuid_t ia_uid; struct kgid_t ia_gid; loff_t ia_size; struct timespec64 ia_atime; struct timespec64 ia_mtime; struct timespec64 ia_ctime; struct file.conflict * ia_file; }; struct mtd_info { }; struct fwnode_endpoint { uint port; uint id; struct fwnode_handle * local_fwnode; }; struct subsys_private { }; union anon_union.conflict4d02_for_field_6 { struct list_head private_list; struct callback_head callback_head; }; struct kobj_type { void (* release)(struct kobject *); struct sysfs_ops * sysfs_ops; struct attribute * * default_attrs; kobj_ns_type_operations * (* child_ns_type)(struct kobject *); void * (* namespace)(struct kobject *); void (* get_ownership)(struct kobject *, struct kuid_t *, struct kgid_t *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct kobj_ns_type_operations { enum kobj_ns_type type; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; bool (* current_may_mount)(void); void * (* grab_current_ns)(void); void * (* netlink_ns)(struct sock *); void * (* initial_ns)(void); void (* drop_ns)(void *); }; struct inode_operations { dentry * (* lookup)(struct inode *, struct dentry *, uint); char * (* get_link)(struct dentry *, struct inode *, struct delayed_call *); int (* permission)(struct inode *, int); int (* permission2)(struct vfsmount *, struct inode *, int); posix_acl * (* get_acl)(struct inode *, int); int (* readlink)(struct dentry *, char *, int); int (* create)(struct inode *, struct dentry *, umode_t, bool); int (* link)(struct dentry *, struct inode *, struct dentry *); int (* unlink)(struct inode *, struct dentry *); int (* symlink)(struct inode *, struct dentry *, char *); int (* mkdir)(struct inode *, struct dentry *, umode_t); int (* rmdir)(struct inode *, struct dentry *); int (* mknod)(struct inode *, struct dentry *, umode_t, dev_t); int (* rename)(struct inode *, struct dentry *, struct inode *, struct dentry *, uint); int (* setattr)(struct dentry *, struct iattr *); int (* setattr2)(struct vfsmount *, struct dentry *, struct iattr *); int (* getattr)(struct path *, struct kstat *, u32, uint); ssize_t (* listxattr)(struct dentry *, char *, size_t); int (* fiemap)(struct inode *, struct fiemap_extent_info *, u64, u64); int (* update_time)(struct inode *, struct timespec64 *, int); int (* atomic_open)(struct inode *, struct dentry *, struct file *, uint, umode_t); int (* tmpfile)(struct inode *, struct dentry *, umode_t); int (* set_acl)(struct inode *, struct posix_acl *, int); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; undefined field_0xd8; undefined field_0xd9; undefined field_0xda; undefined field_0xdb; undefined field_0xdc; undefined field_0xdd; undefined field_0xde; undefined field_0xdf; undefined field_0xe0; undefined field_0xe1; undefined field_0xe2; undefined field_0xe3; undefined field_0xe4; undefined field_0xe5; undefined field_0xe6; undefined field_0xe7; undefined field_0xe8; undefined field_0xe9; undefined field_0xea; undefined field_0xeb; undefined field_0xec; undefined field_0xed; undefined field_0xee; undefined field_0xef; undefined field_0xf0; undefined field_0xf1; undefined field_0xf2; undefined field_0xf3; undefined field_0xf4; undefined field_0xf5; undefined field_0xf6; undefined field_0xf7; undefined field_0xf8; undefined field_0xf9; undefined field_0xfa; undefined field_0xfb; undefined field_0xfc; undefined field_0xfd; undefined field_0xfe; undefined field_0xff; }; union kernfs_node_id { struct anon_struct.conflict9a99 field_0; u64 id; }; struct kernfs_node { struct atomic_t count; struct atomic_t active; struct kernfs_node * parent; char * name; struct rb_node rb; void * ns; uint hash; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; union anon_union.conflict9ad6_for_field_7 field_7; void * priv; union kernfs_node_id id; ushort flags; umode_t mode; undefined field_0x74; undefined field_0x75; undefined field_0x76; undefined field_0x77; struct kernfs_iattrs * iattr; }; struct quota_format_type.conflict { int qf_fmt_id; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct quota_format_ops.conflict * qf_ops; struct module * qf_owner; struct quota_format_type.conflict * qf_next; }; struct xattr_handler { }; struct file_lock { struct file_lock * fl_next; struct list_head fl_list; struct hlist_node fl_link; struct list_head fl_block; fl_owner_t fl_owner; uint fl_flags; uchar fl_type; undefined field_0x45; undefined field_0x46; undefined field_0x47; uint fl_pid; int fl_link_cpu; wait_queue_head_t fl_wait; struct file * fl_file; loff_t fl_start; loff_t fl_end; struct fasync_struct * fl_fasync; ulong fl_break_time; ulong fl_downgrade_time; struct file_lock_operations * fl_ops; struct lock_manager_operations * fl_lmops; union anon_union.conflict825d_for_fl_u fl_u; struct list_head android_reserved1; u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct task_struct.conflict { // Missing member ioac : task_io_accounting at offset 0x880 [zero-length member] Missing member tlb_ubc : tlbflush_unmap_batch at offset 0x948 [zero-length member] struct thread_info.conflict thread_info; long state; void * stack; struct atomic_t usage; uint flags; uint ptrace; undefined field_0x34; undefined field_0x35; undefined field_0x36; undefined field_0x37; struct llist_node wake_entry; int on_cpu; uint cpu; uint wakee_flips; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; ulong wakee_flip_decay_ts; struct task_struct.conflict * last_wakee; int recent_used_cpu; int wake_cpu; int on_rq; int prio; int static_prio; int normal_prio; uint rt_priority; undefined field_0x7c; undefined field_0x7d; undefined field_0x7e; undefined field_0x7f; struct sched_class * sched_class; undefined field_0x88; undefined field_0x89; undefined field_0x8a; undefined field_0x8b; undefined field_0x8c; undefined field_0x8d; undefined field_0x8e; undefined field_0x8f; undefined field_0x90; undefined field_0x91; undefined field_0x92; undefined field_0x93; undefined field_0x94; undefined field_0x95; undefined field_0x96; undefined field_0x97; undefined field_0x98; undefined field_0x99; undefined field_0x9a; undefined field_0x9b; undefined field_0x9c; undefined field_0x9d; undefined field_0x9e; undefined field_0x9f; undefined field_0xa0; undefined field_0xa1; undefined field_0xa2; undefined field_0xa3; undefined field_0xa4; undefined field_0xa5; undefined field_0xa6; undefined field_0xa7; undefined field_0xa8; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; undefined field_0xb0; undefined field_0xb1; undefined field_0xb2; undefined field_0xb3; undefined field_0xb4; undefined field_0xb5; undefined field_0xb6; undefined field_0xb7; undefined field_0xb8; undefined field_0xb9; undefined field_0xba; undefined field_0xbb; undefined field_0xbc; undefined field_0xbd; undefined field_0xbe; undefined field_0xbf; struct sched_entity se; struct sched_rt_entity rt; u64 last_sleep_ts; int boost; undefined field_0x31c; undefined field_0x31d; undefined field_0x31e; undefined field_0x31f; u64 boost_period; u64 boost_expires; struct task_group * sched_task_group; struct sched_dl_entity dl; uint btrace_seq; uint policy; int nr_cpus_allowed; undefined field_0x42c; undefined field_0x42d; undefined field_0x42e; undefined field_0x42f; cpumask_t cpus_allowed; cpumask_t cpus_requested; struct sched_info sched_info; struct list_head tasks; struct plist_node pushable_tasks; struct rb_node pushable_dl_tasks; struct mm_struct.conflict * mm; struct mm_struct.conflict * active_mm; struct vmacache vmacache; struct task_rss_stat rss_stat; int exit_state; int exit_code; int exit_signal; int pdeath_signal; ulong jobctl; uint personality; uint sched_reset_on_fork:1; uint sched_contributes_to_load:1; uint sched_migrated:1; uint sched_remote_wakeup:1; undefined field_0x51d; undefined field_0x51e; undefined field_0x51f; uint in_execve:1; uint in_iowait:1; uint no_cgroup_migration:1; undefined field_0x521; undefined field_0x522; undefined field_0x523; undefined field_0x524; undefined field_0x525; undefined field_0x526; undefined field_0x527; ulong atomic_flags; struct restart_block restart_block; pid_t pid; pid_t tgid; ulong stack_canary; struct task_struct.conflict * real_parent; struct task_struct.conflict * parent; struct list_head children; struct list_head sibling; struct task_struct.conflict * group_leader; struct list_head ptraced; struct list_head ptrace_entry; struct pid.conflict * thread_pid; struct hlist_node pid_links[4]; struct list_head thread_group; struct list_head thread_node; struct completion.conflict * vfork_done; int * set_child_tid; int * clear_child_tid; u64 utime; u64 stime; u64 gtime; struct prev_cputime.conflict prev_cputime; ulong nvcsw; ulong nivcsw; u64 start_time; u64 real_start_time; ulong min_flt; ulong maj_flt; struct task_cputime cputime_expires; struct list_head cpu_timers[3]; struct cred * ptracer_cred; struct cred * real_cred; struct cred * cred; char comm[16]; struct nameidata * nameidata; struct sysv_sem sysvsem; struct sysv_shm sysvshm; struct fs_struct * fs; struct files_struct * files; struct nsproxy * nsproxy; struct signal_struct * signal; struct sighand_struct * sighand; struct sigset_t blocked; struct sigset_t real_blocked; struct sigset_t saved_sigmask; struct sigpending pending; ulong sas_ss_sp; size_t sas_ss_size; uint sas_ss_flags; undefined field_0x7b4; undefined field_0x7b5; undefined field_0x7b6; undefined field_0x7b7; struct callback_head * task_works; struct audit_context * audit_context; struct seccomp seccomp; u64 parent_exec_id; u64 self_exec_id; spinlock_t.conflict alloc_lock; raw_spinlock_t.conflict pi_lock; struct wake_q_node wake_q; struct rb_root_cached pi_waiters; struct task_struct.conflict * pi_top_task; struct rt_mutex_waiter * pi_blocked_on; void * journal_info; struct bio_list * bio_list; struct blk_plug * plug; struct reclaim_state * reclaim_state; struct backing_dev_info * backing_dev_info; struct io_context * io_context; ulong ptrace_message; siginfo_t * last_siginfo; struct nodemask_t mems_allowed; seqcount_t mems_allowed_seq; int cpuset_mem_spread_rotor; int cpuset_slab_spread_rotor; undefined field_0x894; undefined field_0x895; undefined field_0x896; undefined field_0x897; struct css_set * cgroups; struct list_head cg_list; struct robust_list_head * robust_list; struct compat_robust_list_head * compat_robust_list; struct list_head pi_state_list; struct futex_pi_state * pi_state_cache; struct perf_event_context * perf_event_ctxp[2]; struct mutex.conflict perf_event_mutex; struct list_head perf_event_list; struct rseq * rseq; u32 rseq_len; u32 rseq_sig; ulong rseq_event_mask; struct callback_head rcu; struct pipe_inode_info * splice_pipe; struct page_frag task_frag; int nr_dirtied; int nr_dirtied_pause; ulong dirty_paused_when; u64 timer_slack_ns; u64 default_timer_slack_ns; int curr_ret_stack; int curr_ret_depth; struct ftrace_ret_stack * ret_stack; ulonglong ftrace_timestamp; struct atomic_t trace_overrun; struct atomic_t tracing_graph_pause; ulong trace; ulong trace_recursion; struct uprobe_task * utask; int pagefault_disabled; undefined field_0x9cc; undefined field_0x9cd; undefined field_0x9ce; undefined field_0x9cf; struct task_struct.conflict * oom_reaper_list; struct vm_struct * stack_vm_area; struct atomic_t stack_refcount; undefined field_0x9e4; undefined field_0x9e5; undefined field_0x9e6; undefined field_0x9e7; union anon_union.conflict1678d_for_field_161 field_161; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; u64 android_kabi_reserved5; u64 android_kabi_reserved6; u64 android_kabi_reserved7; u64 android_kabi_reserved8; undefined field_0xa28; undefined field_0xa29; undefined field_0xa2a; undefined field_0xa2b; undefined field_0xa2c; undefined field_0xa2d; undefined field_0xa2e; undefined field_0xa2f; struct thread_struct thread; }; struct device_type { char * name; struct attribute_group * * groups; int (* uevent)(struct device *, struct kobj_uevent_env *); char * (* devnode)(struct device *, umode_t *, struct kuid_t *, struct kgid_t *); void (* release)(struct device *); struct dev_pm_ops * pm; }; struct block_device { dev_t bd_dev; int bd_openers; struct inode * bd_inode; struct super_block * bd_super; struct mutex bd_mutex; void * bd_claiming; void * bd_holder; int bd_holders; bool bd_write_holder; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; struct list_head bd_holder_disks; struct block_device * bd_contains; uint bd_block_size; u8 bd_partno; undefined field_0x6d; undefined field_0x6e; undefined field_0x6f; struct hd_struct * bd_part; uint bd_part_count; int bd_invalidated; struct gendisk * bd_disk; struct request_queue * bd_queue; struct backing_dev_info * bd_bdi; struct list_head bd_list; ulong bd_private; int bd_fsfreeze_count; undefined field_0xb4; undefined field_0xb5; undefined field_0xb6; undefined field_0xb7; struct mutex bd_fsfreeze_mutex; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct list_lru_node.conflict { spinlock_t.conflict lock; struct list_lru_one lru; long nr_items; undefined field_0x38; undefined field_0x39; undefined field_0x3a; undefined field_0x3b; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; }; struct uts_namespace { }; struct quota_format_ops.conflict { int (* check_quota_file)(struct super_block.conflict *, int); int (* read_file_info)(struct super_block.conflict *, int); int (* write_file_info)(struct super_block.conflict *, int); int (* free_file_info)(struct super_block.conflict *, int); int (* read_dqblk)(struct dquot.conflict *); int (* commit_dqblk)(struct dquot.conflict *); int (* release_dqblk)(struct dquot.conflict *); int (* get_next_id)(struct super_block.conflict *, struct kqid *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct kernel_param_ops { uint flags; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; int (* set)(char *, struct kernel_param *); int (* get)(char *, struct kernel_param *); void (* free)(void *); }; struct device_private { }; struct pinctrl { }; struct kernfs_ops { int (* open)(struct kernfs_open_file *); void (* release)(struct kernfs_open_file *); int (* seq_show)(struct seq_file *, void *); void * (* seq_start)(struct seq_file *, loff_t *); void * (* seq_next)(struct seq_file *, void *, loff_t *); void (* seq_stop)(struct seq_file *, void *); ssize_t (* read)(struct kernfs_open_file *, char *, size_t, loff_t); size_t atomic_write_len; bool prealloc; undefined field_0x41; undefined field_0x42; undefined field_0x43; undefined field_0x44; undefined field_0x45; undefined field_0x46; undefined field_0x47; ssize_t (* write)(struct kernfs_open_file *, char *, size_t, loff_t); __poll_t (* poll)(struct kernfs_open_file *, struct poll_table_struct *); int (* mmap)(struct kernfs_open_file *, struct vm_area_struct *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct cgroup_root { struct kernfs_root * kf_root; uint subsys_mask; int hierarchy_id; struct cgroup cgrp; int cgrp_ancestor_id_storage; struct atomic_t nr_cgrps; struct list_head root_list; uint flags; undefined field_0x3ec; undefined field_0x3ed; undefined field_0x3ee; undefined field_0x3ef; struct idr cgroup_idr; undefined field_0x408; undefined field_0x409; undefined field_0x40a; undefined field_0x40b; undefined field_0x40c; undefined field_0x40d; undefined field_0x40e; undefined field_0x40f; undefined field_0x410; undefined field_0x411; undefined field_0x412; undefined field_0x413; undefined field_0x414; undefined field_0x415; undefined field_0x416; undefined field_0x417; undefined field_0x418; undefined field_0x419; undefined field_0x41a; undefined field_0x41b; undefined field_0x41c; undefined field_0x41d; undefined field_0x41e; undefined field_0x41f; char release_agent_path[4096]; char name[64]; }; struct rt_mutex_waiter { }; struct task_delay_info { }; struct ftrace_ret_stack { }; struct radix_tree_node { uchar shift; uchar offset; uchar count; uchar exceptional; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct radix_tree_node * parent; struct radix_tree_root * root; union anon_union.conflict4d02_for_field_6 field_6; void * slots[64]; ulong tags[3][1]; }; struct list_lru_memcg { struct callback_head rcu; struct list_lru_one *[0] lru; }; struct vm_operations_struct { void (* open)(struct vm_area_struct *); void (* close)(struct vm_area_struct *); int (* split)(struct vm_area_struct *, ulong); int (* mremap)(struct vm_area_struct *); vm_fault_t (* fault)(struct vm_fault *); vm_fault_t (* huge_fault)(struct vm_fault *, enum page_entry_size); void (* map_pages)(struct vm_fault *, ulong, ulong); ulong (* pagesize)(struct vm_area_struct *); vm_fault_t (* page_mkwrite)(struct vm_fault *); vm_fault_t (* pfn_mkwrite)(struct vm_fault *); int (* access)(struct vm_area_struct *, ulong, void *, int, int); char * (* name)(struct vm_area_struct *); page * (* find_special_page)(struct vm_area_struct *, ulong); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct irqaction { irqreturn_t (* handler)(int, void *); void * dev_id; void * percpu_dev_id; struct irqaction * next; irqreturn_t (* thread_fn)(int, void *); struct task_struct.conflict * thread; struct irqaction * secondary; uint irq; uint flags; ulong thread_flags; ulong thread_mask; char * name; struct proc_dir_entry * dir; undefined field_0x60; undefined field_0x61; undefined field_0x62; undefined field_0x63; undefined field_0x64; undefined field_0x65; undefined field_0x66; undefined field_0x67; undefined field_0x68; undefined field_0x69; undefined field_0x6a; undefined field_0x6b; undefined field_0x6c; undefined field_0x6d; undefined field_0x6e; undefined field_0x6f; undefined field_0x70; undefined field_0x71; undefined field_0x72; undefined field_0x73; undefined field_0x74; undefined field_0x75; undefined field_0x76; undefined field_0x77; undefined field_0x78; undefined field_0x79; undefined field_0x7a; undefined field_0x7b; undefined field_0x7c; undefined field_0x7d; undefined field_0x7e; undefined field_0x7f; }; struct delayed_call { void (* fn)(void *); void * arg; }; struct elf64_sym { Elf64_Word st_name; uchar st_info; uchar st_other; Elf64_Half st_shndx; Elf64_Addr st_value; Elf64_Xword st_size; }; struct nlm_lockowner { }; struct pid_namespace { }; struct export_operations { }; struct gendisk { }; struct irq_chip_generic { raw_spinlock_t lock; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; undefined field_0x8; undefined field_0x9; undefined field_0xa; undefined field_0xb; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; undefined field_0x10; undefined field_0x11; undefined field_0x12; undefined field_0x13; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; void * reg_base; u32 (* reg_readl)(void *); void (* reg_writel)(u32, void *); void (* suspend)(struct irq_chip_generic *); void (* resume)(struct irq_chip_generic *); uint irq_base; uint irq_cnt; u32 mask_cache; u32 type_cache; u32 polarity_cache; u32 wake_enabled; u32 wake_active; uint num_ct; void * private; ulong installed; ulong unused; struct irq_domain.conflict * domain; struct list_head list; struct irq_chip_type[0] chip_types; }; struct io_cq { struct request_queue * q; struct io_context * ioc; union anon_union.conflict5d93_for_field_2 field_2; union anon_union.conflict5db2_for_field_3 field_3; uint flags; undefined field_0x34; undefined field_0x35; undefined field_0x36; undefined field_0x37; }; struct block_device.conflict1 { dev_t bd_dev; int bd_openers; struct inode * bd_inode; struct super_block * bd_super; struct mutex bd_mutex; undefined field_0x38; undefined field_0x39; undefined field_0x3a; undefined field_0x3b; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; undefined field_0x40; undefined field_0x41; undefined field_0x42; undefined field_0x43; undefined field_0x44; undefined field_0x45; undefined field_0x46; undefined field_0x47; undefined field_0x48; undefined field_0x49; undefined field_0x4a; undefined field_0x4b; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; void * bd_claiming; void * bd_holder; int bd_holders; bool bd_write_holder; undefined field_0x65; undefined field_0x66; undefined field_0x67; struct list_head bd_holder_disks; struct block_device.conflict1 * bd_contains; uint bd_block_size; u8 bd_partno; undefined field_0x85; undefined field_0x86; undefined field_0x87; struct hd_struct * bd_part; uint bd_part_count; int bd_invalidated; struct gendisk * bd_disk; struct request_queue * bd_queue; struct backing_dev_info * bd_bdi; struct list_head bd_list; ulong bd_private; int bd_fsfreeze_count; undefined field_0xcc; undefined field_0xcd; undefined field_0xce; undefined field_0xcf; struct mutex bd_fsfreeze_mutex; undefined field_0xf0; undefined field_0xf1; undefined field_0xf2; undefined field_0xf3; undefined field_0xf4; undefined field_0xf5; undefined field_0xf6; undefined field_0xf7; undefined field_0xf8; undefined field_0xf9; undefined field_0xfa; undefined field_0xfb; undefined field_0xfc; undefined field_0xfd; undefined field_0xfe; undefined field_0xff; undefined field_0x100; undefined field_0x101; undefined field_0x102; undefined field_0x103; undefined field_0x104; undefined field_0x105; undefined field_0x106; undefined field_0x107; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct kernfs_iattrs { }; struct dquot.conflict { struct hlist_node dq_hash; struct list_head dq_inuse; struct list_head dq_free; struct list_head dq_dirty; struct mutex.conflict dq_lock; spinlock_t.conflict dq_dqb_lock; struct atomic_t dq_count; undefined field_0x94; undefined field_0x95; undefined field_0x96; undefined field_0x97; struct super_block.conflict * dq_sb; struct kqid dq_id; loff_t dq_off; ulong dq_flags; struct mem_dqblk dq_dqb; }; struct css_set { struct cgroup_subsys_state * subsys[5]; refcount_t refcount; undefined field_0x2c; undefined field_0x2d; undefined field_0x2e; undefined field_0x2f; struct css_set * dom_cset; struct cgroup * dfl_cgrp; int nr_tasks; undefined field_0x44; undefined field_0x45; undefined field_0x46; undefined field_0x47; struct list_head tasks; struct list_head mg_tasks; struct list_head dying_tasks; struct list_head task_iters; struct list_head e_cset_node[5]; struct list_head threaded_csets; struct list_head threaded_csets_node; struct hlist_node hlist; struct list_head cgrp_links; struct list_head mg_preload_node; struct list_head mg_node; struct cgroup * mg_src_cgrp; struct cgroup * mg_dst_cgrp; struct css_set * mg_dst_cset; bool dead; undefined field_0x151; undefined field_0x152; undefined field_0x153; undefined field_0x154; undefined field_0x155; undefined field_0x156; undefined field_0x157; struct callback_head callback_head; }; struct irq_domain.conflict { struct list_head link; char * name; struct irq_domain_ops.conflict * ops; void * host_data; uint flags; uint mapcount; struct fwnode_handle * fwnode; enum irq_domain_bus_token bus_token; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; struct irq_domain_chip_generic * gc; struct irq_domain.conflict * parent; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; irq_hw_number_t hwirq_max; uint revmap_direct_max_irq; uint revmap_size; struct radix_tree_root revmap_tree; undefined field_0x90; undefined field_0x91; undefined field_0x92; undefined field_0x93; undefined field_0x94; undefined field_0x95; undefined field_0x96; undefined field_0x97; undefined field_0x98; undefined field_0x99; undefined field_0x9a; undefined field_0x9b; undefined field_0x9c; undefined field_0x9d; undefined field_0x9e; undefined field_0x9f; undefined field_0xa0; undefined field_0xa1; undefined field_0xa2; undefined field_0xa3; undefined field_0xa4; undefined field_0xa5; undefined field_0xa6; undefined field_0xa7; struct mutex revmap_tree_mutex; undefined field_0xc8; undefined field_0xc9; undefined field_0xca; undefined field_0xcb; undefined field_0xcc; undefined field_0xcd; undefined field_0xce; undefined field_0xcf; undefined field_0xd0; undefined field_0xd1; undefined field_0xd2; undefined field_0xd3; undefined field_0xd4; undefined field_0xd5; undefined field_0xd6; undefined field_0xd7; undefined field_0xd8; undefined field_0xd9; undefined field_0xda; undefined field_0xdb; undefined field_0xdc; undefined field_0xdd; undefined field_0xde; undefined field_0xdf; uint[0] linear_revmap; }; struct fasync_struct { struct rwlock_t fa_lock; int magic; int fa_fd; struct fasync_struct * fa_next; struct file * fa_file; struct callback_head fa_rcu; }; struct driver_private { }; struct file_lock.conflict { struct file_lock.conflict * fl_next; struct list_head fl_list; struct hlist_node fl_link; struct list_head fl_block; fl_owner_t fl_owner; uint fl_flags; uchar fl_type; undefined field_0x45; undefined field_0x46; undefined field_0x47; uint fl_pid; int fl_link_cpu; wait_queue_head_t.conflict fl_wait; struct file.conflict * fl_file; loff_t fl_start; loff_t fl_end; struct fasync_struct.conflict * fl_fasync; ulong fl_break_time; ulong fl_downgrade_time; struct file_lock_operations.conflict * fl_ops; struct lock_manager_operations.conflict * fl_lmops; union anon_union.conflict825d_for_fl_u fl_u; struct list_head android_reserved1; u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; struct io_cq.conflict { struct request_queue * q; struct io_context.conflict * ioc; union anon_union.conflict5d93_for_field_2 field_2; union anon_union.conflict5db2_for_field_3 field_3; uint flags; undefined field_0x34; undefined field_0x35; undefined field_0x36; undefined field_0x37; }; struct sock { }; struct pinctrl_state { }; struct pm_subsys_data.conflict { spinlock_t lock; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; undefined field_0x8; undefined field_0x9; undefined field_0xa; undefined field_0xb; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; undefined field_0x10; undefined field_0x11; undefined field_0x12; undefined field_0x13; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; uint refcount; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; struct list_head clock_list; struct pm_domain_data * domain_data; }; struct acpi_device_id { __u8 id[9]; undefined field_0x9; undefined field_0xa; undefined field_0xb; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; kernel_ulong_t driver_data; __u32 cls; __u32 cls_msk; }; typedef struct cpumask cpumask_var_t[1]; typedef struct rkf_waveform rkf_waveform, *Prkf_waveform; struct rkf_waveform { int length; char format[16]; char version[16]; char timeandday[16]; char panel_name[16]; char panel_info[16]; char full_version[64]; char reset_temp_list[64]; char gc16_temp_list[64]; char gl16_temp_list[64]; char glr16_temp_list[64]; char gld16_temp_list[64]; char du_temp_list[64]; char a2_temp_list[64]; uint reset_list[64]; uint gc16_list[64]; uint gl16_list[64]; uint glr16_list[64]; uint gld16_list[64]; uint du_list[64]; uint a2_list[64]; }; typedef enum rkf_waveform_type { RKF_WF_A2=6, RKF_WF_DU=1, RKF_WF_GC16=2, RKF_WF_GL16=3, RKF_WF_GLD16=5, RKF_WF_GLR16=4, RKF_WF_RESET=0 } rkf_waveform_type; typedef union anon_union.conflict3e40e anon_union.conflict3e40e, *Panon_union.conflict3e40e; union anon_union.conflict3e40e { void (* d_canonical_path)(struct path *, struct path *); struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide67; undefined1 field_2; // Data type larger than union's declared size: /DWARF/_UNCATEGORIZED_/anon_union.conflictb84 pack(disabled) Union anon_union.conflictb84 { 0 anon_struct.conflicta5a 40 futex "" 0 anon_struct.conflictb01 24 nanosleep "" 0 anon_struct.conflictb34 32 poll "" } Size = 40 Actual Alignment = 1 }; typedef struct dentry_operations.conflict2 dentry_operations.conflict2, *Pdentry_operations.conflict2; typedef union anon_union.conflict4daa0_for_field_13 anon_union.conflict4daa0_for_field_13, *Panon_union.conflict4daa0_for_field_13; union anon_union.conflict4daa0_for_field_13 { void (* d_canonical_path)(struct path *, struct path *); struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide68; union anon_union.conflictb84 field_2; }; struct dentry_operations.conflict2 { int (* d_revalidate)(struct dentry *, uint); int (* d_weak_revalidate)(struct dentry *, uint); int (* d_hash)(struct dentry *, struct qstr *); int (* d_compare)(struct dentry *, uint, char *, struct qstr *); int (* d_delete)(struct dentry *); int (* d_init)(struct dentry *); void (* d_release)(struct dentry *); void (* d_prune)(struct dentry *); void (* d_iput)(struct dentry *, struct inode *); char * (* d_dname)(struct dentry *, char *, int); vfsmount * (* d_automount)(struct path *); int (* d_manage)(struct path *, bool); dentry * (* d_real)(struct dentry *, struct inode *); union anon_union.conflict4daa0_for_field_13 field_13; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; undefined field_0x88; undefined field_0x89; undefined field_0x8a; undefined field_0x8b; undefined field_0x8c; undefined field_0x8d; undefined field_0x8e; undefined field_0x8f; undefined field_0x90; undefined field_0x91; undefined field_0x92; undefined field_0x93; undefined field_0x94; undefined field_0x95; undefined field_0x96; undefined field_0x97; undefined field_0x98; undefined field_0x99; undefined field_0x9a; undefined field_0x9b; undefined field_0x9c; undefined field_0x9d; undefined field_0x9e; undefined field_0x9f; undefined field_0xa0; undefined field_0xa1; undefined field_0xa2; undefined field_0xa3; undefined field_0xa4; undefined field_0xa5; undefined field_0xa6; undefined field_0xa7; undefined field_0xa8; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; undefined field_0xb0; undefined field_0xb1; undefined field_0xb2; undefined field_0xb3; undefined field_0xb4; undefined field_0xb5; undefined field_0xb6; undefined field_0xb7; undefined field_0xb8; undefined field_0xb9; undefined field_0xba; undefined field_0xbb; undefined field_0xbc; undefined field_0xbd; undefined field_0xbe; undefined field_0xbf; }; typedef union anon_union.conflict4daa0 anon_union.conflict4daa0, *Panon_union.conflict4daa0; union anon_union.conflict4daa0 { void (* d_canonical_path)(struct path *, struct path *); struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide68; undefined1 field_2; // Data type larger than union's declared size: /DWARF/_UNCATEGORIZED_/anon_union.conflictb84 pack(disabled) Union anon_union.conflictb84 { 0 anon_struct.conflicta5a 40 futex "" 0 anon_struct.conflictb01 24 nanosleep "" 0 anon_struct.conflictb34 32 poll "" } Size = 40 Actual Alignment = 1 }; typedef union anon_union.conflict177a anon_union.conflict177a, *Panon_union.conflict177a; union anon_union.conflict177a { struct anon_struct.conflict1759 field_0; u64 hash_len; }; typedef union anon_union.conflict185c anon_union.conflict185c, *Panon_union.conflict185c; union anon_union.conflict185c { struct hlist_node d_alias; struct hlist_bl_node d_in_lookup_hash; struct callback_head d_rcu; }; typedef struct dentry_operations.conflict1 dentry_operations.conflict1, *Pdentry_operations.conflict1; typedef union anon_union.conflict3e40e_for_field_13 anon_union.conflict3e40e_for_field_13, *Panon_union.conflict3e40e_for_field_13; union anon_union.conflict3e40e_for_field_13 { void (* d_canonical_path)(struct path *, struct path *); struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide67; union anon_union.conflictb84 field_2; }; struct dentry_operations.conflict1 { int (* d_revalidate)(struct dentry *, uint); int (* d_weak_revalidate)(struct dentry *, uint); int (* d_hash)(struct dentry *, struct qstr *); int (* d_compare)(struct dentry *, uint, char *, struct qstr *); int (* d_delete)(struct dentry *); int (* d_init)(struct dentry *); void (* d_release)(struct dentry *); void (* d_prune)(struct dentry *); void (* d_iput)(struct dentry *, struct inode *); char * (* d_dname)(struct dentry *, char *, int); vfsmount * (* d_automount)(struct path *); int (* d_manage)(struct path *, bool); dentry * (* d_real)(struct dentry *, struct inode *); union anon_union.conflict3e40e_for_field_13 field_13; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; undefined field_0x88; undefined field_0x89; undefined field_0x8a; undefined field_0x8b; undefined field_0x8c; undefined field_0x8d; undefined field_0x8e; undefined field_0x8f; undefined field_0x90; undefined field_0x91; undefined field_0x92; undefined field_0x93; undefined field_0x94; undefined field_0x95; undefined field_0x96; undefined field_0x97; undefined field_0x98; undefined field_0x99; undefined field_0x9a; undefined field_0x9b; undefined field_0x9c; undefined field_0x9d; undefined field_0x9e; undefined field_0x9f; undefined field_0xa0; undefined field_0xa1; undefined field_0xa2; undefined field_0xa3; undefined field_0xa4; undefined field_0xa5; undefined field_0xa6; undefined field_0xa7; undefined field_0xa8; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; undefined field_0xb0; undefined field_0xb1; undefined field_0xb2; undefined field_0xb3; undefined field_0xb4; undefined field_0xb5; undefined field_0xb6; undefined field_0xb7; undefined field_0xb8; undefined field_0xb9; undefined field_0xba; undefined field_0xbb; undefined field_0xbc; undefined field_0xbd; undefined field_0xbe; undefined field_0xbf; }; typedef union anon_union.conflict1c63b anon_union.conflict1c63b, *Panon_union.conflict1c63b; union anon_union.conflict1c63b { struct list_head d_lru; wait_queue_head_t.conflict * d_wait; }; typedef struct dentry_stat_t dentry_stat_t, *Pdentry_stat_t; struct dentry_stat_t { long nr_dentry; long nr_unused; long age_limit; long want_pages; long dummy[2]; }; typedef union anon_union.conflict1837 anon_union.conflict1837, *Panon_union.conflict1837; union anon_union.conflict1837 { struct list_head d_lru; wait_queue_head_t * d_wait; }; typedef union anon_union.conflict1cf41 anon_union.conflict1cf41, *Panon_union.conflict1cf41; union anon_union.conflict1cf41 { void (* d_canonical_path)(struct path.conflict *, struct path.conflict *); struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide54; undefined1 field_2; // Data type larger than union's declared size: /DWARF/_UNCATEGORIZED_/anon_union.conflictb84 pack(disabled) Union anon_union.conflictb84 { 0 anon_struct.conflicta5a 40 futex "" 0 anon_struct.conflictb01 24 nanosleep "" 0 anon_struct.conflictb34 32 poll "" } Size = 40 Actual Alignment = 1 }; typedef union anon_union.conflict2127 anon_union.conflict2127, *Panon_union.conflict2127; union anon_union.conflict2127 { void (* d_canonical_path)(struct path *, struct path *); struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide23; undefined1 field_2; // Data type larger than union's declared size: /DWARF/_UNCATEGORIZED_/anon_union.conflictb84 pack(disabled) Union anon_union.conflictb84 { 0 anon_struct.conflicta5a 40 futex "" 0 anon_struct.conflictb01 24 nanosleep "" 0 anon_struct.conflictb34 32 poll "" } Size = 40 Actual Alignment = 1 }; typedef struct arch_uprobe_task arch_uprobe_task, *Parch_uprobe_task; struct arch_uprobe_task { }; typedef union anon_union.conflict4ec1 anon_union.conflict4ec1, *Panon_union.conflict4ec1; union anon_union.conflict4ec1 { struct anon_struct.conflict4e7f field_0; struct anon_struct.conflict4ea0 field_1; }; typedef union anon_union.conflictd36 anon_union.conflictd36, *Panon_union.conflictd36; union anon_union.conflictd36 { struct atomic_t val; struct anon_struct.conflictcf4 field_1; struct anon_struct.conflictd15 field_2; }; typedef struct taint_flag taint_flag, *Ptaint_flag; struct taint_flag { char c_true; char c_false; bool module; }; typedef enum system_states { SYSTEM_BOOTING=0, SYSTEM_HALT=3, SYSTEM_POWER_OFF=4, SYSTEM_RESTART=5, SYSTEM_RUNNING=2, SYSTEM_SCHEDULING=1, SYSTEM_SUSPEND=6 } system_states; typedef struct atomic_notifier_head atomic_notifier_head, *Patomic_notifier_head; typedef struct notifier_block notifier_block, *Pnotifier_block; struct atomic_notifier_head { spinlock_t lock; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct notifier_block * head; }; struct notifier_block { int (* notifier_call)(struct notifier_block *, ulong, void *); struct notifier_block * next; int priority; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; }; typedef enum anon_enum_64.conflict325a { WORKER_DESC_LEN=24, WORK_BUSY_PENDING=1, WORK_BUSY_RUNNING=2, WORK_CPU_UNBOUND=8, WORK_NO_COLOR=15, WORK_NR_COLORS=15, WORK_OFFQ_CANCELING=16, WORK_OFFQ_FLAG_BASE=4, WORK_OFFQ_FLAG_BITS=1, WORK_OFFQ_LEFT=59, WORK_OFFQ_POOL_BITS=31, WORK_OFFQ_POOL_NONE=2147483647, WORK_OFFQ_POOL_SHIFT=5, WORK_STRUCT_COLOR_BITS=4, WORK_STRUCT_COLOR_SHIFT=4, WORK_STRUCT_DELAYED=2, WORK_STRUCT_DELAYED_BIT=1, WORK_STRUCT_FLAG_BITS=8, WORK_STRUCT_FLAG_MASK=-1, WORK_STRUCT_LINKED=8, WORK_STRUCT_LINKED_BIT=3, WORK_STRUCT_NO_POOL=68719476704, WORK_STRUCT_PENDING=1, WORK_STRUCT_PENDING_BIT=0, WORK_STRUCT_PWQ=4, WORK_STRUCT_PWQ_BIT=2, WORK_STRUCT_STATIC=0, WORK_STRUCT_WQ_DATA_MASK=-256, __WORK_OFFQ_CANCELING=4 } anon_enum_64.conflict325a; typedef union anon_union.conflict3eea anon_union.conflict3eea, *Panon_union.conflict3eea; union anon_union.conflict3eea { __u64 ptr64; __u64 ptr; }; typedef enum rseq_cs_flags_bit { RSEQ_CS_FLAG_NO_RESTART_ON_MIGRATE_BIT=2, RSEQ_CS_FLAG_NO_RESTART_ON_PREEMPT_BIT=0, RSEQ_CS_FLAG_NO_RESTART_ON_SIGNAL_BIT=1 } rseq_cs_flags_bit; typedef ulong __kernel_ulong_t; typedef __kernel_ulong_t __kernel_size_t; typedef enum hrtimer_base_type { HRTIMER_BASE_BOOTTIME=2, HRTIMER_BASE_BOOTTIME_SOFT=6, HRTIMER_BASE_MONOTONIC=0, HRTIMER_BASE_MONOTONIC_SOFT=4, HRTIMER_BASE_REALTIME=1, HRTIMER_BASE_REALTIME_SOFT=5, HRTIMER_BASE_TAI=3, HRTIMER_BASE_TAI_SOFT=7, HRTIMER_MAX_CLOCK_BASES=8 } hrtimer_base_type; typedef struct dev_pm_info.conflict1 dev_pm_info.conflict1, *Pdev_pm_info.conflict1; typedef struct device.conflict1 device.conflict1, *Pdevice.conflict1; typedef struct wakeup_source.conflict1 wakeup_source.conflict1, *Pwakeup_source.conflict1; typedef struct pm_subsys_data.conflict1 pm_subsys_data.conflict1, *Ppm_subsys_data.conflict1; typedef struct bus_type.conflict1 bus_type.conflict1, *Pbus_type.conflict1; typedef struct class.conflict1 class.conflict1, *Pclass.conflict1; typedef struct dev_pm_ops.conflict1 dev_pm_ops.conflict1, *Pdev_pm_ops.conflict1; struct bus_type.conflict1 { // Missing member lock_key : lock_class_key at offset 0xa8 [zero-length member] char * name; char * dev_name; struct device.conflict1 * dev_root; struct attribute_group * * bus_groups; struct attribute_group * * dev_groups; struct attribute_group * * drv_groups; int (* match)(struct device.conflict1 *, struct device_driver *); int (* uevent)(struct device.conflict1 *, struct kobj_uevent_env *); int (* probe)(struct device.conflict1 *); void (* sync_state)(struct device.conflict1 *); int (* remove)(struct device.conflict1 *); void (* shutdown)(struct device.conflict1 *); int (* online)(struct device.conflict1 *); int (* offline)(struct device.conflict1 *); int (* suspend)(struct device.conflict1 *, pm_message_t); int (* resume)(struct device.conflict1 *); int (* num_vf)(struct device.conflict1 *); int (* dma_configure)(struct device.conflict1 *); struct dev_pm_ops.conflict1 * pm; struct iommu_ops * iommu_ops; struct subsys_private * p; bool need_parent_lock; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct dev_pm_info.conflict1 { pm_message_t power_state; uint can_wakeup:1; uint async_suspend:1; bool in_dpm_list:1; bool is_prepared:1; bool is_suspended:1; bool is_noirq_suspended:1; bool is_late_suspended:1; bool no_pm:1; bool early_init:1; bool direct_complete:1; undefined field_0x6; undefined field_0x7; u32 driver_flags; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; spinlock_t.conflict lock; struct list_head entry; struct completion.conflict completion; struct wakeup_source.conflict1 * wakeup; bool wakeup_path:1; bool syscore:1; bool no_pm_callbacks:1; uint must_resume:1; uint may_skip_resume:1; undefined field_0x71; undefined field_0x72; undefined field_0x73; undefined field_0x74; undefined field_0x75; undefined field_0x76; undefined field_0x77; struct timer_list suspend_timer; ulong timer_expires; struct work_struct work; wait_queue_head_t.conflict wait_queue; struct wake_irq * wakeirq; struct atomic_t usage_count; struct atomic_t child_count; uint disable_depth:3; uint idle_notification:1; uint request_pending:1; uint deferred_resume:1; uint runtime_auto:1; bool ignore_children:1; uint no_callbacks:1; uint irq_safe:1; uint use_autosuspend:1; uint timer_autosuspends:1; uint memalloc_noio:1; undefined field_0x122; undefined field_0x123; uint links_count; enum rpm_request request; enum rpm_status runtime_status; int runtime_error; int autosuspend_delay; ulong last_busy; ulong active_jiffies; ulong suspended_jiffies; ulong accounting_timestamp; struct pm_subsys_data.conflict1 * subsys_data; void (* set_latency_tolerance)(struct device.conflict1 *, s32); struct dev_pm_qos * qos; }; struct device.conflict1 { struct device.conflict1 * parent; struct device_private * p; struct kobject kobj; char * init_name; struct device_type.conflict * type; struct mutex.conflict mutex; struct bus_type.conflict1 * bus; struct device_driver * driver; void * platform_data; void * driver_data; struct dev_links_info links; struct dev_pm_info.conflict1 power; struct dev_pm_domain * pm_domain; struct irq_domain * msi_domain; struct dev_pin_info * pins; struct list_head msi_list; struct dma_map_ops * dma_ops; u64 * dma_mask; u64 coherent_dma_mask; u64 bus_dma_mask; ulong dma_pfn_offset; struct device_dma_parameters * dma_parms; struct list_head dma_pools; struct dma_coherent_mem * dma_mem; struct cma * cma_area; struct removed_region * removed_mem; struct dev_archdata archdata; struct device_node * of_node; struct fwnode_handle * fwnode; dev_t devt; u32 id; spinlock_t.conflict devres_lock; struct list_head devres_head; struct klist_node knode_class; struct class.conflict1 * class; struct attribute_group * * groups; void (* release)(struct device.conflict1 *); struct iommu_group * iommu_group; struct iommu_fwspec * iommu_fwspec; bool offline_disabled:1; bool offline:1; bool of_node_reused:1; bool state_synced:1; undefined field_0x3c9; undefined field_0x3ca; undefined field_0x3cb; undefined field_0x3cc; undefined field_0x3cd; undefined field_0x3ce; undefined field_0x3cf; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; u64 android_kabi_reserved5; u64 android_kabi_reserved6; u64 android_kabi_reserved7; u64 android_kabi_reserved8; }; struct wakeup_source.conflict1 { char * name; int id; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct list_head entry; spinlock_t.conflict lock; struct wake_irq * wakeirq; struct timer_list timer; ulong timer_expires; ktime_t total_time; ktime_t max_time; ktime_t last_time; ktime_t start_prevent_time; ktime_t prevent_sleep_time; ulong event_count; ulong active_count; ulong relax_count; ulong expire_count; ulong wakeup_count; struct device.conflict1 * dev; bool active:1; bool autosleep_enabled:1; undefined field_0xd9; undefined field_0xda; undefined field_0xdb; undefined field_0xdc; undefined field_0xdd; undefined field_0xde; undefined field_0xdf; }; struct pm_subsys_data.conflict1 { spinlock_t.conflict lock; uint refcount; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; struct list_head clock_list; struct pm_domain_data * domain_data; }; struct dev_pm_ops.conflict1 { int (* prepare)(struct device.conflict1 *); void (* complete)(struct device.conflict1 *); int (* suspend)(struct device.conflict1 *); int (* resume)(struct device.conflict1 *); int (* freeze)(struct device.conflict1 *); int (* thaw)(struct device.conflict1 *); int (* poweroff)(struct device.conflict1 *); int (* restore)(struct device.conflict1 *); int (* suspend_late)(struct device.conflict1 *); int (* resume_early)(struct device.conflict1 *); int (* freeze_late)(struct device.conflict1 *); int (* thaw_early)(struct device.conflict1 *); int (* poweroff_late)(struct device.conflict1 *); int (* restore_early)(struct device.conflict1 *); int (* suspend_noirq)(struct device.conflict1 *); int (* resume_noirq)(struct device.conflict1 *); int (* freeze_noirq)(struct device.conflict1 *); int (* thaw_noirq)(struct device.conflict1 *); int (* poweroff_noirq)(struct device.conflict1 *); int (* restore_noirq)(struct device.conflict1 *); int (* runtime_suspend)(struct device.conflict1 *); int (* runtime_resume)(struct device.conflict1 *); int (* runtime_idle)(struct device.conflict1 *); }; struct class.conflict1 { char * name; struct module.conflict * owner; struct attribute_group * * class_groups; struct attribute_group * * dev_groups; struct kobject * dev_kobj; int (* dev_uevent)(struct device.conflict1 *, struct kobj_uevent_env *); char * (* devnode)(struct device.conflict1 *, umode_t *); void (* class_release)(struct class.conflict1 *); void (* dev_release)(struct device.conflict1 *); int (* shutdown_pre)(struct device.conflict1 *); struct kobj_ns_type_operations * ns_type; void * (* namespace)(struct device.conflict1 *); void (* get_ownership)(struct device.conflict1 *, struct kuid_t *, struct kgid_t *); struct dev_pm_ops.conflict1 * pm; struct subsys_private * p; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; typedef struct wakeup_source.conflict2 wakeup_source.conflict2, *Pwakeup_source.conflict2; struct wakeup_source.conflict2 { char * name; int id; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct list_head entry; spinlock_t.conflict lock; struct wake_irq * wakeirq; struct timer_list timer; ulong timer_expires; ktime_t total_time; ktime_t max_time; ktime_t last_time; ktime_t start_prevent_time; ktime_t prevent_sleep_time; ulong event_count; ulong active_count; ulong relax_count; ulong expire_count; ulong wakeup_count; struct device * dev; bool active:1; bool autosleep_enabled:1; undefined field_0xd9; undefined field_0xda; undefined field_0xdb; undefined field_0xdc; undefined field_0xdd; undefined field_0xde; undefined field_0xdf; }; typedef enum ftr_type { FTR_EXACT=0, FTR_HIGHER_OR_ZERO_SAFE=3, FTR_HIGHER_SAFE=2, FTR_LOWER_SAFE=1 } ftr_type; typedef struct arm64_ftr_reg arm64_ftr_reg, *Parm64_ftr_reg; typedef struct arm64_ftr_bits arm64_ftr_bits, *Parm64_ftr_bits; struct arm64_ftr_bits { bool sign; bool visible; bool strict; undefined field_0x3; enum ftr_type type; u8 shift; u8 width; undefined field_0xa; undefined field_0xb; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; s64 safe_val; }; struct arm64_ftr_reg { char * name; u64 strict_mask; u64 user_mask; u64 sys_val; u64 user_val; struct arm64_ftr_bits * ftr_bits; }; typedef union anon_union.conflict9612 anon_union.conflict9612, *Panon_union.conflict9612; union anon_union.conflict9612 { int non_rcu; struct callback_head rcu; }; typedef struct buf_list_s buf_list_s, *Pbuf_list_s; typedef struct buf_list_s buf_list_t; struct buf_list_s { int nb_elt; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; int * * array_elements; int maxelements; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; }; typedef enum perf_event_task_context { perf_hw_context=0, perf_invalid_context=-1, perf_nr_task_contexts=2, perf_sw_context=1 } perf_event_task_context; typedef union anon_union.conflict24f12 anon_union.conflict24f12, *Panon_union.conflict24f12; union anon_union.conflict24f12 { uint frozen:1; struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide47; undefined1 field_2; // Data type larger than union's declared size: /DWARF/_UNCATEGORIZED_/anon_union.conflictb84 pack(disabled) Union anon_union.conflictb84 { 0 anon_struct.conflicta5a 40 futex "" 0 anon_struct.conflictb01 24 nanosleep "" 0 anon_struct.conflictb34 32 poll "" } Size = 40 Actual Alignment = 1 }; typedef union anon_union.conflict3053c anon_union.conflict3053c, *Panon_union.conflict3053c; union anon_union.conflict3053c { uint frozen:1; struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide44; undefined1 field_2; // Data type larger than union's declared size: /DWARF/_UNCATEGORIZED_/anon_union.conflictb84 pack(disabled) Union anon_union.conflictb84 { 0 anon_struct.conflicta5a 40 futex "" 0 anon_struct.conflictb01 24 nanosleep "" 0 anon_struct.conflictb34 32 poll "" } Size = 40 Actual Alignment = 1 }; typedef struct task_struct.conflict2 task_struct.conflict2, *Ptask_struct.conflict2; typedef union anon_union.conflict3053c_for_field_161 anon_union.conflict3053c_for_field_161, *Panon_union.conflict3053c_for_field_161; union anon_union.conflict3053c_for_field_161 { uint frozen:1; struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide44; union anon_union.conflictb84 field_2; }; struct task_struct.conflict2 { // Missing member ioac : task_io_accounting at offset 0x880 [zero-length member] Missing member tlb_ubc : tlbflush_unmap_batch at offset 0x948 [zero-length member] struct thread_info.conflict thread_info; long state; void * stack; struct atomic_t usage; uint flags; uint ptrace; undefined field_0x34; undefined field_0x35; undefined field_0x36; undefined field_0x37; struct llist_node wake_entry; int on_cpu; uint cpu; uint wakee_flips; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; ulong wakee_flip_decay_ts; struct task_struct.conflict2 * last_wakee; int recent_used_cpu; int wake_cpu; int on_rq; int prio; int static_prio; int normal_prio; uint rt_priority; undefined field_0x7c; undefined field_0x7d; undefined field_0x7e; undefined field_0x7f; struct sched_class * sched_class; undefined field_0x88; undefined field_0x89; undefined field_0x8a; undefined field_0x8b; undefined field_0x8c; undefined field_0x8d; undefined field_0x8e; undefined field_0x8f; undefined field_0x90; undefined field_0x91; undefined field_0x92; undefined field_0x93; undefined field_0x94; undefined field_0x95; undefined field_0x96; undefined field_0x97; undefined field_0x98; undefined field_0x99; undefined field_0x9a; undefined field_0x9b; undefined field_0x9c; undefined field_0x9d; undefined field_0x9e; undefined field_0x9f; undefined field_0xa0; undefined field_0xa1; undefined field_0xa2; undefined field_0xa3; undefined field_0xa4; undefined field_0xa5; undefined field_0xa6; undefined field_0xa7; undefined field_0xa8; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; undefined field_0xb0; undefined field_0xb1; undefined field_0xb2; undefined field_0xb3; undefined field_0xb4; undefined field_0xb5; undefined field_0xb6; undefined field_0xb7; undefined field_0xb8; undefined field_0xb9; undefined field_0xba; undefined field_0xbb; undefined field_0xbc; undefined field_0xbd; undefined field_0xbe; undefined field_0xbf; struct sched_entity se; struct sched_rt_entity rt; u64 last_sleep_ts; int boost; undefined field_0x31c; undefined field_0x31d; undefined field_0x31e; undefined field_0x31f; u64 boost_period; u64 boost_expires; struct task_group * sched_task_group; struct sched_dl_entity dl; uint btrace_seq; uint policy; int nr_cpus_allowed; undefined field_0x42c; undefined field_0x42d; undefined field_0x42e; undefined field_0x42f; cpumask_t cpus_allowed; cpumask_t cpus_requested; struct sched_info sched_info; struct list_head tasks; struct plist_node pushable_tasks; struct rb_node pushable_dl_tasks; struct mm_struct * mm; struct mm_struct * active_mm; struct vmacache vmacache; struct task_rss_stat rss_stat; int exit_state; int exit_code; int exit_signal; int pdeath_signal; ulong jobctl; uint personality; uint sched_reset_on_fork:1; uint sched_contributes_to_load:1; uint sched_migrated:1; uint sched_remote_wakeup:1; undefined field_0x51d; undefined field_0x51e; undefined field_0x51f; uint in_execve:1; uint in_iowait:1; uint no_cgroup_migration:1; undefined field_0x521; undefined field_0x522; undefined field_0x523; undefined field_0x524; undefined field_0x525; undefined field_0x526; undefined field_0x527; ulong atomic_flags; struct restart_block restart_block; pid_t pid; pid_t tgid; ulong stack_canary; struct task_struct.conflict2 * real_parent; struct task_struct.conflict2 * parent; struct list_head children; struct list_head sibling; struct task_struct.conflict2 * group_leader; struct list_head ptraced; struct list_head ptrace_entry; struct pid.conflict * thread_pid; struct hlist_node pid_links[4]; struct list_head thread_group; struct list_head thread_node; struct completion.conflict * vfork_done; int * set_child_tid; int * clear_child_tid; u64 utime; u64 stime; u64 gtime; struct prev_cputime.conflict prev_cputime; ulong nvcsw; ulong nivcsw; u64 start_time; u64 real_start_time; ulong min_flt; ulong maj_flt; struct task_cputime cputime_expires; struct list_head cpu_timers[3]; struct cred * ptracer_cred; struct cred * real_cred; struct cred * cred; char comm[16]; struct nameidata * nameidata; struct sysv_sem sysvsem; struct sysv_shm sysvshm; struct fs_struct * fs; struct files_struct * files; struct nsproxy * nsproxy; struct signal_struct * signal; struct sighand_struct * sighand; struct sigset_t blocked; struct sigset_t real_blocked; struct sigset_t saved_sigmask; struct sigpending pending; ulong sas_ss_sp; size_t sas_ss_size; uint sas_ss_flags; undefined field_0x7b4; undefined field_0x7b5; undefined field_0x7b6; undefined field_0x7b7; struct callback_head * task_works; struct audit_context * audit_context; struct seccomp seccomp; u64 parent_exec_id; u64 self_exec_id; spinlock_t.conflict alloc_lock; raw_spinlock_t.conflict pi_lock; struct wake_q_node wake_q; struct rb_root_cached pi_waiters; struct task_struct.conflict2 * pi_top_task; struct rt_mutex_waiter * pi_blocked_on; void * journal_info; struct bio_list * bio_list; struct blk_plug * plug; struct reclaim_state * reclaim_state; struct backing_dev_info * backing_dev_info; struct io_context * io_context; ulong ptrace_message; siginfo_t * last_siginfo; struct nodemask_t mems_allowed; seqcount_t mems_allowed_seq; int cpuset_mem_spread_rotor; int cpuset_slab_spread_rotor; undefined field_0x894; undefined field_0x895; undefined field_0x896; undefined field_0x897; struct css_set * cgroups; struct list_head cg_list; struct robust_list_head * robust_list; struct compat_robust_list_head * compat_robust_list; struct list_head pi_state_list; struct futex_pi_state * pi_state_cache; struct perf_event_context * perf_event_ctxp[2]; struct mutex.conflict perf_event_mutex; struct list_head perf_event_list; struct rseq * rseq; u32 rseq_len; u32 rseq_sig; ulong rseq_event_mask; struct callback_head rcu; struct pipe_inode_info * splice_pipe; struct page_frag task_frag; int nr_dirtied; int nr_dirtied_pause; ulong dirty_paused_when; u64 timer_slack_ns; u64 default_timer_slack_ns; int curr_ret_stack; int curr_ret_depth; struct ftrace_ret_stack * ret_stack; ulonglong ftrace_timestamp; struct atomic_t trace_overrun; struct atomic_t tracing_graph_pause; ulong trace; ulong trace_recursion; struct uprobe_task * utask; int pagefault_disabled; undefined field_0x9cc; undefined field_0x9cd; undefined field_0x9ce; undefined field_0x9cf; struct task_struct.conflict2 * oom_reaper_list; struct vm_struct * stack_vm_area; struct atomic_t stack_refcount; undefined field_0x9e4; undefined field_0x9e5; undefined field_0x9e6; undefined field_0x9e7; union anon_union.conflict3053c_for_field_161 field_161; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; u64 android_kabi_reserved5; u64 android_kabi_reserved6; u64 android_kabi_reserved7; u64 android_kabi_reserved8; undefined field_0xa28; undefined field_0xa29; undefined field_0xa2a; undefined field_0xa2b; undefined field_0xa2c; undefined field_0xa2d; undefined field_0xa2e; undefined field_0xa2f; struct thread_struct thread; }; typedef union thread_union thread_union, *Pthread_union; union thread_union { struct task_struct task; ulong stack[2048]; }; typedef enum rseq_event_mask_bits { RSEQ_EVENT_MIGRATE_BIT=2, RSEQ_EVENT_PREEMPT_BIT=0, RSEQ_EVENT_SIGNAL_BIT=1 } rseq_event_mask_bits; typedef union anon_union.conflict1678d anon_union.conflict1678d, *Panon_union.conflict1678d; union anon_union.conflict1678d { uint frozen:1; struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide48; undefined1 field_2; // Data type larger than union's declared size: /DWARF/_UNCATEGORIZED_/anon_union.conflictb84 pack(disabled) Union anon_union.conflictb84 { 0 anon_struct.conflicta5a 40 futex "" 0 anon_struct.conflictb01 24 nanosleep "" 0 anon_struct.conflictb34 32 poll "" } Size = 40 Actual Alignment = 1 }; typedef union anon_union.conflict4587 anon_union.conflict4587, *Panon_union.conflict4587; union anon_union.conflict4587 { uint frozen:1; struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide46; union anon_union.conflict4582 field_2; }; typedef struct guid_t guid_t, *Pguid_t; struct guid_t { __u8 b[16]; }; typedef struct class.conflict2 class.conflict2, *Pclass.conflict2; struct class.conflict2 { char * name; struct module.conflict * owner; struct attribute_group * * class_groups; struct attribute_group * * dev_groups; struct kobject * dev_kobj; int (* dev_uevent)(struct device *, struct kobj_uevent_env *); char * (* devnode)(struct device *, umode_t *); void (* class_release)(struct class.conflict2 *); void (* dev_release)(struct device *); int (* shutdown_pre)(struct device *); struct kobj_ns_type_operations * ns_type; void * (* namespace)(struct device *); void (* get_ownership)(struct device *, struct kuid_t *, struct kgid_t *); struct dev_pm_ops * pm; struct subsys_private * p; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; typedef struct device_attribute device_attribute, *Pdevice_attribute; struct device_attribute { struct attribute attr; ssize_t (* show)(struct device *, struct device_attribute *, char *); ssize_t (* store)(struct device *, struct device_attribute *, char *, size_t); }; typedef struct pdev_archdata pdev_archdata, *Ppdev_archdata; struct pdev_archdata { }; typedef union anon_union.conflictda3 anon_union.conflictda3, *Panon_union.conflictda3; union anon_union.conflictda3 { struct atomic_t cnts; struct anon_struct.conflictd72 field_1; }; typedef union anon_union.conflict5d93 anon_union.conflict5d93, *Panon_union.conflict5d93; union anon_union.conflict5d93 { struct list_head q_node; struct kmem_cache * __rcu_icq_cache; }; typedef union anon_union.conflict5db2 anon_union.conflict5db2, *Panon_union.conflict5db2; union anon_union.conflict5db2 { struct hlist_node ioc_node; struct callback_head __rcu_head; }; typedef struct cdev.conflict cdev.conflict, *Pcdev.conflict; struct cdev.conflict { struct kobject kobj; struct module.conflict * owner; struct file_operations * ops; struct list_head list; dev_t dev; uint count; }; typedef enum cpu_usage_stat { CPUTIME_GUEST=8, CPUTIME_GUEST_NICE=9, CPUTIME_IDLE=5, CPUTIME_IOWAIT=6, CPUTIME_IRQ=4, CPUTIME_NICE=1, CPUTIME_SOFTIRQ=3, CPUTIME_STEAL=7, CPUTIME_SYSTEM=2, CPUTIME_USER=0, NR_STATS=10 } cpu_usage_stat; typedef struct ebc_pmic ebc_pmic, *Pebc_pmic; struct ebc_pmic { struct device * dev; char pmic_name[16]; void * drvpar; void (* pmic_power_req)(struct ebc_pmic *, bool); void (* pmic_pm_suspend)(struct ebc_pmic *); void (* pmic_pm_resume)(struct ebc_pmic *); int (* pmic_read_temperature)(struct ebc_pmic *, int *); int (* pmic_get_vcom)(struct ebc_pmic *); int (* pmic_set_vcom)(struct ebc_pmic *, int); }; typedef struct ebc_pmic.conflict ebc_pmic.conflict, *Pebc_pmic.conflict; struct ebc_pmic.conflict { struct device.conflict1 * dev; char pmic_name[16]; void * drvpar; void (* pmic_power_req)(struct ebc_pmic.conflict *, bool); void (* pmic_pm_suspend)(struct ebc_pmic.conflict *); void (* pmic_pm_resume)(struct ebc_pmic.conflict *); int (* pmic_read_temperature)(struct ebc_pmic.conflict *, int *); int (* pmic_get_vcom)(struct ebc_pmic.conflict *); int (* pmic_set_vcom)(struct ebc_pmic.conflict *, int); }; typedef struct nmi_ctx nmi_ctx, *Pnmi_ctx; struct nmi_ctx { u64 hcr; }; typedef struct irq_cpustat_t irq_cpustat_t, *Pirq_cpustat_t; struct irq_cpustat_t { uint __softirq_pending; uint ipi_irqs[7]; undefined field_0x20; undefined field_0x21; undefined field_0x22; undefined field_0x23; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; undefined field_0x28; undefined field_0x29; undefined field_0x2a; undefined field_0x2b; undefined field_0x2c; undefined field_0x2d; undefined field_0x2e; undefined field_0x2f; undefined field_0x30; undefined field_0x31; undefined field_0x32; undefined field_0x33; undefined field_0x34; undefined field_0x35; undefined field_0x36; undefined field_0x37; undefined field_0x38; undefined field_0x39; undefined field_0x3a; undefined field_0x3b; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; }; typedef u8 uint8_t; typedef struct sched_param sched_param, *Psched_param; struct sched_param { int sched_priority; }; typedef s8 int8_t; typedef struct ratelimit_state.conflict ratelimit_state.conflict, *Pratelimit_state.conflict; struct ratelimit_state.conflict { raw_spinlock_t lock; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; undefined field_0x8; undefined field_0x9; undefined field_0xa; undefined field_0xb; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; undefined field_0x10; undefined field_0x11; undefined field_0x12; undefined field_0x13; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; int interval; int burst; int printed; int missed; ulong begin; ulong flags; }; typedef struct user_struct.conflict user_struct.conflict, *Puser_struct.conflict; typedef struct key.conflict key.conflict, *Pkey.conflict; typedef struct key_restriction.conflict key_restriction.conflict, *Pkey_restriction.conflict; struct key_restriction.conflict { int (* check)(struct key.conflict *, struct key_type *, union key_payload *, struct key.conflict *); struct key.conflict * key; struct key_type * keytype; }; struct key.conflict { refcount_t usage; key_serial_t serial; union anon_union.conflict9481_for_field_2 field_2; struct rw_semaphore sem; undefined field_0x50; undefined field_0x51; undefined field_0x52; undefined field_0x53; undefined field_0x54; undefined field_0x55; undefined field_0x56; undefined field_0x57; undefined field_0x58; undefined field_0x59; undefined field_0x5a; undefined field_0x5b; undefined field_0x5c; undefined field_0x5d; undefined field_0x5e; undefined field_0x5f; undefined field_0x60; undefined field_0x61; undefined field_0x62; undefined field_0x63; undefined field_0x64; undefined field_0x65; undefined field_0x66; undefined field_0x67; struct key_user * user; void * security; union anon_union.conflict94a0_for_field_6 field_6; time64_t last_used_at; struct kuid_t uid; struct kgid_t gid; key_perm_t perm; ushort quotalen; ushort datalen; short state; undefined field_0x9a; undefined field_0x9b; undefined field_0x9c; undefined field_0x9d; undefined field_0x9e; undefined field_0x9f; ulong flags; union anon_union.conflict94e0_for_field_15 field_15; union anon_union.conflict951a_for_field_16 field_16; struct key_restriction.conflict * restrict_link; }; struct user_struct.conflict { refcount_t __count; struct atomic_t processes; struct atomic_t sigpending; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; atomic_long_t epoll_watches; ulong locked_shm; ulong unix_inflight; atomic_long_t pipe_bufs; struct key.conflict * uid_keyring; struct key.conflict * session_keyring; struct hlist_node uidhash_node; struct kuid_t uid; undefined field_0x54; undefined field_0x55; undefined field_0x56; undefined field_0x57; atomic_long_t locked_vm; struct ratelimit_state.conflict ratelimit; u64 android_kabi_reserved1; u64 android_kabi_reserved2; }; typedef enum vm_event_item.conflict { ALLOCSTALL_DMA32=8, ALLOCSTALL_MOVABLE=10, ALLOCSTALL_NORMAL=9, DROP_PAGECACHE=34, DROP_SLAB=35, KSWAPD_HIGH_WMARK_HIT_QUICKLY=31, KSWAPD_INODESTEAL=29, KSWAPD_LOW_WMARK_HIT_QUICKLY=30, NR_VM_EVENT_ITEMS=48, OOM_KILL=36, PAGEOUTRUN=32, PGACTIVATE=15, PGALLOC_DMA32=5, PGALLOC_MOVABLE=7, PGALLOC_NORMAL=6, PGDEACTIVATE=16, PGFAULT=18, PGFREE=14, PGINODESTEAL=27, PGLAZYFREE=17, PGLAZYFREED=20, PGMAJFAULT=19, PGMIGRATE_FAIL=38, PGMIGRATE_SUCCESS=37, PGPGIN=0, PGPGOUT=1, PGPGOUTCLEAN=2, PGREFILL=21, PGROTATED=33, PGSCAN_DIRECT=25, PGSCAN_DIRECT_THROTTLE=26, PGSCAN_KSWAPD=24, PGSCAN_SKIP_DMA32=11, PGSCAN_SKIP_MOVABLE=13, PGSCAN_SKIP_NORMAL=12, PGSTEAL_DIRECT=23, PGSTEAL_KSWAPD=22, PSWPIN=3, PSWPOUT=4, SLABS_SCANNED=28, SWAP_RA=46, SWAP_RA_HIT=47, UNEVICTABLE_PGCLEARED=44, UNEVICTABLE_PGCULLED=39, UNEVICTABLE_PGMLOCKED=42, UNEVICTABLE_PGMUNLOCKED=43, UNEVICTABLE_PGRESCUED=41, UNEVICTABLE_PGSCANNED=40, UNEVICTABLE_PGSTRANDED=45 } vm_event_item.conflict; typedef enum vm_event_item { ALLOCSTALL_DMA32=8, ALLOCSTALL_MOVABLE=10, ALLOCSTALL_NORMAL=9, COMPACTFAIL=43, COMPACTFREE_SCANNED=40, COMPACTISOLATED=41, COMPACTMIGRATE_SCANNED=39, COMPACTSTALL=42, COMPACTSUCCESS=44, DROP_PAGECACHE=34, DROP_SLAB=35, KCOMPACTD_FREE_SCANNED=47, KCOMPACTD_MIGRATE_SCANNED=46, KCOMPACTD_WAKE=45, KSWAPD_HIGH_WMARK_HIT_QUICKLY=31, KSWAPD_INODESTEAL=29, KSWAPD_LOW_WMARK_HIT_QUICKLY=30, NR_VM_EVENT_ITEMS=57, OOM_KILL=36, PAGEOUTRUN=32, PGACTIVATE=15, PGALLOC_DMA32=5, PGALLOC_MOVABLE=7, PGALLOC_NORMAL=6, PGDEACTIVATE=16, PGFAULT=18, PGFREE=14, PGINODESTEAL=27, PGLAZYFREE=17, PGLAZYFREED=20, PGMAJFAULT=19, PGMIGRATE_FAIL=38, PGMIGRATE_SUCCESS=37, PGPGIN=0, PGPGOUT=1, PGPGOUTCLEAN=2, PGREFILL=21, PGROTATED=33, PGSCAN_DIRECT=25, PGSCAN_DIRECT_THROTTLE=26, PGSCAN_KSWAPD=24, PGSCAN_SKIP_DMA32=11, PGSCAN_SKIP_MOVABLE=13, PGSCAN_SKIP_NORMAL=12, PGSTEAL_DIRECT=23, PGSTEAL_KSWAPD=22, PSWPIN=3, PSWPOUT=4, SLABS_SCANNED=28, SWAP_RA=55, SWAP_RA_HIT=56, UNEVICTABLE_PGCLEARED=53, UNEVICTABLE_PGCULLED=48, UNEVICTABLE_PGMLOCKED=51, UNEVICTABLE_PGMUNLOCKED=52, UNEVICTABLE_PGRESCUED=50, UNEVICTABLE_PGSCANNED=49, UNEVICTABLE_PGSTRANDED=54 } vm_event_item; typedef union anon_union_for___u anon_union_for___u, *Panon_union_for___u; union anon_union_for___u { struct list_head * __val; char __c[1]; }; typedef struct psi_group psi_group, *Ppsi_group; struct psi_group { }; typedef struct node node, *Pnode; struct node { struct device dev; }; typedef enum ebc_win_data_fmt { RGB565=3, RGB888=2, Y_DATA_4BPP=0, Y_DATA_8BPP=1 } ebc_win_data_fmt; typedef struct bp_hardening_data bp_hardening_data, *Pbp_hardening_data; typedef void (* bp_hardening_cb_t)(void); struct bp_hardening_data { int hyp_vectors_slot; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; bp_hardening_cb_t fn; }; typedef struct miscdevice miscdevice, *Pmiscdevice; struct miscdevice { int minor; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; char * name; struct file_operations * fops; struct list_head list; struct device * parent; struct device * this_device; struct attribute_group * * groups; char * nodename; umode_t mode; undefined field_0x4a; undefined field_0x4b; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; }; typedef struct i2c_msg i2c_msg, *Pi2c_msg; struct i2c_msg { __u16 addr; __u16 flags; __u16 len; undefined field_0x6; undefined field_0x7; __u8 * buf; }; typedef struct i2c_algorithm.conflict i2c_algorithm.conflict, *Pi2c_algorithm.conflict; typedef struct i2c_adapter.conflict i2c_adapter.conflict, *Pi2c_adapter.conflict; typedef union i2c_smbus_data i2c_smbus_data, *Pi2c_smbus_data; typedef struct i2c_lock_operations.conflict i2c_lock_operations.conflict, *Pi2c_lock_operations.conflict; typedef struct rt_mutex.conflict rt_mutex.conflict, *Prt_mutex.conflict; typedef struct i2c_bus_recovery_info.conflict i2c_bus_recovery_info.conflict, *Pi2c_bus_recovery_info.conflict; typedef struct i2c_adapter_quirks i2c_adapter_quirks, *Pi2c_adapter_quirks; typedef struct gpio_desc gpio_desc, *Pgpio_desc; struct i2c_algorithm.conflict { int (* master_xfer)(struct i2c_adapter.conflict *, struct i2c_msg *, int); int (* smbus_xfer)(struct i2c_adapter.conflict *, u16, ushort, char, u8, int, union i2c_smbus_data *); u32 (* functionality)(struct i2c_adapter.conflict *); }; struct i2c_bus_recovery_info.conflict { int (* recover_bus)(struct i2c_adapter.conflict *); int (* get_scl)(struct i2c_adapter.conflict *); void (* set_scl)(struct i2c_adapter.conflict *, int); int (* get_sda)(struct i2c_adapter.conflict *); void (* set_sda)(struct i2c_adapter.conflict *, int); int (* get_bus_free)(struct i2c_adapter.conflict *); void (* prepare_recovery)(struct i2c_adapter.conflict *); void (* unprepare_recovery)(struct i2c_adapter.conflict *); struct gpio_desc * scl_gpiod; struct gpio_desc * sda_gpiod; }; struct rt_mutex.conflict { raw_spinlock_t wait_lock; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; undefined field_0x8; undefined field_0x9; undefined field_0xa; undefined field_0xb; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; undefined field_0x10; undefined field_0x11; undefined field_0x12; undefined field_0x13; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; struct rb_root_cached waiters; struct task_struct.conflict * owner; }; struct i2c_adapter.conflict { struct module.conflict * owner; uint class; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct i2c_algorithm.conflict * algo; void * algo_data; struct i2c_lock_operations.conflict * lock_ops; struct rt_mutex.conflict bus_lock; struct rt_mutex.conflict mux_lock; int timeout; int retries; struct device dev; undefined field_0x440; undefined field_0x441; undefined field_0x442; undefined field_0x443; undefined field_0x444; undefined field_0x445; undefined field_0x446; undefined field_0x447; undefined field_0x448; undefined field_0x449; undefined field_0x44a; undefined field_0x44b; undefined field_0x44c; undefined field_0x44d; undefined field_0x44e; undefined field_0x44f; undefined field_0x450; undefined field_0x451; undefined field_0x452; undefined field_0x453; undefined field_0x454; undefined field_0x455; undefined field_0x456; undefined field_0x457; undefined field_0x458; undefined field_0x459; undefined field_0x45a; undefined field_0x45b; undefined field_0x45c; undefined field_0x45d; undefined field_0x45e; undefined field_0x45f; undefined field_0x460; undefined field_0x461; undefined field_0x462; undefined field_0x463; undefined field_0x464; undefined field_0x465; undefined field_0x466; undefined field_0x467; undefined field_0x468; undefined field_0x469; undefined field_0x46a; undefined field_0x46b; undefined field_0x46c; undefined field_0x46d; undefined field_0x46e; undefined field_0x46f; undefined field_0x470; undefined field_0x471; undefined field_0x472; undefined field_0x473; undefined field_0x474; undefined field_0x475; undefined field_0x476; undefined field_0x477; undefined field_0x478; undefined field_0x479; undefined field_0x47a; undefined field_0x47b; undefined field_0x47c; undefined field_0x47d; undefined field_0x47e; undefined field_0x47f; undefined field_0x480; undefined field_0x481; undefined field_0x482; undefined field_0x483; undefined field_0x484; undefined field_0x485; undefined field_0x486; undefined field_0x487; undefined field_0x488; undefined field_0x489; undefined field_0x48a; undefined field_0x48b; undefined field_0x48c; undefined field_0x48d; undefined field_0x48e; undefined field_0x48f; undefined field_0x490; undefined field_0x491; undefined field_0x492; undefined field_0x493; undefined field_0x494; undefined field_0x495; undefined field_0x496; undefined field_0x497; undefined field_0x498; undefined field_0x499; undefined field_0x49a; undefined field_0x49b; undefined field_0x49c; undefined field_0x49d; undefined field_0x49e; undefined field_0x49f; int nr; char name[48]; undefined field_0x4d4; undefined field_0x4d5; undefined field_0x4d6; undefined field_0x4d7; struct completion.conflict dev_released; struct mutex userspace_clients_lock; undefined field_0x528; undefined field_0x529; undefined field_0x52a; undefined field_0x52b; undefined field_0x52c; undefined field_0x52d; undefined field_0x52e; undefined field_0x52f; undefined field_0x530; undefined field_0x531; undefined field_0x532; undefined field_0x533; undefined field_0x534; undefined field_0x535; undefined field_0x536; undefined field_0x537; undefined field_0x538; undefined field_0x539; undefined field_0x53a; undefined field_0x53b; undefined field_0x53c; undefined field_0x53d; undefined field_0x53e; undefined field_0x53f; struct list_head userspace_clients; struct i2c_bus_recovery_info.conflict * bus_recovery_info; struct i2c_adapter_quirks * quirks; struct irq_domain.conflict * host_notify_domain; }; struct gpio_desc { }; union i2c_smbus_data { __u8 byte; __u16 word; __u8 block[34]; }; struct i2c_adapter_quirks { u64 flags; int max_num_msgs; u16 max_write_len; u16 max_read_len; u16 max_comb_1st_msg_len; u16 max_comb_2nd_msg_len; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; }; struct i2c_lock_operations.conflict { void (* lock_bus)(struct i2c_adapter.conflict *, uint); int (* trylock_bus)(struct i2c_adapter.conflict *, uint); void (* unlock_bus)(struct i2c_adapter.conflict *, uint); }; typedef struct i2c_client i2c_client, *Pi2c_client; typedef struct i2c_adapter i2c_adapter, *Pi2c_adapter; typedef struct i2c_algorithm i2c_algorithm, *Pi2c_algorithm; typedef struct i2c_lock_operations i2c_lock_operations, *Pi2c_lock_operations; typedef struct rt_mutex rt_mutex, *Prt_mutex; typedef struct i2c_bus_recovery_info i2c_bus_recovery_info, *Pi2c_bus_recovery_info; struct rt_mutex { raw_spinlock_t wait_lock; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct rb_root_cached waiters; struct task_struct * owner; }; struct i2c_adapter { struct module * owner; uint class; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct i2c_algorithm * algo; void * algo_data; struct i2c_lock_operations * lock_ops; struct rt_mutex bus_lock; struct rt_mutex mux_lock; int timeout; int retries; struct device dev; int nr; char name[48]; undefined field_0x454; undefined field_0x455; undefined field_0x456; undefined field_0x457; struct completion dev_released; struct mutex userspace_clients_lock; struct list_head userspace_clients; struct i2c_bus_recovery_info * bus_recovery_info; struct i2c_adapter_quirks * quirks; struct irq_domain * host_notify_domain; }; struct i2c_algorithm { int (* master_xfer)(struct i2c_adapter *, struct i2c_msg *, int); int (* smbus_xfer)(struct i2c_adapter *, u16, ushort, char, u8, int, union i2c_smbus_data *); u32 (* functionality)(struct i2c_adapter *); }; struct i2c_client { ushort flags; ushort addr; char name[20]; struct i2c_adapter * adapter; struct device dev; int init_irq; int irq; struct list_head detected; }; struct i2c_lock_operations { void (* lock_bus)(struct i2c_adapter *, uint); int (* trylock_bus)(struct i2c_adapter *, uint); void (* unlock_bus)(struct i2c_adapter *, uint); }; struct i2c_bus_recovery_info { int (* recover_bus)(struct i2c_adapter *); int (* get_scl)(struct i2c_adapter *); void (* set_scl)(struct i2c_adapter *, int); int (* get_sda)(struct i2c_adapter *); void (* set_sda)(struct i2c_adapter *, int); int (* get_bus_free)(struct i2c_adapter *); void (* prepare_recovery)(struct i2c_adapter *); void (* unprepare_recovery)(struct i2c_adapter *); struct gpio_desc * scl_gpiod; struct gpio_desc * sda_gpiod; }; typedef struct i2c_driver i2c_driver, *Pi2c_driver; typedef struct i2c_client.conflict i2c_client.conflict, *Pi2c_client.conflict; typedef struct i2c_device_id i2c_device_id, *Pi2c_device_id; typedef enum i2c_alert_protocol { I2C_PROTOCOL_SMBUS_ALERT=0, I2C_PROTOCOL_SMBUS_HOST_NOTIFY=1 } i2c_alert_protocol; typedef struct i2c_board_info i2c_board_info, *Pi2c_board_info; typedef struct property_entry property_entry, *Pproperty_entry; typedef enum dev_prop_type { DEV_PROP_MAX=5, DEV_PROP_STRING=4, DEV_PROP_U16=1, DEV_PROP_U32=2, DEV_PROP_U64=3, DEV_PROP_U8=0 } dev_prop_type; typedef union anon_union.conflict3c0bd_for_field_4 anon_union.conflict3c0bd_for_field_4, *Panon_union.conflict3c0bd_for_field_4; typedef union anon_union.conflict3c013 anon_union.conflict3c013, *Panon_union.conflict3c013; typedef union anon_union.conflict3c077 anon_union.conflict3c077, *Panon_union.conflict3c077; union anon_union.conflict3c077 { u8 u8_data; u16 u16_data; u32 u32_data; u64 u64_data; char * str; }; union anon_union.conflict3c013 { u8 * u8_data; u16 * u16_data; u32 * u32_data; u64 * u64_data; char * * str; }; union anon_union.conflict3c0bd_for_field_4 { union anon_union.conflict3c013 pointer; union anon_union.conflict3c077 value; }; struct i2c_client.conflict { ushort flags; ushort addr; char name[20]; struct i2c_adapter.conflict * adapter; struct device dev; undefined field_0x3d0; undefined field_0x3d1; undefined field_0x3d2; undefined field_0x3d3; undefined field_0x3d4; undefined field_0x3d5; undefined field_0x3d6; undefined field_0x3d7; undefined field_0x3d8; undefined field_0x3d9; undefined field_0x3da; undefined field_0x3db; undefined field_0x3dc; undefined field_0x3dd; undefined field_0x3de; undefined field_0x3df; undefined field_0x3e0; undefined field_0x3e1; undefined field_0x3e2; undefined field_0x3e3; undefined field_0x3e4; undefined field_0x3e5; undefined field_0x3e6; undefined field_0x3e7; undefined field_0x3e8; undefined field_0x3e9; undefined field_0x3ea; undefined field_0x3eb; undefined field_0x3ec; undefined field_0x3ed; undefined field_0x3ee; undefined field_0x3ef; undefined field_0x3f0; undefined field_0x3f1; undefined field_0x3f2; undefined field_0x3f3; undefined field_0x3f4; undefined field_0x3f5; undefined field_0x3f6; undefined field_0x3f7; undefined field_0x3f8; undefined field_0x3f9; undefined field_0x3fa; undefined field_0x3fb; undefined field_0x3fc; undefined field_0x3fd; undefined field_0x3fe; undefined field_0x3ff; undefined field_0x400; undefined field_0x401; undefined field_0x402; undefined field_0x403; undefined field_0x404; undefined field_0x405; undefined field_0x406; undefined field_0x407; undefined field_0x408; undefined field_0x409; undefined field_0x40a; undefined field_0x40b; undefined field_0x40c; undefined field_0x40d; undefined field_0x40e; undefined field_0x40f; undefined field_0x410; undefined field_0x411; undefined field_0x412; undefined field_0x413; undefined field_0x414; undefined field_0x415; undefined field_0x416; undefined field_0x417; undefined field_0x418; undefined field_0x419; undefined field_0x41a; undefined field_0x41b; undefined field_0x41c; undefined field_0x41d; undefined field_0x41e; undefined field_0x41f; undefined field_0x420; undefined field_0x421; undefined field_0x422; undefined field_0x423; undefined field_0x424; undefined field_0x425; undefined field_0x426; undefined field_0x427; undefined field_0x428; undefined field_0x429; undefined field_0x42a; undefined field_0x42b; undefined field_0x42c; undefined field_0x42d; undefined field_0x42e; undefined field_0x42f; int init_irq; int irq; struct list_head detected; }; struct i2c_driver { uint class; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; int (* probe)(struct i2c_client.conflict *, struct i2c_device_id *); int (* remove)(struct i2c_client.conflict *); int (* probe_new)(struct i2c_client.conflict *); void (* shutdown)(struct i2c_client.conflict *); void (* alert)(struct i2c_client.conflict *, enum i2c_alert_protocol, uint); int (* command)(struct i2c_client.conflict *, uint, void *); struct device_driver driver; struct i2c_device_id * id_table; int (* detect)(struct i2c_client.conflict *, struct i2c_board_info *); ushort * address_list; struct list_head clients; bool disable_i2c_core_irq_mapping; undefined field_0x109; undefined field_0x10a; undefined field_0x10b; undefined field_0x10c; undefined field_0x10d; undefined field_0x10e; undefined field_0x10f; }; struct property_entry { char * name; size_t length; bool is_array; undefined field_0x11; undefined field_0x12; undefined field_0x13; enum dev_prop_type type; union anon_union.conflict3c0bd_for_field_4 field_4; }; struct i2c_device_id { char name[20]; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; kernel_ulong_t driver_data; }; struct i2c_board_info { char type[20]; ushort flags; ushort addr; char * dev_name; void * platform_data; struct device_node * of_node; struct fwnode_handle * fwnode; struct property_entry * properties; struct resource * resources; uint num_resources; int irq; }; typedef struct u64_stats_sync u64_stats_sync, *Pu64_stats_sync; struct u64_stats_sync { }; typedef enum kmalloc_cache_type { KMALLOC_NORMAL=0, KMALLOC_RECLAIM=1, NR_KMALLOC_TYPES=2 } kmalloc_cache_type; typedef struct quota_format_type.conflict1 quota_format_type.conflict1, *Pquota_format_type.conflict1; struct quota_format_type.conflict1 { int qf_fmt_id; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct quota_format_ops * qf_ops; struct module.conflict * qf_owner; struct quota_format_type.conflict1 * qf_next; }; typedef struct quota_format_type quota_format_type, *Pquota_format_type; struct quota_format_type { int qf_fmt_id; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct quota_format_ops * qf_ops; struct module * qf_owner; struct quota_format_type * qf_next; }; typedef union anon_union.conflict6a84 anon_union.conflict6a84, *Panon_union.conflict6a84; union anon_union.conflict6a84 { struct kuid_t uid; struct kgid_t gid; struct kprojid_t projid; }; typedef struct dqstats dqstats, *Pdqstats; typedef struct percpu_counter percpu_counter, *Ppercpu_counter; struct percpu_counter { raw_spinlock_t lock; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; s64 count; struct list_head list; s32 * counters; }; struct dqstats { ulong stat[8]; struct percpu_counter counter[8]; }; typedef struct mem_dqinfo.conflict mem_dqinfo.conflict, *Pmem_dqinfo.conflict; struct mem_dqinfo.conflict { struct quota_format_type.conflict1 * dqi_format; int dqi_fmt_id; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct list_head dqi_dirty_list; ulong dqi_flags; uint dqi_bgrace; uint dqi_igrace; qsize_t dqi_max_spc_limit; qsize_t dqi_max_ino_limit; void * dqi_priv; }; typedef struct quota_info.conflict1 quota_info.conflict1, *Pquota_info.conflict1; struct quota_info.conflict1 { uint flags; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; struct rw_semaphore dqio_sem; undefined field_0x38; undefined field_0x39; undefined field_0x3a; undefined field_0x3b; undefined field_0x3c; undefined field_0x3d; undefined field_0x3e; undefined field_0x3f; undefined field_0x40; undefined field_0x41; undefined field_0x42; undefined field_0x43; undefined field_0x44; undefined field_0x45; undefined field_0x46; undefined field_0x47; undefined field_0x48; undefined field_0x49; undefined field_0x4a; undefined field_0x4b; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; struct inode * files[3]; struct mem_dqinfo.conflict info[3]; struct quota_format_ops * ops[3]; }; typedef enum node_states { NR_NODE_STATES=5, N_CPU=4, N_HIGH_MEMORY=2, N_MEMORY=3, N_NORMAL_MEMORY=2, N_ONLINE=1, N_POSSIBLE=0 } node_states; typedef struct tracepoint tracepoint, *Ptracepoint; typedef struct static_key static_key, *Pstatic_key; typedef struct tracepoint_func tracepoint_func, *Ptracepoint_func; typedef union anon_union.conflicte86_for_field_1 anon_union.conflicte86_for_field_1, *Panon_union.conflicte86_for_field_1; typedef struct static_key_mod static_key_mod, *Pstatic_key_mod; struct tracepoint_func { void * func; void * data; int prio; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; }; union anon_union.conflicte86_for_field_1 { ulong type; struct jump_entry * entries; struct static_key_mod * next; }; struct static_key { struct atomic_t enabled; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; union anon_union.conflicte86_for_field_1 field_1; }; struct tracepoint { char * name; struct static_key key; int (* regfunc)(void); void (* unregfunc)(void); struct tracepoint_func * funcs; }; struct static_key_mod { }; typedef struct anon_struct.conflict1422 anon_struct.conflict1422, *Panon_struct.conflict1422; struct anon_struct.conflict1422 { ulong tp_value; ulong tp2_value; struct user_fpsimd_state fpsimd_state; }; typedef union anon_union.conflict172d anon_union.conflict172d, *Panon_union.conflict172d; union anon_union.conflict172d { __u64 lock_count; struct anon_struct.conflict170c field_1; }; typedef union anon_union.conflict1c5ad anon_union.conflict1c5ad, *Panon_union.conflict1c5ad; union anon_union.conflict1c5ad { struct anon_struct.conflict1c589 field_0; }; typedef union anon_union.conflictab1 anon_union.conflictab1, *Panon_union.conflictab1; union anon_union.conflictab1 { struct timespec * rmtp; struct compat_timespec * compat_rmtp; }; typedef enum wb_stat_item { NR_WB_STAT_ITEMS=4, WB_DIRTIED=2, WB_RECLAIMABLE=0, WB_WRITEBACK=1, WB_WRITTEN=3 } wb_stat_item; typedef union anon_union.conflict3c0bd anon_union.conflict3c0bd, *Panon_union.conflict3c0bd; union anon_union.conflict3c0bd { union anon_union.conflict3c013 pointer; union anon_union.conflict3c077 value; }; typedef struct ebc_tcon ebc_tcon, *Pebc_tcon; typedef struct ebc_panel ebc_panel, *Pebc_panel; typedef struct clk clk, *Pclk; typedef struct regmap regmap, *Pregmap; typedef struct panel_buffer panel_buffer, *Ppanel_buffer; struct regmap { }; struct clk { }; struct panel_buffer { void * virt_addr; ulong phy_addr; size_t size; }; struct ebc_panel { struct device * dev; struct ebc_tcon * tcon; struct ebc_pmic * pmic; struct panel_buffer fb[2]; int current_buffer; u32 width; u32 height; u32 vir_width; u32 vir_height; u32 width_mm; u32 height_mm; u32 direct_mode; u32 sdck; u32 lsl; u32 lbl; u32 ldl; u32 lel; u32 gdck_sta; u32 lgonl; u32 fsl; u32 fbl; u32 fdl; u32 fel; u32 panel_16bit; u32 panel_color; u32 mirror; }; struct ebc_tcon { struct device * dev; void * regs; uint len; int irq; struct clk * hclk; struct clk * dclk; struct regmap * regmap_base; int (* enable)(struct ebc_tcon *, struct ebc_panel *); void (* disable)(struct ebc_tcon *); void (* dsp_mode_set)(struct ebc_tcon *, int, int, int, int); void (* image_addr_set)(struct ebc_tcon *, u32, u32); void (* frame_addr_set)(struct ebc_tcon *, u32); int (* lut_data_set)(struct ebc_tcon *, uint *, int, int); void (* frame_start)(struct ebc_tcon *, int); void (* dsp_end_callback)(void); }; typedef struct eink_tcon eink_tcon, *Peink_tcon; struct eink_tcon { struct device * dev; void * regs; uint len; int irq; struct clk * hclk; struct clk * pclk; struct regmap * regmap_base; int (* enable)(struct eink_tcon *, struct ebc_panel *); void (* disable)(struct eink_tcon *); void (* image_addr_set)(struct eink_tcon *, u32, u32, u32); void (* frame_start)(struct eink_tcon *); void (* dsp_end_callback)(void); }; typedef struct eink_reg_data eink_reg_data, *Peink_reg_data; struct eink_reg_data { int addr; int value; }; typedef struct page_ext_operations page_ext_operations, *Ppage_ext_operations; struct page_ext_operations { size_t offset; size_t size; bool (* need)(void); void (* init)(void); }; typedef struct platform_driver.conflict platform_driver.conflict, *Pplatform_driver.conflict; typedef struct platform_device.conflict platform_device.conflict, *Pplatform_device.conflict; typedef struct platform_device_id platform_device_id, *Pplatform_device_id; typedef struct mfd_cell mfd_cell, *Pmfd_cell; struct platform_device_id { char name[20]; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; kernel_ulong_t driver_data; }; struct mfd_cell { }; struct platform_device.conflict { // Missing member archdata : pdev_archdata at offset 0x448 [exceeds parent struct len] char * name; int id; bool id_auto; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct device dev; undefined field_0x3c0; undefined field_0x3c1; undefined field_0x3c2; undefined field_0x3c3; undefined field_0x3c4; undefined field_0x3c5; undefined field_0x3c6; undefined field_0x3c7; undefined field_0x3c8; undefined field_0x3c9; undefined field_0x3ca; undefined field_0x3cb; undefined field_0x3cc; undefined field_0x3cd; undefined field_0x3ce; undefined field_0x3cf; undefined field_0x3d0; undefined field_0x3d1; undefined field_0x3d2; undefined field_0x3d3; undefined field_0x3d4; undefined field_0x3d5; undefined field_0x3d6; undefined field_0x3d7; undefined field_0x3d8; undefined field_0x3d9; undefined field_0x3da; undefined field_0x3db; undefined field_0x3dc; undefined field_0x3dd; undefined field_0x3de; undefined field_0x3df; undefined field_0x3e0; undefined field_0x3e1; undefined field_0x3e2; undefined field_0x3e3; undefined field_0x3e4; undefined field_0x3e5; undefined field_0x3e6; undefined field_0x3e7; undefined field_0x3e8; undefined field_0x3e9; undefined field_0x3ea; undefined field_0x3eb; undefined field_0x3ec; undefined field_0x3ed; undefined field_0x3ee; undefined field_0x3ef; undefined field_0x3f0; undefined field_0x3f1; undefined field_0x3f2; undefined field_0x3f3; undefined field_0x3f4; undefined field_0x3f5; undefined field_0x3f6; undefined field_0x3f7; undefined field_0x3f8; undefined field_0x3f9; undefined field_0x3fa; undefined field_0x3fb; undefined field_0x3fc; undefined field_0x3fd; undefined field_0x3fe; undefined field_0x3ff; undefined field_0x400; undefined field_0x401; undefined field_0x402; undefined field_0x403; undefined field_0x404; undefined field_0x405; undefined field_0x406; undefined field_0x407; undefined field_0x408; undefined field_0x409; undefined field_0x40a; undefined field_0x40b; undefined field_0x40c; undefined field_0x40d; undefined field_0x40e; undefined field_0x40f; undefined field_0x410; undefined field_0x411; undefined field_0x412; undefined field_0x413; undefined field_0x414; undefined field_0x415; undefined field_0x416; undefined field_0x417; undefined field_0x418; undefined field_0x419; undefined field_0x41a; undefined field_0x41b; undefined field_0x41c; undefined field_0x41d; undefined field_0x41e; undefined field_0x41f; u32 num_resources; undefined field_0x424; undefined field_0x425; undefined field_0x426; undefined field_0x427; struct resource * resource; struct platform_device_id * id_entry; char * driver_override; struct mfd_cell * mfd_cell; }; struct platform_driver.conflict { int (* probe)(struct platform_device.conflict *); int (* remove)(struct platform_device.conflict *); void (* shutdown)(struct platform_device.conflict *); int (* suspend)(struct platform_device.conflict *, pm_message_t); int (* resume)(struct platform_device.conflict *); struct device_driver driver; struct platform_device_id * id_table; bool prevent_deferred_probe; undefined field_0xd9; undefined field_0xda; undefined field_0xdb; undefined field_0xdc; undefined field_0xdd; undefined field_0xde; undefined field_0xdf; }; typedef struct platform_driver platform_driver, *Pplatform_driver; typedef struct platform_device platform_device, *Pplatform_device; struct platform_device { // Missing member archdata : pdev_archdata at offset 0x3e8 [exceeds parent struct len] char * name; int id; bool id_auto; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct device dev; u32 num_resources; undefined field_0x3c4; undefined field_0x3c5; undefined field_0x3c6; undefined field_0x3c7; struct resource * resource; struct platform_device_id * id_entry; char * driver_override; struct mfd_cell * mfd_cell; }; struct platform_driver { int (* probe)(struct platform_device *); int (* remove)(struct platform_device *); void (* shutdown)(struct platform_device *); int (* suspend)(struct platform_device *, pm_message_t); int (* resume)(struct platform_device *); struct device_driver driver; struct platform_device_id * id_table; bool prevent_deferred_probe; undefined field_0xd9; undefined field_0xda; undefined field_0xdb; undefined field_0xdc; undefined field_0xdd; undefined field_0xde; undefined field_0xdf; }; typedef struct tlbflush_unmap_batch tlbflush_unmap_batch, *Ptlbflush_unmap_batch; struct tlbflush_unmap_batch { }; typedef struct vm_event_state vm_event_state, *Pvm_event_state; struct vm_event_state { ulong event[57]; }; typedef void (* exitcall_t)(void); typedef int initcall_entry_t; typedef enum gpiod_flags { GPIOD_ASIS=0, GPIOD_IN=1, GPIOD_OUT_HIGH=7, GPIOD_OUT_HIGH_OPEN_DRAIN=15, GPIOD_OUT_LOW=3, GPIOD_OUT_LOW_OPEN_DRAIN=11 } gpiod_flags; typedef struct timezone timezone, *Ptimezone; struct timezone { int tz_minuteswest; int tz_dsttime; }; typedef union anon_union.conflict411bd anon_union.conflict411bd, *Panon_union.conflict411bd; union anon_union.conflict411bd { struct anon_struct.conflict4117f field_0; struct callback_head rcu; }; typedef struct ctl_table_poll ctl_table_poll, *Pctl_table_poll; struct ctl_table_poll { struct atomic_t event; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; wait_queue_head_t wait; }; typedef union anon_union.conflict951a anon_union.conflict951a, *Panon_union.conflict951a; union anon_union.conflict951a { union key_payload payload; struct anon_struct.conflict94f9 field_1; }; typedef union anon_union.conflict9481 anon_union.conflict9481, *Panon_union.conflict9481; union anon_union.conflict9481 { struct list_head graveyard_link; struct rb_node serial_node; }; typedef union anon_union.conflict94e0 anon_union.conflict94e0, *Panon_union.conflict94e0; union anon_union.conflict94e0 { struct keyring_index_key index_key; struct anon_struct.conflict94bf field_1; }; typedef union anon_union.conflict94a0 anon_union.conflict94a0, *Panon_union.conflict94a0; union anon_union.conflict94a0 { time64_t expiry; time64_t revoked_at; }; typedef struct anon_struct.conflict56d7 anon_struct.conflict56d7, *Panon_struct.conflict56d7; struct anon_struct.conflict56d7 { struct vm_area_struct * mmap; struct rb_root mm_rb; u64 vmacache_seqnum; ulong (* get_unmapped_area)(struct file *, ulong, ulong, ulong, ulong); ulong mmap_base; ulong mmap_legacy_base; ulong task_size; ulong highest_vm_end; struct pgd_t * pgd; struct atomic_t mm_users; struct atomic_t mm_count; atomic_long_t pgtables_bytes; int map_count; spinlock_t page_table_lock; struct rw_semaphore mmap_sem; struct list_head mmlist; ulong hiwater_rss; ulong hiwater_vm; ulong total_vm; ulong locked_vm; ulong pinned_vm; ulong data_vm; ulong exec_vm; ulong stack_vm; ulong def_flags; spinlock_t arg_lock; undefined field_0xec; undefined field_0xed; undefined field_0xee; undefined field_0xef; ulong start_code; ulong end_code; ulong start_data; ulong end_data; ulong start_brk; ulong brk; ulong start_stack; ulong arg_start; ulong arg_end; ulong env_start; ulong env_end; ulong saved_auxv[46]; struct mm_rss_stat rss_stat; struct linux_binfmt * binfmt; struct mm_context_t context; ulong flags; struct core_state * core_state; struct atomic_t membarrier_state; spinlock_t ioctx_lock; struct kioctx_table * ioctx_table; struct task_struct * owner; struct user_namespace * user_ns; struct file * exe_file; struct atomic_t tlb_flush_pending; undefined field_0x33c; undefined field_0x33d; undefined field_0x33e; undefined field_0x33f; struct uprobes_state uprobes_state; struct work_struct async_put_work; }; typedef union anon_union.conflict527d anon_union.conflict527d, *Panon_union.conflict527d; union anon_union.conflict527d { struct mm_struct * pt_mm; struct atomic_t pt_frag_refcount; }; typedef union anon_union.conflict51bb anon_union.conflict51bb, *Panon_union.conflict51bb; union anon_union.conflict51bb { void * s_mem; ulong counters; struct anon_struct.conflict5185 field_2; }; typedef struct vm_userfaultfd_ctx vm_userfaultfd_ctx, *Pvm_userfaultfd_ctx; struct vm_userfaultfd_ctx { }; typedef union anon_union.conflict516c anon_union.conflict516c, *Panon_union.conflict516c; union anon_union.conflict516c { struct list_head slab_list; struct anon_struct.conflict513f field_1; }; typedef union anon_union.conflict5393 anon_union.conflict5393, *Panon_union.conflict5393; union anon_union.conflict5393 { struct anon_struct.conflict4ffb field_0; struct anon_struct.conflict51df field_1; struct anon_struct.conflict5217 field_2; struct anon_struct.conflict5250 field_3; struct anon_struct.conflict529c field_4; struct anon_struct.conflict52db field_5; struct callback_head callback_head; }; typedef union anon_union.conflict16cd5 anon_union.conflict16cd5, *Panon_union.conflict16cd5; union anon_union.conflict16cd5 { struct mm_struct.conflict * pt_mm; struct atomic_t pt_frag_refcount; }; typedef struct anon_struct.conflict1d7f6 anon_struct.conflict1d7f6, *Panon_struct.conflict1d7f6; struct anon_struct.conflict1d7f6 { struct vm_area_struct * mmap; struct rb_root mm_rb; u64 vmacache_seqnum; ulong (* get_unmapped_area)(struct file.conflict *, ulong, ulong, ulong, ulong); ulong mmap_base; ulong mmap_legacy_base; ulong task_size; ulong highest_vm_end; struct pgd_t * pgd; struct atomic_t mm_users; struct atomic_t mm_count; atomic_long_t pgtables_bytes; int map_count; undefined field_0x5c; undefined field_0x5d; undefined field_0x5e; undefined field_0x5f; spinlock_t page_table_lock; undefined field_0x64; undefined field_0x65; undefined field_0x66; undefined field_0x67; undefined field_0x68; undefined field_0x69; undefined field_0x6a; undefined field_0x6b; undefined field_0x6c; undefined field_0x6d; undefined field_0x6e; undefined field_0x6f; undefined field_0x70; undefined field_0x71; undefined field_0x72; undefined field_0x73; undefined field_0x74; undefined field_0x75; undefined field_0x76; undefined field_0x77; struct rw_semaphore mmap_sem; undefined field_0xa8; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; undefined field_0xb0; undefined field_0xb1; undefined field_0xb2; undefined field_0xb3; undefined field_0xb4; undefined field_0xb5; undefined field_0xb6; undefined field_0xb7; undefined field_0xb8; undefined field_0xb9; undefined field_0xba; undefined field_0xbb; undefined field_0xbc; undefined field_0xbd; undefined field_0xbe; undefined field_0xbf; struct list_head mmlist; ulong hiwater_rss; ulong hiwater_vm; ulong total_vm; ulong locked_vm; ulong pinned_vm; ulong data_vm; ulong exec_vm; ulong stack_vm; ulong def_flags; spinlock_t arg_lock; undefined field_0x11c; undefined field_0x11d; undefined field_0x11e; undefined field_0x11f; undefined field_0x120; undefined field_0x121; undefined field_0x122; undefined field_0x123; undefined field_0x124; undefined field_0x125; undefined field_0x126; undefined field_0x127; undefined field_0x128; undefined field_0x129; undefined field_0x12a; undefined field_0x12b; undefined field_0x12c; undefined field_0x12d; undefined field_0x12e; undefined field_0x12f; ulong start_code; ulong end_code; ulong start_data; ulong end_data; ulong start_brk; ulong brk; ulong start_stack; ulong arg_start; ulong arg_end; ulong env_start; ulong env_end; ulong saved_auxv[46]; struct mm_rss_stat rss_stat; struct linux_binfmt * binfmt; struct mm_context_t context; ulong flags; struct core_state.conflict * core_state; struct atomic_t membarrier_state; undefined field_0x354; undefined field_0x355; undefined field_0x356; undefined field_0x357; spinlock_t ioctx_lock; undefined field_0x35c; undefined field_0x35d; undefined field_0x35e; undefined field_0x35f; undefined field_0x360; undefined field_0x361; undefined field_0x362; undefined field_0x363; undefined field_0x364; undefined field_0x365; undefined field_0x366; undefined field_0x367; undefined field_0x368; undefined field_0x369; undefined field_0x36a; undefined field_0x36b; undefined field_0x36c; undefined field_0x36d; undefined field_0x36e; undefined field_0x36f; struct kioctx_table * ioctx_table; struct user_namespace * user_ns; struct file.conflict * exe_file; struct atomic_t tlb_flush_pending; undefined field_0x38c; undefined field_0x38d; undefined field_0x38e; undefined field_0x38f; struct uprobes_state uprobes_state; struct work_struct async_put_work; }; typedef struct anon_struct.conflict16ebb anon_struct.conflict16ebb, *Panon_struct.conflict16ebb; struct anon_struct.conflict16ebb { struct vm_area_struct * mmap; struct rb_root mm_rb; u64 vmacache_seqnum; ulong (* get_unmapped_area)(struct file *, ulong, ulong, ulong, ulong); ulong mmap_base; ulong mmap_legacy_base; ulong task_size; ulong highest_vm_end; struct pgd_t * pgd; struct atomic_t mm_users; struct atomic_t mm_count; atomic_long_t pgtables_bytes; int map_count; undefined field_0x5c; undefined field_0x5d; undefined field_0x5e; undefined field_0x5f; spinlock_t.conflict page_table_lock; struct rw_semaphore.conflict mmap_sem; struct list_head mmlist; ulong hiwater_rss; ulong hiwater_vm; ulong total_vm; ulong locked_vm; ulong pinned_vm; ulong data_vm; ulong exec_vm; ulong stack_vm; ulong def_flags; spinlock_t.conflict arg_lock; ulong start_code; ulong end_code; ulong start_data; ulong end_data; ulong start_brk; ulong brk; ulong start_stack; ulong arg_start; ulong arg_end; ulong env_start; ulong env_end; ulong saved_auxv[46]; struct mm_rss_stat rss_stat; struct linux_binfmt * binfmt; struct mm_context_t context; ulong flags; struct core_state.conflict * core_state; struct atomic_t membarrier_state; undefined field_0x354; undefined field_0x355; undefined field_0x356; undefined field_0x357; spinlock_t.conflict ioctx_lock; struct kioctx_table * ioctx_table; struct user_namespace * user_ns; struct file * exe_file; struct atomic_t tlb_flush_pending; undefined field_0x38c; undefined field_0x38d; undefined field_0x38e; undefined field_0x38f; struct uprobes_state uprobes_state; struct work_struct async_put_work; }; typedef union anon_union.conflict53c5 anon_union.conflict53c5, *Panon_union.conflict53c5; union anon_union.conflict53c5 { struct atomic_t _mapcount; uint page_type; uint active; int units; }; typedef struct anon_struct.conflict3cadd anon_struct.conflict3cadd, *Panon_struct.conflict3cadd; struct anon_struct.conflict3cadd { struct vm_area_struct * mmap; struct rb_root mm_rb; u64 vmacache_seqnum; ulong (* get_unmapped_area)(struct file *, ulong, ulong, ulong, ulong); ulong mmap_base; ulong mmap_legacy_base; ulong task_size; ulong highest_vm_end; struct pgd_t * pgd; struct atomic_t mm_users; struct atomic_t mm_count; atomic_long_t pgtables_bytes; int map_count; undefined field_0x5c; undefined field_0x5d; undefined field_0x5e; undefined field_0x5f; spinlock_t.conflict page_table_lock; struct rw_semaphore mmap_sem; undefined field_0xa8; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; undefined field_0xb0; undefined field_0xb1; undefined field_0xb2; undefined field_0xb3; undefined field_0xb4; undefined field_0xb5; undefined field_0xb6; undefined field_0xb7; undefined field_0xb8; undefined field_0xb9; undefined field_0xba; undefined field_0xbb; undefined field_0xbc; undefined field_0xbd; undefined field_0xbe; undefined field_0xbf; struct list_head mmlist; ulong hiwater_rss; ulong hiwater_vm; ulong total_vm; ulong locked_vm; ulong pinned_vm; ulong data_vm; ulong exec_vm; ulong stack_vm; ulong def_flags; spinlock_t.conflict arg_lock; ulong start_code; ulong end_code; ulong start_data; ulong end_data; ulong start_brk; ulong brk; ulong start_stack; ulong arg_start; ulong arg_end; ulong env_start; ulong env_end; ulong saved_auxv[46]; struct mm_rss_stat rss_stat; struct linux_binfmt * binfmt; struct mm_context_t context; ulong flags; struct core_state.conflict * core_state; struct atomic_t membarrier_state; undefined field_0x354; undefined field_0x355; undefined field_0x356; undefined field_0x357; spinlock_t.conflict ioctx_lock; struct kioctx_table * ioctx_table; struct user_namespace * user_ns; struct file * exe_file; struct atomic_t tlb_flush_pending; undefined field_0x38c; undefined field_0x38d; undefined field_0x38e; undefined field_0x38f; struct uprobes_state uprobes_state; struct work_struct async_put_work; }; typedef union anon_union.conflict5551 anon_union.conflict5551, *Panon_union.conflict5551; union anon_union.conflict5551 { struct anon_struct.conflict552e shared; char * anon_name; }; typedef struct semaphore semaphore, *Psemaphore; struct semaphore { raw_spinlock_t lock; uint count; struct list_head wait_list; }; typedef struct mod_tree_node mod_tree_node, *Pmod_tree_node; struct mod_tree_node { struct module * mod; struct latch_tree_node node; }; typedef enum anon_enum_32.conflict160 { ADDR_COMPAT_LAYOUT=2097152, ADDR_LIMIT_32BIT=8388608, ADDR_LIMIT_3GB=134217728, ADDR_NO_RANDOMIZE=262144, BLOCK_SOFTIRQ=4, FDPIC_FUNCPTRS=524288, HI_SOFTIRQ=0, HRTIMER_SOFTIRQ=8, IRQ_DISABLE_UNLAZY=524288, IRQ_IS_POLLED=262144, IRQ_LEVEL=256, IRQ_MOVE_PCNTXT=16384, IRQ_NESTED_THREAD=-32768, IRQ_NOAUTOEN=4096, IRQ_NOPROBE=1024, IRQ_NOREQUEST=2048, IRQ_NOTHREAD=65536, IRQ_NO_BALANCING=8192, IRQ_PER_CPU=512, IRQ_PER_CPU_DEVID=131072, IRQ_POLL_SOFTIRQ=5, IRQ_TYPE_DEFAULT=15, IRQ_TYPE_EDGE_BOTH=3, IRQ_TYPE_EDGE_FALLING=2, IRQ_TYPE_EDGE_RISING=1, IRQ_TYPE_LEVEL_HIGH=4, IRQ_TYPE_LEVEL_LOW=8, IRQ_TYPE_LEVEL_MASK=12, IRQ_TYPE_NONE=0, IRQ_TYPE_PROBE=16, IRQ_TYPE_SENSE_MASK=15, MAX_ZONELISTS=1, MEMREMAP_DEC=16, MEMREMAP_ENC=8, MEMREMAP_WB=1, MEMREMAP_WC=4, MEMREMAP_WT=2, MMAP_PAGE_ZERO=1048576, MM_ANONPAGES=1, MM_FILEPAGES=0, MM_SHMEMPAGES=3, MM_SWAPENTS=2, MM_UNRECLAIMABLE=4, NET_RX_SOFTIRQ=3, NET_TX_SOFTIRQ=2, NR_MM_COUNTERS=5, NR_SOFTIRQS=10, RCU_SOFTIRQ=9, READ_IMPLIES_EXEC=4194304, SCHED_SOFTIRQ=7, SHORT_INODE=16777216, STICKY_TIMEOUTS=67108864, TASKLET_SOFTIRQ=6, TASKSTATS_CMD_GET=1, TASKSTATS_CMD_NEW=2, TASKSTATS_CMD_UNSPEC=0, TIMER_SOFTIRQ=1, UNAME26=131072, WAKE_LOCK_SUSPEND=0, WAKE_LOCK_TYPE_COUNT=1, WHOLE_SECONDS=33554432, WQ_CPU_INTENSIVE=32, WQ_DFL_ACTIVE=256, WQ_FREEZABLE=4, WQ_HIGHPRI=16, WQ_MAX_ACTIVE=512, WQ_MAX_UNBOUND_PER_CPU=4, WQ_MEM_RECLAIM=8, WQ_POWER_EFFICIENT=-128, WQ_SYSFS=64, WQ_UNBOUND=2, ZONELIST_FALLBACK=0, __TASKSTATS_CMD_MAX=3, __WQ_DRAINING=65536, __WQ_LEGACY=262144, __WQ_ORDERED=131072, __WQ_ORDERED_EXPLICIT=524288, false=0, true=1 } anon_enum_32.conflict160; typedef struct wait_queue_entry wait_queue_entry, *Pwait_queue_entry; struct wait_queue_entry { uint flags; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; void * private; int (* func)(struct wait_queue_entry *, uint, int, void *); struct list_head entry; }; typedef struct ebc_info ebc_info, *Pebc_info; typedef struct epd_lut_data epd_lut_data, *Pepd_lut_data; typedef struct ebc_buf_s ebc_buf_s, *Pebc_buf_s; typedef struct wake_lock wake_lock, *Pwake_lock; typedef enum ebc_buf_status { buf_dsp=2, buf_error=4, buf_idle=0, buf_osd=3, buf_user=1 } ebc_buf_status; typedef enum panel_refresh_mode { EPD_A2=12, EPD_AUTO=0, EPD_DU=13, EPD_FULL_EINK=19, EPD_FULL_GC16=2, EPD_FULL_GCC16=6, EPD_FULL_GL16=3, EPD_FULL_GLD16=5, EPD_FULL_GLR16=4, EPD_OVERLAY=1, EPD_PART_EINK=18, EPD_PART_GC16=7, EPD_PART_GCC16=11, EPD_PART_GL16=8, EPD_PART_GLD16=10, EPD_PART_GLR16=9, EPD_POWER_OFF=17, EPD_RESET=14, EPD_RESUME=16, EPD_SUSPEND=15 } panel_refresh_mode; struct ebc_buf_s { enum ebc_buf_status status; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; ulong phy_addr; char * virt_addr; char tid_name[16]; enum panel_refresh_mode buf_mode; int len; int win_x1; int win_y1; int win_x2; int win_y2; }; struct wake_lock { struct wakeup_source ws; }; struct epd_lut_data { uint frame_num; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; uint * data; u8 * wf_table; }; struct ebc_info { ulong ebc_buffer_phy; char * ebc_buffer_vir; int ebc_buffer_size; int ebc_buf_real_size; int direct_buf_real_size; int is_busy_now; int auto_refresh_done; char frame_total; char frame_bw_total; undefined field_0x26; undefined field_0x27; int auto_need_refresh; int frame_left; int part_mode_count; int full_mode_num; int height; int width; int * lut_addr; int buffer_need_check; int ebc_irq_status; int ebc_dsp_buf_status; undefined field_0x54; undefined field_0x55; undefined field_0x56; undefined field_0x57; struct device * dev; struct epd_lut_data lut_data; struct task_struct * ebc_task; int * auto_image_new; int * auto_image_old; int * auto_image_bg; u8 * auto_frame_count; u8 * auto_image_osd; void * direct_buffer[2]; int ebc_power_status; int ebc_last_display; char * lut_ddr_vir; struct ebc_buf_s * prev_dsp_buf; struct ebc_buf_s * curr_dsp_buf; struct wake_lock suspend_lock; int wake_lock_is_set; int first_in; struct timer_list vdd_timer; struct timer_list frame_timer; struct work_struct auto_buffer_work; int is_early_suspend; int is_deep_sleep; int is_power_off; int overlay_enable; int overlay_start; undefined field_0x264; undefined field_0x265; undefined field_0x266; undefined field_0x267; }; typedef struct ebc ebc, *Pebc; struct ebc { struct device * dev; struct ebc_tcon * tcon; struct ebc_pmic * pmic; struct ebc_panel panel; struct ebc_info info; }; // WARNING! conflicting data type names: /DWARF/ebc_dev.c/ebc_auto_tast_function/lexical_block_0/anon_union_for___u - /DWARF/list.h/INIT_LIST_HEAD/lexical_block_2_0_10_0/anon_union_for___u // WARNING! conflicting data type names: /DWARF/ebc_dev.c/ebc_refresh_tast_function/lexical_block_0/anon_union_for___u - /DWARF/list.h/INIT_LIST_HEAD/lexical_block_2_0_10_0/anon_union_for___u typedef struct ebc_buf_info ebc_buf_info, *Pebc_buf_info; struct ebc_buf_info { int offset; int epd_mode; int height; int width; int panel_color; int win_x1; int win_y1; int win_x2; int win_y2; int width_mm; int height_mm; }; typedef enum ebc_ioctl { EBC_DISABLE_OVERLAY=28677, EBC_ENABLE_OVERLAY=28676, EBC_GET_BUFFER=28672, EBC_GET_BUFFER_INFO=28674, EBC_GET_OSD_BUFFER=28678, EBC_SEND_BUFFER=28673, EBC_SEND_OSD_BUFFER=28679, EBC_SET_FULL_MODE_NUM=28675 } ebc_ioctl; typedef union anon_union.conflicte86 anon_union.conflicte86, *Panon_union.conflicte86; union anon_union.conflicte86 { ulong type; struct jump_entry * entries; struct static_key_mod * next; }; typedef struct static_key_false static_key_false, *Pstatic_key_false; struct static_key_false { struct static_key key; }; typedef struct firmware firmware, *Pfirmware; struct firmware { size_t size; u8 * data; struct page * * pages; void * priv; }; typedef struct buf_info_s buf_info_s, *Pbuf_info_s; struct buf_info_s { int buf_total_num; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; ulong phy_mem_base; char * virt_mem_base; struct buf_list_s * buf_list; int use_buf_is_empty; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; struct buf_list_s * dsp_buf_list; int dsp_buf_list_status; undefined field_0x34; undefined field_0x35; undefined field_0x36; undefined field_0x37; struct ebc_buf_s * osd_buf; struct mutex.conflict dsp_lock; }; typedef union anon_union.conflict4d02 anon_union.conflict4d02, *Panon_union.conflict4d02; union anon_union.conflict4d02 { struct list_head private_list; struct callback_head callback_head; }; typedef enum cgroup_subsys_id { CGROUP_SUBSYS_COUNT=5, cpu_cgrp_id=1, cpuacct_cgrp_id=2, cpuset_cgrp_id=0, devices_cgrp_id=3, freezer_cgrp_id=4 } cgroup_subsys_id; typedef struct idr.conflict idr.conflict, *Pidr.conflict; struct idr.conflict { struct radix_tree_root.conflict idr_rt; uint idr_base; uint idr_next; }; typedef struct ida_bitmap ida_bitmap, *Pida_bitmap; struct ida_bitmap { ulong bitmap[16]; }; typedef struct Elf64_Dyn Elf64_Dyn, *PElf64_Dyn; typedef __s64 Elf64_Sxword; typedef union anon_union.conflictcdc5_for_d_un anon_union.conflictcdc5_for_d_un, *Panon_union.conflictcdc5_for_d_un; union anon_union.conflictcdc5_for_d_un { Elf64_Xword d_val; Elf64_Addr d_ptr; }; struct Elf64_Dyn { Elf64_Sxword d_tag; union anon_union.conflictcdc5_for_d_un d_un; }; typedef union anon_union.conflictcdc5 anon_union.conflictcdc5, *Panon_union.conflictcdc5; union anon_union.conflictcdc5 { Elf64_Xword d_val; Elf64_Addr d_ptr; }; typedef struct kset_uevent_ops kset_uevent_ops, *Pkset_uevent_ops; typedef struct kset kset, *Pkset; struct kset { struct list_head list; spinlock_t list_lock; undefined field_0x14; undefined field_0x15; undefined field_0x16; undefined field_0x17; struct kobject kobj; struct kset_uevent_ops * uevent_ops; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; struct kset_uevent_ops { int (* filter)(struct kset *, struct kobject *); char * (* name)(struct kset *, struct kobject *); int (* uevent)(struct kset *, struct kobject *, struct kobj_uevent_env *); }; typedef struct kobj_attribute kobj_attribute, *Pkobj_attribute; struct kobj_attribute { struct attribute attr; ssize_t (* show)(struct kobject *, struct kobj_attribute *, char *); ssize_t (* store)(struct kobject *, struct kobj_attribute *, char *, size_t); }; typedef union anon_union.conflict3ae1 anon_union.conflict3ae1, *Panon_union.conflict3ae1; union anon_union.conflict3ae1 { int _pad[28]; struct anon_struct.conflict3924 _kill; struct anon_struct.conflict3945 _timer; struct anon_struct.conflict397e _rt; struct anon_struct.conflict39ab _sigchld; struct anon_struct.conflict3a78 _sigfault; struct anon_struct.conflict3a93 _sigpoll; struct anon_struct.conflict3ab4 _sigsys; }; typedef union anon_union.conflict3a4e anon_union.conflict3a4e, *Panon_union.conflict3a4e; union anon_union.conflict3a4e { short _addr_lsb; struct anon_struct.conflict39f0 _addr_bnd; struct anon_struct.conflict3a2d _addr_pkey; }; typedef struct mem_section mem_section, *Pmem_section; struct mem_section { ulong section_mem_map; ulong * pageblock_flags; }; typedef struct pglist_data pglist_data, *Ppglist_data; typedef struct zone zone, *Pzone; typedef struct zonelist zonelist, *Pzonelist; typedef enum zone_type { ZONE_DMA32=0, ZONE_MOVABLE=2, ZONE_NORMAL=1, __MAX_NR_ZONES=3 } zone_type; typedef struct lruvec lruvec, *Plruvec; typedef struct per_cpu_nodestat per_cpu_nodestat, *Pper_cpu_nodestat; typedef struct per_cpu_pageset per_cpu_pageset, *Pper_cpu_pageset; typedef struct free_area free_area, *Pfree_area; typedef struct zoneref zoneref, *Pzoneref; typedef struct zone_reclaim_stat zone_reclaim_stat, *Pzone_reclaim_stat; typedef struct per_cpu_pages per_cpu_pages, *Pper_cpu_pages; struct zoneref { struct zone * zone; int zone_idx; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; }; struct free_area { struct list_head free_list[6]; ulong nr_free; }; struct zonelist { struct zoneref _zonerefs[4]; }; struct per_cpu_nodestat { s8 stat_threshold; s8 vm_node_stat_diff[33]; }; struct per_cpu_pages { int count; int high; int batch; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct list_head lists[4]; }; struct per_cpu_pageset { struct per_cpu_pages pcp; s8 stat_threshold; s8 vm_stat_diff[13]; undefined field_0x5e; undefined field_0x5f; }; struct zone_reclaim_stat { ulong recent_rotated[2]; ulong recent_scanned[2]; }; struct lruvec { struct list_head lists[5]; struct zone_reclaim_stat reclaim_stat; atomic_long_t inactive_age; ulong refaults; struct pglist_data * pgdat; }; struct zone { // Missing member _pad1_ : zone_padding at offset 0xc0 [zero-length member] Missing member _pad2_ : zone_padding at offset 0x580 [zero-length member] Missing member _pad3_ : zone_padding at offset 0x5c0 [zero-length member] Missing member vm_numa_stat : atomic_long_t[1] at offset 0x628 [zero-length member] ulong watermark[3]; ulong nr_reserved_highatomic; long lowmem_reserve[3]; struct pglist_data * zone_pgdat; struct per_cpu_pageset * pageset; bool cma_alloc; undefined field_0x49; undefined field_0x4a; undefined field_0x4b; undefined field_0x4c; undefined field_0x4d; undefined field_0x4e; undefined field_0x4f; ulong zone_start_pfn; ulong managed_pages; ulong spanned_pages; ulong present_pages; char * name; ulong nr_isolate_pageblock; int initialized; undefined field_0x84; undefined field_0x85; undefined field_0x86; undefined field_0x87; undefined field_0x88; undefined field_0x89; undefined field_0x8a; undefined field_0x8b; undefined field_0x8c; undefined field_0x8d; undefined field_0x8e; undefined field_0x8f; undefined field_0x90; undefined field_0x91; undefined field_0x92; undefined field_0x93; undefined field_0x94; undefined field_0x95; undefined field_0x96; undefined field_0x97; undefined field_0x98; undefined field_0x99; undefined field_0x9a; undefined field_0x9b; undefined field_0x9c; undefined field_0x9d; undefined field_0x9e; undefined field_0x9f; undefined field_0xa0; undefined field_0xa1; undefined field_0xa2; undefined field_0xa3; undefined field_0xa4; undefined field_0xa5; undefined field_0xa6; undefined field_0xa7; undefined field_0xa8; undefined field_0xa9; undefined field_0xaa; undefined field_0xab; undefined field_0xac; undefined field_0xad; undefined field_0xae; undefined field_0xaf; undefined field_0xb0; undefined field_0xb1; undefined field_0xb2; undefined field_0xb3; undefined field_0xb4; undefined field_0xb5; undefined field_0xb6; undefined field_0xb7; undefined field_0xb8; undefined field_0xb9; undefined field_0xba; undefined field_0xbb; undefined field_0xbc; undefined field_0xbd; undefined field_0xbe; undefined field_0xbf; struct free_area free_area[11]; ulong flags; spinlock_t lock; undefined field_0x544; undefined field_0x545; undefined field_0x546; undefined field_0x547; undefined field_0x548; undefined field_0x549; undefined field_0x54a; undefined field_0x54b; undefined field_0x54c; undefined field_0x54d; undefined field_0x54e; undefined field_0x54f; undefined field_0x550; undefined field_0x551; undefined field_0x552; undefined field_0x553; undefined field_0x554; undefined field_0x555; undefined field_0x556; undefined field_0x557; undefined field_0x558; undefined field_0x559; undefined field_0x55a; undefined field_0x55b; undefined field_0x55c; undefined field_0x55d; undefined field_0x55e; undefined field_0x55f; undefined field_0x560; undefined field_0x561; undefined field_0x562; undefined field_0x563; undefined field_0x564; undefined field_0x565; undefined field_0x566; undefined field_0x567; undefined field_0x568; undefined field_0x569; undefined field_0x56a; undefined field_0x56b; undefined field_0x56c; undefined field_0x56d; undefined field_0x56e; undefined field_0x56f; undefined field_0x570; undefined field_0x571; undefined field_0x572; undefined field_0x573; undefined field_0x574; undefined field_0x575; undefined field_0x576; undefined field_0x577; undefined field_0x578; undefined field_0x579; undefined field_0x57a; undefined field_0x57b; undefined field_0x57c; undefined field_0x57d; undefined field_0x57e; undefined field_0x57f; ulong percpu_drift_mark; ulong compact_cached_free_pfn; ulong compact_cached_migrate_pfn[2]; uint compact_considered; uint compact_defer_shift; int compact_order_failed; bool compact_blockskip_flush; bool contiguous; undefined field_0x5ae; undefined field_0x5af; undefined field_0x5b0; undefined field_0x5b1; undefined field_0x5b2; undefined field_0x5b3; undefined field_0x5b4; undefined field_0x5b5; undefined field_0x5b6; undefined field_0x5b7; undefined field_0x5b8; undefined field_0x5b9; undefined field_0x5ba; undefined field_0x5bb; undefined field_0x5bc; undefined field_0x5bd; undefined field_0x5be; undefined field_0x5bf; atomic_long_t vm_stat[13]; u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; undefined field_0x648; undefined field_0x649; undefined field_0x64a; undefined field_0x64b; undefined field_0x64c; undefined field_0x64d; undefined field_0x64e; undefined field_0x64f; undefined field_0x650; undefined field_0x651; undefined field_0x652; undefined field_0x653; undefined field_0x654; undefined field_0x655; undefined field_0x656; undefined field_0x657; undefined field_0x658; undefined field_0x659; undefined field_0x65a; undefined field_0x65b; undefined field_0x65c; undefined field_0x65d; undefined field_0x65e; undefined field_0x65f; undefined field_0x660; undefined field_0x661; undefined field_0x662; undefined field_0x663; undefined field_0x664; undefined field_0x665; undefined field_0x666; undefined field_0x667; undefined field_0x668; undefined field_0x669; undefined field_0x66a; undefined field_0x66b; undefined field_0x66c; undefined field_0x66d; undefined field_0x66e; undefined field_0x66f; undefined field_0x670; undefined field_0x671; undefined field_0x672; undefined field_0x673; undefined field_0x674; undefined field_0x675; undefined field_0x676; undefined field_0x677; undefined field_0x678; undefined field_0x679; undefined field_0x67a; undefined field_0x67b; undefined field_0x67c; undefined field_0x67d; undefined field_0x67e; undefined field_0x67f; }; struct pglist_data { // Missing member _pad1_ : zone_padding at offset 0x1480 [zero-length member] Missing member _pad2_ : zone_padding at offset 0x1540 [zero-length member] struct zone node_zones[3]; struct zonelist node_zonelists[1]; int nr_zones; undefined field_0x13c4; undefined field_0x13c5; undefined field_0x13c6; undefined field_0x13c7; ulong node_start_pfn; ulong node_present_pages; ulong node_spanned_pages; int node_id; undefined field_0x13e4; undefined field_0x13e5; undefined field_0x13e6; undefined field_0x13e7; wait_queue_head_t kswapd_wait; wait_queue_head_t pfmemalloc_wait; struct task_struct * kswapd; int kswapd_order; enum zone_type kswapd_classzone_idx; int kswapd_failures; int kcompactd_max_order; enum zone_type kcompactd_classzone_idx; undefined field_0x1434; undefined field_0x1435; undefined field_0x1436; undefined field_0x1437; wait_queue_head_t kcompactd_wait; struct task_struct * kcompactd; ulong totalreserve_pages; undefined field_0x1460; undefined field_0x1461; undefined field_0x1462; undefined field_0x1463; undefined field_0x1464; undefined field_0x1465; undefined field_0x1466; undefined field_0x1467; undefined field_0x1468; undefined field_0x1469; undefined field_0x146a; undefined field_0x146b; undefined field_0x146c; undefined field_0x146d; undefined field_0x146e; undefined field_0x146f; undefined field_0x1470; undefined field_0x1471; undefined field_0x1472; undefined field_0x1473; undefined field_0x1474; undefined field_0x1475; undefined field_0x1476; undefined field_0x1477; undefined field_0x1478; undefined field_0x1479; undefined field_0x147a; undefined field_0x147b; undefined field_0x147c; undefined field_0x147d; undefined field_0x147e; undefined field_0x147f; spinlock_t lru_lock; undefined field_0x1484; undefined field_0x1485; undefined field_0x1486; undefined field_0x1487; struct lruvec lruvec; ulong flags; undefined field_0x1518; undefined field_0x1519; undefined field_0x151a; undefined field_0x151b; undefined field_0x151c; undefined field_0x151d; undefined field_0x151e; undefined field_0x151f; undefined field_0x1520; undefined field_0x1521; undefined field_0x1522; undefined field_0x1523; undefined field_0x1524; undefined field_0x1525; undefined field_0x1526; undefined field_0x1527; undefined field_0x1528; undefined field_0x1529; undefined field_0x152a; undefined field_0x152b; undefined field_0x152c; undefined field_0x152d; undefined field_0x152e; undefined field_0x152f; undefined field_0x1530; undefined field_0x1531; undefined field_0x1532; undefined field_0x1533; undefined field_0x1534; undefined field_0x1535; undefined field_0x1536; undefined field_0x1537; undefined field_0x1538; undefined field_0x1539; undefined field_0x153a; undefined field_0x153b; undefined field_0x153c; undefined field_0x153d; undefined field_0x153e; undefined field_0x153f; struct per_cpu_nodestat * per_cpu_nodestats; atomic_long_t vm_stat[33]; undefined field_0x1650; undefined field_0x1651; undefined field_0x1652; undefined field_0x1653; undefined field_0x1654; undefined field_0x1655; undefined field_0x1656; undefined field_0x1657; undefined field_0x1658; undefined field_0x1659; undefined field_0x165a; undefined field_0x165b; undefined field_0x165c; undefined field_0x165d; undefined field_0x165e; undefined field_0x165f; undefined field_0x1660; undefined field_0x1661; undefined field_0x1662; undefined field_0x1663; undefined field_0x1664; undefined field_0x1665; undefined field_0x1666; undefined field_0x1667; undefined field_0x1668; undefined field_0x1669; undefined field_0x166a; undefined field_0x166b; undefined field_0x166c; undefined field_0x166d; undefined field_0x166e; undefined field_0x166f; undefined field_0x1670; undefined field_0x1671; undefined field_0x1672; undefined field_0x1673; undefined field_0x1674; undefined field_0x1675; undefined field_0x1676; undefined field_0x1677; undefined field_0x1678; undefined field_0x1679; undefined field_0x167a; undefined field_0x167b; undefined field_0x167c; undefined field_0x167d; undefined field_0x167e; undefined field_0x167f; }; typedef struct zone_padding zone_padding, *Pzone_padding; struct zone_padding { // Missing member x : char[1] at offset 0x0 [Unsupported interior flex array: char[1]] }; typedef enum zone_watermarks { NR_WMARK=3, WMARK_HIGH=2, WMARK_LOW=1, WMARK_MIN=0 } zone_watermarks; typedef enum migratetype { MIGRATE_CMA=3, MIGRATE_HIGHATOMIC=4, MIGRATE_ISOLATE=5, MIGRATE_MOVABLE=1, MIGRATE_PCPTYPES=4, MIGRATE_RECLAIMABLE=2, MIGRATE_TYPES=6, MIGRATE_UNMOVABLE=0 } migratetype; typedef enum lru_list { LRU_ACTIVE_ANON=1, LRU_ACTIVE_FILE=3, LRU_INACTIVE_ANON=0, LRU_INACTIVE_FILE=2, LRU_UNEVICTABLE=4, NR_LRU_LISTS=5 } lru_list; typedef enum zone_stat_item { NR_BOUNCE=10, NR_FREE_CMA_PAGES=12, NR_FREE_PAGES=0, NR_KERNEL_STACK_KB=9, NR_MLOCK=7, NR_PAGETABLE=8, NR_VM_ZONE_STAT_ITEMS=13, NR_ZONE_ACTIVE_ANON=2, NR_ZONE_ACTIVE_FILE=4, NR_ZONE_INACTIVE_ANON=1, NR_ZONE_INACTIVE_FILE=3, NR_ZONE_LRU_BASE=1, NR_ZONE_UNEVICTABLE=5, NR_ZONE_WRITE_PENDING=6, NR_ZSPAGES=11 } zone_stat_item; typedef enum node_stat_item { NR_ACTIVE_ANON=1, NR_ACTIVE_FILE=3, NR_ANON_MAPPED=13, NR_ANON_THPS=22, NR_DIRTIED=26, NR_FILE_DIRTY=16, NR_FILE_MAPPED=14, NR_FILE_PAGES=15, NR_GPU_HEAP=32, NR_INACTIVE_ANON=0, NR_INACTIVE_FILE=2, NR_ION_HEAP=30, NR_ION_HEAP_POOL=31, NR_ISOLATED_ANON=7, NR_ISOLATED_FILE=8, NR_KERNEL_MISC_RECLAIMABLE=28, NR_LRU_BASE=0, NR_SHMEM=19, NR_SHMEM_PMDMAPPED=21, NR_SHMEM_THPS=20, NR_SLAB_RECLAIMABLE=5, NR_SLAB_UNRECLAIMABLE=6, NR_UNEVICTABLE=4, NR_UNRECLAIMABLE_PAGES=29, NR_UNSTABLE_NFS=23, NR_VMSCAN_IMMEDIATE=25, NR_VMSCAN_WRITE=24, NR_VM_NODE_STAT_ITEMS=33, NR_WRITEBACK=17, NR_WRITEBACK_TEMP=18, NR_WRITTEN=27, WORKINGSET_ACTIVATE=10, WORKINGSET_NODERECLAIM=12, WORKINGSET_REFAULT=9, WORKINGSET_RESTORE=11 } node_stat_item; typedef struct kernfs_syscall_ops.conflict kernfs_syscall_ops.conflict, *Pkernfs_syscall_ops.conflict; typedef struct kernfs_root.conflict kernfs_root.conflict, *Pkernfs_root.conflict; struct kernfs_root.conflict { struct kernfs_node * kn; uint flags; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct idr.conflict ino_idr; u32 last_ino; u32 next_generation; struct kernfs_syscall_ops.conflict * syscall_ops; struct list_head supers; wait_queue_head_t.conflict deactivate_waitq; }; struct kernfs_syscall_ops.conflict { int (* remount_fs)(struct kernfs_root.conflict *, int *, char *); int (* show_options)(struct seq_file *, struct kernfs_root.conflict *); int (* mkdir)(struct kernfs_node *, char *, umode_t); int (* rmdir)(struct kernfs_node *); int (* rename)(struct kernfs_node *, struct kernfs_node *, char *); int (* show_path)(struct seq_file *, struct kernfs_node *, struct kernfs_root *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; typedef struct kernfs_elem_dir.conflict kernfs_elem_dir.conflict, *Pkernfs_elem_dir.conflict; struct kernfs_elem_dir.conflict { ulong subdirs; struct rb_root children; struct kernfs_root.conflict * root; }; typedef union anon_union.conflict9ad6 anon_union.conflict9ad6, *Panon_union.conflict9ad6; union anon_union.conflict9ad6 { struct kernfs_elem_dir dir; struct kernfs_elem_symlink symlink; struct kernfs_elem_attr attr; }; typedef union anon_union.conflict32d32 anon_union.conflict32d32, *Panon_union.conflict32d32; union anon_union.conflict32d32 { struct kernfs_elem_dir.conflict dir; struct kernfs_elem_symlink symlink; struct kernfs_elem_attr attr; }; typedef enum epd_lut_type { WF_TYPE_A2=6, WF_TYPE_AUTO=5, WF_TYPE_GC16=7, WF_TYPE_GCC16=11, WF_TYPE_GL16=8, WF_TYPE_GLD16=10, WF_TYPE_GLR16=9, WF_TYPE_GRAY16=2, WF_TYPE_GRAY2=4, WF_TYPE_GRAY4=3, WF_TYPE_MAX=12, WF_TYPE_RESET=1 } epd_lut_type; typedef enum pvi_wf_mode { PVI_WF_A2=7, PVI_WF_DU=1, PVI_WF_DU4=2, PVI_WF_GC16=3, PVI_WF_GCC16=8, PVI_WF_GL16=4, PVI_WF_GLD16=6, PVI_WF_GLR16=5, PVI_WF_MAX=9, PVI_WF_RESET=0 } pvi_wf_mode; typedef enum pcpu_fc { PCPU_FC_AUTO=0, PCPU_FC_EMBED=1, PCPU_FC_NR=3, PCPU_FC_PAGE=2 } pcpu_fc; typedef struct cpu_topology cpu_topology, *Pcpu_topology; struct cpu_topology { int thread_id; int core_id; int package_id; int llc_id; cpumask_t thread_sibling; cpumask_t core_sibling; cpumask_t llc_sibling; }; typedef void (* regmap_lock)(void *); typedef struct regmap_config regmap_config, *Pregmap_config; typedef void (* regmap_unlock)(void *); typedef struct regmap_access_table regmap_access_table, *Pregmap_access_table; typedef struct reg_default reg_default, *Preg_default; typedef enum regcache_type { REGCACHE_COMPRESSED=2, REGCACHE_FLAT=3, REGCACHE_NONE=0, REGCACHE_RBTREE=1 } regcache_type; typedef enum regmap_endian { REGMAP_ENDIAN_BIG=1, REGMAP_ENDIAN_DEFAULT=0, REGMAP_ENDIAN_LITTLE=2, REGMAP_ENDIAN_NATIVE=3 } regmap_endian; typedef struct regmap_range_cfg regmap_range_cfg, *Pregmap_range_cfg; typedef struct regmap_range regmap_range, *Pregmap_range; struct regmap_config { char * name; int reg_bits; int reg_stride; int pad_bits; int val_bits; bool (* writeable_reg)(struct device *, uint); bool (* readable_reg)(struct device *, uint); bool (* volatile_reg)(struct device *, uint); bool (* precious_reg)(struct device *, uint); bool (* readable_noinc_reg)(struct device *, uint); bool disable_locking; undefined field_0x41; undefined field_0x42; undefined field_0x43; undefined field_0x44; undefined field_0x45; undefined field_0x46; undefined field_0x47; regmap_lock lock; regmap_unlock unlock; void * lock_arg; int (* reg_read)(void *, uint, uint *); int (* reg_write)(void *, uint, uint); bool fast_io; undefined field_0x71; undefined field_0x72; undefined field_0x73; uint max_register; struct regmap_access_table * wr_table; struct regmap_access_table * rd_table; struct regmap_access_table * volatile_table; struct regmap_access_table * precious_table; struct regmap_access_table * rd_noinc_table; struct reg_default * reg_defaults; uint num_reg_defaults; enum regcache_type cache_type; void * reg_defaults_raw; uint num_reg_defaults_raw; undefined field_0xbc; undefined field_0xbd; undefined field_0xbe; undefined field_0xbf; ulong read_flag_mask; ulong write_flag_mask; bool zero_flag_mask; bool use_single_rw; bool can_multi_write; undefined field_0xd3; enum regmap_endian reg_format_endian; enum regmap_endian val_format_endian; undefined field_0xdc; undefined field_0xdd; undefined field_0xde; undefined field_0xdf; struct regmap_range_cfg * ranges; uint num_ranges; bool use_hwlock; undefined field_0xed; undefined field_0xee; undefined field_0xef; uint hwlock_id; uint hwlock_mode; }; struct regmap_access_table { struct regmap_range * yes_ranges; uint n_yes_ranges; undefined field_0xc; undefined field_0xd; undefined field_0xe; undefined field_0xf; struct regmap_range * no_ranges; uint n_no_ranges; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; }; struct regmap_range { uint range_min; uint range_max; }; struct regmap_range_cfg { char * name; uint range_min; uint range_max; uint selector_reg; uint selector_mask; int selector_shift; uint window_start; uint window_len; undefined field_0x24; undefined field_0x25; undefined field_0x26; undefined field_0x27; }; struct reg_default { uint reg; uint def; }; typedef struct seqlock_t seqlock_t, *Pseqlock_t; struct seqlock_t { struct seqcount seqcount; spinlock_t lock; }; typedef struct secondary_data secondary_data, *Psecondary_data; struct secondary_data { void * stack; struct task_struct * task; long status; }; typedef union anon_union.conflictcff2 anon_union.conflictcff2, *Panon_union.conflictcff2; union anon_union.conflictcff2 { void * arg; struct kparam_string * str; struct kparam_array * arr; }; typedef struct papyrus_sess papyrus_sess, *Ppapyrus_sess; struct papyrus_sess { struct device * dev; struct i2c_client.conflict * client; uint8_t enable_reg_shadow; uint8_t vadj; uint8_t vcom1; uint8_t vcom2; uint8_t upseq0; uint8_t upseq1; uint8_t dwnseq0; uint8_t dwnseq1; int irq; undefined field_0x1c; undefined field_0x1d; undefined field_0x1e; undefined field_0x1f; struct gpio_desc * int_pin; struct gpio_desc * pwr_en_pin; struct gpio_desc * pwr_up_pin; struct gpio_desc * wake_up_pin; struct gpio_desc * vcom_ctl_pin; struct mutex power_lock; undefined field_0x68; undefined field_0x69; undefined field_0x6a; undefined field_0x6b; undefined field_0x6c; undefined field_0x6d; undefined field_0x6e; undefined field_0x6f; undefined field_0x70; undefined field_0x71; undefined field_0x72; undefined field_0x73; undefined field_0x74; undefined field_0x75; undefined field_0x76; undefined field_0x77; undefined field_0x78; undefined field_0x79; undefined field_0x7a; undefined field_0x7b; undefined field_0x7c; undefined field_0x7d; undefined field_0x7e; undefined field_0x7f; struct workqueue_struct * tmp_monitor_wq; struct delayed_work tmp_delay_work; }; typedef struct papyrus_hw_state papyrus_hw_state, *Ppapyrus_hw_state; struct papyrus_hw_state { uint8_t tmst_value; uint8_t int_status1; uint8_t int_status2; uint8_t pg_status; }; typedef struct arch_timer_erratum_workaround arch_timer_erratum_workaround, *Parch_timer_erratum_workaround; typedef struct clock_event_device clock_event_device, *Pclock_event_device; typedef enum arch_timer_erratum_match_type { ate_match_acpi_oem_info=2, ate_match_dt=0, ate_match_local_cap_id=1 } arch_timer_erratum_match_type; struct clock_event_device { }; struct arch_timer_erratum_workaround { enum arch_timer_erratum_match_type match_type; undefined field_0x4; undefined field_0x5; undefined field_0x6; undefined field_0x7; void * id; char * desc; u32 (* read_cntp_tval_el0)(void); u32 (* read_cntv_tval_el0)(void); u64 (* read_cntpct_el0)(void); u64 (* read_cntvct_el0)(void); int (* set_next_event_phys)(ulong, struct clock_event_device *); int (* set_next_event_virt)(ulong, struct clock_event_device *); }; typedef struct blocking_notifier_head blocking_notifier_head, *Pblocking_notifier_head; struct blocking_notifier_head { struct rw_semaphore rwsem; struct notifier_block * head; }; typedef struct blocking_notifier_head.conflict blocking_notifier_head.conflict, *Pblocking_notifier_head.conflict; struct blocking_notifier_head.conflict { struct rw_semaphore.conflict rwsem; struct notifier_block * head; }; typedef struct tick_device tick_device, *Ptick_device; struct tick_device { }; typedef struct start_info start_info, *Pstart_info; struct start_info { }; typedef struct seq_operations.conflict seq_operations.conflict, *Pseq_operations.conflict; typedef struct seq_file.conflict seq_file.conflict, *Pseq_file.conflict; struct seq_file.conflict { char * buf; size_t size; size_t from; size_t count; size_t pad_until; loff_t index; loff_t read_pos; u64 version; struct mutex.conflict lock; struct seq_operations.conflict * op; int poll_event; undefined field_0x84; undefined field_0x85; undefined field_0x86; undefined field_0x87; struct file.conflict * file; void * private; }; struct seq_operations.conflict { void * (* start)(struct seq_file.conflict *, loff_t *); void (* stop)(struct seq_file.conflict *, void *); void * (* next)(struct seq_file.conflict *, void *, loff_t *); int (* show)(struct seq_file.conflict *, void *); }; typedef struct shared_info shared_info, *Pshared_info; struct shared_info { }; typedef struct anon_vma anon_vma, *Panon_vma; struct anon_vma { }; typedef union anon_union.conflict4587_for_field_182 anon_union.conflict4587_for_field_182, *Panon_union.conflict4587_for_field_182; union anon_union.conflict4587_for_field_182 { uint frozen:1; struct anon_struct.conflict456b __UNIQUE_ID_android_kabi_hide46; union anon_union.conflict4582 field_2; }; typedef struct cgroup_bpf cgroup_bpf, *Pcgroup_bpf; struct cgroup_bpf { }; typedef struct pvi_waveform pvi_waveform, *Ppvi_waveform; struct pvi_waveform { u32 checksum; u32 file_length; u32 serial; u8 run_type; u8 fpl_platform; u16 fpl_lot; u8 mode_version; u8 wf_version; u8 wf_subversion; u8 wf_type; u8 panel_size; u8 amepd_part_number; u8 wfm_rev; u8 frame_rate; u32 reserved; u8 vcom_offset; u8 xwia[3]; u8 sc1; u8 unknown1[4]; u8 modenumber; u8 temperaturenumber; u8 unknown2[9]; u8 data[288800]; }; typedef union anon_union.conflict1ee53 anon_union.conflict1ee53, *Panon_union.conflict1ee53; union anon_union.conflict1ee53 { struct pipe_inode_info * i_pipe; struct block_device.conflict * i_bdev; struct cdev * i_cdev; char * i_link; uint i_dir_seq; }; typedef struct file_operations.conflict1 file_operations.conflict1, *Pfile_operations.conflict1; struct file_operations.conflict1 { struct module.conflict * owner; loff_t (* llseek)(struct file.conflict *, loff_t, int); ssize_t (* read)(struct file.conflict *, char *, size_t, loff_t *); ssize_t (* write)(struct file.conflict *, char *, size_t, loff_t *); ssize_t (* read_iter)(struct kiocb.conflict *, struct iov_iter *); ssize_t (* write_iter)(struct kiocb.conflict *, struct iov_iter *); int (* iterate)(struct file.conflict *, struct dir_context *); int (* iterate_shared)(struct file.conflict *, struct dir_context *); __poll_t (* poll)(struct file.conflict *, struct poll_table_struct *); long (* unlocked_ioctl)(struct file.conflict *, uint, ulong); long (* compat_ioctl)(struct file.conflict *, uint, ulong); int (* mmap)(struct file.conflict *, struct vm_area_struct *); ulong mmap_supported_flags; int (* open)(struct inode.conflict *, struct file.conflict *); int (* flush)(struct file.conflict *, fl_owner_t); int (* release)(struct inode.conflict *, struct file.conflict *); int (* fsync)(struct file.conflict *, loff_t, loff_t, int); int (* fasync)(int, struct file.conflict *, int); int (* lock)(struct file.conflict *, int, struct file_lock.conflict *); ssize_t (* sendpage)(struct file.conflict *, struct page *, int, size_t, loff_t *, int); ulong (* get_unmapped_area)(struct file.conflict *, ulong, ulong, ulong, ulong); int (* check_flags)(int); int (* flock)(struct file.conflict *, int, struct file_lock.conflict *); ssize_t (* splice_write)(struct pipe_inode_info *, struct file.conflict *, loff_t *, size_t, uint); ssize_t (* splice_read)(struct file.conflict *, loff_t *, struct pipe_inode_info *, size_t, uint); int (* setlease)(struct file.conflict *, long, struct file_lock.conflict * *, void * *); long (* fallocate)(struct file.conflict *, int, loff_t, loff_t); void (* show_fdinfo)(struct seq_file.conflict *, struct file.conflict *); ssize_t (* copy_file_range)(struct file.conflict *, loff_t, struct file.conflict *, loff_t, size_t, uint); int (* clone_file_range)(struct file.conflict *, loff_t, struct file.conflict *, loff_t, u64); int (* dedupe_file_range)(struct file.conflict *, loff_t, struct file.conflict *, loff_t, u64); int (* fadvise)(struct file.conflict *, loff_t, loff_t, int); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; typedef struct address_space_operations.conflict1 address_space_operations.conflict1, *Paddress_space_operations.conflict1; struct address_space_operations.conflict1 { int (* writepage)(struct page *, struct writeback_control *); int (* readpage)(struct file.conflict *, struct page *); int (* writepages)(struct address_space *, struct writeback_control *); int (* set_page_dirty)(struct page *); int (* readpages)(struct file.conflict *, struct address_space *, struct list_head *, uint); int (* write_begin)(struct file.conflict *, struct address_space *, loff_t, uint, uint, struct page * *, void * *); int (* write_end)(struct file.conflict *, struct address_space *, loff_t, uint, uint, struct page *, void *); sector_t (* bmap)(struct address_space *, sector_t); void (* invalidatepage)(struct page *, uint, uint); int (* releasepage)(struct page *, gfp_t); void (* freepage)(struct page *); ssize_t (* direct_IO)(struct kiocb.conflict *, struct iov_iter *); int (* migratepage)(struct address_space *, struct page *, struct page *, enum migrate_mode); bool (* isolate_page)(struct page *, isolate_mode_t); void (* putback_page)(struct page *); int (* launder_page)(struct page *); int (* is_partially_uptodate)(struct page *, ulong, ulong); void (* is_dirty_writeback)(struct page *, bool *, bool *); int (* error_remove_page)(struct address_space *, struct page *); int (* swap_activate)(struct swap_info_struct *, struct file.conflict *, sector_t *); void (* swap_deactivate)(struct file.conflict *); u64 android_kabi_reserved1; u64 android_kabi_reserved2; u64 android_kabi_reserved3; u64 android_kabi_reserved4; }; typedef union anon_union.conflict3fc18 anon_union.conflict3fc18, *Panon_union.conflict3fc18; union anon_union.conflict3fc18 { struct pipe_inode_info * i_pipe; struct block_device.conflict1 * i_bdev; struct cdev.conflict * i_cdev; char * i_link; uint i_dir_seq; }; typedef union anon_union.conflict7b87 anon_union.conflict7b87, *Panon_union.conflict7b87; union anon_union.conflict7b87 { struct hlist_head i_dentry; struct callback_head i_rcu; }; typedef union anon_union.conflict825d anon_union.conflict825d, *Panon_union.conflict825d; union anon_union.conflict825d { struct nfs_lock_info nfs_fl; struct nfs4_lock_info nfs4_fl; struct anon_struct.conflict8239 afs; }; typedef union anon_union.conflict7ba9 anon_union.conflict7ba9, *Panon_union.conflict7ba9; union anon_union.conflict7ba9 { struct pipe_inode_info * i_pipe; struct block_device * i_bdev; struct cdev * i_cdev; char * i_link; uint i_dir_seq; }; typedef union anon_union.conflict7b65 anon_union.conflict7b65, *Panon_union.conflict7b65; union anon_union.conflict7b65 { uint i_nlink; uint __i_nlink; }; typedef struct files_stat_struct files_stat_struct, *Pfiles_stat_struct; struct files_stat_struct { ulong nr_files; ulong nr_free_files; ulong max_files; }; typedef struct inodes_stat_t inodes_stat_t, *Pinodes_stat_t; struct inodes_stat_t { long nr_inodes; long nr_unused; long dummy[5]; }; typedef union anon_union.conflict7eb0 anon_union.conflict7eb0, *Panon_union.conflict7eb0; union anon_union.conflict7eb0 { struct llist_node fu_llist; struct callback_head fu_rcuhead; }; typedef struct bin_attribute.conflict bin_attribute.conflict, *Pbin_attribute.conflict; struct bin_attribute.conflict { struct attribute attr; size_t size; void * private; ssize_t (* read)(struct file.conflict *, struct kobject *, struct bin_attribute.conflict *, char *, loff_t, size_t); ssize_t (* write)(struct file.conflict *, struct kobject *, struct bin_attribute.conflict *, char *, loff_t, size_t); int (* mmap)(struct file.conflict *, struct kobject *, struct bin_attribute.conflict *, struct vm_area_struct *); }; typedef union anon_union.conflict17dfc anon_union.conflict17dfc, *Panon_union.conflict17dfc; union anon_union.conflict17dfc { struct raw_spinlock rlock; undefined1 field1[24]; // Automatically generated padding to match DWARF declared size }; typedef union anon_union.conflict14099 anon_union.conflict14099, *Panon_union.conflict14099; union anon_union.conflict14099 { struct raw_spinlock.conflict rlock; }; typedef union anon_union.conflicte29 anon_union.conflicte29, *Panon_union.conflicte29; union anon_union.conflicte29 { struct raw_spinlock rlock; }; typedef struct Elf64_Rela Elf64_Rela, *PElf64_Rela; struct Elf64_Rela { qword r_offset; // location to apply the relocation action qword r_info; // the symbol table index and the type of relocation qword r_addend; // a constant addend used to compute the relocatable field value }; typedef struct Elf64_Ehdr Elf64_Ehdr, *PElf64_Ehdr; struct Elf64_Ehdr { byte e_ident_magic_num; char e_ident_magic_str[3]; byte e_ident_class; byte e_ident_data; byte e_ident_version; byte e_ident_osabi; byte e_ident_abiversion; byte e_ident_pad[7]; word e_type; word e_machine; dword e_version; qword e_entry; qword e_phoff; qword e_shoff; dword e_flags; word e_ehsize; word e_phentsize; word e_phnum; word e_shentsize; word e_shnum; word e_shstrndx; }; // WARNING! conflicting data type names: /ELF/Elf64_Sym - /DWARF/elf.h/Elf64_Sym typedef struct Elf64_Shdr Elf64_Shdr, *PElf64_Shdr; typedef enum Elf_SectionHeaderType_AARCH64 { SHT_AARCH64_ATTRIBUTES=1879048195, SHT_ANDROID_REL=1610612737, SHT_ANDROID_RELA=1610612738, SHT_CHECKSUM=1879048184, SHT_DYNAMIC=6, SHT_DYNSYM=11, SHT_FINI_ARRAY=15, SHT_GNU_ATTRIBUTES=1879048181, SHT_GNU_HASH=1879048182, SHT_GNU_LIBLIST=1879048183, SHT_GNU_verdef=1879048189, SHT_GNU_verneed=1879048190, SHT_GNU_versym=1879048191, SHT_GROUP=17, SHT_HASH=5, SHT_INIT_ARRAY=14, SHT_NOBITS=8, SHT_NOTE=7, SHT_NULL=0, SHT_PREINIT_ARRAY=16, SHT_PROGBITS=1, SHT_REL=9, SHT_RELA=4, SHT_SHLIB=10, SHT_STRTAB=3, SHT_SUNW_COMDAT=1879048187, SHT_SUNW_move=1879048186, SHT_SUNW_syminfo=1879048188, SHT_SYMTAB=2, SHT_SYMTAB_SHNDX=18 } Elf_SectionHeaderType_AARCH64; struct Elf64_Shdr { dword sh_name; enum Elf_SectionHeaderType_AARCH64 sh_type; qword sh_flags; qword sh_addr; qword sh_offset; qword sh_size; dword sh_link; dword sh_info; qword sh_addralign; qword sh_entsize; }; void get_auto_image(u8 *data_buf,u32 *buffer_new,u32 *buffer_old,u8 *frame_count,ebc_info *ebc_info) { long lVar1; u8 *puVar2; byte bVar3; byte bVar4; uint uVar5; uint uVar6; u32 uVar7; u32 uVar8; char cVar9; uint uVar10; ebc *peVar11; uint uVar12; ulong uVar13; uint uVar14; ulong uVar15; u8 *puVar16; byte bVar17; u32 uVar18; long lVar19; u8 *puVar20; long lVar21; byte bVar22; peVar11 = global_ebc; cVar9 = ebc_info->frame_total; uVar8 = (global_ebc->panel).mirror; uVar6 = (global_ebc->panel).vir_width; uVar7 = (global_ebc->panel).vir_height; ebc_info->auto_need_refresh = 0; if ((int)uVar7 < 1) { return; } uVar6 = uVar6 >> 4; uVar18 = 0; lVar1 = (ulong)(uVar6 - 1) + 1; do { if (uVar8 == 0) { uVar10 = uVar18 * (peVar11->panel).vir_width; } else { uVar10 = (((peVar11->panel).vir_height - 1) - uVar18) * (peVar11->panel).vir_width; } puVar16 = data_buf + (ulong)(uVar10 >> 2) + 4; puVar20 = frame_count + 8; lVar19 = 0; if (uVar6 != 0) { do { while( true ) { uVar13 = *(ulong *)(buffer_new + lVar19 * 2); uVar15 = *(ulong *)(buffer_old + lVar19 * 2); if (uVar13 != uVar15) break; *(undefined4 *)(puVar16 + -4) = 0; lVar19 = lVar19 + 1; puVar16 = puVar16 + 4; puVar20 = puVar20 + 8; if ((int)uVar6 <= (int)lVar19) goto LAB_001002b0; } ebc_info->auto_need_refresh = 1; lVar21 = *(ulong *)(puVar20 + -8) + 0x101010101010101; puVar2 = (ebc_info->lut_data).wf_table + (*(ulong *)(puVar20 + -8) & 0xff) * 0x10000; if (cVar9 == (char)lVar21) { *(ulong *)(buffer_old + lVar19 * 2) = uVar13; lVar21 = 0; } uVar14 = (uint)uVar15; uVar12 = (uint)uVar13; uVar10 = uVar12 & 0xffff; bVar22 = 0; bVar17 = 3; if ((uVar14 & 0xffff) != uVar10) { uVar5 = uVar14 & 0xffff ^ uVar10; bVar22 = 0; if ((uVar5 & 0xf) != 0) { bVar22 = bVar17; } bVar3 = bVar22 | 0xc; if ((uVar5 & 0xf0) == 0) { bVar3 = bVar22; } bVar4 = bVar3 | 0x30; if ((uVar5 & 0xf00) == 0) { bVar4 = bVar3; } bVar22 = bVar4 | 0xc0; if ((uVar5 & 0xf000) == 0) { bVar22 = bVar4; } bVar22 = (puVar2[(int)((uVar14 & 0xff) * 0x100 + (uVar12 & 0xff))] | puVar2[(int)((uVar14 & 0xff00) + (uVar10 >> 8))] << 4) & bVar22; } puVar16[-4] = bVar22; uVar10 = uVar14 >> 0x10; bVar22 = 0; if (uVar10 != uVar12 >> 0x10) { uVar14 = (uVar14 ^ uVar12) >> 0x10; bVar22 = 0; if ((uVar14 & 0xf) != 0) { bVar22 = bVar17; } bVar3 = bVar22 | 0xc; if ((uVar14 & 0xf0) == 0) { bVar3 = bVar22; } bVar4 = bVar3 | 0x30; if ((uVar14 & 0xf00) == 0) { bVar4 = bVar3; } bVar22 = bVar4 | 0xc0; if ((uVar14 & 0xf000) == 0) { bVar22 = bVar4; } bVar22 = (puVar2[(int)((uVar10 & 0xff) * 0x100 + (uVar12 >> 0x10 & 0xff))] | puVar2[(int)((uVar10 & 0xff00) + (uVar12 >> 0x18))] << 4) & bVar22; } puVar16[-3] = bVar22; uVar10 = (uint)(uVar15 >> 0x20); uVar15 = uVar13 >> 0x20 & 0xffff; bVar22 = 0; uVar12 = (uint)uVar15; if ((uVar10 & 0xffff) != uVar12) { uVar14 = uVar10 & 0xffff ^ uVar12; bVar22 = 0; if ((uVar14 & 0xf) != 0) { bVar22 = bVar17; } bVar3 = bVar22 | 0xc; if ((uVar14 & 0xf0) == 0) { bVar3 = bVar22; } bVar4 = bVar3 | 0x30; if ((uVar14 & 0xf00) == 0) { bVar4 = bVar3; } bVar22 = bVar4 | 0xc0; if ((uVar14 & 0xf000) == 0) { bVar22 = bVar4; } bVar22 = (puVar2[(int)((uVar10 & 0xff) * 0x100 + (uint)(byte)uVar15)] | puVar2[(int)((uVar10 & 0xff00) + (uVar12 >> 8))] << 4) & bVar22; } puVar16[-2] = bVar22; bVar22 = 0; uVar12 = (uint)(uVar13 >> 0x20); if (uVar10 >> 0x10 != uVar12 >> 0x10) { uVar14 = (uVar10 ^ uVar12) >> 0x10; bVar22 = 0; if ((uVar14 & 0xf) != 0) { bVar22 = bVar17; } bVar17 = bVar22 | 0xc; if ((uVar14 & 0xf0) == 0) { bVar17 = bVar22; } bVar3 = bVar17 | 0x30; if ((uVar14 & 0xf00) == 0) { bVar3 = bVar17; } bVar22 = bVar3 | 0xc0; if ((uVar14 & 0xf000) == 0) { bVar22 = bVar3; } bVar22 = (puVar2[(int)((uVar10 >> 0x10 & 0xff) * 0x100 + (uint)(byte)(uVar13 >> 0x30))] | puVar2[(int)((uVar10 >> 0x10 & 0xff00) + (uVar12 >> 0x18))] << 4) & bVar22; } puVar16[-1] = bVar22; lVar19 = lVar19 + 1; *(long *)(puVar20 + -8) = lVar21; puVar16 = puVar16 + 4; puVar20 = puVar20 + 8; } while ((int)lVar19 < (int)uVar6); LAB_001002b0: frame_count = frame_count + lVar1 * 8; buffer_old = buffer_old + lVar1 * 2; buffer_new = buffer_new + lVar1 * 2; } uVar18 = uVar18 + 1; if (uVar7 == uVar18) { return; } } while( true ); } int ebc_open(inode *inode,file *file) { file->f_pos = 0; return 0; } undefined8 FUN_00100314(long param_1) { long lVar1; lVar1 = *(long *)(param_1 + 0xb8); (**(code **)(*(long *)(lVar1 + 0x10) + 0x30))(*(long *)(lVar1 + 0x10)); *(undefined4 *)(lVar1 + 0x30c) = 0; _dev_info(*(undefined8 *)(lVar1 + 0x110),"device resume\n"); return 0; } int ebc_resume(device *dev) { ebc *ebc; ebc = (ebc *)dev->driver_data; (*ebc->pmic->pmic_pm_resume)(ebc->pmic); (ebc->info).is_deep_sleep = 0; _dev_info((ebc->info).dev,"device resume\n"); return 0; } void ebc_vdd_power_timeout(timer_list *t) { if ((global_ebc->info).wake_lock_is_set == 0) { return; } (global_ebc->info).wake_lock_is_set = 0; __pm_relax(); return; } void FUN_00100374(long param_1) { *(undefined4 *)(param_1 + 0x260) = 0; __pm_relax(); return; } undefined8 FUN_00100394(void) { misc_deregister(&ebc_misc); return 0; } int ebc_remove(platform_device *pdev) { misc_deregister(&ebc_misc); return 0; } int FUN_001003bc(undefined8 param_1,long *param_2) { int iVar1; ulong uVar2; uVar2 = ebc_phy_buf_base_get(); param_2[9] = param_2[9] & 0xff9fffffffffffe3U | 0x60000000000000; param_2[10] = param_2[10] | 0x4044000; iVar1 = remap_pfn_range(param_2,*param_2,uVar2 >> 0xc,param_2[1] - *param_2); if (iVar1 != 0) { iVar1 = -0xb; } return iVar1; } int ebc_mmap(file *file,vm_area_struct *vma) { int iVar1; ulong uVar2; ulong uVar3; ulong uVar4; uVar2 = ebc_phy_buf_base_get(); uVar4 = vma->vm_flags; uVar3 = vma->vm_end; (vma->vm_page_prot).pgprot = (vma->vm_page_prot).pgprot & 0xff9fffffffffffe3 | 0x60000000000000; vma->vm_flags = uVar4 | 0x4044000; iVar1 = remap_pfn_range(vma,vma->vm_start,uVar2 >> 0xc,uVar3 - vma->vm_start); if (iVar1 != 0) { iVar1 = -0xb; } return iVar1; } void FUN_00100424(undefined8 param_1,uint param_2,ulong param_3) { int *piVar1; undefined8 *puVar2; ebc_info *peVar3; ebc *peVar4; bool bVar5; int iVar6; long lVar7; ebc_buf_s *peVar8; ulong uVar9; size_t __n; device *pdVar10; ulong uVar11; undefined auStack96 [40]; int iStack56; panel_refresh_mode pStack52; u32 uStack48; u32 uStack44; u32 uStack40; int iStack36; int iStack32; int iStack28; int iStack24; u32 uStack20; u32 uStack16; long lStack8; peVar4 = global_ebc; lStack8 = __stack_chk_guard; if ((0x6fff < param_2) && (((param_2 < 0x7004 || (param_2 - 0x7006 < 2)) && (param_3 == 0)))) { _dev_err((global_ebc->info).dev,"%s: argp NULL\n","ebc_io_ctl",0); lVar7 = -0xe; goto LAB_00100550; } if (param_2 == 0x7003) { puVar2 = (undefined8 *)cRead_8(sp_el0); piVar1 = &(global_ebc->info).full_mode_num; if (((*(uint *)((long)puVar2 + 0x34) >> 0x15 & 1) != 0) || (uVar9 = param_3, ((uint)*puVar2 >> 0x1a & 1) != 0)) { uVar9 = (long)(param_3 << 8) >> 8 & param_3; } bVar5 = 0xfffffffffffffffb < uVar9; uVar9 = uVar9 + 4; uVar11 = 0; if (!bVar5 || uVar9 == 0) { uVar11 = puVar2[1]; } if (bVar5) { uVar9 = 0xffffffffffffffff; } uVar9 = (ulong)(!CARRY8(uVar9,~uVar11) && !CARRY8(uVar9 + ~uVar11,(ulong)bVar5) || uVar9 == uVar11 + !bVar5); if (uVar9 == 0) { __n = 4; } else { lVar7 = cRead_8(sp_el0); if (((long)(param_3 << 8) >> 8 & param_3 & (*(ulong *)(lVar7 + 8) ^ 0xffffffffffffffff)) != 0) { param_3 = 0; } __n = __arch_copy_from_user(piVar1,param_3,4); if (__n == 0) { _dev_info((peVar4->info).dev,"full_mode_num = %d\n",(peVar4->info).full_mode_num); goto LAB_0010054c; } uVar9 = 4 - __n; } memset((void *)((long)piVar1 + uVar9),0,__n); _dev_err((peVar4->info).dev,"EBC_SET_FULL_MODE_NUM failed\n"); lVar7 = -0xe; goto LAB_00100550; } if (param_2 < 0x7004) { if (param_2 == 0x7001) { puVar2 = (undefined8 *)cRead_8(sp_el0); if (((*(uint *)((long)puVar2 + 0x34) >> 0x15 & 1) != 0) || (uVar9 = param_3, ((uint)*puVar2 >> 0x1a & 1) != 0)) { uVar9 = (long)(param_3 << 8) >> 8 & param_3; } bVar5 = 0xffffffffffffffd3 < uVar9; uVar9 = uVar9 + 0x2c; uVar11 = 0; if (!bVar5 || uVar9 == 0) { uVar11 = puVar2[1]; } if (bVar5) { uVar9 = 0xffffffffffffffff; } if (!CARRY8(uVar9,~uVar11) && !CARRY8(uVar9 + ~uVar11,(ulong)bVar5) || uVar9 == uVar11 + !bVar5) { lVar7 = cRead_8(sp_el0); if (((long)(param_3 << 8) >> 8 & param_3 & (*(ulong *)(lVar7 + 8) ^ 0xffffffffffffffff)) != 0) { param_3 = 0; } lVar7 = __arch_copy_from_user(&iStack56,param_3,0x2c); if (lVar7 == 0) { uVar9 = ebc_phy_buf_base_get(); peVar8 = ebc_find_buf_by_phy_addr((long)iStack56 + uVar9); if (peVar8 != (ebc_buf_s *)0x0) { peVar8->buf_mode = pStack52; peVar8->win_x1 = iStack36; peVar8->win_y1 = iStack32; peVar8->win_x2 = iStack28; peVar8->win_y2 = iStack24; ebc_add_to_dsp_buf_list(peVar8); if ((peVar4->info).ebc_dsp_buf_status == 0) { (peVar4->info).ebc_dsp_buf_status = 1; __wake_up_sync(&ebc_thread_wq,1); } if (peVar8->buf_mode == EPD_SUSPEND) { if ((peVar4->info).is_early_suspend == 0) goto LAB_001008ac; } else if (peVar8->buf_mode == EPD_POWER_OFF) { LAB_001008ac: (peVar4->info).ebc_last_display = 1; init_wait_entry(auStack96,0); while (lVar7 = prepare_to_wait_event(&ebc_poweroff_wq,auStack96,1), (peVar4->info).ebc_last_display != 0) { if (lVar7 != 0) goto LAB_0010054c; schedule(); } finish_wait(&ebc_poweroff_wq,auStack96); } } LAB_0010054c: lVar7 = 0; goto LAB_00100550; } } } else { if (param_2 < 0x7002) { if (param_2 != 0x7000) { LAB_00100910: _dev_err((global_ebc->info).dev,"%s: unknow cmd\n","ebc_io_ctl",0); lVar7 = 0; goto LAB_00100550; } peVar8 = ebc_empty_buf_get(); if (peVar8 == (ebc_buf_s *)0x0) goto LAB_00100a50; uVar11 = peVar8->phy_addr; uVar9 = ebc_phy_buf_base_get(); puVar2 = (undefined8 *)cRead_8(sp_el0); iStack56 = (int)uVar11 - (int)uVar9; uStack40 = (peVar4->panel).panel_color; uStack44 = (peVar4->panel).vir_width; uStack48 = (peVar4->panel).vir_height; if (((*(uint *)((long)puVar2 + 0x34) >> 0x15 & 1) != 0) || (uVar9 = param_3, ((uint)*puVar2 >> 0x1a & 1) != 0)) { uVar9 = (long)(param_3 << 8) >> 8 & param_3; } bVar5 = 0xffffffffffffffd3 < uVar9; uVar9 = uVar9 + 0x2c; uVar11 = 0; if (!bVar5 || uVar9 == 0) { uVar11 = puVar2[1]; } if (bVar5) { uVar9 = 0xffffffffffffffff; } if (!CARRY8(uVar9,~uVar11) && !CARRY8(uVar9 + ~uVar11,(ulong)bVar5) || uVar9 == uVar11 + !bVar5) { lVar7 = cRead_8(sp_el0); if (((long)(param_3 << 8) >> 8 & param_3 & (*(ulong *)(lVar7 + 8) ^ 0xffffffffffffffff)) != 0) { param_3 = 0; } iVar6 = __arch_copy_to_user(param_3,&iStack56,0x2c); if (iVar6 == 0) goto LAB_0010054c; } ebc_buf_release(peVar8); lVar7 = -0xe; goto LAB_00100550; } puVar2 = (undefined8 *)cRead_8(sp_el0); uStack20 = (global_ebc->panel).width_mm; uStack16 = (global_ebc->panel).height_mm; uStack44 = (global_ebc->panel).vir_width; uStack48 = (global_ebc->panel).vir_height; uStack40 = (global_ebc->panel).panel_color; if (((*(uint *)((long)puVar2 + 0x34) >> 0x15 & 1) != 0) || (uVar9 = param_3, ((uint)*puVar2 >> 0x1a & 1) != 0)) { uVar9 = (long)(param_3 << 8) >> 8 & param_3; } bVar5 = 0xffffffffffffffd3 < uVar9; uVar9 = uVar9 + 0x2c; uVar11 = 0; if (!bVar5 || uVar9 == 0) { uVar11 = puVar2[1]; } if (bVar5) { uVar9 = 0xffffffffffffffff; } if (!CARRY8(uVar9,~uVar11) && !CARRY8(uVar9 + ~uVar11,(ulong)bVar5) || uVar9 == uVar11 + !bVar5) { lVar7 = cRead_8(sp_el0); if (((long)(param_3 << 8) >> 8 & param_3 & (*(ulong *)(lVar7 + 8) ^ 0xffffffffffffffff)) != 0) { param_3 = 0; } lVar7 = __arch_copy_to_user(param_3,&iStack56,0x2c); if (lVar7 == 0) goto LAB_0010054c; } _dev_err((peVar4->info).dev,"EBC_GET_BUFFER_INFO failed\n"); } } else { if (param_2 == 0x7005) { pdVar10 = (global_ebc->info).dev; (global_ebc->info).overlay_enable = 0; (peVar4->info).overlay_start = 0; _dev_info(pdVar10,"disable ebc overlay\n"); lVar7 = 0; goto LAB_00100550; } if (param_2 < 0x7005) { peVar3 = &global_ebc->info; (global_ebc->info).overlay_enable = 1; _dev_info(peVar3->dev, "enable ebc overlay, you can use auto_overlay mode to show somthing over the system display\n" ); lVar7 = 0; goto LAB_00100550; } if (param_2 == 0x7006) { peVar8 = ebc_osd_buf_get(); if (peVar8 != (ebc_buf_s *)0x0) { uVar11 = peVar8->phy_addr; uVar9 = ebc_phy_buf_base_get(); puVar2 = (undefined8 *)cRead_8(sp_el0); iStack56 = (int)uVar11 - (int)uVar9; uStack44 = (peVar4->panel).vir_width; uStack48 = (peVar4->panel).vir_height; uStack40 = (peVar4->panel).panel_color; if (((*(uint *)((long)puVar2 + 0x34) >> 0x15 & 1) != 0) || (uVar9 = param_3, ((uint)*puVar2 >> 0x1a & 1) != 0)) { uVar9 = (long)(param_3 << 8) >> 8 & param_3; } bVar5 = 0xffffffffffffffd3 < uVar9; uVar9 = uVar9 + 0x2c; uVar11 = 0; if (!bVar5 || uVar9 == 0) { uVar11 = puVar2[1]; } if (bVar5) { uVar9 = 0xffffffffffffffff; } lVar7 = 0x2c; if (!CARRY8(uVar9,~uVar11) && !CARRY8(uVar9 + ~uVar11,(ulong)bVar5) || uVar9 == uVar11 + !bVar5) { lVar7 = cRead_8(sp_el0); if (((long)(param_3 << 8) >> 8 & param_3 & (*(ulong *)(lVar7 + 8) ^ 0xffffffffffffffff)) != 0) { param_3 = 0; } iVar6 = __arch_copy_to_user(param_3,&iStack56,0x2c); lVar7 = (long)iVar6; } goto LAB_00100550; } LAB_00100a50: lVar7 = -1; goto LAB_00100550; } if (param_2 != 0x7007) goto LAB_00100910; puVar2 = (undefined8 *)cRead_8(sp_el0); if (((*(uint *)((long)puVar2 + 0x34) >> 0x15 & 1) != 0) || (uVar9 = param_3, ((uint)*puVar2 >> 0x1a & 1) != 0)) { uVar9 = (long)(param_3 << 8) >> 8 & param_3; } bVar5 = 0xffffffffffffffd3 < uVar9; uVar9 = uVar9 + 0x2c; uVar11 = 0; if (!bVar5 || uVar9 == 0) { uVar11 = puVar2[1]; } if (bVar5) { uVar9 = 0xffffffffffffffff; } if (!CARRY8(uVar9,~uVar11) && !CARRY8(uVar9 + ~uVar11,(ulong)bVar5) || uVar9 == uVar11 + !bVar5) { lVar7 = cRead_8(sp_el0); if (((long)(param_3 << 8) >> 8 & param_3 & (*(ulong *)(lVar7 + 8) ^ 0xffffffffffffffff)) != 0) { param_3 = 0; } lVar7 = __arch_copy_from_user(&iStack56,param_3,0x2c); if (lVar7 == 0) { peVar8 = ebc_osd_buf_clone(); if (peVar8 != (ebc_buf_s *)0x0) { peVar8->buf_mode = pStack52; peVar8->win_x1 = iStack36; peVar8->win_y1 = iStack32; peVar8->win_x2 = iStack28; peVar8->win_y2 = iStack24; ebc_add_to_dsp_buf_list(peVar8); if ((peVar4->info).ebc_dsp_buf_status == 0) { (peVar4->info).ebc_dsp_buf_status = 1; __wake_up_sync(&ebc_thread_wq,1); lVar7 = 0; goto LAB_00100550; } } goto LAB_0010054c; } } } lVar7 = -0xe; LAB_00100550: if (lStack8 != __stack_chk_guard) { // WARNING: Subroutine does not return __stack_chk_fail(lVar7); } return; } long ebc_io_ctl(file *file,ebc_ioctl cmd,ulong arg) { int *piVar1; undefined8 *puVar2; ebc_info *peVar3; ebc *peVar4; long lVar5; bool bVar6; int iVar7; long lVar8; ebc_buf_s *peVar9; ulong uVar10; size_t __n; device *pdVar11; ulong uVar12; wait_queue_entry __wq_entry; ebc_buf_info buf_info; lVar5 = __stack_chk_guard; peVar4 = global_ebc; if ((0x6fff < cmd) && (((cmd < EBC_ENABLE_OVERLAY || (cmd + ~EBC_DISABLE_OVERLAY < 2)) && (arg == 0)))) { _dev_err((global_ebc->info).dev,"%s: argp NULL\n","ebc_io_ctl",0); lVar8 = -0xe; goto LAB_00100550; } if (cmd == EBC_SET_FULL_MODE_NUM) { puVar2 = (undefined8 *)cRead_8(sp_el0); piVar1 = &(global_ebc->info).full_mode_num; if (((*(uint *)((long)puVar2 + 0x34) >> 0x15 & 1) != 0) || (uVar10 = arg, ((uint)*puVar2 >> 0x1a & 1) != 0)) { uVar10 = (long)(arg << 8) >> 8 & arg; } bVar6 = 0xfffffffffffffffb < uVar10; uVar10 = uVar10 + 4; uVar12 = 0; if (!bVar6 || uVar10 == 0) { uVar12 = puVar2[1]; } if (bVar6) { uVar10 = 0xffffffffffffffff; } uVar10 = (ulong)(!CARRY8(uVar10,~uVar12) && !CARRY8(uVar10 + ~uVar12,(ulong)bVar6) || uVar10 == uVar12 + !bVar6); if (uVar10 == 0) { __n = 4; } else { lVar8 = cRead_8(sp_el0); if (((long)(arg << 8) >> 8 & arg & (*(ulong *)(lVar8 + 8) ^ 0xffffffffffffffff)) != 0) { arg = 0; } __n = __arch_copy_from_user(piVar1,arg,4); if (__n == 0) { _dev_info((peVar4->info).dev,"full_mode_num = %d\n",(peVar4->info).full_mode_num); goto LAB_0010054c; } uVar10 = 4 - __n; } memset((void *)((long)piVar1 + uVar10),0,__n); _dev_err((peVar4->info).dev,"EBC_SET_FULL_MODE_NUM failed\n"); lVar8 = -0xe; goto LAB_00100550; } if (cmd < EBC_ENABLE_OVERLAY) { if (cmd == EBC_SEND_BUFFER) { puVar2 = (undefined8 *)cRead_8(sp_el0); if (((*(uint *)((long)puVar2 + 0x34) >> 0x15 & 1) != 0) || (uVar10 = arg, ((uint)*puVar2 >> 0x1a & 1) != 0)) { uVar10 = (long)(arg << 8) >> 8 & arg; } bVar6 = 0xffffffffffffffd3 < uVar10; uVar10 = uVar10 + 0x2c; uVar12 = 0; if (!bVar6 || uVar10 == 0) { uVar12 = puVar2[1]; } if (bVar6) { uVar10 = 0xffffffffffffffff; } if (!CARRY8(uVar10,~uVar12) && !CARRY8(uVar10 + ~uVar12,(ulong)bVar6) || uVar10 == uVar12 + !bVar6) { lVar8 = cRead_8(sp_el0); if (((long)(arg << 8) >> 8 & arg & (*(ulong *)(lVar8 + 8) ^ 0xffffffffffffffff)) != 0) { arg = 0; } lVar8 = __arch_copy_from_user(&buf_info,arg,0x2c); if (lVar8 == 0) { uVar10 = ebc_phy_buf_base_get(); peVar9 = ebc_find_buf_by_phy_addr((long)buf_info.offset + uVar10); if (peVar9 != (ebc_buf_s *)0x0) { peVar9->buf_mode = buf_info.epd_mode; peVar9->win_x1 = buf_info.win_x1; peVar9->win_y1 = buf_info.win_y1; peVar9->win_x2 = buf_info.win_x2; peVar9->win_y2 = buf_info.win_y2; ebc_add_to_dsp_buf_list(peVar9); if ((peVar4->info).ebc_dsp_buf_status == 0) { (peVar4->info).ebc_dsp_buf_status = 1; __wake_up_sync(&ebc_thread_wq,1); } if (peVar9->buf_mode == EPD_SUSPEND) { if ((peVar4->info).is_early_suspend == 0) goto LAB_001008ac; } else if (peVar9->buf_mode == EPD_POWER_OFF) { LAB_001008ac: (peVar4->info).ebc_last_display = 1; init_wait_entry(&__wq_entry,0); while (lVar8 = prepare_to_wait_event(&ebc_poweroff_wq,&__wq_entry,1), (peVar4->info).ebc_last_display != 0) { if (lVar8 != 0) goto LAB_0010054c; schedule(); } finish_wait(&ebc_poweroff_wq,&__wq_entry); } } LAB_0010054c: lVar8 = 0; goto LAB_00100550; } } } else { if (cmd < EBC_GET_BUFFER_INFO) { if (cmd != EBC_GET_BUFFER) { LAB_00100910: _dev_err((global_ebc->info).dev,"%s: unknow cmd\n","ebc_io_ctl",0); lVar8 = 0; goto LAB_00100550; } peVar9 = ebc_empty_buf_get(); if (peVar9 == (ebc_buf_s *)0x0) goto LAB_00100a50; uVar12 = peVar9->phy_addr; uVar10 = ebc_phy_buf_base_get(); puVar2 = (undefined8 *)cRead_8(sp_el0); buf_info.offset = (int)uVar12 - (int)uVar10; buf_info.panel_color = (peVar4->panel).panel_color; buf_info.width = (peVar4->panel).vir_width; buf_info.height = (peVar4->panel).vir_height; if (((*(uint *)((long)puVar2 + 0x34) >> 0x15 & 1) != 0) || (uVar10 = arg, ((uint)*puVar2 >> 0x1a & 1) != 0)) { uVar10 = (long)(arg << 8) >> 8 & arg; } bVar6 = 0xffffffffffffffd3 < uVar10; uVar10 = uVar10 + 0x2c; uVar12 = 0; if (!bVar6 || uVar10 == 0) { uVar12 = puVar2[1]; } if (bVar6) { uVar10 = 0xffffffffffffffff; } if (!CARRY8(uVar10,~uVar12) && !CARRY8(uVar10 + ~uVar12,(ulong)bVar6) || uVar10 == uVar12 + !bVar6) { lVar8 = cRead_8(sp_el0); if (((long)(arg << 8) >> 8 & arg & (*(ulong *)(lVar8 + 8) ^ 0xffffffffffffffff)) != 0) { arg = 0; } iVar7 = __arch_copy_to_user(arg,&buf_info,0x2c); if (iVar7 == 0) goto LAB_0010054c; } ebc_buf_release(peVar9); lVar8 = -0xe; goto LAB_00100550; } puVar2 = (undefined8 *)cRead_8(sp_el0); buf_info.width_mm = (global_ebc->panel).width_mm; buf_info.height_mm = (global_ebc->panel).height_mm; buf_info.width = (global_ebc->panel).vir_width; buf_info.height = (global_ebc->panel).vir_height; buf_info.panel_color = (global_ebc->panel).panel_color; if (((*(uint *)((long)puVar2 + 0x34) >> 0x15 & 1) != 0) || (uVar10 = arg, ((uint)*puVar2 >> 0x1a & 1) != 0)) { uVar10 = (long)(arg << 8) >> 8 & arg; } bVar6 = 0xffffffffffffffd3 < uVar10; uVar10 = uVar10 + 0x2c; uVar12 = 0; if (!bVar6 || uVar10 == 0) { uVar12 = puVar2[1]; } if (bVar6) { uVar10 = 0xffffffffffffffff; } if (!CARRY8(uVar10,~uVar12) && !CARRY8(uVar10 + ~uVar12,(ulong)bVar6) || uVar10 == uVar12 + !bVar6) { lVar8 = cRead_8(sp_el0); if (((long)(arg << 8) >> 8 & arg & (*(ulong *)(lVar8 + 8) ^ 0xffffffffffffffff)) != 0) { arg = 0; } lVar8 = __arch_copy_to_user(arg,&buf_info,0x2c); if (lVar8 == 0) goto LAB_0010054c; } _dev_err((peVar4->info).dev,"EBC_GET_BUFFER_INFO failed\n"); } } else { if (cmd == EBC_DISABLE_OVERLAY) { pdVar11 = (global_ebc->info).dev; (global_ebc->info).overlay_enable = 0; (peVar4->info).overlay_start = 0; _dev_info(pdVar11,"disable ebc overlay\n"); lVar8 = 0; goto LAB_00100550; } if (cmd < EBC_DISABLE_OVERLAY) { peVar3 = &global_ebc->info; (global_ebc->info).overlay_enable = 1; _dev_info(peVar3->dev, "enable ebc overlay, you can use auto_overlay mode to show somthing over the system display\n" ); lVar8 = 0; goto LAB_00100550; } if (cmd == EBC_GET_OSD_BUFFER) { peVar9 = ebc_osd_buf_get(); if (peVar9 != (ebc_buf_s *)0x0) { uVar12 = peVar9->phy_addr; uVar10 = ebc_phy_buf_base_get(); puVar2 = (undefined8 *)cRead_8(sp_el0); buf_info.offset = (int)uVar12 - (int)uVar10; buf_info.width = (peVar4->panel).vir_width; buf_info.height = (peVar4->panel).vir_height; buf_info.panel_color = (peVar4->panel).panel_color; if (((*(uint *)((long)puVar2 + 0x34) >> 0x15 & 1) != 0) || (uVar10 = arg, ((uint)*puVar2 >> 0x1a & 1) != 0)) { uVar10 = (long)(arg << 8) >> 8 & arg; } bVar6 = 0xffffffffffffffd3 < uVar10; uVar10 = uVar10 + 0x2c; uVar12 = 0; if (!bVar6 || uVar10 == 0) { uVar12 = puVar2[1]; } if (bVar6) { uVar10 = 0xffffffffffffffff; } lVar8 = 0x2c; if (!CARRY8(uVar10,~uVar12) && !CARRY8(uVar10 + ~uVar12,(ulong)bVar6) || uVar10 == uVar12 + !bVar6) { lVar8 = cRead_8(sp_el0); if (((long)(arg << 8) >> 8 & arg & (*(ulong *)(lVar8 + 8) ^ 0xffffffffffffffff)) != 0) { arg = 0; } iVar7 = __arch_copy_to_user(arg,&buf_info,0x2c); lVar8 = (long)iVar7; } goto LAB_00100550; } LAB_00100a50: lVar8 = -1; goto LAB_00100550; } if (cmd != EBC_SEND_OSD_BUFFER) goto LAB_00100910; puVar2 = (undefined8 *)cRead_8(sp_el0); if (((*(uint *)((long)puVar2 + 0x34) >> 0x15 & 1) != 0) || (uVar10 = arg, ((uint)*puVar2 >> 0x1a & 1) != 0)) { uVar10 = (long)(arg << 8) >> 8 & arg; } bVar6 = 0xffffffffffffffd3 < uVar10; uVar10 = uVar10 + 0x2c; uVar12 = 0; if (!bVar6 || uVar10 == 0) { uVar12 = puVar2[1]; } if (bVar6) { uVar10 = 0xffffffffffffffff; } if (!CARRY8(uVar10,~uVar12) && !CARRY8(uVar10 + ~uVar12,(ulong)bVar6) || uVar10 == uVar12 + !bVar6) { lVar8 = cRead_8(sp_el0); if (((long)(arg << 8) >> 8 & arg & (*(ulong *)(lVar8 + 8) ^ 0xffffffffffffffff)) != 0) { arg = 0; } lVar8 = __arch_copy_from_user(&buf_info,arg,0x2c); if (lVar8 == 0) { peVar9 = ebc_osd_buf_clone(); if (peVar9 != (ebc_buf_s *)0x0) { peVar9->buf_mode = buf_info.epd_mode; peVar9->win_x1 = buf_info.win_x1; peVar9->win_y1 = buf_info.win_y1; peVar9->win_x2 = buf_info.win_x2; peVar9->win_y2 = buf_info.win_y2; ebc_add_to_dsp_buf_list(peVar9); if ((peVar4->info).ebc_dsp_buf_status == 0) { (peVar4->info).ebc_dsp_buf_status = 1; __wake_up_sync(&ebc_thread_wq,1); lVar8 = 0; goto LAB_00100550; } } goto LAB_0010054c; } } } lVar8 = -0xe; LAB_00100550: if (lVar5 != __stack_chk_guard) { // WARNING: Subroutine does not return __stack_chk_fail(); } return lVar8; } void frame_done_callback(void) { ebc *peVar1; task_struct *ptVar2; device *pdVar3; ptVar2 = ebc_auto_task; peVar1 = global_ebc; if (EPD_OVERLAY < ((global_ebc->info).curr_dsp_buf)->buf_mode) { if ((global_ebc->info).frame_left == 0) { pdVar3 = (global_ebc->info).dev; (global_ebc->info).is_busy_now = 0; (peVar1->info).ebc_irq_status = 1; _dev_info(pdVar3,"frame done\n"); __wake_up_sync(&ebc_wq,1,1); __wake_up_sync(&ebc_thread_wq,1,1); return; } (global_ebc->info).is_busy_now = 1; wake_up_process(ptVar2); return; } if ((global_ebc->info).auto_need_refresh != 0) { wake_up_process(ebc_auto_task); return; } _dev_info((global_ebc->info).dev,"auto frame done\n"); memset((peVar1->info).auto_frame_count,0,(long)(peVar1->info).ebc_buf_real_size); mod_timer(&(peVar1->info).frame_timer,jiffies + 0x18000000); (peVar1->info).ebc_irq_status = 1; (peVar1->info).is_busy_now = 0; __wake_up_sync(&ebc_wq,1,1); __wake_up_sync(&ebc_thread_wq,1,1); return; } void ebc_frame_timeout(timer_list *t) { frame_done_callback(); return; } // WARNING: Type propagation algorithm not settling void FUN_00100bcc(long param_1) { int iVar1; undefined8 uVar2; uint uStack12; long lStack8; lStack8 = __stack_chk_guard; (**(code **)(*(long *)(param_1 + 0x10) + 0x38))(*(long *)(param_1 + 0x10),&uStack12); if (0x32 < uStack12) { _dev_err(*(undefined8 *)(param_1 + 0x110),"temperature = %d, out of range0~50 ,use 25 \n"); uStack12 = 0x19; } _dev_info(*(undefined8 *)(param_1 + 0x110),"temperature = %d\n",uStack12); switch(*(undefined4 *)(*(long *)(param_1 + 0x188) + 0x28)) { case 0: case 1: iVar1 = epd_lut_get((epd_lut_data *)(param_1 + 0x118),WF_TYPE_AUTO,uStack12); break; default: iVar1 = epd_lut_get((epd_lut_data *)(param_1 + 0x118),WF_TYPE_GC16,uStack12); break; case 3: case 8: iVar1 = epd_lut_get((epd_lut_data *)(param_1 + 0x118),WF_TYPE_GL16,uStack12); break; case 4: case 9: iVar1 = epd_lut_get((epd_lut_data *)(param_1 + 0x118),WF_TYPE_GLR16,uStack12); break; case 5: case 10: iVar1 = epd_lut_get((epd_lut_data *)(param_1 + 0x118),WF_TYPE_GLD16,uStack12); break; case 6: case 0xb: iVar1 = epd_lut_get((epd_lut_data *)(param_1 + 0x118),WF_TYPE_GCC16,uStack12); break; case 0xc: iVar1 = epd_lut_get((epd_lut_data *)(param_1 + 0x118),WF_TYPE_A2,uStack12); break; case 0xd: iVar1 = epd_lut_get((epd_lut_data *)(param_1 + 0x118),WF_TYPE_GRAY2,uStack12); break; case 0xe: iVar1 = epd_lut_get((epd_lut_data *)(param_1 + 0x118),WF_TYPE_RESET,uStack12); } if (iVar1 == 0) { uVar2 = 0; } else { _dev_err(*(undefined8 *)(param_1 + 0x110),"get lut data failed\n"); uVar2 = 0xffffffff; } if (lStack8 != __stack_chk_guard) { // WARNING: Subroutine does not return __stack_chk_fail(uVar2); } return; } // WARNING: Type propagation algorithm not settling int ebc_lut_update(ebc *ebc) { int iVar1; int temperature; int pmic_temp; long local_8; local_8 = __stack_chk_guard; (*ebc->pmic->pmic_read_temperature)(ebc->pmic,&pmic_temp); if (0x32 < (uint)pmic_temp) { _dev_err((ebc->info).dev,"temperature = %d, out of range0~50 ,use 25 \n"); pmic_temp = 0x19; } _dev_info((ebc->info).dev,"temperature = %d\n",pmic_temp); switch(((ebc->info).curr_dsp_buf)->buf_mode) { case EPD_AUTO: case EPD_OVERLAY: iVar1 = epd_lut_get(&(ebc->info).lut_data,WF_TYPE_AUTO,pmic_temp); break; default: iVar1 = epd_lut_get(&(ebc->info).lut_data,WF_TYPE_GC16,pmic_temp); break; case EPD_FULL_GL16: case EPD_PART_GL16: iVar1 = epd_lut_get(&(ebc->info).lut_data,WF_TYPE_GL16,pmic_temp); break; case EPD_FULL_GLR16: case EPD_PART_GLR16: iVar1 = epd_lut_get(&(ebc->info).lut_data,WF_TYPE_GLR16,pmic_temp); break; case EPD_FULL_GLD16: case EPD_PART_GLD16: iVar1 = epd_lut_get(&(ebc->info).lut_data,WF_TYPE_GLD16,pmic_temp); break; case EPD_FULL_GCC16: case EPD_PART_GCC16: iVar1 = epd_lut_get(&(ebc->info).lut_data,WF_TYPE_GCC16,pmic_temp); break; case EPD_A2: iVar1 = epd_lut_get(&(ebc->info).lut_data,WF_TYPE_A2,pmic_temp); break; case EPD_DU: iVar1 = epd_lut_get(&(ebc->info).lut_data,WF_TYPE_GRAY2,pmic_temp); break; case EPD_RESET: iVar1 = epd_lut_get(&(ebc->info).lut_data,WF_TYPE_RESET,pmic_temp); } if (iVar1 == 0) { iVar1 = 0; } else { _dev_err((ebc->info).dev,"get lut data failed\n"); iVar1 = -1; } if (local_8 != __stack_chk_guard) { // WARNING: Subroutine does not return __stack_chk_fail(); } return iVar1; } ssize_t ebc_state_read(device *device,device_attribute *attr,char *buf) { int iVar1; iVar1 = sprintf(buf,"%d\n",(ulong)(uint)(global_ebc->info).wake_lock_is_set); return (long)iVar1; } ssize_t ebc_version_read(device *device,device_attribute *attr,char *buf) { int iVar1; iVar1 = sprintf(buf,"%s\n",&DAT_00107b58); return (long)iVar1; } long FUN_00100de4(undefined8 param_1,undefined8 param_2,char *param_3) { int iVar1; iVar1 = (*global_ebc->pmic->pmic_get_vcom)(global_ebc->pmic); iVar1 = sprintf(param_3,"%d\n",iVar1); return (long)iVar1; } ssize_t pmic_vcom_read(device *device,device_attribute *attr,char *buf) { int iVar1; iVar1 = (*global_ebc->pmic->pmic_get_vcom)(global_ebc->pmic); iVar1 = sprintf(buf,"%d\n",iVar1); return (long)iVar1; } long FUN_00100e34(undefined8 param_1,undefined8 param_2,char *param_3) { int iVar1; uint uStack12; long lStack8; lStack8 = __stack_chk_guard; (*global_ebc->pmic->pmic_read_temperature)(global_ebc->pmic,(int *)&uStack12); iVar1 = sprintf(param_3,"%d\n",(ulong)uStack12); if (lStack8 == __stack_chk_guard) { return (long)iVar1; } // WARNING: Subroutine does not return __stack_chk_fail(); } ssize_t pmic_temp_read(device *device,device_attribute *attr,char *buf) { int iVar1; int t; uint local_c; long local_8; local_8 = __stack_chk_guard; (*global_ebc->pmic->pmic_read_temperature)(global_ebc->pmic,(int *)&local_c); iVar1 = sprintf(buf,"%d\n",(ulong)local_c); if (local_8 == __stack_chk_guard) { return (long)iVar1; } // WARNING: Subroutine does not return __stack_chk_fail(); } ssize_t pmic_name_read(device *device,device_attribute *attr,char *buf) { int iVar1; iVar1 = sprintf(buf,"%s\n",global_ebc->pmic->pmic_name); return (long)iVar1; } void FUN_00100ee4(undefined8 param_1,undefined8 param_2,undefined8 param_3,undefined8 param_4) { ebc *peVar1; int iVar2; int iStack12; long lStack8; peVar1 = global_ebc; lStack8 = __stack_chk_guard; iVar2 = kstrtouint(param_3,0,&iStack12); if (iVar2 == 0) { iVar2 = ebc_pmic_set_vcom((ebc_pmic_conflict *)peVar1->pmic,iStack12); if (iVar2 != 0) { param_4 = 0xffffffffffffffff; _dev_err(peVar1->dev,"set vcom value failed\n"); } } else { param_4 = 0xffffffffffffffff; _dev_err(peVar1->dev,"invalid value = %s\n",param_3); } if (lStack8 == __stack_chk_guard) { return; } // WARNING: Subroutine does not return __stack_chk_fail(param_4); } ssize_t pmic_vcom_write(device *device,device_attribute *attr,char *buf,size_t count) { ebc *peVar1; int iVar2; int local_c; long local_8; peVar1 = global_ebc; local_8 = __stack_chk_guard; iVar2 = kstrtouint(buf,0,&local_c); if (iVar2 == 0) { iVar2 = ebc_pmic_set_vcom((ebc_pmic_conflict *)peVar1->pmic,local_c); if (iVar2 != 0) { count = 0xffffffffffffffff; _dev_err(peVar1->dev,"set vcom value failed\n"); } } else { count = 0xffffffffffffffff; _dev_err(peVar1->dev,"invalid value = %s\n",buf); } if (local_8 == __stack_chk_guard) { return count; } // WARNING: Subroutine does not return __stack_chk_fail(); } long FUN_00100fa4(undefined8 param_1,undefined8 param_2,char *param_3) { int iVar1; char *pcVar2; pcVar2 = epd_lut_get_wf_version(); iVar1 = sprintf(param_3,"%s\n",pcVar2); return (long)iVar1; } ssize_t waveform_version_read(device *device,device_attribute *attr,char *buf) { int iVar1; char *pcVar2; pcVar2 = epd_lut_get_wf_version(); iVar1 = sprintf(buf,"%s\n",pcVar2); return (long)iVar1; } // WARNING: Unknown calling convention yet parameter storage is locked void direct_mode_data_change(void) { undefined8 *puVar1; long lVar2; u32 uVar3; u32 uVar4; u32 uVar5; uint uVar6; ebc *peVar7; long in_x0; long in_x1; long in_x2; uint in_w3; uint uVar8; uint uVar9; ulong uVar10; int in_w4; uint uVar11; long in_x5; byte *pbVar12; long lVar13; ulong uVar14; long lVar15; u32 uVar16; peVar7 = global_ebc; lVar2 = in_x5 + (int)(((in_w3 & 0xff) - in_w4) * 0x10000); uVar4 = (global_ebc->panel).mirror; uVar8 = (global_ebc->panel).vir_width; uVar3 = (global_ebc->panel).vir_height; if ((int)uVar3 < 1) { return; } uVar6 = uVar8 >> 4; uVar16 = 0; lVar15 = ((ulong)(uVar6 - 1) + 1) * 8; if (uVar4 == 0) goto LAB_00101150; do { uVar8 = (((global_ebc->panel).vir_height - 1) - uVar16) * uVar8; while( true ) { pbVar12 = (byte *)(in_x0 + (ulong)(uVar8 >> 2)); if (uVar6 != 0) goto LAB_00101048; uVar16 = uVar16 + 1; if (uVar3 == uVar16) { return; } uVar8 = (global_ebc->panel).vir_width; if (uVar4 != 0) break; LAB_00101150: uVar8 = uVar16 * uVar8; } } while( true ); LAB_00101048: lVar13 = 0; do { puVar1 = (undefined8 *)(in_x2 + lVar13); uVar10 = *(ulong *)(in_x1 + lVar13); lVar13 = lVar13 + 8; uVar11 = (uint)*puVar1; uVar9 = (uint)uVar10; uVar8 = (uint)((ulong)*puVar1 >> 0x20); uVar14 = uVar10 >> 0x20 & 0xffff; *pbVar12 = *(byte *)(lVar2 + (int)((uVar11 & 0xff) * 0x100 + (uVar9 & 0xff))) | *(char *)(lVar2 + (int)((uVar11 & 0xff00) + ((uVar9 & 0xffff) >> 8))) << 4; pbVar12[1] = *(byte *)(lVar2 + (int)((uVar11 >> 0x10 & 0xff) * 0x100 + (uVar9 >> 0x10 & 0xff))) | *(char *)(lVar2 + (int)((uVar11 >> 0x10 & 0xff00) + (uVar9 >> 0x18))) << 4; pbVar12[2] = *(byte *)(lVar2 + (int)((uVar8 & 0xff) * 0x100 + (uint)(byte)uVar14)) | *(char *)(lVar2 + (int)((uVar8 & 0xff00) + ((uint)uVar14 >> 8))) << 4; pbVar12[3] = *(byte *)(lVar2 + (int)((uVar8 >> 0x10 & 0xff) * 0x100 + (uint)(byte)(uVar10 >> 0x30))) | *(char *)(lVar2 + (int)((uVar8 >> 0x10 & 0xff00) + (uint)(uVar10 >> 0x38))) << 4; pbVar12 = pbVar12 + 4; } while (lVar15 - lVar13 != 0); in_x1 = in_x1 + lVar15; in_x2 = in_x2 + lVar15; do { while( true ) { uVar16 = uVar16 + 1; if (uVar3 == uVar16) { return; } uVar5 = (peVar7->panel).vir_width; if (uVar4 == 0) break; pbVar12 = (byte *)(in_x0 + (ulong)((((peVar7->panel).vir_height - 1) - uVar16) * uVar5 >> 2)); if (uVar6 != 0) goto LAB_00101048; } pbVar12 = (byte *)(in_x0 + (ulong)(uVar16 * uVar5 >> 2)); } while (uVar6 == 0); goto LAB_00101048; } // WARNING: Unknown calling convention yet parameter storage is locked void direct_mode_data_change_part(void) { long lVar1; byte bVar2; byte bVar3; uint uVar4; u32 uVar5; u32 uVar6; uint uVar7; u32 uVar8; ebc *peVar9; long in_x0; long in_x1; long in_x2; uint in_w3; uint uVar10; uint uVar11; ulong uVar12; int in_w4; uint uVar13; ulong uVar14; long in_x5; undefined4 *puVar15; undefined4 *puVar16; byte bVar17; int iVar18; long lVar19; byte bVar20; u32 uVar21; long lVar22; peVar9 = global_ebc; lVar1 = in_x5 + (int)(((in_w3 & 0xff) - in_w4) * 0x10000); uVar6 = (global_ebc->panel).mirror; uVar10 = (global_ebc->panel).vir_width; uVar5 = (global_ebc->panel).vir_height; if ((int)uVar5 < 1) { return; } uVar7 = uVar10 >> 4; uVar21 = 0; lVar22 = ((ulong)(uVar7 - 1) + 1) * 8; if (uVar6 == 0) goto LAB_00101480; do { uVar10 = (((peVar9->panel).vir_height - 1) - uVar21) * uVar10; while( true ) { if (uVar7 != 0) { lVar19 = 0; puVar16 = (undefined4 *)(in_x0 + (ulong)(uVar10 >> 2)); do { puVar15 = puVar16 + 1; uVar12 = *(ulong *)(in_x1 + lVar19 * 8); uVar14 = *(ulong *)(in_x2 + lVar19 * 8); if (uVar12 != uVar14) { do { uVar13 = (uint)uVar14; uVar11 = (uint)uVar12; uVar10 = uVar11 & 0xffff; bVar17 = 0; bVar20 = 3; if ((uVar13 & 0xffff) != uVar10) { uVar4 = uVar13 & 0xffff ^ uVar10; bVar17 = bVar20; if ((uVar4 & 0xf) == 0) { bVar17 = 0; } bVar2 = bVar17 | 0xc; if ((uVar4 & 0xf0) == 0) { bVar2 = bVar17; } bVar3 = bVar2 | 0x30; if ((uVar4 & 0xf00) == 0) { bVar3 = bVar2; } bVar17 = bVar3 | 0xc0; if ((uVar4 & 0xf000) == 0) { bVar17 = bVar3; } bVar17 = (*(byte *)(lVar1 + (int)((uVar13 & 0xff) * 0x100 + (uVar11 & 0xff))) | *(char *)(lVar1 + (int)((uVar13 & 0xff00) + (uVar10 >> 8))) << 4) & bVar17; } *(byte *)(puVar15 + -1) = bVar17; uVar10 = uVar13 >> 0x10; bVar17 = 0; if (uVar10 != uVar11 >> 0x10) { uVar13 = (uVar13 ^ uVar11) >> 0x10; bVar17 = bVar20; if ((uVar13 & 0xf) == 0) { bVar17 = 0; } bVar2 = bVar17 | 0xc; if ((uVar13 & 0xf0) == 0) { bVar2 = bVar17; } bVar3 = bVar2 | 0x30; if ((uVar13 & 0xf00) == 0) { bVar3 = bVar2; } bVar17 = bVar3 | 0xc0; if ((uVar13 & 0xf000) == 0) { bVar17 = bVar3; } bVar17 = (*(byte *)(lVar1 + (int)((uVar10 & 0xff) * 0x100 + (uVar11 >> 0x10 & 0xff)) ) | *(char *)(lVar1 + (int)((uVar10 & 0xff00) + (uVar11 >> 0x18))) << 4) & bVar17; } *(byte *)((long)puVar15 + -3) = bVar17; uVar10 = (uint)(uVar14 >> 0x20); uVar14 = uVar12 >> 0x20 & 0xffff; bVar17 = 0; uVar11 = (uint)uVar14; if ((uVar10 & 0xffff) != uVar11) { uVar13 = uVar10 & 0xffff ^ uVar11; bVar17 = bVar20; if ((uVar13 & 0xf) == 0) { bVar17 = 0; } bVar2 = bVar17 | 0xc; if ((uVar13 & 0xf0) == 0) { bVar2 = bVar17; } bVar3 = bVar2 | 0x30; if ((uVar13 & 0xf00) == 0) { bVar3 = bVar2; } bVar17 = bVar3 | 0xc0; if ((uVar13 & 0xf000) == 0) { bVar17 = bVar3; } bVar17 = (*(byte *)(lVar1 + (int)((uVar10 & 0xff) * 0x100 + (uint)(byte)uVar14)) | *(char *)(lVar1 + (int)((uVar10 & 0xff00) + (uVar11 >> 8))) << 4) & bVar17; } *(byte *)((long)puVar15 + -2) = bVar17; bVar17 = 0; uVar11 = (uint)(uVar12 >> 0x20); if (uVar10 >> 0x10 != uVar11 >> 0x10) { uVar13 = (uVar10 ^ uVar11) >> 0x10; if ((uVar13 & 0xf) == 0) { bVar20 = 0; } bVar17 = bVar20 | 0xc; if ((uVar13 & 0xf0) == 0) { bVar17 = bVar20; } bVar20 = bVar17 | 0x30; if ((uVar13 & 0xf00) == 0) { bVar20 = bVar17; } bVar17 = bVar20 | 0xc0; if ((uVar13 & 0xf000) == 0) { bVar17 = bVar20; } bVar17 = (*(byte *)(lVar1 + (int)((uVar10 >> 0x10 & 0xff) * 0x100 + (uint)(byte)(uVar12 >> 0x30))) | *(char *)(lVar1 + (int)((uVar10 >> 0x10 & 0xff00) + (uVar11 >> 0x18))) << 4 ) & bVar17; } *(byte *)((long)puVar15 + -1) = bVar17; lVar19 = lVar19 + 1; iVar18 = (int)lVar19; while( true ) { puVar16 = puVar15; if ((int)uVar7 <= iVar18) { in_x1 = in_x1 + lVar22; in_x2 = in_x2 + lVar22; do { uVar21 = uVar21 + 1; if (uVar5 == uVar21) { return; } uVar8 = uVar21; if (uVar6 != 0) { uVar8 = ((peVar9->panel).vir_height - 1) - uVar21; } puVar16 = (undefined4 *) (in_x0 + (ulong)(uVar8 * (peVar9->panel).vir_width >> 2)); } while (uVar7 == 0); lVar19 = 0; } puVar15 = puVar16 + 1; uVar12 = *(ulong *)(in_x1 + lVar19 * 8); uVar14 = *(ulong *)(in_x2 + lVar19 * 8); if (uVar12 != uVar14) break; *puVar16 = 0; lVar19 = lVar19 + 1; iVar18 = (int)lVar19; } } while( true ); } *puVar16 = 0; lVar19 = lVar19 + 1; puVar16 = puVar15; } while ((int)lVar19 < (int)uVar7); in_x1 = in_x1 + lVar22; in_x2 = in_x2 + lVar22; } uVar21 = uVar21 + 1; if (uVar5 == uVar21) { return; } uVar10 = (peVar9->panel).vir_width; if (uVar6 != 0) break; LAB_00101480: uVar10 = uVar21 * uVar10; } } while( true ); } void FUN_001014ac(long *param_1,int param_2) { int iVar1; long lVar2; undefined *puVar3; iVar1 = *(int *)(param_1 + 9); lVar2 = *param_1; if (lVar2 == 0) { puVar3 = &dummy_dma_ops; } else { puVar3 = &dummy_dma_ops; if (*(undefined **)(lVar2 + 0x288) != (undefined *)0x0) { puVar3 = *(undefined **)(lVar2 + 0x288); } } if (*(code **)(puVar3 + 0x58) != (code *)0x0) { (**(code **)(puVar3 + 0x58))(lVar2,param_1[(long)iVar1 * 3 + 4],(long)param_2,1); } (**(code **)(param_1[1] + 0x40))(param_1[1],0,0,0,0); (**(code **)(param_1[1] + 0x48))(param_1[1],*(undefined4 *)(param_1 + (long)iVar1 * 3 + 4),0); (**(code **)(param_1[1] + 0x60))(param_1[1],1); *(int *)(param_1 + 9) = 1 - *(int *)(param_1 + 9); return; } void flip(ebc_panel *panel,ebc_info *ebc_info) { int iVar1; device *pdVar2; dma_map_ops *pdVar3; iVar1 = panel->current_buffer; pdVar2 = panel->dev; if (pdVar2 == (device *)0x0) { pdVar3 = (dma_map_ops *)&dummy_dma_ops; } else { pdVar3 = (dma_map_ops *)&dummy_dma_ops; if (pdVar2->dma_ops != (dma_map_ops *)0x0) { pdVar3 = pdVar2->dma_ops; } } if (pdVar3->sync_single_for_device != (anon_subr_void_device_ptr_dma_addr_t_size_t_dma_data_direction_for_sync_single_for_device *) 0x0) { (*pdVar3->sync_single_for_device) (pdVar2,panel->fb[iVar1].phy_addr,(long)(int)ebc_info,DMA_TO_DEVICE); } (*panel->tcon->dsp_mode_set)(panel->tcon,0,0,0,0); (*panel->tcon->image_addr_set)(panel->tcon,*(u32 *)&panel->fb[iVar1].phy_addr,0); (*panel->tcon->frame_start)(panel->tcon,1); panel->current_buffer = 1 - panel->current_buffer; return; } void FUN_00101584(void) { ebc_panel *panel; ebc_info *ebc_info; panel_refresh_mode pVar1; long lVar2; ebc_info *peVar3; ebc *peVar4; peVar4 = global_ebc; panel = &global_ebc->panel; ebc_info = &global_ebc->info; peVar3 = &global_ebc->info; lVar2 = cRead_8(sp_el0); do { down(&ebc_auto_thread_sem); *(undefined8 *)(lVar2 + 0x20) = 2; DataMemoryBarrier(2,3); pVar1 = ((peVar4->info).curr_dsp_buf)->buf_mode; if ((int)pVar1 < 0) { LAB_001016a0: (peVar4->info).frame_left = (peVar4->info).frame_left + -1; flip(panel,(ebc_info *)(ulong)(uint)(peVar4->info).direct_buf_real_size); if ((peVar4->info).frame_left != 0) { direct_mode_data_change(); } LAB_00101614: pVar1 = ((peVar4->info).curr_dsp_buf)->buf_mode; } else { if (1 < (int)pVar1) { if (4 < pVar1 + ~EPD_FULL_GCC16) goto LAB_001016a0; (peVar4->info).frame_left = (peVar4->info).frame_left + -1; flip(panel,(ebc_info *)(ulong)(uint)(peVar4->info).direct_buf_real_size); if ((peVar4->info).frame_left != 0) { direct_mode_data_change_part(); } goto LAB_00101614; } flip(panel,(ebc_info *)(ulong)(uint)(peVar4->info).direct_buf_real_size); get_auto_image((u8 *)ebc_info->direct_buffer[(peVar4->panel).current_buffer], (u32 *)(peVar4->info).auto_image_new,(u32 *)(peVar4->info).auto_image_old, (peVar4->info).auto_frame_count,ebc_info); pVar1 = ((peVar4->info).curr_dsp_buf)->buf_mode; } if (pVar1 < EPD_FULL_GC16) { queue_work_on(8,system_wq,&peVar3->auto_buffer_work); } up(&ebc_auto_thread_sem); schedule(); } while( true ); } int ebc_auto_tast_function(void *data) { ebc_panel *panel; ebc_info *ebc_info; panel_refresh_mode pVar1; long lVar2; ebc_info *peVar3; ebc *peVar4; peVar4 = global_ebc; panel = &global_ebc->panel; ebc_info = &global_ebc->info; peVar3 = &global_ebc->info; lVar2 = cRead_8(sp_el0); do { down(&ebc_auto_thread_sem); *(undefined8 *)(lVar2 + 0x20) = 2; DataMemoryBarrier(2,3); pVar1 = ((peVar4->info).curr_dsp_buf)->buf_mode; if ((int)pVar1 < 0) { LAB_001016a0: (peVar4->info).frame_left = (peVar4->info).frame_left + -1; flip(panel,(ebc_info *)(ulong)(uint)(peVar4->info).direct_buf_real_size); if ((peVar4->info).frame_left != 0) { direct_mode_data_change(); } LAB_00101614: pVar1 = ((peVar4->info).curr_dsp_buf)->buf_mode; } else { if (1 < (int)pVar1) { if (4 < pVar1 + ~EPD_FULL_GCC16) goto LAB_001016a0; (peVar4->info).frame_left = (peVar4->info).frame_left + -1; flip(panel,(ebc_info *)(ulong)(uint)(peVar4->info).direct_buf_real_size); if ((peVar4->info).frame_left != 0) { direct_mode_data_change_part(); } goto LAB_00101614; } flip(panel,(ebc_info *)(ulong)(uint)(peVar4->info).direct_buf_real_size); get_auto_image((u8 *)ebc_info->direct_buffer[(peVar4->panel).current_buffer], (u32 *)(peVar4->info).auto_image_new,(u32 *)(peVar4->info).auto_image_old, (peVar4->info).auto_frame_count,ebc_info); pVar1 = ((peVar4->info).curr_dsp_buf)->buf_mode; } if (pVar1 < EPD_FULL_GC16) { queue_work_on(8,system_wq,&peVar3->auto_buffer_work); } up(&ebc_auto_thread_sem); schedule(); } while( true ); } void ebc_frame_start(ebc *ebc) { ebc_panel *panel; panel_refresh_mode pVar1; panel = &ebc->panel; pVar1 = ((ebc->info).curr_dsp_buf)->buf_mode; if (-1 < (int)pVar1) { if ((int)pVar1 < 2) { get_auto_image((u8 *)(ebc->info).direct_buffer[0],(u32 *)(ebc->info).auto_image_new, (u32 *)(ebc->info).auto_image_old,(ebc->info).auto_frame_count,&ebc->info); if ((ebc->info).auto_need_refresh != 0) { (ebc->panel).current_buffer = 0; flip(panel,(ebc_info *)(ulong)(uint)(ebc->info).direct_buf_real_size); get_auto_image((u8 *)(ebc->info).direct_buffer[1],(u32 *)(ebc->info).auto_image_new, (u32 *)(ebc->info).auto_image_old,(ebc->info).auto_frame_count,&ebc->info); return; } printk("%s: auto mode no need to update\n","ebc_frame_start"); (ebc->info).is_busy_now = 0; } else { if (4 < pVar1 + ~EPD_FULL_GCC16) goto LAB_001017b8; (ebc->info).frame_left = (uint)(byte)(ebc->info).frame_total; direct_mode_data_change_part(); (ebc->panel).current_buffer = 0; flip(panel,(ebc_info *)(ulong)(uint)(ebc->info).direct_buf_real_size); (ebc->info).frame_left = (ebc->info).frame_left + -1; direct_mode_data_change_part(); } return; } LAB_001017b8: (ebc->info).frame_left = (uint)(byte)(ebc->info).frame_total; direct_mode_data_change(); (ebc->panel).current_buffer = 0; flip(panel,(ebc_info *)(ulong)(uint)(ebc->info).direct_buf_real_size); (ebc->info).frame_left = (ebc->info).frame_left + -1; direct_mode_data_change(); return; } void FUN_00101894(undefined8 *param_1,undefined4 param_2) { ebc_notify(1); if (*(int *)(param_1 + 0x4c) == 0) { *(undefined4 *)(param_1 + 0x4c) = 1; __pm_stay_awake(param_1 + 0x32); } *(undefined4 *)(param_1 + 0x2e) = param_2; (**(code **)(param_1[1] + 0x30))(param_1[1],param_1 + 3); (**(code **)(param_1[2] + 0x20))(param_1[2],1); _dev_info(*param_1,"ebc hw power on\n"); return; } int ebc_power_set(ebc *ebc,int power_status) { int iVar1; ebc_notify(1); if ((ebc->info).wake_lock_is_set == 0) { (ebc->info).wake_lock_is_set = 1; __pm_stay_awake(&(ebc->info).suspend_lock); } (ebc->info).ebc_power_status = power_status; (*ebc->tcon->enable)(ebc->tcon,&ebc->panel); (*ebc->pmic->pmic_power_req)(ebc->pmic,true); iVar1 = _dev_info(ebc->dev,"ebc hw power on\n"); return iVar1; } // WARNING: Type propagation algorithm not settling // WARNING: Could not reconcile some variable overlaps int ebc_probe(platform_device *pdev) { ebc_info *peVar1; list_head *plVar2; timer_list *ptVar3; timer_list *ptVar4; bool bVar5; long lVar6; int ret; int iVar7; ebc *ebc; device_node *of_node; long tcon_node; device_conflict *tcon_dev; ebc_tcon *peVar8; i2c_client *client; ebc_pmic *peVar9; long mem_region_node; char *buffer_vir; int *auto_image_new; int *auto_image_old; int *auto_image_bg; u8 *auto_frame_count; long waveform_node; task_struct *ptVar10; char *__s; ebc_buf_s *peVar11; ulong buffer_phy; size_t buffer_size; int resource_len; device *ebc_dev; void *__dest; void *__dest_00; uint local_6c; resource r; device *dev; u32 height; uint pixels; u32 width; lVar6 = __stack_chk_guard; dev = &pdev->dev; ebc = (ebc *)devm_kmalloc(dev,800,0x6080c0); if (ebc == (ebc *)0x0) { ret = -0xc; goto LAB_00101e48; } of_node = (pdev->dev).of_node; global_ebc = ebc; ebc->dev = dev; tcon_node = of_parse_phandle(of_node,"ebc_tcon",0); if (tcon_node == 0) { ret = -0x13; _dev_err(dev,"not find ebc tcon\n"); goto LAB_00101e48; } tcon_dev = (device_conflict *)of_find_device_by_node(); if (tcon_dev != (device_conflict *)0x0) { peVar8 = (ebc_tcon *)tcon_dev->platform_data; ebc->tcon = peVar8; if (peVar8 != (ebc_tcon *)0x0) { peVar8->dsp_end_callback = frame_done_callback; tcon_node = of_parse_phandle((pdev->dev).of_node,&DAT_00107c00,0); if (tcon_node == 0) { ret = -0x13; _dev_err(dev,"not find pmic node\n"); goto LAB_00101e48; } client = (i2c_client *)of_find_i2c_device_by_node(); if (client == (i2c_client *)0x0) { ret = -0x205; _dev_err(dev,"not find pmic i2c client\n"); goto LAB_00101e48; } peVar9 = (ebc_pmic *)(client->dev).driver_data; ebc->pmic = peVar9; if (peVar9 == (ebc_pmic *)0x0) { ret = -0x205; _dev_err(dev,"get drvdata from pmic client failed\n"); goto LAB_00101e48; } peVar1 = &ebc->info; (ebc->info).dev = dev; (ebc->panel).dev = dev; (ebc->panel).tcon = ebc->tcon; (ebc->panel).pmic = peVar9; ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,width",&(ebc->panel).width,1,0); if ((((((ret < 0) || (ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,height",&(ebc->panel).height,1,0), ret < 0 )) || (ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,vir_width",&(ebc->panel).vir_width,1 ,0), ret < 0)) || ((ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,vir_height",&(ebc->panel).vir_height,1,0), ret < 0 || (ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,sdck",&(ebc->panel).sdck,1,0), ret < 0)))) || (((ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,lsl",&(ebc->panel).lsl,1,0), ret < 0 || ((ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,lbl",&(ebc->panel).lbl,1,0), ret < 0 || (ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,ldl",&(ebc->panel).ldl,1,0), ret < 0))) ) || (ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,lel",&(ebc->panel).lel,1,0), ret < 0)))) || ((((ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,gdck-sta",&(ebc->panel).gdck_sta,1,0), ret < 0 || (ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,lgonl",&(ebc->panel).lgonl,1,0), ret < 0)) || (ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,fsl",&(ebc->panel).fsl,1,0), ret < 0)) || (((ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,fbl",&(ebc->panel).fbl,1,0), ret < 0 || (ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,fdl",&(ebc->panel).fdl,1,0), ret < 0)) || (ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,fel",&(ebc->panel).fel,1,0), ret < 0)))))) { ret = -0x16; _dev_err(dev,"failed to probe panel: %d\n",0xffffffea); goto LAB_00101e48; } ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,panel_16bit",&(ebc->panel).panel_16bit,1,0); if (ret < 0) { of_node = (pdev->dev).of_node; (ebc->panel).panel_16bit = 0; ret = of_property_read_variable_u32_array (of_node,"panel,panel_color",&(ebc->panel).panel_color,1,0); if (ret < 0) goto LAB_00101f00; LAB_00101c18: ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,mirror",&(ebc->panel).mirror,1,0); if (-1 < ret) goto LAB_00101c38; LAB_00101ed8: of_node = (pdev->dev).of_node; (ebc->panel).mirror = 0; ret = of_property_read_variable_u32_array (of_node,"panel,width-mm",&(ebc->panel).width_mm,1,0); if (ret < 0) goto LAB_00101eb0; LAB_00101c58: ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,height-mm",&(ebc->panel).height_mm,1,0); } else { ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,panel_color",&(ebc->panel).panel_color,1,0); if (-1 < ret) goto LAB_00101c18; LAB_00101f00: of_node = (pdev->dev).of_node; (ebc->panel).panel_color = 0; ret = of_property_read_variable_u32_array(of_node,"panel,mirror",&(ebc->panel).mirror,1,0); if (ret < 0) goto LAB_00101ed8; LAB_00101c38: ret = of_property_read_variable_u32_array ((pdev->dev).of_node,"panel,width-mm",&(ebc->panel).width_mm,1,0); if (-1 < ret) goto LAB_00101c58; LAB_00101eb0: of_node = (pdev->dev).of_node; (ebc->panel).width_mm = 0; ret = of_property_read_variable_u32_array (of_node,"panel,height-mm",&(ebc->panel).height_mm,1,0); } if (ret < 0) { (ebc->panel).height_mm = 0; } height = (ebc->panel).vir_height; (ebc->info).height = height; width = (ebc->panel).vir_width; (ebc->info).width = width; pixels = height * width; (ebc->info).ebc_buf_real_size = pixels >> 1; (ebc->info).direct_buf_real_size = pixels >> 2; ebc_dev = ebc->dev; mem_region_node = of_parse_phandle(ebc_dev->of_node,"memory-region",0); if (mem_region_node == 0) { ret = -0x13; } else { ret = of_address_to_resource(mem_region_node,0,&r); if (ret == 0) { (ebc->info).ebc_buffer_phy = CONCAT44(r.start._4_4_,(uint)r.start); ret = ((int)r.end + 1) - (uint)r.start; (ebc->info).ebc_buffer_size = ret; buffer_vir = (char *)devm_memremap(ebc_dev,CONCAT44(r.start._4_4_,(uint)r.start),(long)ret ,1); (ebc->info).ebc_buffer_vir = buffer_vir; if ((buffer_vir != (char *)0x0) && (ret = ebc_buf_init((ebc->info).ebc_buffer_phy,buffer_vir,(ebc->info).ebc_buffer_size, 0x200000,4), ret == 0)) { buffer_vir = (ebc->info).ebc_buffer_vir; (ebc->panel).fb[0].size = 0x100000; (ebc->panel).fb[0].virt_addr = buffer_vir + 0xa00000; buffer_phy = (ebc->info).ebc_buffer_phy; (ebc->panel).fb[0].phy_addr = buffer_phy + 0xa00000; (ebc->info).direct_buffer[0] = buffer_vir + 0xa00000; (ebc->panel).fb[1].size = 0x100000; (ebc->panel).fb[1].virt_addr = buffer_vir + 0xb00000; (ebc->panel).fb[1].phy_addr = buffer_phy + 0xb00000; (ebc->info).lut_data.wf_table = (u8 *)(buffer_vir + 0xc00000); ret = (ebc->info).ebc_buf_real_size; (ebc->info).direct_buffer[1] = buffer_vir + 0xb00000; auto_image_new = (int *)devm_kmalloc(ebc_dev,(long)ret,0x6080c0); (ebc->info).auto_image_new = auto_image_new; if (auto_image_new != (int *)0x0) { auto_image_old = (int *)devm_kmalloc(ebc_dev,(long)(ebc->info).ebc_buf_real_size,0x6080c0); (ebc->info).auto_image_old = auto_image_old; if ((ebc->info).auto_image_new != (int *)0x0) { auto_image_bg = (int *)devm_kmalloc(ebc_dev,(long)(ebc->info).ebc_buf_real_size,0x6080c0); (ebc->info).auto_image_bg = auto_image_bg; if ((ebc->info).auto_image_new != (int *)0x0) { auto_frame_count = (u8 *)devm_kmalloc(ebc_dev,(long)(ebc->info).ebc_buf_real_size,0x6080c0); (ebc->info).auto_frame_count = auto_frame_count; if ((ebc->info).auto_image_new != (int *)0x0) { buffer_size = SEXT48((ebc->info).ebc_buf_real_size); memset(auto_frame_count,0,buffer_size); memset((ebc->info).auto_image_bg,0xff,buffer_size); ebc_dev = (ebc->info).dev; waveform_node = of_parse_phandle(ebc_dev->of_node,"waveform-region",0); if (waveform_node == 0) { ret = -0x13; } else { ret = of_address_to_resource(waveform_node,0,&r); if (ret == 0) { resource_len = ((int)r.end + 1) - (uint)r.start; buffer_vir = (char *)devm_memremap(ebc_dev,CONCAT44(r.start._4_4_, (uint)r.start), (long)resource_len,1); (ebc->info).lut_ddr_vir = buffer_vir; if (buffer_vir != (char *)0x0) { iVar7 = epd_lut_from_mem_init(buffer_vir); if (iVar7 < 0) { _dev_err((ebc->info).dev, "Failed to read waveform from mem, we use waveform file from kernel file instead\n" ); resource_len = epd_lut_from_file_init ((device_conflict *)(ebc->info).dev, (ebc->info).lut_ddr_vir,resource_len); if (resource_len < 0) { ret = -1; _dev_err((ebc->info).dev, "Failed to read waveform file from kernel, no waveform!!!\n") ; goto LAB_00101e1c; } } plVar2 = &(ebc->info).auto_buffer_work.entry; (ebc->info).auto_buffer_work.data.counter = 0xfffffffe0; (ebc->info).auto_buffer_work.entry.next = plVar2; (ebc->info).auto_buffer_work.entry.prev = plVar2; (ebc->info).auto_buffer_work.func = new_buffer_refresh; r.start._0_4_ = 99; ebc_auto_task = (task_struct *) kthread_create_on_node (ebc_auto_tast_function,peVar1,0xffffffff,"ebc_task"); if (ebc_auto_task < (task_struct *)0xfffffffffffff001) { sched_setscheduler_nocheck(ebc_auto_task,1,&r); __ll_sc_atomic_add(1,&ebc_auto_task->usage); ebc_refresh_task = (task_struct *) kthread_create_on_node (ebc_refresh_tast_function,peVar1,0xffffffff, "ebc_refresh_task"); if (ebc_refresh_task < (task_struct *)0xfffffffffffff001) { sched_setscheduler_nocheck(ebc_refresh_task,1,&r); __ll_sc_atomic_add(1,&ebc_refresh_task->usage); r.start._0_4_ = 99; ptVar10 = (task_struct *) kthread_create_on_node (ebc_thread,peVar1,0xffffffff,"ebc_thread"); if (ptVar10 < (task_struct *)0xfffffffffffff001) { wake_up_process(); (ebc->info).ebc_task = ptVar10; sched_setscheduler_nocheck(ptVar10,1,&r); __ll_sc_atomic_add(1,&((ebc->info).ebc_task)->usage); (ebc->info).full_mode_num = -1; (ebc->info).is_busy_now = 0; (ebc->info).auto_refresh_done = 0; (ebc->info).ebc_dsp_buf_status = 0; (ebc->info).ebc_power_status = 0; (ebc->info).is_early_suspend = 0; ptVar3 = &(ebc->info).vdd_timer; (ebc->info).is_deep_sleep = 0; (ebc->info).suspend_lock.ws.name = (char *)0x0; *(undefined8 *)&(ebc->info).suspend_lock.ws.id = 0; (ebc->info).suspend_lock.ws.entry.next = (list_head *)0x0; (ebc->info).suspend_lock.ws.entry.prev = (list_head *)0x0; *(undefined8 *)&(ebc->info).suspend_lock.ws.lock = 0; (ebc->info).suspend_lock.ws.wakeirq = (wake_irq *)0x0; (ebc->info).suspend_lock.ws.timer.entry.next = (hlist_node *)0x0; (ebc->info).suspend_lock.ws.timer.entry.pprev = (hlist_node **)0x0; (ebc->info).suspend_lock.ws.timer.expires = 0; (ebc->info).suspend_lock.ws.timer.function = (anon_subr_void_timer_list_ptr_for_function *)0x0; *(undefined8 *)&(ebc->info).suspend_lock.ws.timer.flags = 0; (ebc->info).suspend_lock.ws.timer.android_kabi_reserved1 = 0; (ebc->info).suspend_lock.ws.timer.android_kabi_reserved2 = 0; (ebc->info).suspend_lock.ws.timer_expires = 0; (ebc->info).suspend_lock.ws.total_time = 0; (ebc->info).suspend_lock.ws.max_time = 0; (ebc->info).suspend_lock.ws.last_time = 0; (ebc->info).suspend_lock.ws.start_prevent_time = 0; (ebc->info).suspend_lock.ws.prevent_sleep_time = 0; (ebc->info).suspend_lock.ws.event_count = 0; (ebc->info).suspend_lock.ws.active_count = 0; (ebc->info).suspend_lock.ws.relax_count = 0; (ebc->info).suspend_lock.ws.expire_count = 0; (ebc->info).suspend_lock.ws.wakeup_count = 0; (ebc->info).suspend_lock.ws.dev = (device *)0x0; *(undefined8 *)&(ebc->info).suspend_lock.ws.field_0xc8 = 0; (ebc->info).suspend_lock.ws.name = "ebc"; wakeup_source_add(); (ebc->info).wake_lock_is_set = 0; init_timer_key(ptVar3,ebc_vdd_power_timeout,0,0,0); ptVar4 = &(ebc->info).frame_timer; mod_timer(ptVar3,jiffies + 0xfffffff); init_timer_key(ptVar4,ebc_frame_timeout,0,0,0); mod_timer(ptVar4,jiffies + 0xfffffff); buffer_vir = saved_command_line; local_6c = 0; r.start._0_4_ = 0; __s = strstr(saved_command_line,"ulogo_addr="); buffer_vir = strstr(buffer_vir,"klogo_addr="); if ((__s == (char *)0x0) || (sscanf(__s,"ulogo_addr=0x%x",&local_6c), (ulong)local_6c < (ebc->info).ebc_buffer_phy)) { bVar5 = false; __dest_00 = (void *)0x0; __dest = (void *)0x0; if (buffer_vir != (char *)0x0) { LAB_001021c0: sscanf(buffer_vir,"klogo_addr=0x%x",&r); buffer_vir = (char *)0x0; __dest = (void *)0x0; if ((ebc->info).ebc_buffer_phy <= (ulong)(uint)r.start) { _dev_info((ebc->info).dev, "need show klogo, klogo addr = 0x%x\n"); __dest = (void *)__kmalloc((ebc->panel).vir_width * (ebc->panel).vir_height >> 1, 0x6080c0); if (__dest == (void *)0x0) { _dev_err((ebc->info).dev,"malloc klogo buffer failed\n"); goto LAB_00102274; } buffer_vir = (char *)0x1; memcpy(__dest,(ebc->info).ebc_buffer_vir + ((ulong)(uint)r.start - (ebc->info).ebc_buffer_phy), (ulong)((ebc->panel).vir_width * (ebc->panel).vir_height >> 1)); } resource_len = (int)buffer_vir; if (bVar5) goto LAB_00102348; } resource_len = (int)buffer_vir; _dev_info((ebc->info).dev,"no uboot logo, panel init\n"); ebc_pmic_verity_vcom((ebc_pmic_conflict *)ebc->pmic); peVar11 = ebc_empty_buf_get(); memset(peVar11->virt_addr,0xff, (ulong)((ebc->panel).vir_width * (ebc->panel).vir_height >> 1)); peVar11->win_x1 = 0; peVar11->win_y1 = 0; peVar11->buf_mode = EPD_RESET; peVar11->win_x2 = (ebc->panel).vir_width; peVar11->win_y2 = (ebc->panel).vir_height; ebc_add_to_dsp_buf_list(peVar11); LAB_0010224c: if ((resource_len != 0) && (peVar11 = ebc_empty_buf_get(), peVar11 != (ebc_buf_s *)0x0)) { memcpy(peVar11->virt_addr,__dest, (ulong)((ebc->panel).vir_width * (ebc->panel).vir_height >> 1)); peVar11->win_x1 = 0; peVar11->win_y1 = 0; peVar11->buf_mode = EPD_PART_GC16; peVar11->win_x2 = (ebc->panel).vir_width; peVar11->win_y2 = (ebc->panel).vir_height; ebc_add_to_dsp_buf_list(peVar11); } if ((ebc->info).ebc_dsp_buf_status == 0) { (ebc->info).ebc_dsp_buf_status = 1; __wake_up_sync(&ebc_thread_wq,1); } if (__dest_00 != (void *)0x0) { kfree(__dest_00); } if (__dest != (void *)0x0) { kfree(__dest); } } else { _dev_info((ebc->info).dev, "have ulogo display, ulogo addr = 0x%x\n"); __dest_00 = (void *)__kmalloc((ebc->panel).vir_width * (ebc->panel).vir_height >> 1, 0x6080c0); if (__dest_00 != (void *)0x0) { memcpy(__dest_00, (ebc->info).ebc_buffer_vir + ((ulong)local_6c - (ebc->info).ebc_buffer_phy), (ulong)((ebc->panel).vir_width * (ebc->panel).vir_height >> 1)); if (buffer_vir != (char *)0x0) { bVar5 = true; goto LAB_001021c0; } resource_len = 0; __dest = (void *)0x0; LAB_00102348: peVar11 = ebc_empty_buf_get(); if (peVar11 != (ebc_buf_s *)0x0) { memcpy(peVar11->virt_addr,__dest_00, (ulong)((ebc->panel).vir_width * (ebc->panel).vir_height >> 1)); peVar11->win_x1 = 0; peVar11->win_y1 = 0; peVar11->buf_mode = EPD_PART_GC16; peVar11->win_x2 = (ebc->panel).vir_width; peVar11->win_y2 = (ebc->panel).vir_height; ebc_add_to_dsp_buf_list(peVar11); } goto LAB_0010224c; } _dev_err((ebc->info).dev,"malloc ulogo buffer failed\n"); } LAB_00102274: (pdev->dev).driver_data = ebc; misc_register(&ebc_misc); device_create_file((ebc->info).dev,&dev_attr_waveform_version); device_create_file((ebc->info).dev,&dev_attr_pmic_name); device_create_file((ebc->info).dev,&dev_attr_pmic_temp); device_create_file((ebc->info).dev,&dev_attr_pmic_vcom); device_create_file((ebc->info).dev,&dev_attr_ebc_version); device_create_file((ebc->info).dev,&dev_attr_ebc_state); _dev_info((ebc->info).dev,"rockchip ebc driver %s probe success\n", &DAT_00107b58); goto LAB_00101e48; } (ebc->info).ebc_task = ptVar10; _dev_err((ebc->info).dev,"failed to run ebc thread\n"); } else { _dev_err((ebc->info).dev,"failed to create ebc_refresh_task thread\n") ; } } else { _dev_err((ebc->info).dev,"failed to create ebc_task thread\n"); } ret = -1; _dev_err(dev,"task init failed\n"); goto LAB_00101e48; } ret = -0xc; _dev_err((ebc->info).dev,"%s:%d: failed to get mem from reserved\n", "ebc_lut_table_init",0x5c5); } } LAB_00101e1c: _dev_err(dev,"lut table init failed\n"); goto LAB_00101e48; } } } } } ret = -0xc; } else { _dev_err(ebc_dev,"Couldn\'t address to resource for reserved memory\n"); } } _dev_err(dev,"buffer manage init failed\n"); goto LAB_00101e48; } } ret = -0x205; LAB_00101e48: if (lVar6 == __stack_chk_guard) { return ret; } // WARNING: Subroutine does not return __stack_chk_fail(); } undefined8 FUN_001025ec(undefined8 *param_1) { ebc_notify(0); *(undefined4 *)(param_1 + 0x2e) = 0; (**(code **)(param_1[2] + 0x20))(param_1[2],0); (**(code **)(param_1[1] + 0x38))(param_1[1]); if (*(int *)(param_1 + 0x4c) == 0) { _dev_info(*param_1,"ebc hw power off\n"); return 0; } *(undefined4 *)(param_1 + 0x4c) = 0; __pm_relax(param_1 + 0x32); _dev_info(*param_1,"ebc hw power off\n"); return 0; } int ebc_power_set(ebc *ebc,int power_status) { ebc_pmic *peVar1; ebc_notify(0); peVar1 = ebc->pmic; (ebc->info).ebc_power_status = 0; (*peVar1->pmic_power_req)(peVar1,false); (*ebc->tcon->disable)(ebc->tcon); if ((ebc->info).wake_lock_is_set == 0) { _dev_info(ebc->dev,"ebc hw power off\n"); return 0; } (ebc->info).wake_lock_is_set = 0; __pm_relax(&(ebc->info).suspend_lock); _dev_info(ebc->dev,"ebc hw power off\n"); return 0; } undefined8 FUN_00102684(long param_1) { int power_status; ebc *ebc; ebc = *(ebc **)(param_1 + 0xb8); if ((ebc->info).ebc_power_status == 1) { power_status = 0x108130; _dev_info((ebc->info).dev,"%s: device is busy now...\n","ebc_suspend"); ebc_power_set(ebc,power_status); } (ebc->info).is_deep_sleep = 1; (*ebc->pmic->pmic_pm_suspend)(ebc->pmic); _dev_info((ebc->info).dev,"device suspend\n"); return 0; } int ebc_suspend(device *dev) { int power_status; ebc *ebc; ebc = (ebc *)dev->driver_data; if ((ebc->info).ebc_power_status == 1) { power_status = 0x108130; _dev_info((ebc->info).dev,"%s: device is busy now...\n","ebc_suspend"); ebc_power_set(ebc,power_status); } (ebc->info).is_deep_sleep = 1; (*ebc->pmic->pmic_pm_suspend)(ebc->pmic); _dev_info((ebc->info).dev,"device suspend\n"); return 0; } void refresh_new_image2(u32 *image_new,u32 *image_fb,u32 *image_bg,u32 *frame_count, ebc_info *ebc_info,int buf_mode) { long lVar1; int iVar2; int iVar3; long lVar4; ulong uVar5; int iVar6; iVar3 = ebc_info->height; iVar6 = ebc_info->width; iVar2 = iVar6 + 0xf; if (-1 < iVar6) { iVar2 = iVar6; } iVar2 = iVar2 >> 4; if (0 < iVar3) { iVar6 = 0; lVar1 = (ulong)(iVar2 - 1) + 1; do { lVar4 = 0; if (0 < iVar2) { do { uVar5 = 0xffffffffffffffff; if (buf_mode != 0) { uVar5 = *(ulong *)image_bg; image_bg = (u32 *)((long)image_bg + 8); } uVar5 = uVar5 & *(ulong *)(image_fb + lVar4 * 2); if (*(long *)(frame_count + lVar4 * 2) != 0) { uVar5 = *(ulong *)(image_new + lVar4 * 2); } *(ulong *)(image_new + lVar4 * 2) = uVar5; lVar4 = lVar4 + 1; } while ((int)lVar4 < iVar2); frame_count = frame_count + lVar1 * 2; image_fb = image_fb + lVar1 * 2; image_new = image_new + lVar1 * 2; } iVar6 = iVar6 + 1; } while (iVar3 != iVar6); } return; } void FUN_00102794(void) { ebc *peVar1; ebc_buf_s *peVar2; peVar1 = global_ebc; down(&auto_sem); peVar2 = (peVar1->info).curr_dsp_buf; refresh_new_image2((u32 *)(peVar1->info).auto_image_new,(u32 *)peVar2->virt_addr, (u32 *)(peVar1->info).auto_image_bg,(u32 *)(peVar1->info).auto_frame_count, &peVar1->info,peVar2->buf_mode); up(&auto_sem); return; } void new_buffer_refresh(work_struct *work) { ebc *peVar1; ebc_buf_s *peVar2; peVar1 = global_ebc; down(&auto_sem); peVar2 = (peVar1->info).curr_dsp_buf; refresh_new_image2((u32 *)(peVar1->info).auto_image_new,(u32 *)peVar2->virt_addr, (u32 *)(peVar1->info).auto_image_bg,(u32 *)(peVar1->info).auto_frame_count, &peVar1->info,peVar2->buf_mode); up(&auto_sem); return; } int ebc_thread(void *ptr) { long *plVar1; long *plVar2; ebc_info *ebc_info; timer_list *ptVar3; int iVar4; int iVar5; ebc *ebc; int iVar6; int ret; int iVar7; ebc_buf_s *dsp_buf; device *pdVar8; long lVar9; int iVar10; char *image_fb; ulong uVar11; int iVar12; uint frame_num; ulong uVar13; long *plVar14; int iVar15; long *plVar16; int *piVar17; u8 *puVar18; char *pcVar19; int *piVar20; int iVar21; wait_queue_entry __wq_entry; long __local_stack_chk_guard; panel_refresh_mode buf_mode; ebc_buf_s *prev_buf; __local_stack_chk_guard = __stack_chk_guard; ebc = global_ebc; image_fb = (char *)0x0; iVar21 = 0; ebc_info = &global_ebc->info; iVar6 = 0; LAB_00102844: do { iVar10 = (int)image_fb; iVar7 = (ebc->info).is_power_off; while( true ) { if (iVar7 != 0) { if ((ebc->info).ebc_power_status == 1) { ebc_power_set(ebc,iVar10); } if (__local_stack_chk_guard == __stack_chk_guard) { return 0; } // WARNING: Subroutine does not return __stack_chk_fail(); } dsp_buf = ebc_dsp_buf_get(); if ((dsp_buf == (ebc_buf_s *)0x0) || (image_fb = (char *)dsp_buf->phy_addr, (ebc_buf_s *)image_fb == (ebc_buf_s *)0x0)) { if ((ebc->info).is_busy_now != 1) { iVar7 = (ebc->info).ebc_power_status; goto joined_r0x00102d64; } if ((ebc->info).ebc_dsp_buf_status != 0) goto __out; init_wait_entry(&__wq_entry,0); goto LAB_00102d30; } buf_mode = dsp_buf->buf_mode; image_fb = (char *)(ulong)buf_mode; if (buf_mode == EPD_POWER_OFF) { (ebc->info).overlay_enable = 0; (ebc->info).overlay_start = 0; goto LAB_001029d4; } if (*(long *)&(ebc->info).is_early_suspend == 0) { if (buf_mode == EPD_SUSPEND) { (ebc->info).overlay_start = 0; goto LAB_001029d4; } if ((ebc->info).overlay_start == 0 || buf_mode == EPD_OVERLAY) goto LAB_001029d4; image_fb = dsp_buf->virt_addr; memcpy((ebc->info).auto_image_bg,image_fb,(long)(ebc->info).ebc_buf_real_size); ebc_remove_from_dsp_buf_list(dsp_buf); ebc_buf_release(dsp_buf); wake_up_process(ebc_refresh_task); if ((ebc->info).auto_refresh_done != 0) goto __out; init_wait_entry(&__wq_entry,0); goto LAB_001030b8; } if (buf_mode == EPD_RESUME) break; ebc_remove_from_dsp_buf_list(dsp_buf); ebc_buf_release(dsp_buf); iVar10 = (int)image_fb; iVar7 = (ebc->info).is_power_off; } (ebc->info).is_early_suspend = 0; ebc_notify(3); _dev_info((ebc->info).dev,"early resume\n"); LAB_001029d4: mod_timer(&(ebc->info).vdd_timer,jiffies + 0x18000000); if ((ebc->info).first_in == 0) { (ebc->info).prev_dsp_buf = dsp_buf; prev_buf = dsp_buf; } else { prev_buf = (ebc->info).prev_dsp_buf; } buf_mode = prev_buf->buf_mode; if (dsp_buf->buf_mode != buf_mode) { _dev_info((ebc->info).dev,"change display mode from %d to %d\n"); buf_mode = dsp_buf->buf_mode; } if ((int)buf_mode < 7) { if (1 < (int)buf_mode) { LAB_00102c10: iVar6 = 1; goto LAB_00102c14; } if (buf_mode == EPD_AUTO) { down(&auto_sem); (ebc->info).curr_dsp_buf = dsp_buf; prev_buf = dsp_buf; if (((ebc->info).prev_dsp_buf)->buf_mode == EPD_AUTO) { LAB_00102d94: image_fb = prev_buf->virt_addr; refresh_new_image2((u32 *)(ebc->info).auto_image_new,(u32 *)image_fb, (u32 *)(ebc->info).auto_image_bg,(u32 *)(ebc->info).auto_frame_count, ebc_info,prev_buf->buf_mode); } else { memset((ebc->info).auto_image_bg,0xff,(long)(ebc->info).ebc_buf_real_size); if (((ebc->info).prev_dsp_buf)->buf_mode < EPD_FULL_GC16) { prev_buf = (ebc->info).curr_dsp_buf; goto LAB_00102d94; } memcpy((ebc->info).auto_image_new,((ebc->info).curr_dsp_buf)->virt_addr, (long)(ebc->info).ebc_buf_real_size); image_fb = ((ebc->info).prev_dsp_buf)->virt_addr; memcpy((ebc->info).auto_image_old,image_fb,(long)(ebc->info).ebc_buf_real_size); } up(&auto_sem); if ((ebc->info).is_busy_now == 0) { (ebc->info).is_busy_now = 1; (ebc->info).ebc_irq_status = 0; if ((ebc->info).ebc_power_status == 0) { ebc_power_set(ebc,1); } ret = ebc_lut_update(ebc); if (ret != -1) { pdVar8 = (ebc->info).dev; frame_num = (ebc->info).lut_data.frame_num; image_fb = "auto mode start, frame_total=%d\n"; (ebc->info).frame_total = (char)frame_num; goto LAB_00102df0; } image_fb = "ebc_lut_update err\n"; _dev_err((ebc->info).dev); } } else { if (buf_mode != EPD_OVERLAY) goto LAB_00102bc8; if ((ebc->info).overlay_enable != 0) { (ebc->info).overlay_start = 1; } prev_buf = (ebc->info).prev_dsp_buf; (ebc->info).curr_dsp_buf = dsp_buf; buf_mode = prev_buf->buf_mode; if (buf_mode < EPD_FULL_GC16) { image_fb = (char *)dsp_buf; if (buf_mode == EPD_AUTO) { memcpy((ebc->info).auto_image_bg,(ebc->info).auto_image_old, (long)(ebc->info).ebc_buf_real_size); image_fb = (char *)(ebc->info).curr_dsp_buf; } } else { memcpy((ebc->info).auto_image_new,prev_buf->virt_addr,(long)(ebc->info).ebc_buf_real_size) ; memcpy((ebc->info).auto_image_old,((ebc->info).prev_dsp_buf)->virt_addr, (long)(ebc->info).ebc_buf_real_size); memcpy((ebc->info).auto_image_bg,((ebc->info).prev_dsp_buf)->virt_addr, (long)(ebc->info).ebc_buf_real_size); image_fb = (char *)(ebc->info).curr_dsp_buf; } iVar5 = *(int *)((long)image_fb + 0x30); iVar7 = *(int *)((long)image_fb + 0x34); iVar12 = *(int *)((long)image_fb + 0x38); iVar15 = (ebc->info).width; iVar10 = iVar5 + 0xf; if (-1 < iVar5) { iVar10 = iVar5; } buf_mode = *(panel_refresh_mode *)((long)image_fb + 0x28); iVar5 = iVar12 + 0xf; if (-1 < iVar12) { iVar5 = iVar12; } iVar12 = iVar15 + 0xf; if (-1 < iVar15) { iVar12 = iVar15; } iVar5 = (iVar5 >> 4) + 1; iVar4 = (iVar12 >> 4) + -1; if (iVar5 < iVar12 >> 4) { iVar4 = iVar5; } iVar12 = (ebc->info).height; pcVar19 = *(char **)((long)image_fb + 0x10); iVar5 = iVar12 + -1; if (*(int *)((long)image_fb + 0x3c) < iVar12) { iVar5 = *(int *)((long)image_fb + 0x3c); } piVar17 = (ebc->info).auto_image_new; piVar20 = (ebc->info).auto_image_bg; puVar18 = (ebc->info).auto_frame_count; if (iVar7 <= iVar5) { do { iVar12 = iVar10 >> 4; joined_r0x00102b24: if (iVar12 <= iVar4) { do { lVar9 = (long)((iVar7 * iVar15) / 2) + (long)iVar12 * 8; uVar13 = 0xffffffffffffffff; uVar11 = *(ulong *)(pcVar19 + lVar9); if (buf_mode != EPD_AUTO) { uVar13 = *(ulong *)((long)piVar20 + lVar9); } if (*(long *)(puVar18 + lVar9) == 0) { *(ulong *)((long)piVar17 + lVar9) = uVar11 & uVar13; } else { image_fb = (char *)(uVar11 & uVar13); if (*(ebc_buf_s **)((long)piVar17 + lVar9) != (ebc_buf_s *)image_fb) goto code_r0x00102b70; } image_fb = (char *)(uVar11 & uVar13); iVar12 = iVar12 + 1; if (iVar4 < iVar12) break; } while( true ); } iVar7 = iVar7 + 1; if (iVar5 < iVar7) break; iVar15 = (ebc->info).width; } while( true ); } if ((ebc->info).is_busy_now == 0) { (ebc->info).is_busy_now = 1; (ebc->info).ebc_irq_status = 0; if ((ebc->info).ebc_power_status == 0) { image_fb = (char *)0x1; ebc_power_set(ebc,1); } iVar7 = ebc_lut_update(ebc); if (iVar7 == -1) goto one_buffer_end; frame_num = (ebc->info).lut_data.frame_num; (ebc->info).frame_total = (char)frame_num; image_fb = "overlay mode start, frame_total=%d\n"; pdVar8 = (ebc->info).dev; LAB_00102df0: (ebc->info).frame_bw_total = (char)(frame_num >> 8); _dev_info(pdVar8,image_fb,frame_num & 0xff); ebc_frame_start(ebc); } } one_buffer_end: buf_mode = ((ebc->info).curr_dsp_buf)->buf_mode; if (buf_mode == EPD_POWER_OFF) goto LAB_00102cc0; LAB_00102be8: if (buf_mode == EPD_SUSPEND) { (ebc->info).ebc_last_display = 0; (ebc->info).is_early_suspend = 1; (ebc->info).overlay_start = 0; _dev_info((ebc->info).dev,"early suspend\n"); ebc_notify(2); image_fb = (char *)0x1; __wake_up_sync(&ebc_poweroff_wq); } ebc_remove_from_dsp_buf_list(dsp_buf); iVar7 = (ebc->info).first_in; } else { if (0xd < (int)buf_mode) { if (0x11 < (int)buf_mode) { LAB_00102bc8: image_fb = "ebc buffer mode error!\n"; _dev_err((ebc->info).dev); goto one_buffer_end; } goto LAB_00102c10; } LAB_00102c14: if ((ebc->info).is_busy_now == 1) { _dev_info((ebc->info).dev,"ebc is busy now, waiting prev refresh mode end...\n"); if ((ebc->info).ebc_irq_status == 0) { init_wait_entry(&__wq_entry,0); while (lVar9 = prepare_to_wait_event(&ebc_wq,&__wq_entry,1), (ebc->info).ebc_irq_status == 0) { if (lVar9 != 0) goto __out; schedule(); } finish_wait(&ebc_wq,&__wq_entry); } __out: _dev_info((ebc->info).dev,"prev refresh mode end\n"); prev_buf = (ebc->info).prev_dsp_buf; buf_mode = prev_buf->buf_mode; } else { prev_buf = (ebc->info).prev_dsp_buf; buf_mode = prev_buf->buf_mode; } if (buf_mode < EPD_FULL_GC16) { memcpy(prev_buf->virt_addr,(ebc->info).auto_image_old,(long)(ebc->info).ebc_buf_real_size); } (ebc->info).ebc_irq_status = 0; (ebc->info).curr_dsp_buf = dsp_buf; buf_mode = dsp_buf->buf_mode; if (buf_mode + ~EPD_FULL_GCC16 < 5) { plVar14 = (long *)dsp_buf->virt_addr; frame_num = (ebc->panel).vir_width * (ebc->panel).vir_height >> 1; plVar16 = (long *)((ebc->info).prev_dsp_buf)->virt_addr; iVar7 = (int)frame_num >> 3; if (iVar7 == 0) { LAB_00102f28: frame_num = frame_num & 7; if (frame_num != 0) { lVar9 = 0; do { if (*(char *)((long)plVar14 + lVar9) != *(char *)((long)plVar16 + lVar9)) goto LAB_00102c48; lVar9 = lVar9 + 4; } while (lVar9 != ((ulong)(frame_num - 1) + 1) * 4); } image_fb = "check_part_mode==0, no need refresh\n"; _dev_info((ebc->info).dev); goto one_buffer_end; } if (*plVar16 == *plVar14) { lVar9 = 8; do { if (((ulong)(iVar7 - 1) + 1) * 8 - lVar9 == 0) goto LAB_00102f28; plVar2 = (long *)((long)plVar14 + lVar9); plVar1 = (long *)((long)plVar16 + lVar9); lVar9 = lVar9 + 8; } while (*plVar2 == *plVar1); } } LAB_00102c48: prev_buf = dsp_buf; if (iVar6 == 0) { iVar6 = (ebc->info).full_mode_num; if ((0 < iVar6) && (iVar21 = iVar21 + 1, iVar6 <= iVar21)) { dsp_buf->buf_mode = EPD_FULL_GC16; iVar21 = 0; prev_buf = (ebc->info).curr_dsp_buf; buf_mode = prev_buf->buf_mode; } if (buf_mode != EPD_A2) goto LAB_00102c84; LAB_00102e1c: if (((ebc->info).prev_dsp_buf)->buf_mode + ~EPD_PART_GCC16 < 2) goto LAB_00102c84; prev_buf->buf_mode = EPD_DU; if ((ebc->info).ebc_power_status == 0) goto LAB_00102e40; LAB_00102c8c: iVar6 = ebc_lut_update(ebc); } else { iVar21 = 0; if (buf_mode == EPD_A2) goto LAB_00102e1c; LAB_00102c84: if ((ebc->info).ebc_power_status != 0) goto LAB_00102c8c; LAB_00102e40: ebc_power_set(ebc,1); iVar6 = ebc_lut_update(ebc); } if (iVar6 == 0) { frame_num = (ebc->info).lut_data.frame_num; (ebc->info).frame_total = (char)frame_num; _dev_info((ebc->info).dev,"frame start, mode = %d, framecount = %d\n", ((ebc->info).curr_dsp_buf)->buf_mode,frame_num & 0xff); (ebc->info).is_busy_now = 1; ebc_frame_start(ebc); ptVar3 = &(ebc->info).frame_timer; mod_timer(ptVar3,jiffies + 900); if ((ebc->info).ebc_irq_status == 0) { init_wait_entry(&__wq_entry,0); while (lVar9 = prepare_to_wait_event(&ebc_wq,&__wq_entry,1), (ebc->info).ebc_irq_status == 0) { if (lVar9 != 0) goto __out; schedule(); } finish_wait(&ebc_wq,&__wq_entry); } __out: image_fb = (char *)(jiffies + 0x18000000); mod_timer(ptVar3); (ebc->info).ebc_irq_status = 0; goto one_buffer_end; } image_fb = "ebc_lut_update err\n"; iVar6 = 0; _dev_err((ebc->info).dev); buf_mode = ((ebc->info).curr_dsp_buf)->buf_mode; if (buf_mode != EPD_POWER_OFF) goto LAB_00102be8; LAB_00102cc0: (ebc->info).ebc_last_display = 0; (ebc->info).is_power_off = 1; _dev_info((ebc->info).dev,"power off\n"); image_fb = (char *)0x1; __wake_up_sync(&ebc_poweroff_wq); ebc_remove_from_dsp_buf_list(dsp_buf); iVar7 = (ebc->info).first_in; } if (iVar7 == 0) { (ebc->info).first_in = 1; } else { ebc_buf_release((ebc->info).prev_dsp_buf); } (ebc->info).prev_dsp_buf = (ebc->info).curr_dsp_buf; } while( true ); LAB_00102d30: lVar9 = prepare_to_wait_event(&ebc_thread_wq,&__wq_entry,1); if (((ebc->info).is_busy_now == 0) || (frame_num = (ebc->info).ebc_dsp_buf_status, image_fb = (char *)(ulong)frame_num, frame_num != 0)) goto LAB_00102d48; if (lVar9 != 0) goto LAB_001028e8; schedule(); goto LAB_00102d30; LAB_00102d48: image_fb = (char *)&__wq_entry; finish_wait(&ebc_thread_wq); if ((ebc->info).is_busy_now == 0) { iVar7 = (ebc->info).ebc_power_status; joined_r0x00102d64: if (iVar7 == 1) { ebc_power_set(ebc,(int)image_fb); } } LAB_001028e8: if ((ebc->info).ebc_dsp_buf_status == 0) { init_wait_entry(&__wq_entry,0); while( true ) { lVar9 = prepare_to_wait_event(&ebc_thread_wq,&__wq_entry,1); frame_num = (ebc->info).ebc_dsp_buf_status; image_fb = (char *)(ulong)frame_num; if (frame_num != 0) break; if (lVar9 != 0) goto __out; schedule(); } image_fb = (char *)&__wq_entry; finish_wait(&ebc_thread_wq); (ebc->info).ebc_dsp_buf_status = 0; } else { __out: (ebc->info).ebc_dsp_buf_status = 0; } goto LAB_00102844; LAB_001030b8: lVar9 = prepare_to_wait_event(&ebc_wq,&__wq_entry,1); frame_num = (ebc->info).auto_refresh_done; image_fb = (char *)(ulong)frame_num; if (frame_num != 0) goto code_r0x001030d0; if (lVar9 != 0) goto __out; schedule(); goto LAB_001030b8; code_r0x001030d0: image_fb = (char *)&__wq_entry; finish_wait(&ebc_wq); __out: (ebc->info).auto_refresh_done = 0; if ((ebc->info).is_busy_now == 0) { (ebc->info).is_busy_now = 1; (ebc->info).ebc_irq_status = 0; if ((ebc->info).ebc_power_status == 0) { image_fb = (char *)0x1; ebc_power_set(ebc,1); } ebc_frame_start(ebc); } goto LAB_00102844; code_r0x00102b70: *(char **)((long)piVar17 + lVar9) = image_fb; iVar12 = iVar12 + 1; *(undefined8 *)(puVar18 + lVar9) = 0x101010101010101; goto joined_r0x00102b24; } void FUN_001031e4(void) { ebc_info *ebc_info; long lVar1; ebc *peVar2; ebc_buf_s *peVar3; peVar2 = global_ebc; ebc_info = &global_ebc->info; lVar1 = cRead_8(sp_el0); do { down(&ebc_refresh_thread_sem); *(undefined8 *)(lVar1 + 0x20) = 2; DataMemoryBarrier(2,3); peVar3 = (peVar2->info).curr_dsp_buf; refresh_new_image2((u32 *)(peVar2->info).auto_image_new,(u32 *)peVar3->virt_addr, (u32 *)(peVar2->info).auto_image_bg,(u32 *)(peVar2->info).auto_frame_count, ebc_info,peVar3->buf_mode); (peVar2->info).auto_refresh_done = 1; __wake_up_sync(&ebc_wq,1); up(&ebc_refresh_thread_sem); schedule(); } while( true ); } int ebc_refresh_tast_function(void *data) { ebc_info *ebc_info; long lVar1; ebc *peVar2; ebc_buf_s *peVar3; peVar2 = global_ebc; ebc_info = &global_ebc->info; lVar1 = cRead_8(sp_el0); do { down(&ebc_refresh_thread_sem); *(undefined8 *)(lVar1 + 0x20) = 2; DataMemoryBarrier(2,3); peVar3 = (peVar2->info).curr_dsp_buf; refresh_new_image2((u32 *)(peVar2->info).auto_image_new,(u32 *)peVar3->virt_addr, (u32 *)(peVar2->info).auto_image_bg,(u32 *)(peVar2->info).auto_frame_count, ebc_info,peVar3->buf_mode); (peVar2->info).auto_refresh_done = 1; __wake_up_sync(&ebc_wq,1); up(&ebc_refresh_thread_sem); schedule(); } while( true ); } int ebc_register_notifier(notifier_block *nb) { int iVar1; _mcount(); iVar1 = blocking_notifier_chain_register(&ebc_notifier_list,nb); return iVar1; } int ebc_unregister_notifier(notifier_block *nb) { int iVar1; _mcount(); iVar1 = blocking_notifier_chain_unregister(&ebc_notifier_list,nb); return iVar1; } int ebc_notify(ulong event) { int iVar1; _mcount(); iVar1 = blocking_notifier_call_chain(&ebc_notifier_list,event,0); return iVar1; } int epd_lut_from_mem_init(void *waveform) { int iVar1; code *local_lut_get; _mcount(); iVar1 = rkf_wf_input((rkf_waveform *)waveform); if (iVar1 < 0) { printk("[lut]: failed to input RKF waveform\n"); iVar1 = pvi_wf_input((pvi_waveform *)waveform); if (iVar1 < 0) { printk("[lut]: failed to input PVI waveform\n"); return iVar1; } printk("[lut]: PVI waveform\n"); local_lut_get = pvi_wf_get_lut; } else { printk("[lut]: RKF waveform\n"); local_lut_get = rkf_wf_get_lut; } lut_get = local_lut_get; return 0; } int epd_lut_from_file_init(device_conflict *dev,void *waveform,int size) { int iVar1; firmware *fw; long local_8; _mcount(); local_8 = __stack_chk_guard; iVar1 = request_firmware_into_buf(&fw,"waveform.bin",dev,waveform,(long)size); if (iVar1 == 0) { iVar1 = epd_lut_from_mem_init(waveform); } else { _dev_err(dev,"failed to load waveform firmware: %d\n",iVar1); } if (local_8 - __stack_chk_guard != 0) { // WARNING: Subroutine does not return __stack_chk_fail(strcpy,0,local_8 - __stack_chk_guard); } return iVar1; } char * epd_lut_get_wf_version(void) { char *pcVar1; _mcount(); pcVar1 = rkf_wf_get_version(); if (pcVar1 == (char *)0x0) { pcVar1 = pvi_wf_get_version(); if (pcVar1 != (char *)0x0) { pcVar1 = pvi_wf_get_version(); } } else { pcVar1 = rkf_wf_get_version(); } return pcVar1; } int epd_lut_get(epd_lut_data *output,epd_lut_type lut_type,int temperture) { int iVar1; _mcount(); iVar1 = (*lut_get)(output,lut_type,temperture); return iVar1; } int get_wf_mode_index(epd_lut_type lut_type) { byte bVar1; int iVar2; bVar1 = global_waveform->mode_version; if (bVar1 == 0x19) { LAB_001036a0: parse_mode_version::pvi_modes[0] = 0; parse_mode_version::pvi_modes[1] = 1; parse_mode_version::pvi_modes[2] = 7; parse_mode_version::pvi_modes[3] = 2; parse_mode_version::pvi_modes[4] = 3; parse_mode_version::pvi_modes[5] = 4; parse_mode_version::pvi_modes[6] = 5; parse_mode_version::pvi_modes[7] = 6; parse_mode_version::pvi_modes[8] = 4; } else if (bVar1 < 0x1a) { if (bVar1 == 0x12) { parse_mode_version::pvi_modes[0] = 0; parse_mode_version::pvi_modes[1] = 1; parse_mode_version::pvi_modes[2] = 7; parse_mode_version::pvi_modes[3] = 3; parse_mode_version::pvi_modes[4] = 3; parse_mode_version::pvi_modes[5] = 5; parse_mode_version::pvi_modes[6] = 6; parse_mode_version::pvi_modes[7] = 4; parse_mode_version::pvi_modes[8] = 5; } else if (bVar1 < 0x13) { if (bVar1 != 9) goto LAB_00103750; parse_mode_version::pvi_modes[0] = 0; parse_mode_version::pvi_modes[1] = 1; parse_mode_version::pvi_modes[2] = 1; parse_mode_version::pvi_modes[3] = 2; parse_mode_version::pvi_modes[4] = 3; parse_mode_version::pvi_modes[5] = 3; parse_mode_version::pvi_modes[6] = 3; parse_mode_version::pvi_modes[7] = 4; parse_mode_version::pvi_modes[8] = 3; } else if (bVar1 == 0x16) { parse_mode_version::pvi_modes[0] = 0; parse_mode_version::pvi_modes[1] = 1; parse_mode_version::pvi_modes[2] = 1; parse_mode_version::pvi_modes[3] = 2; parse_mode_version::pvi_modes[4] = 3; parse_mode_version::pvi_modes[5] = 4; parse_mode_version::pvi_modes[6] = 4; parse_mode_version::pvi_modes[7] = 6; parse_mode_version::pvi_modes[8] = 5; } else { if (bVar1 == 0x18) goto LAB_00103668; LAB_00103750: parse_mode_version::pvi_modes[0] = 0; parse_mode_version::pvi_modes[1] = 1; parse_mode_version::pvi_modes[2] = 1; parse_mode_version::pvi_modes[3] = 2; parse_mode_version::pvi_modes[4] = 3; parse_mode_version::pvi_modes[5] = 4; parse_mode_version::pvi_modes[8] = 4; parse_mode_version::pvi_modes[6] = 5; parse_mode_version::pvi_modes[7] = 6; printk("pvi : Unknow waveform version %x,%x\n",global_waveform->mode_version, global_waveform->wfm_rev); } } else if (bVar1 == 0x23) { parse_mode_version::pvi_modes[0] = 0; parse_mode_version::pvi_modes[1] = 1; parse_mode_version::pvi_modes[2] = 5; parse_mode_version::pvi_modes[3] = 2; parse_mode_version::pvi_modes[4] = 3; parse_mode_version::pvi_modes[5] = 3; parse_mode_version::pvi_modes[6] = 3; parse_mode_version::pvi_modes[7] = 4; parse_mode_version::pvi_modes[8] = 3; } else if (bVar1 < 0x24) { if (bVar1 != 0x20) goto LAB_00103750; LAB_00103668: parse_mode_version::pvi_modes[0] = 0; parse_mode_version::pvi_modes[1] = 1; parse_mode_version::pvi_modes[2] = 1; parse_mode_version::pvi_modes[3] = 2; parse_mode_version::pvi_modes[4] = 3; parse_mode_version::pvi_modes[5] = 4; parse_mode_version::pvi_modes[6] = 5; parse_mode_version::pvi_modes[7] = 6; parse_mode_version::pvi_modes[8] = 4; } else { if (bVar1 == 0x43) goto LAB_001036a0; if (bVar1 != 0x54) goto LAB_00103750; parse_mode_version::pvi_modes[0] = 0; parse_mode_version::pvi_modes[1] = 1; parse_mode_version::pvi_modes[2] = 1; parse_mode_version::pvi_modes[3] = 2; parse_mode_version::pvi_modes[4] = 3; parse_mode_version::pvi_modes[5] = 4; parse_mode_version::pvi_modes[6] = 4; parse_mode_version::pvi_modes[7] = 5; parse_mode_version::pvi_modes[8] = 4; } iVar2 = parse_mode_version::pvi_modes[3]; if (((lut_type != WF_TYPE_AUTO) && (lut_type != WF_TYPE_GRAY16)) && (iVar2 = parse_mode_version::pvi_modes[7], lut_type != WF_TYPE_A2)) { if (lut_type < WF_TYPE_GC16) { iVar2 = parse_mode_version::pvi_modes[2]; if (((lut_type != WF_TYPE_GRAY4) && (iVar2 = parse_mode_version::pvi_modes[1], lut_type != WF_TYPE_GRAY2)) && (iVar2 = parse_mode_version::pvi_modes[0], lut_type != WF_TYPE_RESET)) goto LAB_00103610; } else { iVar2 = parse_mode_version::pvi_modes[4]; if (((lut_type != WF_TYPE_GL16) && (iVar2 = parse_mode_version::pvi_modes[3], WF_TYPE_GC16 < lut_type)) && ((iVar2 = parse_mode_version::pvi_modes[5], lut_type != WF_TYPE_GLR16 && (iVar2 = parse_mode_version::pvi_modes[6], lut_type != WF_TYPE_GLD16)))) { LAB_00103610: printk("pvi: unspport PVI waveform type"); return -1; } } } return iVar2; } int decodewaveform(uchar *data,int maxpic) { int iVar1; int iVar2; int iVar3; byte bVar4; uchar uVar5; int iVar6; byte bVar7; byte bVar8; u8 *wf_table; uint uVar10; uint uVar11; uint uVar12; uint uVar13; ulong uVar14; uint frame; wf_table = waveformdata; if (waveformdata == (u8 *)0x0) { printk("waveformdata is NULL\n"); frame = 0xffffffea; } else { if ((maxpic - 0x10U & 0xffffffef) != 0) { return (int)0xffffffea; } format = 1; raw_offset = 0; frame = 0; uVar10 = 0; uVar12 = 0; do { token = data[raw_offset]; if (token == 0xff) { if (maxpic != 0x20) { return frame; } if (frame == 0) { return 0; } goto LAB_00103a28; } if (token == 0xfc) { raw_offset = raw_offset + 1; format = format ^ 1; token = data[raw_offset]; } frame_offset = frame * 0x10000; if (format == 0) { iVar2 = frame_offset + uVar12; wf_table[frame_offset + uVar10 * 0x100 + uVar12] = token & 3; wf_table[iVar2 + (uVar10 + 1) * 0x100] = token >> 2 & 3; wf_table[iVar2 + (uVar10 + 2) * 0x100] = token >> 4 & 3; wf_table[iVar2 + (uVar10 + 3) * 0x100] = token >> 6; uVar10 = uVar10 + 4; raw_offset = (ulong)(raw_offset + 1); if ((uint)maxpic <= uVar10) { uVar12 = uVar12 + 1; uVar10 = 0; if ((uint)maxpic <= uVar12) { frame = frame + 1; uVar12 = 0; uVar10 = format; } } } else { iVar2 = frame_offset + uVar12; wf_table[frame_offset + uVar10 * 0x100 + uVar12] = token & 3; bVar7 = token >> 2 & 3; wf_table[iVar2 + (uVar10 + 1) * 0x100] = bVar7; bVar8 = token >> 4 & 3; wf_table[iVar2 + (uVar10 + 2) * 0x100] = bVar8; wf_table[iVar2 + (uVar10 + 3) * 0x100] = token >> 6; uVar10 = uVar10 + 4; if ((uint)maxpic <= uVar10) { uVar12 = uVar12 + 1; uVar10 = 0; if ((uint)maxpic <= uVar12) { frame = frame + 1; uVar12 = 0; } } uVar5 = data[raw_offset + 1]; while (uVar5 != '\0') { row_plus_1 = uVar10 + 1; frame_offset_plus_col = frame * 0x10000 + uVar12; row_plus_2 = uVar10 + 2; row_plus_3 = uVar10 + 3; wf_table[frame * 0x10000 + uVar10 * 0x100 + uVar12] = token & 3; uVar10 = uVar10 + 4; wf_table[(uint)(frame_offset_plus_col + row_plus_1 * 0x100)] = bVar7; uVar5 = uVar5 + 0xff; wf_table[(uint)(frame_offset_plus_col + row_plus_2 * 0x100)] = bVar8; wf_table[(uint)(frame_offset_plus_col + row_plus_3 * 0x100)] = token >> 6; if ((uint)maxpic <= uVar10) { uVar12 = uVar12 + 1; uVar10 = 0; if ((uint)maxpic <= uVar12) { frame = frame + 1; uVar12 = 0; } } } raw_offset = (ulong)(raw_offset + 2); format = 1; } } while (frame < 0x100); printk("pvi: decodec waveform 19 error\n"); if (maxpic == 0x20) { LAB_00103a28: wf_table = waveformdata; loop_frame = 0; do { uVar14 = 0; frame_offset_plus_row = loop_frame * 0x10000; do { uVar10 = 0; do { uVar13 = uVar10 + frame_offset_plus_row; uVar11 = uVar10 >> 1; uVar10 = uVar10 + 2; wf_table[loop_frame * 0x10000 + (int)(uVar14 >> 1) * 0x100 + uVar11] = wf_table[uVar13]; } while (uVar10 != 0x20); uVar14 = uVar14 + 2; frame_offset_plus_row = frame_offset_plus_row + 0x200; } while (uVar14 != 0x20); loop_frame = loop_frame + 1 & 0xff; } while (loop_frame < frame); } } return (int)frame; } int FUN_00103ab4(int param_1,int param_2) { u8 *puVar1; byte bVar2; int iVar3; ulong uVar4; iVar3 = (uint)global_waveform->sc1 + param_1 * 4; puVar1 = global_waveform->xwia + (long)iVar3 + -0x1d; if ((uint)puVar1[3] == ((uint)puVar1[1] + (uint)puVar1[2] + (uint)global_waveform->xwia[(long)iVar3 + -0x1d] & 0xff)) { iVar3 = ((uint)puVar1[2] << 0x10 | (uint)puVar1[1] << 8 | (uint)global_waveform->xwia[(long)iVar3 + -0x1d]) + param_2 * 4; puVar1 = global_waveform->xwia + (long)iVar3 + -0x1d; if ((uint)puVar1[3] == ((uint)puVar1[1] + (uint)puVar1[2] + (uint)global_waveform->xwia[(long)iVar3 + -0x1d] & 0xff )) { bVar2 = global_waveform->mode_version; uVar4 = (ulong)((uint)puVar1[2] << 0x10 | (uint)puVar1[1] << 8 | (uint)global_waveform->xwia[(long)iVar3 + -0x1d]); if (bVar2 < 0x1a) { if ((0x17 < bVar2) || (bVar2 == 0x16)) { LAB_00103b78: iVar3 = decodewaveform(global_waveform->xwia + (uVar4 - 0x1d),0x20); return iVar3; } } else if ((bVar2 == 0x20) || (bVar2 == 0x43)) goto LAB_00103b78; iVar3 = decodewaveform(global_waveform->xwia + (uVar4 - 0x1d),0x10); } else { printk("pvi: %s %d check error\n","get_wf_frm_num",0x1dd); iVar3 = -0x16; } } else { printk("pvi: %s %d check error\n","get_wf_frm_num",0x1cf); iVar3 = -0x16; } return iVar3; } int get_wf_frm_num(int mode,int temp_index) { u8 *puVar1; byte bVar2; int iVar3; ulong uVar4; iVar3 = (uint)global_waveform->sc1 + mode * 4; mode_table_entry = (u8 *)global_waveform + (long)iVar3; if ((uint)mode_table_entry[3] == ((uint)mode_table_entry[1] + (uint)mode_table_entry[2] + (uint)mode_table_entry[0] & 0xff)) { iVar3 = ((uint)mode_table_entry[2] << 0x10 | (uint)mode_table_entry[1] << 8 | (uint)global_waveform->xwia[(long)iVar3 + -0x1d]) + temp_index * 4; temp_table_entry = global_waveform->xwia + (long)iVar3 + -0x1d; if ((uint)temp_table_entry[3] == ((uint)temp_table_entry[1] + (uint)temp_table_entry[2] + (uint)temp_table_entry[0] & 0xff)) { bVar2 = global_waveform->mode_version; waveform_data_offset = (ulong)((uint)temp_table_entry[2] << 0x10 | (uint)temp_table_entry[1] << 8 | (uint)temp_table_entry[0]); if (bVar2 < 0x1a) { if ((0x17 < bVar2) || (bVar2 == 0x16)) { LAB_00103b78: iVar3 = decodewaveform((u8 *)global_waveform + waveform_data_offset,0x20); return iVar3; } } else if ((bVar2 == 0x20) || (bVar2 == 0x43)) goto LAB_00103b78; iVar3 = decodewaveform((u8 *)global_waveform + waveform_data_offset,0x10); } else { printk("pvi: %s %d check error\n","get_wf_frm_num",0x1dd); iVar3 = -0x16; } } else { printk("pvi: %s %d check error\n","get_wf_frm_num",0x1cf); iVar3 = -0x16; } return iVar3; } undefined8 FUN_00103bcc(int *param_1,epd_lut_type param_2,int param_3) { int iVar1; uint uVar2; uint uVar3; byte bVar4; byte bVar5; u8 *puVar6; int iVar7; int iVar8; uint uVar9; int iVar10; int iVar11; uint uVar12; if (global_waveform == (pvi_waveform *)0x0) { return 0xffffffed; } if ((param_1 == (int *)0x0) && (lRam0000000000000010 == 0)) { return 0xffffffea; } if ((param_3 / 3 != pvi_wf_get_lut::sftemp / 3) || (pvi_wf_get_lut::stype != param_2)) { bVar4 = global_waveform->temperaturenumber; if (bVar4 == 0) { LAB_00103c74: uVar12 = bVar4 - 1; } else { bVar5 = global_waveform->data[0]; uVar12 = 0; while ((int)(uint)bVar5 <= param_3) { if ((uint)bVar4 == uVar12 + 1) goto LAB_00103c74; bVar5 = global_waveform->xwia[(long)(int)(uVar12 + 0x31) + -0x1d]; uVar12 = uVar12 + 1; } } waveformdata = *(u8 **)(param_1 + 4); pvi_wf_get_lut::sftemp = param_3; pvi_wf_get_lut::stype = param_2; if (param_2 == WF_TYPE_GRAY4) { printk("pvi: unsupport WF GRAY4n"); } else { if (param_2 < WF_TYPE_GRAY2) { if (param_2 == 0) { return 0xffffffff; } } else if (WF_TYPE_GCC16 < param_2) { return 0xffffffff; } iVar7 = get_wf_mode_index(param_2); iVar7 = get_wf_frm_num(iVar7,uVar12); if (iVar7 < 0) { printk("pvi waveform get frame number failed\n"); return 0xffffffff; } *param_1 = iVar7; if (param_2 == WF_TYPE_AUTO) { iVar8 = get_wf_mode_index(WF_TYPE_GRAY2); iVar8 = get_wf_frm_num(iVar8,uVar12); if (iVar8 < 1) { printk("Get GRAY2 waveform data failed during AUTO mode\n"); } } puVar6 = waveformdata; if (iVar7 != 0) { iVar11 = 0; iVar8 = 0; do { uVar12 = 0; iVar10 = iVar11; do { uVar9 = 0; do { uVar2 = uVar9 & 0xffff; iVar1 = uVar9 + iVar10; uVar3 = uVar9 & 0xf; uVar9 = uVar9 + 1; puVar6[iVar1] = (byte)((puVar6[(int)(iVar11 + (uVar12 & 0xf0) * 0x10 + (uVar2 >> 4))] & 3) << 2) | puVar6[(int)(uVar3 + (uVar12 & 0xf) * 0x100 + iVar11)] & 3; } while (uVar9 != 0x100); uVar12 = uVar12 + 1; iVar10 = iVar10 + 0x100; } while (uVar12 != 0x100); iVar8 = iVar8 + 1; iVar11 = iVar11 + 0x10000; } while (iVar7 != iVar8); } } } return 0; } int pvi_wf_get_lut(epd_lut_data *output,epd_lut_type lut_type,int temperture) { int iVar1; uint uVar2; uint uVar3; byte bVar4; u8 *puVar5; int mode_index; uint uVar6; uint uVar7; int iVar8; uint uVar9; uint temp_index; byte threshold; if (global_waveform == (pvi_waveform *)0x0) { return -0x13; } if ((output == (epd_lut_data *)0x0) && (lRam0000000000000010 == 0)) { return -0x16; } if ((temperture / 3 != pvi_wf_get_lut::sftemp / 3) || (pvi_wf_get_lut::stype != lut_type)) { bVar4 = global_waveform->temperaturenumber; if (bVar4 == 0) { LAB_00103c74: temp_index = bVar4 - 1; } else { threshold = global_waveform->data[0]; temp_index = 0; while ((int)(uint)threshold <= temperture) { if ((uint)bVar4 == temp_index + 1) goto LAB_00103c74; threshold = global_waveform->xwia[(long)(int)(temp_index + 0x31) + -0x1d]; temp_index = temp_index + 1; } } waveformdata = output->wf_table; pvi_wf_get_lut::sftemp = temperture; pvi_wf_get_lut::stype = lut_type; if (lut_type == WF_TYPE_GRAY4) { printk("pvi: unsupport WF GRAY4n"); } else { if (lut_type < WF_TYPE_GRAY2) { if (lut_type == 0) { return -1; } } else if (WF_TYPE_GCC16 < lut_type) { return -1; } mode_index = get_wf_mode_index(lut_type); frame_number = get_wf_frm_num(mode_index,temp_index); if ((int)frame_number < 0) { printk("pvi waveform get frame number failed\n"); return -1; } output->frame_num = frame_number; if (lut_type == WF_TYPE_AUTO) { mode_index = get_wf_mode_index(WF_TYPE_GRAY2); mode_index = get_wf_frm_num(mode_index,temp_index); if (mode_index < 1) { printk("Get GRAY2 waveform data failed during AUTO mode\n"); } } puVar5 = waveformdata; if (frame_number != 0) { frame_offset = 0; frame = 0; do { row = 0; row_offset = frame_offset; do { col = 0; do { col_high_nibble = col & 0xffff; dest = col + row_offset; col_low_nibble = col & 0xf; col = col + 1; puVar5[dest] = (byte)((puVar5[(int)(frame_offset + (row & 0xf0) * 0x10 + (col_high_nibble >> 4))] & 3) << 2) | puVar5[(int)(col_low_nibble + (row & 0xf) * 0x100 + frame_offset)] & 3; } while (col != 0x100); row = row + 1; row_offset = row_offset + 0x100; } while (row != 0x100); frame = frame + 1; frame_offset = frame_offset + 0x10000; } while (frame_number != frame); } } } return 0; } int pvi_wf_input(pvi_waveform *waveform_file) { byte mode_version; if (global_waveform != (pvi_waveform *)0x0) { return -0x10; } mode_version = waveform_file->mode_version; if (mode_version < 0x1a) { if ((((mode_version < 0x18) && (mode_version != 0x12)) && (mode_version != 0x16)) && (mode_version != 9)) goto LAB_00103e58; } else if (mode_version != 0x23) { if (mode_version < 0x24) { if (mode_version != 0x20) goto LAB_00103e58; } else if ((mode_version != 0x43) && (mode_version != 0x54)) { LAB_00103e58: printk("pvi : Unknow waveform version %x,%x, may be wrong waveform file\n",mode_version, waveform_file->wfm_rev); return -8; } } global_waveform = waveform_file; return 0; } char * pvi_wf_get_version(void) { pvi_waveform *ppVar1; long lVar2; ppVar1 = global_waveform; if (global_waveform != (pvi_waveform *)0x0) { lVar2 = 0; do { pvi_wf_get_version::spi_id_buffer[lVar2] = ppVar1->data[lVar2 + 0x11]; lVar2 = lVar2 + 1; } while (lVar2 != 0x1f); pvi_wf_get_version::spi_id_buffer[31] = '\0'; return pvi_wf_get_version::spi_id_buffer; } return (char *)0x0; } uchar * get_wf_buf(int temp,int mode) { ulong uVar1; char *pcVar2; ulong uVar3; uint *puVar4; if (mode == 3) { pcVar2 = global_waveform->gl16_temp_list; puVar4 = global_waveform->gl16_list; } else if (mode < 4) { if (mode == 1) { pcVar2 = global_waveform->du_temp_list; puVar4 = global_waveform->du_list; } else if (mode < 2) { pcVar2 = global_waveform->reset_temp_list; puVar4 = global_waveform->reset_list; if (mode != 0) { return (uchar *)0x0; } } else { pcVar2 = global_waveform->gc16_temp_list; puVar4 = global_waveform->gc16_list; } } else if (mode == 5) { pcVar2 = global_waveform->gld16_temp_list; puVar4 = global_waveform->gld16_list; } else if (mode < 5) { pcVar2 = global_waveform->glr16_temp_list; puVar4 = global_waveform->glr16_list; } else { pcVar2 = global_waveform->a2_temp_list; puVar4 = global_waveform->a2_list; if (mode != 6) { return (uchar *)0x0; } } if (temp < 0) { temp = 0; } uVar1 = 0; uVar3 = 0; if (0x31 < temp) { temp = 0x31; } while (((int)(uint)(byte)pcVar2[uVar1] < temp || (uVar3 = uVar1 & 0xffffffff, pcVar2[uVar1 + 1] != '\0'))) { uVar1 = uVar1 + 1; if (uVar1 == 0x32) { return (uchar *)(global_waveform->format + ((ulong)puVar4[(int)uVar3] - 4)); } } return (uchar *)(global_waveform->format + ((ulong)puVar4[uVar1] - 4)); } void * FUN_00103fd4(long param_1,ulong param_2) { void *__dest; __dest = (void *)__kmalloc(param_2 & 0xffffffff,0x6080c0); if (__dest != (void *)0x0) { memcpy(__dest,(void *)(param_1 + 4),param_2 & 0xffffffff); } return __dest; } uint * decode_wf_data(uchar *pbuf,uint length) { uint *__dest; __dest = (uint *)__kmalloc((ulong)length,0x6080c0); if (__dest != (uint *)0x0) { memcpy(__dest,pbuf + 4,(ulong)length); } return __dest; } // WARNING: Unknown calling convention yet parameter storage is locked int parse_wf_gray16(void) { byte bVar1; int iVar2; byte *pbuf; uint *puVar3; uint **in_x1; int in_w2; int in_w3; uint *extraout_x8; pbuf = get_wf_buf(in_w2,in_w3); bVar1 = *pbuf; *extraout_x8 = (uint)bVar1; puVar3 = decode_wf_data(pbuf,(uint)bVar1 << 6); *in_x1 = puVar3; iVar2 = -0x16; if (puVar3 != (uint *)0x0) { iVar2 = 0; } return iVar2; } undefined4 FUN_00104074(rkf_waveform *param_1) { uint uVar1; uint uVar2; uint uVar3; uint uVar4; long lVar5; int iVar6; uint uVar7; uint uVar8; uint uVar9; long lVar10; undefined4 uVar11; uVar11 = 0xfffffff0; if (global_waveform == (rkf_waveform *)0x0) { iVar6 = strncmp(param_1->format,"rkf waveform",0xc); if (iVar6 == 0) { uVar3 = param_1->length; if ((int)uVar3 < 0x40001) { uVar4 = *(uint *)(param_1->format + (long)(int)uVar3 + -4); memset(crc32_table,0,0x400); lVar10 = 0; do { uVar8 = (int)lVar10 << 0x16; uVar9 = 8; uVar7 = 0; do { uVar2 = uVar8 ^ uVar7; uVar1 = uVar7 << 1; uVar7 = uVar7 << 1; if ((int)uVar2 < 0) { uVar7 = uVar1 ^ 0x4c10db7; } uVar8 = uVar8 << 1; uVar9 = uVar9 - 1; } while (uVar9 != 0); *(uint *)((long)crc32_table + lVar10) = uVar7; lVar10 = lVar10 + 4; } while (lVar10 != 0x400); if (uVar3 != 0) { lVar10 = 0; do { lVar5 = lVar10 + -4; lVar10 = lVar10 + 1; uVar9 = crc32_table[(uint)(byte)param_1->format[lVar5] ^ uVar9 >> 0x18] ^ uVar9 << 8; } while ((uint)lVar10 < uVar3); } if (uVar4 == uVar9) { printk("rkf file version: %s\n",param_1->version); global_waveform = param_1; return 0; } printk("[EINK]: waveform crc err readcrc = %x crccheck = %x\n",uVar4); } printk("rkf: failed to check crc RKF waveform\n"); return 0xffffffff; } printk("rkf: check format failed\n"); uVar11 = 0xffffffff; printk("rkf: failed to check RKF file format\n"); } return uVar11; } int rkf_wf_input(rkf_waveform *waveform_file) { uint uVar1; uint uVar2; long lVar3; int ret; uint uVar4; uint uVar5; uint uVar6; uint length; long n; uint stored_crc; ret = -0x10; if (global_waveform == (rkf_waveform *)0x0) { ret = strncmp(waveform_file->format,"rkf waveform",0xc); if (ret == 0) { length = waveform_file->length; if ((int)length < 0x40001) { stored_crc = *(uint *)(waveform_file->format + (long)(int)length + -4); memset(crc32_table,0,0x400); n = 0; do { uVar5 = (int)n << 0x16; uVar6 = 8; uVar4 = 0; do { uVar2 = uVar5 ^ uVar4; uVar1 = uVar4 << 1; uVar4 = uVar4 << 1; if ((int)uVar2 < 0) { uVar4 = uVar1 ^ 0x4c10db7; } uVar5 = uVar5 << 1; uVar6 = uVar6 - 1; } while (uVar6 != 0); *(uint *)((long)crc32_table + n) = uVar4; n = n + 4; } while (n != 0x400); if (length != 0) { n = 0; do { lVar3 = n + -4; n = n + 1; uVar6 = crc32_table[(uint)(byte)waveform_file->format[lVar3] ^ uVar6 >> 0x18] ^ uVar6 << 8; } while ((uint)n < length); } if (stored_crc == uVar6) { printk("rkf file version: %s\n",waveform_file->version); global_waveform = waveform_file; return 0; } printk("[EINK]: waveform crc err readcrc = %x crccheck = %x\n",stored_crc); } printk("rkf: failed to check crc RKF waveform\n"); return -1; } printk("rkf: check format failed\n"); ret = -1; printk("rkf: failed to check RKF file format\n"); } return ret; } char * rkf_wf_get_version(void) { char *pcVar1; pcVar1 = global_waveform->full_version; if (global_waveform == (rkf_waveform *)0x0) { pcVar1 = (char *)0x0; } return pcVar1; } int rkf_wf_get_lut(epd_lut_data *output,epd_lut_type lut_type,int temperture) { int iVar1; uint uVar2; uint uVar3; byte bVar4; uint uVar5; int iVar6; byte *pbVar7; uint *puVar8; long lVar9; uint uVar10; uint uVar11; uint *puVar12; uint uVar13; uint uVar14; if (global_waveform == (rkf_waveform *)0x0) { return -0x13; } if (output == (epd_lut_data *)0x0) { return -0x16; } if ((rkf_wf_get_lut::sftemp == temperture) && (rkf_wf_get_lut::stype == lut_type)) { return 0; } rkf_wf_get_lut::sftemp = temperture; rkf_wf_get_lut::stype = lut_type; if (output->data != (uint *)0x0) { kfree(); output->data = (uint *)0x0; } iVar6 = rkf_wf_get_lut::sftemp; if ((lut_type != WF_TYPE_GRAY16) && (lut_type != WF_TYPE_GCC16)) { if (lut_type == WF_TYPE_A2) { pbVar7 = get_wf_buf(rkf_wf_get_lut::sftemp,6); bVar4 = *pbVar7; output->frame_num = (uint)bVar4; puVar8 = decode_wf_data(pbVar7,(uint)bVar4 << 6); output->data = puVar8; return (int)-(uint)(puVar8 == (uint *)0x0); } if (lut_type < WF_TYPE_GC16) { if (lut_type != WF_TYPE_GRAY4) { if (lut_type < WF_TYPE_GRAY2) { if (lut_type != WF_TYPE_RESET) { return -1; } pbVar7 = get_wf_buf(rkf_wf_get_lut::sftemp,0); bVar4 = *pbVar7; uVar13 = bVar4 + 0xf >> 4; puVar8 = decode_wf_data(pbVar7,uVar13 << 2); if (puVar8 == (uint *)0x0) { return -1; } output->frame_num = (uint)bVar4; puVar12 = (uint *)__kmalloc((ulong)uVar13 << 10,0x6080c0); if (puVar12 == (uint *)0x0) { output->data = (uint *)0x0; kfree(puVar8); return -1; } if (uVar13 != 0) { lVar9 = 0; do { uVar3 = puVar8[lVar9]; iVar6 = (int)lVar9 << 8; uVar14 = 0; do { uVar2 = (int)uVar3 >> (uVar14 & 0x1f) & 3; uVar10 = 0; uVar11 = uVar2; do { uVar5 = uVar10 & 0x1f; uVar10 = uVar10 + 2; uVar11 = uVar11 | uVar2 << (ulong)uVar5; } while (uVar10 != 0x20); iVar1 = iVar6 + 0x10; do { puVar12[iVar6] = uVar11; iVar6 = iVar6 + 1; } while (iVar6 != iVar1); uVar14 = uVar14 + 2; } while (uVar14 != 0x20); lVar9 = lVar9 + 1; } while ((int)lVar9 < (int)uVar13); } output->data = puVar12; kfree(puVar8); return 0; } if (lut_type == WF_TYPE_GRAY2) { pbVar7 = get_wf_buf(rkf_wf_get_lut::sftemp,1); bVar4 = *pbVar7; puVar8 = decode_wf_data(pbVar7,(uint)bVar4 << 6); output->data = puVar8; if (puVar8 == (uint *)0x0) { return -1; } output->frame_num = (uint)bVar4; return 0; } if (lut_type != WF_TYPE_AUTO) { return -1; } pbVar7 = get_wf_buf(rkf_wf_get_lut::sftemp,2); bVar4 = *pbVar7; output->frame_num = (uint)bVar4; puVar8 = decode_wf_data(pbVar7,(uint)bVar4 << 6); output->data = puVar8; if (puVar8 == (uint *)0x0) { return -1; } pbVar7 = get_wf_buf(iVar6,1); bVar4 = *pbVar7; output->frame_num = output->frame_num | (uint)bVar4 << 8; puVar8 = decode_wf_data(pbVar7,(uint)bVar4 << 6); if (puVar8 == (uint *)0x0) { return -1; } uVar13 = 0; puVar12 = output->data; if (bVar4 != 0) { do { lVar9 = 0; do { *(uint *)((long)puVar12 + lVar9) = *(uint *)((long)puVar8 + lVar9) & 0xc0000003 | *(uint *)((long)puVar12 + lVar9) & 0x3ffffffc; lVar9 = lVar9 + 4; } while (lVar9 != 0x40); uVar13 = uVar13 + 1; puVar8 = puVar8 + 0x10; puVar12 = puVar12 + 0x10; } while (bVar4 != uVar13); } kfree(); return 0; } } else if ((((lut_type != WF_TYPE_GL16) && (WF_TYPE_GC16 < lut_type)) && (lut_type != WF_TYPE_GLR16)) && (lut_type != WF_TYPE_GLD16)) { return -1; } } iVar6 = parse_wf_gray16(); return (int)-(uint)(iVar6 != 0); } int ebc_buf_release(ebc_buf_s *release_buf) { _mcount(); if (release_buf != (ebc_buf_s *)0x0) { if (release_buf->status == buf_osd) { kfree(release_buf); } else { release_buf->status = buf_idle; if (ebc_buf_info.use_buf_is_empty == 1) { ebc_buf_info.use_buf_is_empty = 0; __wake_up_sync(&ebc_buf_wq,1); } } } return 0; } int ebc_remove_from_dsp_buf_list(ebc_buf_s *remove_buf) { int pos; _mcount(); mutex_lock(0x10a530); if (ebc_buf_info.dsp_buf_list != (buf_list_s *)0x0) { pos = buf_list_get_pos((buf_list_t *)ebc_buf_info.dsp_buf_list,(int *)remove_buf); buf_list_remove((buf_list_t *)ebc_buf_info.dsp_buf_list,pos); } mutex_unlock(0x10a530); return 0; } int ebc_add_to_dsp_buf_list(ebc_buf_s *dsp_buf) { panel_refresh_mode pVar1; bool bVar2; int iVar3; ebc_buf_s *release_buf; _mcount(); mutex_lock(0x10a530); if (ebc_buf_info.dsp_buf_list != (buf_list_s *)0x0) { if (((dsp_buf->buf_mode != EPD_OVERLAY) && (4 < dsp_buf->buf_mode + ~EPD_A2)) && (iVar3 = (ebc_buf_info.dsp_buf_list)->nb_elt, 1 < iVar3)) { bVar2 = false; while (iVar3 = iVar3 + -1, iVar3 != 0) { release_buf = (ebc_buf_s *)buf_list_get((buf_list_t *)ebc_buf_info.dsp_buf_list,iVar3); pVar1 = release_buf->buf_mode; if (pVar1 + ~EPD_AUTO < 6 || pVar1 == EPD_DU) { if (!bVar2) goto LAB_001046f0; if ((EPD_POWER_OFF < pVar1) || ((0x3a002U >> ((ulong)pVar1 & 0x3f) & 1) == 0)) { LAB_001046d8: buf_list_remove((buf_list_t *)ebc_buf_info.dsp_buf_list,iVar3); ebc_buf_release(release_buf); } } else { if (2 < pVar1 + ~EPD_RESET) goto LAB_001046d8; LAB_001046f0: bVar2 = true; } } } dsp_buf->status = buf_dsp; iVar3 = buf_list_add((buf_list_t *)ebc_buf_info.dsp_buf_list,(int *)dsp_buf,-1); if (iVar3 == -1) { mutex_unlock(0x10a530); return -1; } } mutex_unlock(0x10a530); return 0; } int ebc_get_dsp_list_enum_num(void) { _mcount(); return (ebc_buf_info.dsp_buf_list)->nb_elt; } ebc_buf_s * ebc_find_buf_by_phy_addr(ulong phy_addr) { int iVar1; ebc_buf_s *peVar2; int pos; _mcount(); if (ebc_buf_info.buf_list == (buf_list_s *)0x0) { LAB_00104770: peVar2 = (ebc_buf_s *)0x0; } else { pos = 0; do { if ((ebc_buf_info.buf_list)->nb_elt <= pos) goto LAB_00104770; iVar1 = pos + 1; peVar2 = (ebc_buf_s *)buf_list_get((buf_list_t *)ebc_buf_info.buf_list,pos); pos = iVar1; } while ((peVar2 == (ebc_buf_s *)0x0) || (peVar2->phy_addr != phy_addr)); } return peVar2; } ebc_buf_s * ebc_dsp_buf_get(void) { ebc_buf_s *peVar1; _mcount(); mutex_lock(0x10a530); peVar1 = (ebc_buf_s *)ebc_buf_info.dsp_buf_list; if (ebc_buf_info.dsp_buf_list != (buf_list_s *)0x0) { if ((ebc_buf_info.dsp_buf_list)->nb_elt < 1) { peVar1 = (ebc_buf_s *)0x0; } else { peVar1 = (ebc_buf_s *)buf_list_get((buf_list_t *)ebc_buf_info.dsp_buf_list,0); } } mutex_unlock(0x10a530); return peVar1; } ebc_buf_s * ebc_osd_buf_get(void) { _mcount(); return ebc_buf_info.osd_buf; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address ebc_buf_s * ebc_osd_buf_clone(void) { ebc_buf_s *peVar1; ebc_buf_s *peVar2; _mcount(); peVar2 = (ebc_buf_s *)kmem_cache_alloc_trace(_DAT_0010b320,0x6080c0,0x40); peVar1 = ebc_buf_info.osd_buf; if (peVar2 != (ebc_buf_s *)0x0) { peVar2->virt_addr = (ebc_buf_info.osd_buf)->virt_addr; peVar2->phy_addr = peVar1->phy_addr; peVar2->status = buf_osd; } return peVar2; } ebc_buf_s * ebc_empty_buf_get(void) { long lVar1; int iVar2; long lVar3; ebc_buf_s *peVar4; int pos; undefined8 uVar5; wait_queue_entry __wq_entry; _mcount(); lVar1 = __stack_chk_guard; peVar4 = (ebc_buf_s *)ebc_buf_info.buf_list; if (ebc_buf_info.buf_list != (buf_list_s *)0x0) { lVar3 = cRead_8(sp_el0); pos = 0; do { do { if ((ebc_buf_info.buf_list)->nb_elt <= pos) { ebc_buf_info.use_buf_is_empty = 1; _cond_resched(); if (ebc_buf_info.use_buf_is_empty != 1) goto __out; init_wait_entry(&__wq_entry,0); goto LAB_00104998; } iVar2 = pos + 1; peVar4 = (ebc_buf_s *)buf_list_get((buf_list_t *)ebc_buf_info.buf_list,pos); pos = iVar2; } while (peVar4 == (ebc_buf_s *)0x0); if (peVar4->status == buf_idle) { peVar4->status = buf_user; lVar3 = cRead_8(sp_el0); uVar5 = *(undefined8 *)(lVar3 + 0x720); *(undefined8 *)peVar4->tid_name = *(undefined8 *)(lVar3 + 0x718); *(undefined8 *)(peVar4->tid_name + 8) = uVar5; break; } } while ((peVar4->status != buf_user) || (iVar2 = strncmp(peVar4->tid_name,(char *)(lVar3 + 0x718),9), iVar2 != 0)); } goto LAB_001048dc; LAB_00104998: lVar3 = prepare_to_wait_event(&ebc_buf_wq,&__wq_entry,1); if (ebc_buf_info.use_buf_is_empty != 1) goto LAB_001049c0; if (lVar3 != 0) goto __out; schedule(); goto LAB_00104998; LAB_001049c0: finish_wait(&ebc_buf_wq,&__wq_entry); __out: peVar4 = ebc_empty_buf_get(); LAB_001048dc: if (lVar1 - __stack_chk_guard == 0) { return peVar4; } // WARNING: Subroutine does not return __stack_chk_fail(strcpy,0,lVar1 - __stack_chk_guard); } ulong ebc_phy_buf_base_get(void) { _mcount(); return ebc_buf_info.phy_mem_base; } char * ebc_virt_buf_base_get(void) { _mcount(); return ebc_buf_info.virt_mem_base; } int ebc_buf_uninit(void) { int *piVar1; int pos; _mcount(); ebc_buf_info.buf_total_num = 0; if (ebc_buf_info.buf_list != (buf_list_s *)0x0) { pos = (ebc_buf_info.buf_list)->nb_elt; while (pos = pos + -1, -1 < pos) { piVar1 = buf_list_get((buf_list_t *)ebc_buf_info.buf_list,pos); if (piVar1 != (int *)0x0) { kfree(); } buf_list_remove((buf_list_t *)ebc_buf_info.buf_list,pos); } } return 0; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address // WARNING: Restarted to delay deadcode elimination for space: ram int ebc_buf_init(ulong phy_start,char *mem_start,int men_len,int dest_buf_len,int max_buf_num) { buf_list_s *li; int iVar1; int iVar2; int *el; ebc_buf_s *peVar3; _mcount(); if ((-1 < max_buf_num) && (mem_start != (char *)0x0)) { __mutex_init(0x10a530,"&ebc_buf_info.dsp_lock",&ebc_buf_init::lexical_block_0::__key); iVar1 = buf_list_init((buf_list_t **)&ebc_buf_info.buf_list,100); if (iVar1 == 0) { iVar1 = buf_list_init((buf_list_t **)&ebc_buf_info.dsp_buf_list,100); if (iVar1 == 0) { ebc_buf_info.buf_total_num = 0; ebc_buf_info.phy_mem_base = phy_start; ebc_buf_info.virt_mem_base = mem_start; iVar1 = dest_buf_len; do { if (men_len < iVar1) break; el = (int *)kmem_cache_alloc_trace(_DAT_0010b320,0x6080c0,0x40); li = ebc_buf_info.buf_list; if (el == (int *)0x0) goto LAB_00104c18; *el = 0; *(ulong *)(el + 2) = phy_start; *(char **)(el + 4) = mem_start; el[0xb] = dest_buf_len; iVar2 = buf_list_add((buf_list_t *)li,el,-1); if (iVar2 == -1) goto LAB_00104c18; ebc_buf_info.use_buf_is_empty = 0; mem_start = mem_start + dest_buf_len; phy_start = phy_start + (long)dest_buf_len; iVar1 = iVar1 + dest_buf_len; } while ((ebc_buf_info.buf_list)->nb_elt != max_buf_num); ebc_buf_info.buf_total_num = (ebc_buf_info.buf_list)->nb_elt; if (men_len < iVar1) { return 0; } peVar3 = (ebc_buf_s *)kmem_cache_alloc_trace(_DAT_0010b320,0x6080c0,0x40); if (peVar3 != (ebc_buf_s *)0x0) { peVar3->status = buf_osd; peVar3->phy_addr = phy_start; peVar3->virt_addr = mem_start; peVar3->len = dest_buf_len; ebc_buf_info.osd_buf = peVar3; return 0; } LAB_00104c18: ebc_buf_uninit(); buf_list_uninit((buf_list_t *)ebc_buf_info.dsp_buf_list); } buf_list_uninit((buf_list_t *)ebc_buf_info.buf_list); } } return -1; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address int buf_list_init(buf_list_t **li,int maxelements) { buf_list_t *pbVar1; int **ppiVar2; ulong __n; _mcount(); pbVar1 = (buf_list_t *)kmem_cache_alloc_trace(_DAT_0010b320,0x6000c0,0x18); *li = pbVar1; if (pbVar1 != (buf_list_t *)0x0) { pbVar1->nb_elt = 0; pbVar1->array_elements = (int **)0x0; pbVar1->maxelements = maxelements; __n = -(ulong)((uint)maxelements >> 0x1f) & 0xfffffff800000000 | (ulong)(uint)maxelements << 3; ppiVar2 = (int **)__kmalloc(__n,0x6000c0); pbVar1->array_elements = ppiVar2; ppiVar2 = (*li)->array_elements; if (ppiVar2 != (int **)0x0) { memset(ppiVar2,0,__n); return 0; } kfree(*li); } return -0xc; } int buf_list_uninit(buf_list_t *li) { _mcount(); if (li != (buf_list_t *)0x0) { if (li->array_elements != (int **)0x0) { memset(li->array_elements,0,(long)li->maxelements << 3); kfree(li->array_elements); li->array_elements = (int **)0x0; } kfree(li); } return 0; } int buf_list_eol(buf_list_t *li,int i) { uint uVar1; _mcount(); if (((li == (buf_list_t *)0x0) || (li->array_elements == (int **)0x0)) || (i < 0)) { uVar1 = 1; } else { uVar1 = (uint)(li->nb_elt <= i); } return (int)uVar1; } int * buf_list_get(buf_list_t *li,int pos) { _mcount(); if (li != (buf_list_t *)0x0) { if (li->array_elements == (int **)0x0) { return (int *)0x0; } if ((-1 < pos) && (pos < li->nb_elt)) { return li->array_elements[pos]; } } return (int *)0x0; } int buf_list_remove(buf_list_t *li,int pos) { int iVar1; _mcount(); if ((((li == (buf_list_t *)0x0) || (li->array_elements == (int **)0x0)) || (pos < 0)) || (li->nb_elt <= pos)) { iVar1 = -1; } else { while( true ) { iVar1 = li->nb_elt + -1; if (iVar1 <= pos) break; li->array_elements[pos] = li->array_elements[pos + 1]; pos = pos + 1; } li->nb_elt = iVar1; } return iVar1; } int buf_list_add(buf_list_t *li,int *el,int pos) { undefined8 *puVar1; int iVar2; uint uVar3; ulong uVar4; ulong uVar5; ulong uVar6; _mcount(); if ((li != (buf_list_t *)0x0) && (li->array_elements != (int **)0x0)) { uVar3 = li->nb_elt; if ((-1 < pos) && (pos < (int)uVar3)) { uVar6 = (ulong)(uVar3 - 1); uVar4 = -(ulong)(uVar3 >> 0x1f) & 0xfffffff800000000 | (ulong)uVar3 << 3; uVar5 = -(ulong)(uVar3 - 1 >> 0x1f) & 0xfffffff800000000 | uVar6 << 3; for (; uVar3 = pos, pos <= (int)uVar6; uVar6 = (ulong)((int)uVar6 - 1)) { puVar1 = (undefined8 *)((long)li->array_elements + uVar5); uVar5 = uVar5 - 8; *(undefined8 *)((long)li->array_elements + uVar4) = *puVar1; uVar4 = uVar4 - 8; } } if ((int)uVar3 < li->maxelements) { li->array_elements[(int)uVar3] = el; iVar2 = li->nb_elt + 1; li->nb_elt = iVar2; return iVar2; } } return -1; } int * buf_list_find(buf_list_t *list,int *node,anon_subr_int_int_ptr_int_ptr *cmp_func) { int iVar1; int iVar2; int *piVar3; _mcount(); if ((list != (buf_list_t *)0x0) && (list->array_elements != (int **)0x0)) { for (iVar2 = 0; iVar2 < list->nb_elt; iVar2 = iVar2 + 1) { piVar3 = list->array_elements[iVar2]; iVar1 = (*cmp_func)(node,piVar3); if (iVar1 == 0) { return piVar3; } } } return (int *)0x0; } int buf_list_get_pos(buf_list_t *list,int *node) { long lVar1; _mcount(); if (((list != (buf_list_t *)0x0) && (list->array_elements != (int **)0x0)) && (0 < list->nb_elt)) { lVar1 = 0; do { if (list->array_elements[lVar1] == node) { return (int)lVar1; } lVar1 = lVar1 + 1; } while ((int)lVar1 < list->nb_elt); } return -1; } int buf_list_set(buf_list_t *li,int *el,int pos) { int iVar1; _mcount(); if ((((li == (buf_list_t *)0x0) || (li->array_elements == (int **)0x0)) || (pos < 0)) || (li->nb_elt <= pos)) { iVar1 = -1; } else { li->array_elements[pos] = el; iVar1 = 0; } return iVar1; } // WARNING: Could not reconcile some variable overlaps int ebc_pmic_set_vcom(ebc_pmic_conflict *pmic,int value) { long lVar1; int iVar2; char data [64]; _mcount(); lVar1 = __stack_chk_guard; data._0_8_ = 0; data._8_8_ = 0; data._16_8_ = 0; data._24_8_ = 0; data._32_8_ = 0; data._40_8_ = 0; data._48_8_ = 0; data._56_8_ = 0; if (value - 1U < 0x13f6) { _dev_info(pmic->dev,"set chip vcom to: %dmV\n",value); (*pmic->pmic_set_vcom)(pmic,value); memset(data,0,0x40); sprintf(data,"%d",(ulong)(uint)value); _dev_info(pmic->dev,"store vcom %d to vendor storage\n",value); iVar2 = rk_vendor_write(0x11,data,0x40); if (iVar2 < 0) { _dev_err(pmic->dev,"%s failed to write vendor storage\n","ebc_pmic_set_vcom"); } else { iVar2 = 0; } } else { iVar2 = -1; _dev_err(pmic->dev,"vcom value should be %d~%d\n",0,0x13f6); } if (lVar1 - __stack_chk_guard != 0) { // WARNING: Subroutine does not return __stack_chk_fail(strcpy,0,lVar1 - __stack_chk_guard); } return iVar2; } // WARNING: Globals starting with '_' overlap smaller symbols at the same address void ebc_pmic_verity_vcom(ebc_pmic_conflict *pmic) { int iVar1; int iVar2; _mcount(); iVar2 = ___key; if (___key - 1U < 0x13f6) { iVar1 = (*pmic->pmic_get_vcom)(pmic); if (iVar2 != iVar1) { _dev_info(pmic->dev,"chip_vcom %d != vendor_vcom %d, set vcom from vendor\n",iVar1,iVar2); iVar2 = (*pmic->pmic_set_vcom)(pmic,iVar2); if (iVar2 != 0) { _dev_err(pmic->dev,"set vcom value failed\n"); } } } else { _dev_err(pmic->dev,"invaild vcom value %d from vendor storage\n",___key); } return; } int tps65185_remove(i2c_client_conflict *client) { _mcount(); return 0; } // WARNING: Could not reconcile some variable overlaps int papyrus_hw_getreg(papyrus_sess *sess,uint8_t regaddr,uint8_t *val) { long lVar1; int iVar2; i2c_client_conflict *piVar3; int iVar4; uint8_t local_31 [9]; i2c_msg msgs [2]; local_31[0] = regaddr; _mcount(); lVar1 = __stack_chk_guard; piVar3 = sess->client; msgs[0].addr = piVar3->addr; msgs[0]._2_4_ = 0x10000; msgs[0].buf = local_31; msgs[1].addr = piVar3->addr; msgs[1]._2_4_ = 0x10001; msgs[1].buf = val; iVar2 = i2c_transfer(piVar3->adapter,msgs,2); if (iVar2 < 0) { _dev_err(&sess->client->dev,"i2c read error: %d\n",iVar2); iVar4 = iVar2; } else if (iVar2 == 2) { iVar4 = 0; } else { iVar4 = -5; _dev_err(&sess->client->dev,"i2c read N mismatch: %d\n",iVar2); } if (lVar1 - __stack_chk_guard != 0) { // WARNING: Subroutine does not return __stack_chk_fail(strcpy,0,lVar1 - __stack_chk_guard); } return iVar4; } int papyrus_hw_read_temperature(ebc_pmic *pmic,int *t) { int iVar1; uint8_t local_9; long local_8; _mcount(); local_8 = __stack_chk_guard; iVar1 = papyrus_hw_getreg((papyrus_sess *)pmic->drvpar,'\0',&local_9); *t = (int)(char)local_9; if (local_8 - __stack_chk_guard != 0) { // WARNING: Subroutine does not return __stack_chk_fail(iVar1,strcpy,0,local_8 - __stack_chk_guard); } return iVar1; } int papyrus_hw_setreg(papyrus_sess *sess,uint8_t regaddr,uint8_t val) { long lVar1; int iVar2; int iVar3; i2c_msg msgs [1]; uint8_t txbuf [2]; _mcount(); lVar1 = __stack_chk_guard; msgs[0].addr = sess->client->addr; msgs[0]._2_4_ = 0x20000; msgs[0].buf = txbuf; txbuf[0] = regaddr; txbuf[1] = val; iVar2 = i2c_transfer(sess->client->adapter,msgs,1); if (iVar2 < 0) { _dev_err(&sess->client->dev,"i2c send error: %d\n",iVar2); iVar3 = iVar2; } else if (iVar2 == 1) { iVar3 = 0; } else { iVar3 = -5; _dev_err(&sess->client->dev,"i2c send N mismatch: %d\n",iVar2); } if (lVar1 - __stack_chk_guard != 0) { // WARNING: Subroutine does not return __stack_chk_fail(strcpy,0,lVar1 - __stack_chk_guard); } return iVar3; } int papyrus_hw_vcom_set(ebc_pmic *pmic,int vcom_mv) { byte val; uint8_t val_00; uint uVar1; uint uVar2; uint uVar3; papyrus_sess *sess; byte local_9; long local_8; _mcount(); sess = (papyrus_sess *)pmic->drvpar; local_8 = __stack_chk_guard; local_9 = 0; mutex_lock(&sess->power_lock,0); gpiod_direction_output(sess->wake_up_pin,1); msleep(10); val_00 = (uint8_t)(vcom_mv / 10); sess->vcom1 = val_00; sess->vcom2 = (byte)((uint)(vcom_mv / 10) >> 8) & 1; uVar1 = papyrus_hw_setreg(sess,'\x03',val_00); uVar2 = papyrus_hw_setreg(sess,'\x04',sess->vcom2); val = sess->vcom2 | 0x40; sess->vcom2 = val; uVar3 = papyrus_hw_setreg(sess,'\x04',val); uVar3 = uVar1 | uVar2 | uVar3; local_9 = 0; do { uVar1 = papyrus_hw_getreg(sess,'\a',&local_9); uVar3 = uVar3 | uVar1; if (uVar3 != 0) { _dev_err(&sess->client->dev,"papyrus: I2C error: %d\n",uVar3); break; } msleep(0x32); } while ((local_9 & 1) == 0); mutex_unlock(&sess->power_lock); if (local_8 - __stack_chk_guard == 0) { return 0; } // WARNING: Subroutine does not return __stack_chk_fail(strcpy,0,local_8 - __stack_chk_guard); } int papyrus_hw_vcom_get(ebc_pmic *pmic) { int iVar1; byte bVar2; uint uVar3; uint uVar4; uint uVar5; papyrus_sess *sess; byte local_9; long local_8; _mcount(); local_8 = __stack_chk_guard; sess = (papyrus_sess *)pmic->drvpar; local_9 = 0; mutex_lock(&sess->power_lock,0); gpiod_direction_output(sess->wake_up_pin,0); msleep(10); gpiod_direction_output(sess->wake_up_pin,1); msleep(10); uVar3 = papyrus_hw_getreg(sess,'\x03',&local_9); bVar2 = local_9; uVar4 = papyrus_hw_getreg(sess,'\x04',&local_9); uVar5 = (uint)local_9; if ((uVar3 | uVar4) != 0) { _dev_err(&sess->client->dev,"papyrus: I2C error: %d\n"); } mutex_unlock(&sess->power_lock); iVar1 = ((uVar5 & 1) * 0x100 + (uint)bVar2) * 10; if (local_8 - __stack_chk_guard != 0) { // WARNING: Subroutine does not return __stack_chk_fail(iVar1,strcpy,0,local_8 - __stack_chk_guard); } return iVar1; } void papyrus_hw_power_req(ebc_pmic *pmic,bool up) { byte bVar1; uint uVar2; uint uVar3; uint uVar4; uint uVar5; uint uVar6; uint uVar7; uint uVar8; gpio_desc *pgVar9; papyrus_sess *sess; _mcount(); sess = (papyrus_sess *)pmic->drvpar; if (up != false) { mutex_lock(&sess->power_lock); } if (papyrus_need_reconfig == false) { if (up != false) { pgVar9 = sess->pwr_up_pin; if ((pgVar9 != (gpio_desc *)0x0) && (pgVar9 < (gpio_desc *)0xfffffffffffff001)) { gpiod_direction_output(pgVar9,1); } enable_irq(sess->irq); return; } disable_irq(sess->irq); pgVar9 = sess->pwr_up_pin; if ((pgVar9 != (gpio_desc *)0x0) && (pgVar9 < (gpio_desc *)0xfffffffffffff001)) { gpiod_direction_output(pgVar9,0); } } else { if (up == false) { disable_irq(sess->irq); sess->enable_reg_shadow = 'o'; uVar2 = papyrus_hw_setreg(sess,'\x01','o'); usleep_range(2000,3000); bVar1 = sess->enable_reg_shadow & 0xdf; sess->enable_reg_shadow = bVar1; uVar3 = papyrus_hw_setreg(sess,'\x01',bVar1); if ((uVar2 | uVar3) != 0) { _dev_err(&sess->client->dev,"i2c error: %d\n"); } } else { uVar2 = papyrus_hw_setreg(sess,'\x02',sess->vadj); uVar3 = papyrus_hw_setreg(sess,'\t',sess->upseq0); uVar4 = papyrus_hw_setreg(sess,'\n',sess->upseq1); uVar5 = papyrus_hw_setreg(sess,'\v',sess->dwnseq0); uVar6 = papyrus_hw_setreg(sess,'\f',sess->dwnseq1); bVar1 = sess->enable_reg_shadow | 0x20; sess->enable_reg_shadow = bVar1; uVar7 = papyrus_hw_setreg(sess,'\x01',bVar1); usleep_range(2000,3000); sess->enable_reg_shadow = 0xbf; uVar8 = papyrus_hw_setreg(sess,'\x01',0xbf); if ((uVar8 | uVar6 | uVar7 | uVar4 | uVar5 | uVar2 | uVar3) != 0) { _dev_err(&sess->client->dev,"i2c error: %d\n"); } pgVar9 = sess->pwr_up_pin; if ((pgVar9 != (gpio_desc *)0x0) && (pgVar9 < (gpio_desc *)0xfffffffffffff001)) { gpiod_direction_output(pgVar9,1); } enable_irq(sess->irq); } papyrus_need_reconfig = false; if (up != false) { papyrus_need_reconfig = false; return; } } mutex_unlock(&sess->power_lock); return; } void papyrus_pm_sleep(ebc_pmic *pmic) { ulong uVar1; void *pvVar2; _mcount(); pvVar2 = pmic->drvpar; cancel_delayed_work_sync((long)pvVar2 + 0x88); mutex_lock((long)pvVar2 + 0x48); gpiod_direction_output(*(undefined8 *)((long)pvVar2 + 0x40),0); gpiod_direction_output(*(undefined8 *)((long)pvVar2 + 0x38),0); uVar1 = *(ulong *)((long)pvVar2 + 0x28); if ((uVar1 != 0) && (uVar1 < 0xfffffffffffff001)) { gpiod_direction_output(uVar1,0); } papyrus_need_reconfig = true; mutex_unlock((long)pvVar2 + 0x48); return; } void papyrus_tmp_work(work_struct *work) { _mcount(); papyrus_hw_setreg((papyrus_sess *)&work[-3].entry,'\r',0x80); queue_delayed_work_on(8,work[-1].android_kabi_reserved2,work,10000); return; } void papyrus_pm_resume(ebc_pmic *pmic) { gpio_desc *pgVar1; papyrus_sess *sess; _mcount(); sess = (papyrus_sess *)pmic->drvpar; mutex_lock(&sess->power_lock); pgVar1 = sess->pwr_en_pin; if ((pgVar1 != (gpio_desc *)0x0) && (pgVar1 < (gpio_desc *)0xfffffffffffff001)) { gpiod_direction_output(pgVar1,1); usleep_range(2000,3000); } gpiod_direction_output(sess->wake_up_pin,1); gpiod_direction_output(sess->vcom_ctl_pin,1); usleep_range(2000,3000); mutex_unlock(&sess->power_lock); papyrus_hw_setreg(sess,'\r',0x80); queue_delayed_work_on(8,sess->tmp_monitor_wq,&sess->tmp_delay_work,10000); return; } // WARNING: Type propagation algorithm not settling int tps65185_probe(i2c_client_conflict *client,i2c_device_id *id) { device *pdVar1; u32 uVar2; int iVar3; uint uVar4; list_head *plVar5; papyrus_sess *sess; ulong uVar6; device *pdVar7; undefined8 uVar8; workqueue_struct *pwVar9; char *pcVar10; byte local_9; long local_8; _mcount(); local_8 = __stack_chk_guard; pdVar1 = &client->dev; uVar2 = (*client->adapter->algo->functionality)(client->adapter); if ((uVar2 & 1) == 0) { pcVar10 = "i2c check functionality failed."; } else { plVar5 = (list_head *)devm_kmalloc(pdVar1,0x50,0x6080c0); if (plVar5 == (list_head *)0x0) { _dev_err(pdVar1,"%s:%d: kzalloc failed\n","tps65185_probe",0x270); iVar3 = -0xc; goto LAB_00105adc; } sess = (papyrus_sess *)devm_kmalloc(pdVar1,0x110,0x6080c0); if (sess == (papyrus_sess *)0x0) { _dev_err(pdVar1,"%s:%d: kzalloc failed\n","papyrus_probe",0x216); goto LAB_00105b34; } sess->client = client; __mutex_init(&sess->enable_reg_shadow + 0x38,"&sess->power_lock",&__key_1); (&sess->enable_reg_shadow)[1] = '\x03'; *(undefined2 *)(&sess->enable_reg_shadow + 2) = 0x9c; *(undefined4 *)(&sess->enable_reg_shadow + 4) = 0x1e00e1; uVar6 = devm_gpiod_get_optional(pdVar1,"poweren",7); *(ulong *)(&sess->enable_reg_shadow + 0x18) = uVar6; if ((uVar6 == 0) || (0xfffffffffffff000 < uVar6)) { _dev_err(pdVar1,"tsp65185: failed to find poweren pin, no defined\n"); } uVar6 = devm_gpiod_get_optional(pdVar1,"wakeup",7); *(ulong *)(&sess->enable_reg_shadow + 0x28) = uVar6; pdVar7 = pdVar1; if ((uVar6 == 0) || (0xfffffffffffff000 < uVar6)) { pcVar10 = "tsp65185: failed to find wakeup pin\n"; LAB_00105bdc: _dev_err(pdVar7,pcVar10); } else { uVar6 = devm_gpiod_get_optional(pdVar1,"vcomctl",7); *(ulong *)(&sess->enable_reg_shadow + 0x30) = uVar6; if ((uVar6 == 0) || (0xfffffffffffff000 < uVar6)) { pcVar10 = "tsp65185: failed to find vcom_ctl pin\n"; goto LAB_00105bdc; } uVar6 = devm_gpiod_get_optional(pdVar1,"powerup",7); *(ulong *)(&sess->enable_reg_shadow + 0x20) = uVar6; if ((uVar6 == 0) || (0xfffffffffffff000 < uVar6)) { _dev_err(pdVar1,"tsp65185: no pwr_up pin find\n"); } uVar6 = devm_gpiod_get(pdVar1,&DAT_00108af6,1); *(ulong *)(&sess->enable_reg_shadow + 0x10) = uVar6; if (uVar6 < 0xfffffffffffff001) { uVar8 = gpiod_to_irq(); *(int *)(&sess->enable_reg_shadow + 8) = (int)uVar8; if ((int)uVar8 < 0) { _dev_err(pdVar1,"Unable to get irq number for int pin\n"); iVar3 = *(int *)(&sess->enable_reg_shadow + 8); goto LAB_00105c7c; } irq_modify_status(uVar8,0,0x1000); iVar3 = devm_request_threaded_irq (pdVar1,*(undefined4 *)(&sess->enable_reg_shadow + 8),0,papyrus_irq,0x2008 ,"tps65185",sess); if (iVar3 == 0) { pwVar9 = (workqueue_struct *) __alloc_workqueue_key(&DAT_00108b7f,0xa000e,1,0,0,"tps-tmp-monitor-wq"); sess->tmp_monitor_wq = pwVar9; (&sess->tmp_monitor_wq)[1] = (workqueue_struct *)0xfffffffe0; (&sess->tmp_monitor_wq)[2] = (workqueue_struct *)(&sess->tmp_monitor_wq + 2); (&sess->tmp_monitor_wq)[3] = (workqueue_struct *)(&sess->tmp_monitor_wq + 2); *(code **)&sess->tmp_delay_work = papyrus_tmp_work; init_timer_key((timer_list *)&sess->tmp_delay_work,&delayed_work_timer_fn,0x200000,0,0); queue_delayed_work_on(8,sess->tmp_monitor_wq,&sess->tmp_monitor_wq + 1,10000); uVar6 = *(ulong *)(&sess->enable_reg_shadow + 0x18); if ((uVar6 != 0) && (uVar6 < 0xfffffffffffff001)) { gpiod_direction_output(uVar6,1); usleep_range(2000,3000); } gpiod_direction_output(*(undefined8 *)(&sess->enable_reg_shadow + 0x28),0); msleep(0x6e); gpiod_direction_output(*(undefined8 *)(&sess->enable_reg_shadow + 0x28),1); uVar6 = *(ulong *)(&sess->enable_reg_shadow + 0x20); if ((uVar6 != 0) && (uVar6 < 0xfffffffffffff001)) { gpiod_direction_output(uVar6,0); } gpiod_direction_output(*(undefined8 *)(&sess->enable_reg_shadow + 0x30),1); msleep(0x32); uVar4 = papyrus_hw_getreg(sess,'\x10',&local_9); uVar6 = (ulong)uVar4; if (uVar4 == 0) { uVar6 = (ulong)local_9; } else { _dev_err(&sess->client->dev,"i2c error: %d\n",uVar4); if ((int)uVar4 < 0) { pcVar10 = "get id failed"; pdVar7 = &sess->client->dev; goto LAB_00105bdc; } } _dev_info(&sess->client->dev,"detected device with ID=%02x (TPS6518%dr%dp%d)\n",uVar6, (uint)uVar6 & 0xf,uVar6 >> 6 & 3,uVar6 >> 4 & 3); sess->enable_reg_shadow = '\0'; iVar3 = papyrus_hw_setreg(sess,'\x01','\0'); if (iVar3 != 0) goto LAB_00105b34; papyrus_hw_setreg(sess,'\r',0x80); plVar5[4].next = (list_head *)papyrus_hw_vcom_get; plVar5[4].prev = (list_head *)papyrus_hw_vcom_set; plVar5[3].next = (list_head *)papyrus_pm_resume; plVar5[2].prev = (list_head *)papyrus_pm_sleep; plVar5[1].prev = (list_head *)sess; plVar5[2].next = (list_head *)papyrus_hw_power_req; plVar5[3].prev = (list_head *)papyrus_hw_read_temperature; goto LAB_00105eb0; } _dev_err(pdVar1,"Failed to enable IRQ, error: %d\n",iVar3); } else { _dev_err(pdVar1,"tsp65185: failed to find int pin\n"); iVar3 = *(int *)(&sess->enable_reg_shadow + 0x10); LAB_00105c7c: if (iVar3 == 0) { LAB_00105eb0: plVar5->next = (list_head *)pdVar1; strcpy((char *)&plVar5->prev,"tps65185"); (client->dev).links.consumers.next = plVar5; _dev_info(pdVar1,"tps65185 probe ok.\n"); iVar3 = 0; goto LAB_00105adc; } } } LAB_00105b34: pcVar10 = "tps65185 hw init failed."; } _dev_err(pdVar1,pcVar10); iVar3 = -0x13; LAB_00105adc: if (local_8 - __stack_chk_guard == 0) { return iVar3; } // WARNING: Subroutine does not return __stack_chk_fail(iVar3,strcpy,0,local_8 - __stack_chk_guard); } irqreturn_t papyrus_irq(int irq,void *dev_id) { long lVar1; int iVar2; papyrus_hw_state hwst; _mcount(); lVar1 = __stack_chk_guard; iVar2 = papyrus_hw_getreg((papyrus_sess *)dev_id,'\a',&hwst.int_status1); if (iVar2 != 0) { _dev_err(*(long *)((long)dev_id + 8) + 0x20,"i2c error: %d\n",iVar2); } iVar2 = papyrus_hw_getreg((papyrus_sess *)dev_id,'\b',&hwst.int_status2); if (iVar2 != 0) { _dev_err(*(long *)((long)dev_id + 8) + 0x20,"i2c error: %d\n",iVar2); } _dev_info(*(long *)((long)dev_id + 8) + 0x20,"%s: (INT1 = %02x, INT2 = %02x)\n","papyrus_irq", hwst.int_status1,hwst.int_status2); if ((hwst.int_status2 & 0xfa | hwst.int_status1 & 4) != 0) { papyrus_hw_setreg((papyrus_sess *)dev_id,'\x01',*(uint8_t *)((long)dev_id + 0x10)); } if (lVar1 - __stack_chk_guard != 0) { // WARNING: Subroutine does not return __stack_chk_fail(strcpy,0,lVar1 - __stack_chk_guard); } return IRQ_HANDLED; } bool tcon_is_volatile_reg(device *dev,uint reg) { bool bVar1; _mcount(); bVar1 = (bool)((byte)(0x111 >> ((ulong)reg & 0x3f)) & 1 ^ 1); if (8 < reg) { bVar1 = true; } return bVar1; } int ebc_tcon_remove(platform_device_conflict *pdev) { _mcount(); __pm_runtime_disable(&pdev->dev,1); return 0; } void tcon_image_addr_set(ebc_tcon *tcon,u32 pre_image_addr,u32 cur_image_addr) { _mcount(); regmap_write(tcon->regmap_base,0x24,pre_image_addr); regmap_write(tcon->regmap_base,0x28,cur_image_addr); regmap_write(tcon->regmap_base,0x50,1); return; } void tcon_frame_addr_set(ebc_tcon *tcon,u32 frame_addr) { _mcount(); regmap_write(tcon->regmap_base,0x58,frame_addr); regmap_write(tcon->regmap_base,0x50,1); return; } int tcon_lut_data_set(ebc_tcon *tcon,uint *lut_data,int frame_count,int lut_32) { uint *puVar1; int iVar2; int iVar3; long lVar4; _mcount(); if ((frame_count < 0x101 || lut_32 != 0) && (frame_count < 0x41 || lut_32 == 0)) { lVar4 = 0; iVar2 = frame_count << 4; if (lut_32 != 0) { iVar2 = frame_count << 6; } while( true ) { iVar3 = (int)lVar4; if (iVar2 <= iVar3) break; puVar1 = lut_data + lVar4; lVar4 = lVar4 + 1; regmap_write(tcon->regmap_base,iVar3 * 4 + 0x1000,*puVar1); } regmap_write(tcon->regmap_base,0x50,1); iVar2 = 0; } else { _dev_err(tcon->dev,"frame count over flow\n"); iVar2 = -1; } return iVar2; } void tcon_dsp_mode_set(ebc_tcon *tcon,int update_mode,int display_mode,int three_win_mode, int eink_mode) { _mcount(); regmap_update_bits_base (tcon->regmap_base,8,0x30000000, (uint)(update_mode != 0) << 0x1d | (uint)(display_mode != 0) << 0x1c,0,0,0); regmap_update_bits_base(tcon->regmap_base,4,0x80,(ulong)(three_win_mode != 0) << 7,0,0,0); regmap_update_bits_base(tcon->regmap_base,0,0x2001,(ulong)(eink_mode != 0) << 0xd,0,0,0); regmap_write(tcon->regmap_base,0x50,1); return; } void tcon_frame_start(ebc_tcon *tcon,int frame_total) { _mcount(); regmap_write(tcon->regmap_base,0x3c,0xd0); regmap_update_bits_base(tcon->regmap_base,0,0x3fd,(frame_total - 1U & 0xff) << 2,0,0,0); regmap_write(tcon->regmap_base,0x50,1); regmap_update_bits_base(tcon->regmap_base,0,1,1,0,0,0); return; } void tcon_disable(ebc_tcon *tcon) { clk *pcVar1; _mcount(); disable_irq(tcon->irq); regmap_update_bits_base(tcon->regmap_base,0,0x80000001,0x80000000,0,0,0); __pm_runtime_idle(tcon->dev,4); pcVar1 = tcon->dclk; clk_disable(pcVar1); clk_unprepare(pcVar1); pcVar1 = tcon->hclk; clk_disable(pcVar1); clk_unprepare(pcVar1); return; } int tcon_enable(ebc_tcon *tcon,ebc_panel *panel) { bool bVar1; int iVar2; uint uVar3; uint uVar4; clk *pcVar5; _mcount(); pcVar5 = tcon->hclk; iVar2 = clk_prepare(pcVar5); if ((iVar2 == 0) && (iVar2 = clk_enable(pcVar5), iVar2 != 0)) { clk_unprepare(pcVar5); } pcVar5 = tcon->dclk; iVar2 = clk_prepare(pcVar5); if ((iVar2 == 0) && (iVar2 = clk_enable(pcVar5), iVar2 != 0)) { clk_unprepare(pcVar5); } __pm_runtime_resume(tcon->dev,4); regmap_write(tcon->regmap_base,0xc, (panel->ldl + panel->lel + panel->lsl + panel->lbl & 0xfff) << 0x10 | panel->lsl + 2 & 0xff); iVar2 = panel->lsl + panel->lbl; regmap_write(tcon->regmap_base,0x10,(iVar2 + panel->ldl & 0x7ff) << 0x10 | iVar2 - 1U & 0xff); regmap_write(tcon->regmap_base,0x14, (panel->fdl + panel->fel + panel->fsl + panel->fbl & 0x7ff) << 0x10 | panel->fsl & 0xff); uVar3 = panel->fsl + panel->fbl; regmap_write(tcon->regmap_base,0x18,(uVar3 + panel->fdl & 0x7ff) << 0x10 | uVar3 & 0xff); regmap_write(tcon->regmap_base,0x1c,(panel->height & 0x7ff) << 0x10 | panel->width & 0xfff); regmap_write(tcon->regmap_base,0x2c,(uint)*(ushort *)&panel->vir_width | panel->vir_height << 0x10 ); regmap_write(tcon->regmap_base,0x30,(panel->height & 0x7ff) << 0x10 | panel->width & 0xfff); regmap_write(tcon->regmap_base,0x34,(panel->height & 0x7ff) << 0x10 | panel->width & 0xfff); regmap_write(tcon->regmap_base,0x38, (panel->fsl + panel->fbl & 0x7ff) << 0x10 | panel->lsl + panel->lbl & 0xfff); regmap_write(tcon->regmap_base,0x20,0xf841fc0); uVar3 = panel->lsl + panel->gdck_sta; regmap_write(tcon->regmap_base,4, (uVar3 & 0xff) << 8 | (uint)(panel->panel_16bit != 0) << 6 | (uVar3 + panel->lgonl & 0x7ff) << 0x10 | 0x80000003); regmap_write(tcon->regmap_base,0,(panel->ldl & 0x3ff) << 0x10 | 0x1000); bVar1 = panel->panel_16bit == 0; uVar3 = 0x88000000; if (bVar1) { uVar3 = 0xc8000000; } uVar4 = 0x70000; if (bVar1) { uVar4 = 0x30000; } regmap_write(tcon->regmap_base,8,uVar4 | uVar3); regmap_write(tcon->regmap_base,0x50,1); enable_irq(tcon->irq); return 0; } // WARNING: Type propagation algorithm not settling int ebc_tcon_probe(platform_device_conflict *pdev) { device *pdVar1; list_head *plVar2; undefined8 *puVar3; list_head *plVar4; list_head *plVar5; undefined8 uVar6; ulong uVar7; char *pcVar8; _mcount(); pdVar1 = &pdev->dev; plVar2 = (list_head *)devm_kmalloc(pdVar1,0x70,0x6080c0); if (plVar2 == (list_head *)0x0) { plVar4 = (list_head *)0xfffffff4; } else { puVar3 = (undefined8 *)platform_get_resource(pdev,0x200,0); plVar4 = (list_head *)devm_ioremap_resource(pdVar1,puVar3); plVar2->prev = plVar4; if (plVar4 < (list_head *)0xfffffffffffff001) { *(int *)&plVar2[1].next = ((int)puVar3[1] + 1) - (int)*puVar3; ebc_regmap_config.max_register = ((int)puVar3[1] - (int)*puVar3) - 3; ebc_regmap_config.name = "rockchip,ebc_tcon"; plVar4 = (list_head *)__devm_regmap_init_mmio_clk(pdVar1,0,plVar4,&ebc_regmap_config,0,0); plVar2[2].prev = plVar4; if (plVar4 < (list_head *)0xfffffffffffff001) { plVar5 = (list_head *)devm_clk_get(pdVar1,&DAT_00108c36); plVar2[1].prev = plVar5; if (plVar5 < (list_head *)0xfffffffffffff001) { plVar5 = (list_head *)devm_clk_get(pdVar1,&DAT_00108c59,plVar5); plVar2[2].next = plVar5; if (plVar5 < (list_head *)0xfffffffffffff001) { uVar6 = platform_get_irq(pdev,0,plVar5); *(int *)((long)&plVar2[1].next + 4) = (int)uVar6; if ((int)uVar6 < 0) { _dev_err(pdVar1,"No IRQ resource!\n"); plVar4 = (list_head *)(ulong)*(uint *)((long)&plVar2[1].next + 4); goto LAB_001066e8; } irq_modify_status(uVar6,0,0x1000); pcVar8 = (pdev->dev).init_name; if (pcVar8 == (char *)0x0) { pcVar8 = (pdev->dev).kobj.name; } uVar7 = devm_request_threaded_irq (pdVar1,*(undefined4 *)((long)&plVar2[1].next + 4),tcon_irq_hanlder,0, 0,pcVar8,plVar2); plVar4 = (list_head *)(uVar7 & 0xffffffff); if (-1 < (int)uVar7) { plVar2[3].next = (list_head *)tcon_enable; plVar2[3].prev = (list_head *)tcon_disable; plVar2[4].next = (list_head *)tcon_dsp_mode_set; plVar2[4].prev = (list_head *)tcon_image_addr_set; plVar2[5].next = (list_head *)tcon_frame_addr_set; (pdev->dev).links.consumers.next = plVar2; plVar2[5].prev = (list_head *)tcon_lut_data_set; plVar4 = (list_head *)0x0; plVar2->next = (list_head *)pdVar1; plVar2[6].next = (list_head *)tcon_frame_start; pm_runtime_enable(pdVar1); goto LAB_001066e8; } plVar5 = (list_head *)(uVar7 & 0xffffffff); pcVar8 = "failed to requeset irq: %d\n"; } else { plVar4 = (list_head *)((ulong)plVar5 & 0xffffffff); pcVar8 = "failed to get dclk clock: %d\n"; } } else { plVar4 = (list_head *)((ulong)plVar5 & 0xffffffff); pcVar8 = "failed to get hclk clock: %d\n"; } _dev_err(pdVar1,pcVar8,plVar5); } } else { plVar4 = (list_head *)((ulong)plVar4 & 0xffffffff); } } LAB_001066e8: return (int)plVar4; } irqreturn_t tcon_irq_hanlder(int irq,void *dev_id) { uint value; long local_8; _mcount(); local_8 = __stack_chk_guard; regmap_read(*(undefined8 *)((long)dev_id + 0x28),0x3c,&value); if ((value >> 1 & 1) != 0) { regmap_update_bits_base(*(undefined8 *)((long)dev_id + 0x28),0x3c,0x200,0x200,0,0,0); if (*(code **)((long)dev_id + 0x68) != (code *)0x0) { (**(code **)((long)dev_id + 0x68))(); } } if (local_8 - __stack_chk_guard != 0) { // WARNING: Subroutine does not return __stack_chk_fail(strcpy,0,local_8 - __stack_chk_guard); } return IRQ_HANDLED; } int eink_tcon_remove(platform_device_conflict *pdev) { _mcount(); __pm_runtime_disable(&pdev->dev,1); return 0; } void tcon_image_addr_set(eink_tcon *tcon,u32 pre_image_buf_addr,u32 cur_image_buf_addr, u32 image_process_buf_addr) { _mcount(); regmap_write(tcon->regmap_base,0xc,pre_image_buf_addr); regmap_write(tcon->regmap_base,0x10,cur_image_buf_addr); regmap_write(tcon->regmap_base,0x14,image_process_buf_addr); return; } void tcon_frame_start(eink_tcon *tcon) { _mcount(); regmap_write(tcon->regmap_base,0,1); return; } void tcon_disable(eink_tcon *tcon) { clk *pcVar1; _mcount(); disable_irq(tcon->irq); __pm_runtime_idle(tcon->dev,4); pcVar1 = tcon->hclk; clk_disable(pcVar1); clk_unprepare(pcVar1); pcVar1 = tcon->pclk; clk_disable(pcVar1); clk_unprepare(pcVar1); return; } int tcon_enable(eink_tcon *tcon,ebc_panel *panel) { int iVar1; clk *pcVar2; eink_reg_data *peVar3; eink_reg_data *peVar4; eink_reg_data *peVar5; _mcount(); pcVar2 = tcon->pclk; iVar1 = clk_prepare(pcVar2); if ((iVar1 == 0) && (iVar1 = clk_enable(pcVar2), iVar1 != 0)) { clk_unprepare(pcVar2); } pcVar2 = tcon->hclk; iVar1 = clk_prepare(pcVar2); if ((iVar1 == 0) && (iVar1 = clk_enable(pcVar2), iVar1 != 0)) { clk_unprepare(pcVar2); } __pm_runtime_resume(tcon->dev,4); peVar3 = PANEL_1872x1404_INIT; if ((panel->width == 0x4b0) && (peVar3 = PANEL_1200x825_INIT, panel->height != 0x339)) { peVar3 = PANEL_1872x1404_INIT; } peVar4 = peVar3; do { peVar5 = peVar4 + 1; regmap_write(tcon->regmap_base,peVar4->addr,peVar4->value); peVar4 = peVar5; } while (peVar5 != peVar3 + 0x15); enable_irq(tcon->irq); return 0; } // WARNING: Type propagation algorithm not settling int eink_tcon_probe(platform_device_conflict *pdev) { device *pdVar1; list_head *plVar2; undefined8 *puVar3; list_head *plVar4; list_head *plVar5; undefined8 uVar6; ulong uVar7; char *pcVar8; _mcount(); pdVar1 = &pdev->dev; plVar2 = (list_head *)devm_kmalloc(pdVar1,0x58,0x6080c0); if (plVar2 == (list_head *)0x0) { plVar4 = (list_head *)0xfffffff4; } else { puVar3 = (undefined8 *)platform_get_resource(pdev,0x200,0); plVar4 = (list_head *)devm_ioremap_resource(pdVar1,puVar3); plVar2->prev = plVar4; if (plVar4 < (list_head *)0xfffffffffffff001) { *(int *)&plVar2[1].next = ((int)puVar3[1] + 1) - (int)*puVar3; eink_regmap_config.max_register = ((int)puVar3[1] - (int)*puVar3) - 3; eink_regmap_config.name = "rockchip,eink_tcon"; plVar4 = (list_head *)__devm_regmap_init_mmio_clk(pdVar1,0,plVar4,&eink_regmap_config,0,0); plVar2[2].prev = plVar4; if (plVar4 < (list_head *)0xfffffffffffff001) { plVar5 = (list_head *)devm_clk_get(pdVar1,&DAT_00108cc9); plVar2[1].prev = plVar5; if (plVar5 < (list_head *)0xfffffffffffff001) { plVar5 = (list_head *)devm_clk_get(pdVar1,&DAT_00108cec,plVar5); plVar2[2].next = plVar5; if (plVar5 < (list_head *)0xfffffffffffff001) { uVar6 = platform_get_irq(pdev,0,plVar5); *(int *)((long)&plVar2[1].next + 4) = (int)uVar6; if ((int)uVar6 < 0) { _dev_err(pdVar1,"No IRQ resource!\n"); plVar4 = (list_head *)(ulong)*(uint *)((long)&plVar2[1].next + 4); goto LAB_00106bd4; } irq_modify_status(uVar6,0,0x1000); pcVar8 = (pdev->dev).init_name; if (pcVar8 == (char *)0x0) { pcVar8 = (pdev->dev).kobj.name; } uVar7 = devm_request_threaded_irq (pdVar1,*(undefined4 *)((long)&plVar2[1].next + 4),tcon_irq_hanlder,0, 0,pcVar8,plVar2); plVar4 = (list_head *)(uVar7 & 0xffffffff); if (-1 < (int)uVar7) { plVar2[3].next = (list_head *)tcon_enable; plVar2[3].prev = (list_head *)tcon_disable; (pdev->dev).links.consumers.next = plVar2; plVar4 = (list_head *)0x0; plVar2[4].next = (list_head *)tcon_image_addr_set; plVar2->next = (list_head *)pdVar1; plVar2[4].prev = (list_head *)tcon_frame_start; pm_runtime_enable(pdVar1); goto LAB_00106bd4; } plVar5 = (list_head *)(uVar7 & 0xffffffff); pcVar8 = "failed to requeset irq: %d\n"; } else { plVar4 = (list_head *)((ulong)plVar5 & 0xffffffff); pcVar8 = "failed to get dclk clock: %d\n"; } } else { plVar4 = (list_head *)((ulong)plVar5 & 0xffffffff); pcVar8 = "failed to get hclk clock: %d\n"; } _dev_err(pdVar1,pcVar8,plVar5); } } else { plVar4 = (list_head *)((ulong)plVar4 & 0xffffffff); } } LAB_00106bd4: return (int)plVar4; } irqreturn_t tcon_irq_hanlder(int irq,void *dev_id) { uint value; long local_8; _mcount(); local_8 = __stack_chk_guard; regmap_read(*(undefined8 *)((long)dev_id + 0x28),0x28,&value); if ((value & 1) != 0) { regmap_update_bits_base(*(undefined8 *)((long)dev_id + 0x28),0x30,1,1,0,0,0); if (*(code **)((long)dev_id + 0x50) != (code *)0x0) { (**(code **)((long)dev_id + 0x50))(); } } if (local_8 - __stack_chk_guard != 0) { // WARNING: Subroutine does not return __stack_chk_fail(strcpy,0,local_8 - __stack_chk_guard); } return IRQ_HANDLED; } void ebc_exit(void) { platform_driver_unregister(&ebc_driver); return; } void tps65185_driver_exit(void) { i2c_del_driver(&tps65185_driver); return; } void ebc_tcon_driver_exit(void) { platform_driver_unregister(&ebc_tcon_driver); return; } void eink_tcon_driver_exit(void) { platform_driver_unregister(&eink_tcon_driver); return; } int ebc_init(void) { int iVar1; iVar1 = __platform_driver_register(&ebc_driver,0); return iVar1; } int tps65185_driver_init(void) { int iVar1; _mcount(); iVar1 = i2c_register_driver(0,&tps65185_driver); return iVar1; } int ebc_tcon_driver_init(void) { int iVar1; _mcount(); iVar1 = __platform_driver_register(&ebc_tcon_driver,0); return iVar1; } int eink_tcon_driver_init(void) { int iVar1; _mcount(); iVar1 = __platform_driver_register(&eink_tcon_driver,0); return iVar1; }