Data Accelerator Offload
Loading...
Searching...
No Matches
dao_util.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: Marvell-MIT
2 * Copyright (c) 2023 Marvell.
3 */
4
13#ifndef __DAO_UTIL_H__
14#define __DAO_UTIL_H__
15
22#define DAO_FREE(ptr) \
23 do { \
24 free(ptr); \
25 ptr = NULL; \
26 } while (0)
27
33#define DAO_ROUNDUP(x, y) ((((x) + ((y) - 1)) / (y)) * (y))
34
40#define DAO_ROUNDDOWN(x, y) ((x / y) * y)
41
47#define DAO_BIT(nr) (1UL << (nr))
48
54#define DAO_BIT_ULL(nr) (1ULL << (nr))
55
61#define DAO_BITS_PER_LONG_LONG (__SIZEOF_LONG_LONG__ * 8)
62
68#define DAO_GENMASK_ULL(h, l) (((~0ULL) << (l)) & (~0ULL >> (DAO_BITS_PER_LONG_LONG - 1 - (h))))
69
75#define DAO_STATIC_ASSERT(s) _Static_assert(s, #s)
76
82#define DAO_TAILQ_FOREACH_SAFE(var, head, field, tvar) \
83 for ((var) = TAILQ_FIRST((head)); (var) && ((tvar) = TAILQ_NEXT((var), field), 1); \
84 (var) = (tvar))
85
94static inline bool
95dao_check_bit_is_set(int n, int pos)
96{
97 return (n & (1 << (pos - 1))) != 0;
98}
99
111int dao_pci_bdf_to_hw_func(const char *pci_bdf);
112
125static inline volatile void *
126dao_dev_memcpy(volatile void *d, const volatile void *s, size_t l)
127{
128 const volatile uint8_t *sb;
129 volatile uint8_t *db;
130 size_t i;
131
132 if (!d || !s)
133 return NULL;
134 db = (volatile uint8_t *)d;
135 sb = (const volatile uint8_t *)s;
136 for (i = 0; i < l; i++)
137 db[i] = sb[i];
138 return d;
139}
140
151static inline void
152dao_dev_memset(volatile void *d, uint8_t val, size_t l)
153{
154 volatile uint8_t *db;
155 size_t i = 0;
156
157 if (!d || !l)
158 return;
159 db = (volatile uint8_t *)d;
160 for (i = 0; i < l; i++)
161 db[i] = val;
162}
163
172static inline void
173dao_dev_memzero(volatile void *d, size_t l)
174{
175 volatile uint64_t *db;
176 size_t i = 0;
177
178 if (!d || !l || (l % 8))
179 return;
180
181 db = (volatile uint64_t *)d;
182 for (i = 0; i < l; i++)
183 db[i] = 0;
184}
185#endif /* __DAO_UTIL_H__ */
static bool dao_check_bit_is_set(int n, int pos)
Definition dao_util.h:95
static void dao_dev_memset(volatile void *d, uint8_t val, size_t l)
Definition dao_util.h:152
static volatile void * dao_dev_memcpy(volatile void *d, const volatile void *s, size_t l)
Definition dao_util.h:126
static void dao_dev_memzero(volatile void *d, size_t l)
Definition dao_util.h:173
int dao_pci_bdf_to_hw_func(const char *pci_bdf)