Pavle Radojkovic / mbed-mqtt
Committer:
pavleradojkovic
Date:
Mon Jun 20 16:24:43 2022 +0000
Revision:
0:ba7e439238ab
Inital commit

Who changed what in which revision?

UserRevisionLine numberNew contents of line
pavleradojkovic 0:ba7e439238ab 1 /*******************************************************************************
pavleradojkovic 0:ba7e439238ab 2 * Copyright (c) 2014 IBM Corp.
pavleradojkovic 0:ba7e439238ab 3 *
pavleradojkovic 0:ba7e439238ab 4 * All rights reserved. This program and the accompanying materials
pavleradojkovic 0:ba7e439238ab 5 * are made available under the terms of the Eclipse Public License v1.0
pavleradojkovic 0:ba7e439238ab 6 * and Eclipse Distribution License v1.0 which accompany this distribution.
pavleradojkovic 0:ba7e439238ab 7 *
pavleradojkovic 0:ba7e439238ab 8 * The Eclipse Public License is available at
pavleradojkovic 0:ba7e439238ab 9 * http://www.eclipse.org/legal/epl-v10.html
pavleradojkovic 0:ba7e439238ab 10 * and the Eclipse Distribution License is available at
pavleradojkovic 0:ba7e439238ab 11 * http://www.eclipse.org/org/documents/edl-v10.php.
pavleradojkovic 0:ba7e439238ab 12 *
pavleradojkovic 0:ba7e439238ab 13 * Contributors:
pavleradojkovic 0:ba7e439238ab 14 * Ian Craggs - initial API and implementation and/or initial documentation
pavleradojkovic 0:ba7e439238ab 15 * Ian Craggs - fix for bug #434081
pavleradojkovic 0:ba7e439238ab 16 *******************************************************************************/
pavleradojkovic 0:ba7e439238ab 17
pavleradojkovic 0:ba7e439238ab 18 #ifndef STACKTRACE_H_
pavleradojkovic 0:ba7e439238ab 19 #define STACKTRACE_H_
pavleradojkovic 0:ba7e439238ab 20
pavleradojkovic 0:ba7e439238ab 21 #include <stdio.h>
pavleradojkovic 0:ba7e439238ab 22 #define NOSTACKTRACE 1
pavleradojkovic 0:ba7e439238ab 23
pavleradojkovic 0:ba7e439238ab 24 #if defined(NOSTACKTRACE)
pavleradojkovic 0:ba7e439238ab 25 #define FUNC_ENTRY
pavleradojkovic 0:ba7e439238ab 26 #define FUNC_ENTRY_NOLOG
pavleradojkovic 0:ba7e439238ab 27 #define FUNC_ENTRY_MED
pavleradojkovic 0:ba7e439238ab 28 #define FUNC_ENTRY_MAX
pavleradojkovic 0:ba7e439238ab 29 #define FUNC_EXIT
pavleradojkovic 0:ba7e439238ab 30 #define FUNC_EXIT_NOLOG
pavleradojkovic 0:ba7e439238ab 31 #define FUNC_EXIT_MED
pavleradojkovic 0:ba7e439238ab 32 #define FUNC_EXIT_MAX
pavleradojkovic 0:ba7e439238ab 33 #define FUNC_EXIT_RC(x)
pavleradojkovic 0:ba7e439238ab 34 #define FUNC_EXIT_MED_RC(x)
pavleradojkovic 0:ba7e439238ab 35 #define FUNC_EXIT_MAX_RC(x)
pavleradojkovic 0:ba7e439238ab 36
pavleradojkovic 0:ba7e439238ab 37 #else
pavleradojkovic 0:ba7e439238ab 38
pavleradojkovic 0:ba7e439238ab 39 #if defined(WIN32)
pavleradojkovic 0:ba7e439238ab 40 #define inline __inline
pavleradojkovic 0:ba7e439238ab 41 #define FUNC_ENTRY StackTrace_entry(__FUNCTION__, __LINE__, TRACE_MINIMUM)
pavleradojkovic 0:ba7e439238ab 42 #define FUNC_ENTRY_NOLOG StackTrace_entry(__FUNCTION__, __LINE__, -1)
pavleradojkovic 0:ba7e439238ab 43 #define FUNC_ENTRY_MED StackTrace_entry(__FUNCTION__, __LINE__, TRACE_MEDIUM)
pavleradojkovic 0:ba7e439238ab 44 #define FUNC_ENTRY_MAX StackTrace_entry(__FUNCTION__, __LINE__, TRACE_MAXIMUM)
pavleradojkovic 0:ba7e439238ab 45 #define FUNC_EXIT StackTrace_exit(__FUNCTION__, __LINE__, NULL, TRACE_MINIMUM)
pavleradojkovic 0:ba7e439238ab 46 #define FUNC_EXIT_NOLOG StackTrace_exit(__FUNCTION__, __LINE__, -1)
pavleradojkovic 0:ba7e439238ab 47 #define FUNC_EXIT_MED StackTrace_exit(__FUNCTION__, __LINE__, NULL, TRACE_MEDIUM)
pavleradojkovic 0:ba7e439238ab 48 #define FUNC_EXIT_MAX StackTrace_exit(__FUNCTION__, __LINE__, NULL, TRACE_MAXIMUM)
pavleradojkovic 0:ba7e439238ab 49 #define FUNC_EXIT_RC(x) StackTrace_exit(__FUNCTION__, __LINE__, &x, TRACE_MINIMUM)
pavleradojkovic 0:ba7e439238ab 50 #define FUNC_EXIT_MED_RC(x) StackTrace_exit(__FUNCTION__, __LINE__, &x, TRACE_MEDIUM)
pavleradojkovic 0:ba7e439238ab 51 #define FUNC_EXIT_MAX_RC(x) StackTrace_exit(__FUNCTION__, __LINE__, &x, TRACE_MAXIMUM)
pavleradojkovic 0:ba7e439238ab 52 #else
pavleradojkovic 0:ba7e439238ab 53 #define FUNC_ENTRY StackTrace_entry(__func__, __LINE__, TRACE_MINIMUM)
pavleradojkovic 0:ba7e439238ab 54 #define FUNC_ENTRY_NOLOG StackTrace_entry(__func__, __LINE__, -1)
pavleradojkovic 0:ba7e439238ab 55 #define FUNC_ENTRY_MED StackTrace_entry(__func__, __LINE__, TRACE_MEDIUM)
pavleradojkovic 0:ba7e439238ab 56 #define FUNC_ENTRY_MAX StackTrace_entry(__func__, __LINE__, TRACE_MAXIMUM)
pavleradojkovic 0:ba7e439238ab 57 #define FUNC_EXIT StackTrace_exit(__func__, __LINE__, NULL, TRACE_MINIMUM)
pavleradojkovic 0:ba7e439238ab 58 #define FUNC_EXIT_NOLOG StackTrace_exit(__func__, __LINE__, NULL, -1)
pavleradojkovic 0:ba7e439238ab 59 #define FUNC_EXIT_MED StackTrace_exit(__func__, __LINE__, NULL, TRACE_MEDIUM)
pavleradojkovic 0:ba7e439238ab 60 #define FUNC_EXIT_MAX StackTrace_exit(__func__, __LINE__, NULL, TRACE_MAXIMUM)
pavleradojkovic 0:ba7e439238ab 61 #define FUNC_EXIT_RC(x) StackTrace_exit(__func__, __LINE__, &x, TRACE_MINIMUM)
pavleradojkovic 0:ba7e439238ab 62 #define FUNC_EXIT_MED_RC(x) StackTrace_exit(__func__, __LINE__, &x, TRACE_MEDIUM)
pavleradojkovic 0:ba7e439238ab 63 #define FUNC_EXIT_MAX_RC(x) StackTrace_exit(__func__, __LINE__, &x, TRACE_MAXIMUM)
pavleradojkovic 0:ba7e439238ab 64
pavleradojkovic 0:ba7e439238ab 65 void StackTrace_entry(const char* name, int line, int trace);
pavleradojkovic 0:ba7e439238ab 66 void StackTrace_exit(const char* name, int line, void* return_value, int trace);
pavleradojkovic 0:ba7e439238ab 67
pavleradojkovic 0:ba7e439238ab 68 void StackTrace_printStack(FILE* dest);
pavleradojkovic 0:ba7e439238ab 69 char* StackTrace_get(unsigned long);
pavleradojkovic 0:ba7e439238ab 70
pavleradojkovic 0:ba7e439238ab 71 #endif
pavleradojkovic 0:ba7e439238ab 72
pavleradojkovic 0:ba7e439238ab 73 #endif
pavleradojkovic 0:ba7e439238ab 74
pavleradojkovic 0:ba7e439238ab 75
pavleradojkovic 0:ba7e439238ab 76
pavleradojkovic 0:ba7e439238ab 77
pavleradojkovic 0:ba7e439238ab 78 #endif /* STACKTRACE_H_ */