1054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin/* 2054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin * Copyright (C) 2013 The Android Open Source Project 3054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin * 4054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin * Licensed under the Apache License, Version 2.0 (the "License"); 5054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin * you may not use this file except in compliance with the License. 6054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin * You may obtain a copy of the License at 7054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin * 8054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin * http://www.apache.org/licenses/LICENSE-2.0 9054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin * 10054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin * Unless required by applicable law or agreed to in writing, software 11054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin * distributed under the License is distributed on an "AS IS" BASIS, 12054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin * See the License for the specific language governing permissions and 14054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin * limitations under the License. 15054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin */ 16054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin 17054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin#include <errno.h> 18054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin 19054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin#include <hardware/memtrack.h> 20054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin 21054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin#include "memtrack_msm.h" 22054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin 23054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjinint msm_memtrack_init(const struct memtrack_module *module) 24054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin{ 25054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin if(!module) 26054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin return -1; 27054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin return 0; 28054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin} 29054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin 30054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjinint msm_memtrack_get_memory(const struct memtrack_module *module, 31054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin pid_t pid, 32054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin int type, 33054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin struct memtrack_record *records, 34054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin size_t *num_records) 35054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin{ 36054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin if(!module) 37054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin return -1; 38054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin if (type == MEMTRACK_TYPE_GL || type == MEMTRACK_TYPE_GRAPHICS) { 39054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin return kgsl_memtrack_get_memory(pid, type, records, num_records); 40054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin } 41054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin 42054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin return -EINVAL; 43054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin} 44054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin 45054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjinstatic struct hw_module_methods_t memtrack_module_methods = { 46054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin .open = NULL, 47054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin}; 48054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin 49054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjinstruct memtrack_module HAL_MODULE_INFO_SYM = { 50054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin common: { 51054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin tag: HARDWARE_MODULE_TAG, 52054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin module_api_version: MEMTRACK_MODULE_API_VERSION_0_1, 53054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin hal_api_version: HARDWARE_HAL_API_VERSION, 54054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin id: MEMTRACK_HARDWARE_MODULE_ID, 55054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin name: "MSM Memory Tracker HAL", 56054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin author: "The Android Open Source Project", 57054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin methods: &memtrack_module_methods, 58054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin }, 59054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin 60054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin init: msm_memtrack_init, 61054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin getMemory: msm_memtrack_get_memory, 62054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin}; 63054df959aef7dce630a7f41d4aba6626c130756bPatrick Tjin 64