From 81f4f19830de872240ee9e8d44daae0717f16b1d Mon Sep 17 00:00:00 2001 From: Rakshith Suresh Patkar Date: Tue, 15 May 2018 12:44:39 +0530 Subject: [PATCH] qcacmn: Add debug change to record timestamp This change adds timestamp information for every memory allocated and mapped for debugging purposes. Change-Id: Iba8e720790b863ae11c528a02f5c32ea606560dd CRs-Fixed: 2236213 --- qdf/linux/src/qdf_mem.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/qdf/linux/src/qdf_mem.c b/qdf/linux/src/qdf_mem.c index 9f1f28ae48..7b2183f28e 100644 --- a/qdf/linux/src/qdf_mem.c +++ b/qdf/linux/src/qdf_mem.c @@ -85,6 +85,7 @@ static inline qdf_list_t *qdf_mem_dma_list(enum qdf_debug_domain domain) * @size: size of the allocation in bytes * @caller: Caller of the function for which memory is allocated * @header: a known value, used to detect out-of-bounds access + * @time: timestamp at which allocation was made */ struct qdf_mem_header { qdf_list_node_t node; @@ -95,6 +96,7 @@ struct qdf_mem_header { uint32_t size; void *caller; uint64_t header; + uint64_t time; }; static uint64_t WLAN_MEM_HEADER = 0x6162636465666768; @@ -154,6 +156,7 @@ static void qdf_mem_header_init(struct qdf_mem_header *header, qdf_size_t size, header->size = size; header->caller = caller; header->header = WLAN_MEM_HEADER; + header->time = qdf_get_log_timestamp(); } enum qdf_mem_validation_bitmap { @@ -359,7 +362,7 @@ static int seq_printf_printer(void *priv, const char *fmt, ...) * @size: the size of allocation * @caller: Address of the caller function * @count: how many allocations of same type - * + * @time: timestamp at which allocation happened */ struct __qdf_mem_info { char file[QDF_MEM_FILE_NAME_SIZE]; @@ -367,6 +370,7 @@ struct __qdf_mem_info { uint32_t size; void *caller; uint32_t count; + uint64_t time; }; /* @@ -387,7 +391,8 @@ static void qdf_mem_domain_print_header(qdf_abstract_print print, { print(print_priv, "--------------------------------------------------------------"); - print(print_priv, " count size total filename caller"); + print(print_priv, + " count size total filename caller timestamp"); print(print_priv, "--------------------------------------------------------------"); } @@ -417,12 +422,13 @@ static void qdf_mem_meta_table_print(struct __qdf_mem_info *table, break; print(print_priv, - "%6u x %5u = %7uB @ %s:%u %pS", + "%6u x %5u = %7uB @ %s:%u %pS %llu", table[i].count, table[i].size, table[i].count * table[i].size, table[i].file, - table[i].line, table[i].caller); + table[i].line, table[i].caller, + table[i].time); len += qdf_scnprintf(debug_str + len, sizeof(debug_str) - len, " @ %s:%u %pS", @@ -453,6 +459,7 @@ static bool qdf_mem_meta_table_insert(struct __qdf_mem_info *table, table[i].size = meta->size; table[i].count = 1; table[i].caller = meta->caller; + table[i].time = meta->time; break; }