static int mali_oom_handler(struct notifier_block *nb, unsigned long val, void *data) { u32 mem = _mali_ukk_report_memory_usage(); printk(KERN_INFO "mali memory usage : %u KB\n", mem / SZ_1K); return 0; }
static ssize_t memory_used_read(struct file *filp, char __user *ubuf, size_t cnt, loff_t *ppos) { char buf[64]; size_t r; u32 mem = _mali_ukk_report_memory_usage(); r = snprintf(buf, 64, "%u\n", mem); return simple_read_from_buffer(ubuf, cnt, ppos, buf, r); }
u32 _mali_ukk_report_memory_peak(void) { static u32 peak = 0; u32 value; value = _mali_ukk_report_memory_usage(); if (value > peak) { peak = value; } return peak; }
static inline void add_event(u32 event_id, u32 data0, u32 data1, u32 data2, u32 data3, u32 data4) { u32 cur_index = (_mali_osk_atomic_inc_return(&profile_insert_index) - 1) & profile_mask; profile_entries[cur_index].timestamp = _mali_timestamp_get(); profile_entries[cur_index].event_id = event_id; profile_entries[cur_index].data[0] = data0; profile_entries[cur_index].data[1] = data1; profile_entries[cur_index].data[2] = data2; profile_entries[cur_index].data[3] = data3; profile_entries[cur_index].data[4] = data4; /* If event is "leave API function", add current memory usage to the event * as data point 4. This is used in timeline profiling to indicate how * much memory was used when leaving a function. */ if (event_id == (MALI_PROFILING_EVENT_TYPE_SINGLE|MALI_PROFILING_EVENT_CHANNEL_SOFTWARE|MALI_PROFILING_EVENT_REASON_SINGLE_SW_LEAVE_API_FUNC)) { profile_entries[cur_index].data[4] = _mali_ukk_report_memory_usage(); } }
int get_api_version_wrapper(struct mali_session_data *session_data, _mali_uk_get_api_version_s __user *uargs) { _mali_uk_get_api_version_s kargs; _mali_osk_errcode_t err; u32 mem = _mali_ukk_report_memory_usage(); printk("Mali: mem_usage before %d : %u\n", _mali_osk_get_pid(), mem); MALI_CHECK_NON_NULL(uargs, -EINVAL); if (0 != get_user(kargs.version, &uargs->version)) return -EFAULT; kargs.ctx = session_data; err = _mali_ukk_get_api_version(&kargs); if (_MALI_OSK_ERR_OK != err) return map_errcode(err); if (0 != put_user(kargs.version, &uargs->version)) return -EFAULT; if (0 != put_user(kargs.compatible, &uargs->compatible)) return -EFAULT; return 0; }
static int proc_memoryusage_show(struct seq_file *m, void *v) { seq_printf(m, "%u\n", _mali_ukk_report_memory_usage()); return 0; }
void _mali_osk_profiling_memory_usage_get(u32 *memory_usage) { *memory_usage = _mali_ukk_report_memory_usage(); }