else ret = -EIO; return ret; } static const struct sysfs_ops mem_entry_sysfs_ops = { .show = mem_entry_sysfs_show, }; static struct kobj_type ktype_mem_entry = { .sysfs_ops = &mem_entry_sysfs_ops, }; static struct mem_entry_stats mem_stats[] = { MEM_ENTRY_STAT(KGSL_MEM_ENTRY_KERNEL, kernel), MEM_ENTRY_STAT(KGSL_MEM_ENTRY_USER, user), #ifdef CONFIG_ION MEM_ENTRY_STAT(KGSL_MEM_ENTRY_ION, ion), #endif }; void kgsl_process_uninit_sysfs(struct kgsl_process_private *private) { int i; for (i = 0; i < ARRAY_SIZE(mem_stats); i++) { sysfs_remove_file(&private->kobj, &mem_stats[i].attr.attr); sysfs_remove_file(&private->kobj, &mem_stats[i].max_attr.attr);
return ret; } static const struct sysfs_ops mem_entry_sysfs_ops = { .show = mem_entry_sysfs_show, }; static struct kobj_type ktype_mem_entry = { .sysfs_ops = &mem_entry_sysfs_ops, .default_attrs = NULL, .release = mem_entry_sysfs_release }; static struct mem_entry_stats mem_stats[] = { MEM_ENTRY_STAT(KGSL_MEM_ENTRY_KERNEL, kernel), MEM_ENTRY_STAT(KGSL_MEM_ENTRY_PMEM, pmem), #ifdef CONFIG_ASHMEM MEM_ENTRY_STAT(KGSL_MEM_ENTRY_ASHMEM, ashmem), #endif MEM_ENTRY_STAT(KGSL_MEM_ENTRY_USER, user), #ifdef CONFIG_ION MEM_ENTRY_STAT(KGSL_MEM_ENTRY_ION, ion), #endif }; void kgsl_process_uninit_sysfs(struct kgsl_process_private *private) { int i;