Toggle navigation
Documentation
The friendly Operating System for the Internet of Things
debug.h
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2014 Freie Universität Berlin
3
*
4
* This file is subject to the terms and conditions of the GNU Lesser
5
* General Public License v2.1. See the file LICENSE in the top level
6
* directory for more details.
7
*/
8
24
#ifndef DEBUG_H
25
#define DEBUG_H
26
27
#include <stdio.h>
28
#include "
sched.h
"
29
#include "
thread.h
"
30
31
#ifdef __cplusplus
32
extern
"C"
{
33
#endif
34
45
#ifdef DEVELHELP
46
#include "cpu_conf.h"
47
#define DEBUG_PRINT(...) \
48
do { \
49
if ((thread_get_active() == NULL) || \
50
(thread_get_active()->stack_size >= \
51
THREAD_EXTRA_STACKSIZE_PRINTF)) { \
52
printf(__VA_ARGS__); \
53
} \
54
else { \
55
puts("Cannot debug, stack too small. Consider using DEBUG_PUTS()."); \
56
} \
57
} while (0)
58
#else
59
#define DEBUG_PRINT(...) printf(__VA_ARGS__)
60
#endif
61
70
#if !defined(ENABLE_DEBUG) || defined(DOXYGEN)
71
#define ENABLE_DEBUG 0
72
#endif
73
80
# if defined(__cplusplus) && defined(__GNUC__)
81
# define DEBUG_FUNC __PRETTY_FUNCTION__
82
# elif __STDC_VERSION__ >= 199901L
83
# define DEBUG_FUNC __func__
84
# elif __GNUC__ >= 2
85
# define DEBUG_FUNC __FUNCTION__
86
# else
87
# define DEBUG_FUNC ""
88
# endif
89
97
#define DEBUG(...) if (ENABLE_DEBUG) { DEBUG_PRINT(__VA_ARGS__); }
98
105
#define DEBUG_PUTS(str) if (ENABLE_DEBUG) { puts(str); }
106
113
#if ENABLE_DEBUG
114
#define DEBUG_EXTRA_STACKSIZE THREAD_EXTRA_STACKSIZE_PRINTF
115
#else
116
#define DEBUG_EXTRA_STACKSIZE (0)
117
#endif
118
119
#ifdef __cplusplus
120
}
121
#endif
122
123
#endif
/* DEBUG_H */
124
sched.h
Scheduler API definition.
thread.h
Threading API.
Generated on Tue Nov 24 2020 19:46:49 by
1.8.17