Skip to content

Commit ad6ada0

Browse files
author
Cruz Monrreal
authored
Merge pull request #7948 from kegilbert/mbed_mem_trace_log_toggle
Add enable/disable cb function in mem_trace
2 parents 116a743 + eeada14 commit ad6ada0

File tree

2 files changed

+29
-0
lines changed

2 files changed

+29
-0
lines changed

platform/mbed_mem_trace.cpp

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828

2929
/* The callback function that will be called after a traced memory operations finishes. */
3030
static mbed_mem_trace_cb_t mem_trace_cb;
31+
static mbed_mem_trace_cb_t mem_trace_cb_reserve;
3132
/* 'trace_lock_count' guards "trace inside trace" situations (for example, the implementation
3233
* of realloc() might call malloc() internally, and since malloc() is also traced, this could
3334
* result in two calls to the callback function instead of one. */
@@ -46,6 +47,24 @@ void mbed_mem_trace_set_callback(mbed_mem_trace_cb_t cb)
4647
mem_trace_cb = cb;
4748
}
4849

50+
void mbed_mem_trace_disable()
51+
{
52+
mbed_mem_trace_lock();
53+
if (mem_trace_cb) {
54+
mem_trace_cb_reserve = mem_trace_cb;
55+
mem_trace_cb = 0;
56+
}
57+
mbed_mem_trace_unlock();
58+
}
59+
void mbed_mem_trace_enable()
60+
{
61+
mbed_mem_trace_lock();
62+
if (!mem_trace_cb && mem_trace_cb_reserve) {
63+
mem_trace_cb = mem_trace_cb_reserve;
64+
}
65+
mbed_mem_trace_unlock();
66+
}
67+
4968
void mbed_mem_trace_lock()
5069
{
5170
mem_trace_mutex->lock();

platform/mbed_mem_trace.h

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,16 @@ typedef void (*mbed_mem_trace_cb_t)(uint8_t op, void *res, void *caller, ...);
7474
*/
7575
void mbed_mem_trace_set_callback(mbed_mem_trace_cb_t cb);
7676

77+
/**
78+
* Disable the memory trace output by disabling the callback function
79+
*/
80+
void mbed_mem_trace_disable();
81+
82+
/**
83+
* Renable the memory trace output with the cb in use when disable was called
84+
*/
85+
void mbed_mem_trace_enable();
86+
7787
/**
7888
* Trace lock.
7989
* @note Locking prevent recursive tracing of malloc/free inside relloc/calloc

0 commit comments

Comments
 (0)