22#define DAO_FREE(ptr)                                                                              \ 
 
   33#define DAO_ROUNDUP(x, y) ((((x) + ((y) - 1)) / (y)) * (y)) 
   40#define DAO_ROUNDDOWN(x, y) ((x / y) * y) 
   47#define DAO_BIT(nr) (1UL << (nr)) 
   54#define DAO_BIT_ULL(nr) (1ULL << (nr)) 
   61#define DAO_BITS_PER_LONG_LONG (__SIZEOF_LONG_LONG__ * 8) 
   68#define DAO_GENMASK_ULL(h, l) (((~0ULL) << (l)) & (~0ULL >> (DAO_BITS_PER_LONG_LONG - 1 - (h)))) 
   75#define DAO_STATIC_ASSERT(s) _Static_assert(s, #s) 
   82#define DAO_TAILQ_FOREACH_SAFE(var, head, field, tvar)                                             \ 
   83    for ((var) = TAILQ_FIRST((head)); (var) && ((tvar) = TAILQ_NEXT((var), field), 1);         \ 
 
   97    return (n & (1 << (pos - 1))) != 0;
 
 
  125static inline volatile void *
 
  128    const volatile uint8_t *sb;
 
  129    volatile uint8_t *db;
 
  134    db = (
volatile uint8_t *)d;
 
  135    sb = (
const volatile uint8_t *)s;
 
  136    for (i = 0; i < l; i++)
 
 
  154    volatile uint8_t *db;
 
  159    db = (
volatile uint8_t *)d;
 
  160    for (i = 0; i < l; i++)
 
 
  175    volatile uint64_t *db;
 
  178    if (!d || !l || (l % 8))
 
  181    db = (
volatile uint64_t *)d;
 
  182    for (i = 0; i < l; i++)
 
 
static bool dao_check_bit_is_set(int n, int pos)
 
static void dao_dev_memset(volatile void *d, uint8_t val, size_t l)
 
static volatile void * dao_dev_memcpy(volatile void *d, const volatile void *s, size_t l)
 
static void dao_dev_memzero(volatile void *d, size_t l)
 
int dao_pci_bdf_to_hw_func(const char *pci_bdf)