diff options
author | Christoph Lipka <clipka@jp.adit-jv.com> | 2016-01-26 16:09:21 +0900 |
---|---|---|
committer | Gernot Wirschal <gernot.wirschal@bmw.de> | 2016-04-28 13:48:00 +0200 |
commit | 6a8919c637b28fab7cc6f8e87cfca6f13bb8cb1d (patch) | |
tree | 560f0dd6be57ad427f41ef36c5785cb11508d0d1 | |
parent | 793f30a629d706bc6d8a47ca90d4627791bc3969 (diff) | |
download | DLT-daemon-6a8919c637b28fab7cc6f8e87cfca6f13bb8cb1d.tar.gz |
DLT_PTR: User macro to print pointers
This macro internally checks the size of a void pointer to decide if the
pointer address is sent with DLT_HEX32 or DLT_HEX64 macro.
Signed-off-by: Christoph Lipka <clipka@jp.adit-jv.com>
Change-Id: Ie316ac411f2174e0760e09244d04b83c8006f55d
-rw-r--r-- | include/dlt/dlt_user_macros.h | 12 | ||||
-rw-r--r-- | src/tests/dlt-test-user.c | 5 |
2 files changed, 17 insertions, 0 deletions
diff --git a/include/dlt/dlt_user_macros.h b/include/dlt/dlt_user_macros.h index 3bb161f..919df7e 100644 --- a/include/dlt/dlt_user_macros.h +++ b/include/dlt/dlt_user_macros.h @@ -328,6 +328,18 @@ (void)dlt_user_log_write_uint16_formatted(&log_local,UINT_VAR,DLT_FORMAT_BIN16) /** + * Architecture independent macro to print pointers + */ +#define DLT_PTR(PTR_VAR) \ + do { \ + if (sizeof(void *) < 8) { \ + DLT_HEX32((uintptr_t)PTR_VAR); \ + } else { \ + DLT_HEX64((uintptr_t)PTR_VAR); \ + } \ + } while(0) + +/** * Trace network message * @param CONTEXT object containing information about one special logging context * @param TYPE type of network trace message diff --git a/src/tests/dlt-test-user.c b/src/tests/dlt-test-user.c index 80614e0..16479a2 100644 --- a/src/tests/dlt-test-user.c +++ b/src/tests/dlt-test-user.c @@ -479,6 +479,8 @@ int test5m(void) char buffer[32]; int num; + void *ptr = malloc(sizeof(int)); + for(num=0;num<32;num++) { buffer[num] = num; @@ -506,10 +508,13 @@ int test5m(void) DLT_LOG(context_macro_test[4],DLT_LOG_INFO,DLT_STRING("Next line: DLT_LOG_STRING_UINT")); DLT_LOG_STRING_UINT(context_macro_test[4], DLT_LOG_INFO,"String output: ", 42); + DLT_LOG(context_macro_test[4],DLT_LOG_INFO,DLT_STRING("Next line: DLT_LOG_PTR")); + DLT_LOG(context_macro_test[4],DLT_LOG_INFO,DLT_PTR(ptr)); /* wait 2 second before next test */ sleep(2); DLT_LOG(context_info,DLT_LOG_INFO,DLT_STRING("Test5: (Macro IF) finished")); + free(ptr); return 0; } |