diff --git a/c/include/bits.h b/c/include/bits.h index 85d6ea0..6a841af 100644 --- a/c/include/bits.h +++ b/c/include/bits.h @@ -44,11 +44,30 @@ typedef uint8_t u8; /* convenience types */ +typedef long long int llong; +typedef unsigned long long int ullong; typedef unsigned long int ulong; typedef unsigned int uint; typedef unsigned short ushort; typedef unsigned char uchar; +/* define common types sizes + */ +#define BITS_PER_CHAR 8 + +#ifndef BITS_PER_SHORT +#define BITS_PER_SHORT (BITS_PER_CHAR * sizeof (short)) +#endif +#ifndef BITS_PER_INT +#define BITS_PER_INT (BITS_PER_CHAR * sizeof (int)) +#endif +#ifndef BITS_PER_LONG +#define BITS_PER_LONG (BITS_PER_CHAR * sizeof (long)) +#endif +#ifndef BITS_PER_LLONG +#define BITS_PER_LLONG (BITS_PER_CHAR * sizeof (long long)) +#endif + /* count set bits: 10101000 -> 3 * ^ ^ ^ */ diff --git a/c/include/br.h b/c/include/br.h index 3bec0ad..8475d55 100644 --- a/c/include/br.h +++ b/c/include/br.h @@ -18,6 +18,8 @@ #ifndef _BR_H #define _BR_H +#include "struct-group.h" + /* Indirect stringification. Doing two levels allows the parameter to be a * macro itself. For example, compile with -DFOO=bar, __stringify(FOO) * converts to "bar". @@ -31,6 +33,17 @@ #define __PASTE(x, y) ___PASTE(x, y) #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) +/* unused/used parameters/functions + * https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-unused-function-attribute + * https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html#index-unused-type-attribute + * https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-unused-variable-attribute + * https://gcc.gnu.org/onlinedocs/gcc/Label-Attributes.html#index-unused-label-attribute + * https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html#index-used-function-attribute + * https://gcc.gnu.org/onlinedocs/gcc/Common-Variable-Attributes.html#index-used-variable-attribute + */ +#define __unused __attribute__((__unused__)) +#define __used __attribute__((__used__)) + /* see https://lkml.org/lkml/2018/3/20/845 for explanation of this monster */ #define __is_constexpr(x) \ diff --git a/c/include/debug.h b/c/include/debug.h index fcceefd..1c12acf 100644 --- a/c/include/debug.h +++ b/c/include/debug.h @@ -25,6 +25,7 @@ #ifdef DEBUG_DEBUG void debug_init(u32 level); void debug_level_set(u32 level); +u32 debug_level_get(void); void _printf debug(u32 level, bool timestamp, u32 indent, const char *src, u32 line, const char *, ...);