DPDK
25.11.0
Toggle main menu visibility
Loading...
Searching...
No Matches
rte_io.h
Go to the documentation of this file.
1
/* SPDX-License-Identifier: BSD-3-Clause
2
* Copyright(c) 2016 Cavium, Inc
3
*/
4
5
#ifndef _RTE_IO_H_
6
#define _RTE_IO_H_
7
14
15
#include <stdint.h>
16
#include <
rte_common.h
>
17
#include <rte_compat.h>
18
#include <
rte_atomic.h
>
19
20
#ifdef __cplusplus
21
extern
"C"
{
22
#endif
23
24
#ifdef __DOXYGEN__
25
38
static
inline
uint8_t
39
rte_read8_relaxed
(
const
volatile
void
*addr);
40
53
static
inline
uint16_t
54
rte_read16_relaxed
(
const
volatile
void
*addr);
55
68
static
inline
uint32_t
69
rte_read32_relaxed
(
const
volatile
void
*addr);
70
83
static
inline
uint64_t
84
rte_read64_relaxed
(
const
volatile
void
*addr);
85
98
99
static
inline
void
100
rte_write8_relaxed
(uint8_t value,
volatile
void
*addr);
101
114
static
inline
void
115
rte_write16_relaxed
(uint16_t value,
volatile
void
*addr);
116
129
static
inline
void
130
rte_write32_relaxed
(uint32_t value,
volatile
void
*addr);
131
144
static
inline
void
145
rte_write64_relaxed
(uint64_t value,
volatile
void
*addr);
146
155
static
inline
uint8_t
156
rte_read8
(
const
volatile
void
*addr);
157
167
static
inline
uint16_t
168
rte_read16
(
const
volatile
void
*addr);
169
178
static
inline
uint32_t
179
rte_read32
(
const
volatile
void
*addr);
180
189
static
inline
uint64_t
190
rte_read64
(
const
volatile
void
*addr);
191
200
201
static
inline
void
202
rte_write8
(uint8_t value,
volatile
void
*addr);
203
212
static
inline
void
213
rte_write16
(uint16_t value,
volatile
void
*addr);
214
223
static
inline
void
224
rte_write32
(uint32_t value,
volatile
void
*addr);
225
234
static
inline
void
235
rte_write64
(uint64_t value,
volatile
void
*addr);
236
248
__rte_experimental
249
static
inline
void
250
rte_write32_wc
(uint32_t value,
volatile
void
*addr);
251
267
__rte_experimental
268
static
inline
void
269
rte_write32_wc_relaxed
(uint32_t value,
volatile
void
*addr);
270
271
#endif
/* __DOXYGEN__ */
272
273
#ifndef RTE_OVERRIDE_IO_H
274
275
static
__rte_always_inline
uint8_t
276
rte_read8_relaxed
(
const
volatile
void
*addr)
277
{
278
return
*(
const
volatile
uint8_t *)addr;
279
}
280
281
static
__rte_always_inline
uint16_t
282
rte_read16_relaxed
(
const
volatile
void
*addr)
283
{
284
return
*(
const
volatile
uint16_t *)addr;
285
}
286
287
static
__rte_always_inline
uint32_t
288
rte_read32_relaxed
(
const
volatile
void
*addr)
289
{
290
return
*(
const
volatile
uint32_t *)addr;
291
}
292
293
static
__rte_always_inline
uint64_t
294
rte_read64_relaxed
(
const
volatile
void
*addr)
295
{
296
return
*(
const
volatile
uint64_t *)addr;
297
}
298
299
static
__rte_always_inline
void
300
rte_write8_relaxed
(uint8_t value,
volatile
void
*addr)
301
{
302
*(
volatile
uint8_t *)addr = value;
303
}
304
305
static
__rte_always_inline
void
306
rte_write16_relaxed
(uint16_t value,
volatile
void
*addr)
307
{
308
*(
volatile
uint16_t *)addr = value;
309
}
310
311
static
__rte_always_inline
void
312
rte_write32_relaxed
(uint32_t value,
volatile
void
*addr)
313
{
314
*(
volatile
uint32_t *)addr = value;
315
}
316
317
static
__rte_always_inline
void
318
rte_write64_relaxed
(uint64_t value,
volatile
void
*addr)
319
{
320
*(
volatile
uint64_t *)addr = value;
321
}
322
323
static
__rte_always_inline
uint8_t
324
rte_read8
(
const
volatile
void
*addr)
325
{
326
uint8_t val;
327
val =
rte_read8_relaxed
(addr);
328
rte_io_rmb
();
329
return
val;
330
}
331
332
static
__rte_always_inline
uint16_t
333
rte_read16
(
const
volatile
void
*addr)
334
{
335
uint16_t val;
336
val =
rte_read16_relaxed
(addr);
337
rte_io_rmb
();
338
return
val;
339
}
340
341
static
__rte_always_inline
uint32_t
342
rte_read32
(
const
volatile
void
*addr)
343
{
344
uint32_t val;
345
val =
rte_read32_relaxed
(addr);
346
rte_io_rmb
();
347
return
val;
348
}
349
350
static
__rte_always_inline
uint64_t
351
rte_read64
(
const
volatile
void
*addr)
352
{
353
uint64_t val;
354
val =
rte_read64_relaxed
(addr);
355
rte_io_rmb
();
356
return
val;
357
}
358
359
static
__rte_always_inline
void
360
rte_write8
(uint8_t value,
volatile
void
*addr)
361
{
362
rte_io_wmb
();
363
rte_write8_relaxed
(value, addr);
364
}
365
366
static
__rte_always_inline
void
367
rte_write16
(uint16_t value,
volatile
void
*addr)
368
{
369
rte_io_wmb
();
370
rte_write16_relaxed
(value, addr);
371
}
372
373
static
__rte_always_inline
void
374
rte_write32
(uint32_t value,
volatile
void
*addr)
375
{
376
rte_io_wmb
();
377
rte_write32_relaxed
(value, addr);
378
}
379
380
static
__rte_always_inline
void
381
rte_write64
(uint64_t value,
volatile
void
*addr)
382
{
383
rte_io_wmb
();
384
rte_write64_relaxed
(value, addr);
385
}
386
387
#ifndef RTE_NATIVE_WRITE32_WC
388
static
__rte_always_inline
void
389
rte_write32_wc
(uint32_t value,
volatile
void
*addr)
390
{
391
rte_write32
(value, addr);
392
}
393
394
static
__rte_always_inline
void
395
rte_write32_wc_relaxed
(uint32_t value,
volatile
void
*addr)
396
{
397
rte_write32_relaxed
(value, addr);
398
}
399
#endif
/* RTE_NATIVE_WRITE32_WC */
400
401
#endif
/* RTE_OVERRIDE_IO_H */
402
403
#ifdef __cplusplus
404
}
405
#endif
406
407
#endif
/* _RTE_IO_H_ */
rte_atomic.h
rte_io_rmb
static void rte_io_rmb(void)
rte_io_wmb
static void rte_io_wmb(void)
rte_common.h
__rte_always_inline
#define __rte_always_inline
Definition
rte_common.h:490
rte_write8
static void rte_write8(uint8_t value, volatile void *addr)
Definition
rte_io.h:360
rte_write16_relaxed
static void rte_write16_relaxed(uint16_t value, volatile void *addr)
Definition
rte_io.h:306
rte_write64
static void rte_write64(uint64_t value, volatile void *addr)
Definition
rte_io.h:381
rte_read8
static uint8_t rte_read8(const volatile void *addr)
Definition
rte_io.h:324
rte_read8_relaxed
static uint8_t rte_read8_relaxed(const volatile void *addr)
Definition
rte_io.h:276
rte_read64
static uint64_t rte_read64(const volatile void *addr)
Definition
rte_io.h:351
rte_read16
static uint16_t rte_read16(const volatile void *addr)
Definition
rte_io.h:333
rte_read32_relaxed
static uint32_t rte_read32_relaxed(const volatile void *addr)
Definition
rte_io.h:288
rte_write64_relaxed
static void rte_write64_relaxed(uint64_t value, volatile void *addr)
Definition
rte_io.h:318
rte_read64_relaxed
static uint64_t rte_read64_relaxed(const volatile void *addr)
Definition
rte_io.h:294
rte_write32
static void rte_write32(uint32_t value, volatile void *addr)
Definition
rte_io.h:374
rte_write32_wc_relaxed
static __rte_experimental void rte_write32_wc_relaxed(uint32_t value, volatile void *addr)
Definition
rte_io.h:395
rte_read16_relaxed
static uint16_t rte_read16_relaxed(const volatile void *addr)
Definition
rte_io.h:282
rte_write32_relaxed
static void rte_write32_relaxed(uint32_t value, volatile void *addr)
Definition
rte_io.h:312
rte_write8_relaxed
static void rte_write8_relaxed(uint8_t value, volatile void *addr)
Definition
rte_io.h:300
rte_write32_wc
static __rte_experimental void rte_write32_wc(uint32_t value, volatile void *addr)
Definition
rte_io.h:389
rte_read32
static uint32_t rte_read32(const volatile void *addr)
Definition
rte_io.h:342
rte_write16
static void rte_write16(uint16_t value, volatile void *addr)
Definition
rte_io.h:367
lib
eal
include
generic
rte_io.h
Generated by
1.17.0