Browse Source

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
Rakshith Suresh Patkar 7 years ago
parent
commit
81f4f19830
1 changed files with 11 additions and 4 deletions
  1. 11 4
      qdf/linux/src/qdf_mem.c

+ 11 - 4
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;
 		}