From 7bcac49e55efb4c471cfbe34e857230bff536ffd Mon Sep 17 00:00:00 2001 From: Ashish Kumar Dhanotiya Date: Wed, 14 Nov 2018 16:43:14 +0530 Subject: [PATCH] qcacmn: Add driver command to dump function call mapping Add driver command support to dump all the function call mapping which is cached in global buffer. Change-Id: I6df9273c641e2cf3ecefe64c8f3c15d8ec2f9b20 CRs-Fixed: 2677981 --- qdf/linux/src/qdf_func_tracker.c | 46 ++++++++++++++++++++++ qdf/linux/src/qdf_func_tracker.h | 67 ++++++++++++++++++++++++++++++++ 2 files changed, 113 insertions(+) create mode 100644 qdf/linux/src/qdf_func_tracker.c create mode 100644 qdf/linux/src/qdf_func_tracker.h diff --git a/qdf/linux/src/qdf_func_tracker.c b/qdf/linux/src/qdf_func_tracker.c new file mode 100644 index 000000000000..43fa3b44ee52 --- /dev/null +++ b/qdf/linux/src/qdf_func_tracker.c @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2020 The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#include +#include +#include + +#ifdef FUNC_CALL_MAP +char qdf_func_call_map_buf[QDF_FUNCTION_CALL_MAP_BUF_LEN] = {0}; + +void cc_func(unsigned int track) +{ + unsigned int index = 0; + unsigned int bit = 0; + + index = track / 8; + bit = track % 8; + qdf_func_call_map_buf[index] |= (char)(1 << bit); +} + +void qdf_get_func_call_map(char *data) +{ + qdf_mem_copy(data, qdf_func_call_map_buf, + QDF_FUNCTION_CALL_MAP_BUF_LEN); +} + +void qdf_clear_func_call_map(void) +{ + qdf_mem_zero(qdf_func_call_map_buf, QDF_FUNCTION_CALL_MAP_BUF_LEN); +} +#endif diff --git a/qdf/linux/src/qdf_func_tracker.h b/qdf/linux/src/qdf_func_tracker.h new file mode 100644 index 000000000000..5f4fb25dedd7 --- /dev/null +++ b/qdf/linux/src/qdf_func_tracker.h @@ -0,0 +1,67 @@ +/* + * Copyright (c) 2020 The Linux Foundation. All rights reserved. + * + * Permission to use, copy, modify, and/or distribute this software for + * any purpose with or without fee is hereby granted, provided that the + * above copyright notice and this permission notice appear in all + * copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL + * WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED + * WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE + * AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER + * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR + * PERFORMANCE OF THIS SOFTWARE. + */ + +#ifndef QDF_FUNC_TRACKER_H +#define QDF_FUNC_TRACKER_H + +#ifdef FUNC_CALL_MAP + +#define QDF_FUNCTION_CALL_MAP_BUF_LEN 4096 + +/** + * cc_func() - Inserts the function Id into the global + * function map + * @track: Function Id which needs to be inserted into the + * Global function map. + * + * Return: None + */ +void cc_func(unsigned int track); + +/** + * qdf_get_func_call_map() - Copies the global function call + * map into the given buffer + * @data: Buffer in which the function call map needs to be + * copied + * + * Return: None + */ +void qdf_get_func_call_map(char *data); + +/** + * qdf_clear_func_call_map() - Clears the global function + * call map + * + * Return: None + */ +void qdf_clear_func_call_map(void); +#else +static inline void cc_func(unsigned int track) +{ +} + +static inline void qdf_get_func_call_map(char *data) +{ +} + +static inline void qdf_clear_func_call_map(void) +{ +} + +#endif +#endif