1*5113495bSYour Name /* 2*5113495bSYour Name * Copyright (c) 2019 The Linux Foundation. All rights reserved. 3*5113495bSYour Name * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. 4*5113495bSYour Name * 5*5113495bSYour Name * Permission to use, copy, modify, and/or distribute this software for 6*5113495bSYour Name * any purpose with or without fee is hereby granted, provided that the 7*5113495bSYour Name * above copyright notice and this permission notice appear in all 8*5113495bSYour Name * copies. 9*5113495bSYour Name * 10*5113495bSYour Name * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 11*5113495bSYour Name * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 12*5113495bSYour Name * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 13*5113495bSYour Name * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 14*5113495bSYour Name * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 15*5113495bSYour Name * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 16*5113495bSYour Name * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 17*5113495bSYour Name * PERFORMANCE OF THIS SOFTWARE. 18*5113495bSYour Name */ 19*5113495bSYour Name 20*5113495bSYour Name /** 21*5113495bSYour Name * DOC: qld_api.h 22*5113495bSYour Name * QLD: This file provides public exposed functions 23*5113495bSYour Name */ 24*5113495bSYour Name 25*5113495bSYour Name #ifndef _QLD_API_H_ 26*5113495bSYour Name #define _QLD_API_H_ 27*5113495bSYour Name 28*5113495bSYour Name #define QLD_MAX_NAME 48 29*5113495bSYour Name 30*5113495bSYour Name /** 31*5113495bSYour Name * struct qld_entry - Individual entry in qld_event 32*5113495bSYour Name * @addr: Start address of object to dump 33*5113495bSYour Name * @size: Size of memory dump 34*5113495bSYour Name * @name: Name of memory dump 35*5113495bSYour Name */ 36*5113495bSYour Name struct qld_entry { 37*5113495bSYour Name uint64_t addr; 38*5113495bSYour Name size_t size; 39*5113495bSYour Name char name[QLD_MAX_NAME]; 40*5113495bSYour Name }; 41*5113495bSYour Name 42*5113495bSYour Name /** 43*5113495bSYour Name * typedef qld_iter_func - qld callback function 44*5113495bSYour Name * @req: opaque pointer 45*5113495bSYour Name * @qld_entry: qld_entry 46*5113495bSYour Name * 47*5113495bSYour Name * Return: 0 - OK -EINVAL - On failure 48*5113495bSYour Name */ 49*5113495bSYour Name typedef int (*qld_iter_func)(void *req, struct qld_entry *entry); 50*5113495bSYour Name 51*5113495bSYour Name /** 52*5113495bSYour Name * qld_iterate_list() - qld list iteration routine 53*5113495bSYour Name * @gen_table: callback function to generate table 54*5113495bSYour Name * @req: opaque request 55*5113495bSYour Name * 56*5113495bSYour Name * Return: 0 - OK -EINVAL - On failure 57*5113495bSYour Name */ 58*5113495bSYour Name int qld_iterate_list(qld_iter_func gen_table, void *req); 59*5113495bSYour Name 60*5113495bSYour Name /** 61*5113495bSYour Name * qld_register() - Register qld for the given address 62*5113495bSYour Name * @addr: starting address the dump 63*5113495bSYour Name * @size: size of memory to dump 64*5113495bSYour Name * @name: name identifier of dump 65*5113495bSYour Name * 66*5113495bSYour Name * Return: 0 - OK -EINVAL -ENOMEM - On failure 67*5113495bSYour Name */ 68*5113495bSYour Name int qld_register(void *addr, size_t size, char *name); 69*5113495bSYour Name 70*5113495bSYour Name /** 71*5113495bSYour Name * qld_unregister() - Un-register qld for the given address 72*5113495bSYour Name * @addr: starting address the dump 73*5113495bSYour Name * 74*5113495bSYour Name * Return: 0 - OK -EINVAL - On failure 75*5113495bSYour Name */ 76*5113495bSYour Name int qld_unregister(void *addr); 77*5113495bSYour Name 78*5113495bSYour Name /** 79*5113495bSYour Name * qld_list_init() - Initialize qld list 80*5113495bSYour Name * @max_list: maximum size list supports 81*5113495bSYour Name * 82*5113495bSYour Name * Return: 0 - OK -EINVAL -ENOMEM - On failure 83*5113495bSYour Name */ 84*5113495bSYour Name int qld_list_init(uint32_t max_list); 85*5113495bSYour Name 86*5113495bSYour Name /** 87*5113495bSYour Name * qld_list_delete() - empty qld list 88*5113495bSYour Name * 89*5113495bSYour Name * Return: 0 - OK -EINVAL - On failure 90*5113495bSYour Name */ 91*5113495bSYour Name int qld_list_delete(void); 92*5113495bSYour Name 93*5113495bSYour Name /** 94*5113495bSYour Name * qld_list_deinit() - De-initialize qld list 95*5113495bSYour Name * 96*5113495bSYour Name * Return: 0 - OK -EINVAL - On failure 97*5113495bSYour Name */ 98*5113495bSYour Name int qld_list_deinit(void); 99*5113495bSYour Name 100*5113495bSYour Name /** 101*5113495bSYour Name * qld_get_list_count () - get size of qld list 102*5113495bSYour Name * @list_count: list_count to set 103*5113495bSYour Name * 104*5113495bSYour Name * Return: 0 - OK -EINVAL - On failure 105*5113495bSYour Name */ 106*5113495bSYour Name int qld_get_list_count(uint32_t *list_count); 107*5113495bSYour Name 108*5113495bSYour Name /** 109*5113495bSYour Name * is_qld_enable() - check if qld feature is set 110*5113495bSYour Name * 111*5113495bSYour Name * Return: true on success, false on failure 112*5113495bSYour Name */ 113*5113495bSYour Name bool is_qld_enable(void); 114*5113495bSYour Name 115*5113495bSYour Name #endif /* _QLD_API_H_ */ 116