X-Git-Url: https://codewiz.org/gitweb?a=blobdiff_plain;f=bertos%2Fcfg%2Fcompiler.h;h=3a2f34c2c429f159bbc02f2d95c55a24457d6169;hb=f7b9f562693460fca28061c13a40e2a363cf00f7;hp=0121b96367fe067cc98ba9a92004356c05ef56a5;hpb=48586b4fc3e575029a88ab37930c8a0e723ca99d;p=bertos.git diff --git a/bertos/cfg/compiler.h b/bertos/cfg/compiler.h index 0121b963..3a2f34c2 100644 --- a/bertos/cfg/compiler.h +++ b/bertos/cfg/compiler.h @@ -450,6 +450,9 @@ #endif #endif +/** User defined callback type */ +typedef void (*Hook)(void *); + /** Bulk storage large enough for both pointers or integers. */ typedef void * iptr_t; @@ -459,6 +462,14 @@ typedef const void * const_iptr_t; typedef unsigned char sigbit_t; /**< Type for signal bits. */ typedef unsigned char sigmask_t; /**< Type for signal masks. */ +/** + * Signal structure + */ +typedef struct Signal +{ + sigmask_t wait; /**< Signals the process is waiting for */ + sigmask_t recv; /**< Received signals */ +} Signal; /** * \name Standard type definitions. @@ -603,4 +614,11 @@ typedef unsigned char sigmask_t; /**< Type for signal masks. */ do { (void)(&(var) == (type *)0); } while(0) #endif +/** + * Prevent the compiler from optimizing access to the variable \a x, enforcing + * a refetch from memory. This also forbid from reordering successing instances + * of ACCESS_SAFE(). + */ +#define ACCESS_SAFE(x) (*(volatile typeof(x) *)&(x)) + #endif /* BERTOS_COMPILER_H */