EXTRACT
#define EXTRACT(u, f) (((u) >> f##__S) & f##__M)
#define EXTRACT(var, prop) (((var)>>prop##_SHIFT) & prop##_MASK)
#define EXTRACT(val, field) (((val) & field##__MASK) >> field##__SHIFT)
#define EXTRACT(val, dec, bits) (((val) >> (dec)) & ((1 << (bits)) - 1))