29 namespace L4Re {
namespace Util {
39 static char const *
const levels[];
42 { cprintf(
"%s: %s", _component, levels[_l]); }
44 int printf(
char const *fmt, ...) const
45 __attribute__((format(printf,2,3)));
47 int cprintf(
char const *fmt, ...) const
48 __attribute__((format(printf,2,3)));
50 Err(Level l,
char const *component) : _l(l), _component(component)
55 char const *_component;
67 char const *
const _component;
68 char const *
const _subsys;
70 int printf_impl(
char const *fmt, ...) const
71 __attribute__((format(printf, 2, 3)));
73 int cprintf_impl(
char const *fmt, ...) const
74 __attribute__((format(printf, 2, 3)));
77 static
unsigned long level;
79 static
void set_level(
unsigned long l) { level = l; }
81 bool is_active()
const {
return _m & level; }
83 int __attribute__((always_inline, format(printf, 2, 3)))
84 printf(
char const *fmt, ...)
const
89 return printf_impl(fmt, __builtin_va_arg_pack());
92 int __attribute__((always_inline, format(printf, 2, 3)))
93 cprintf(
char const *fmt, ...)
const
98 return cprintf_impl(fmt, __builtin_va_arg_pack());
102 Dbg() : _m(1), _component(0), _subsys(0) { };
105 Dbg(
unsigned long mask,
char const *comp,
char const *subs)
106 : _m(mask), _component(comp), _subsys(subs)
112 static void set_level(
unsigned long) {}
113 bool is_active()
const {
return false; }
115 int printf(
char const * , ...) const
116 __attribute__((format(printf, 2, 3)))
119 int cprintf(
char const * , ...) const
120 __attribute__((format(printf, 2, 3)))
127 Dbg(
unsigned long,
char const *,
char const *) {}
Common L4 ABI Data Types.