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