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
91#define DAO_PAD_BYTES_TO_MATCH(larger, smaller) \
92 uint8_t _pad[sizeof(larger) > sizeof(smaller) ? sizeof(larger) - sizeof(smaller) : 0]
93
102static inline bool
103dao_check_bit_is_set(int n, int pos)
104{
105 return (n & (1 << (pos - 1))) != 0;
106}
107
119int dao_pci_bdf_to_hw_func(const char *pci_bdf);
120
133static inline volatile void *
134dao_dev_memcpy(volatile void *d, const volatile void *s, size_t l)
135{
136 const volatile uint8_t *sb;
137 volatile uint8_t *db;
138 size_t i;
139
140 if (!d || !s)
141 return NULL;
142 db = (volatile uint8_t *)d;
143 sb = (const volatile uint8_t *)s;
144 for (i = 0; i < l; i++)
145 db[i] = sb[i];
146 return d;
147}
148
159static inline void
160dao_dev_memset(volatile void *d, uint8_t val, size_t l)
161{
162 volatile uint8_t *db;
163 size_t i = 0;
164
165 if (!d || !l)
166 return;
167 db = (volatile uint8_t *)d;
168 for (i = 0; i < l; i++)
169 db[i] = val;
170}
171
180static inline void
181dao_dev_memzero(volatile void *d, size_t l)
182{
183 volatile uint64_t *db;
184 size_t i = 0;
185
186 if (!d || !l || (l % 8))
187 return;
188
189 db = (volatile uint64_t *)d;
190 for (i = 0; i < l; i++)
191 db[i] = 0;
192}
193#endif /* __DAO_UTIL_H__ */
static bool dao_check_bit_is_set(int n, int pos)
Definition dao_util.h:103
static void dao_dev_memset(volatile void *d, uint8_t val, size_t l)
Definition dao_util.h:160
static volatile void * dao_dev_memcpy(volatile void *d, const volatile void *s, size_t l)
Definition dao_util.h:134
static void dao_dev_memzero(volatile void *d, size_t l)
Definition dao_util.h:181
int dao_pci_bdf_to_hw_func(const char *pci_bdf)