Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
rte_common.h(3) 		      DPDK			 rte_common.h(3)

NAME
     rte_common.h

SYNOPSIS
     #include <assert.h>
     #include <limits.h>
     #include <stdbool.h>
     #include <stdint.h>
     #include <stdalign.h>
     #include <rte_compat.h>
     #include <rte_config.h>
     #include <rte_os.h>

   Macros
     #define __rte_aligned(a)	__attribute__((__aligned__(a)))
     #define	   __rte_packed 	(RTE_DEPRECATED(__rte_packed)	   __at-
	 tribute__((__packed__)))
     #define __rte_packed_begin
     #define __rte_may_alias   __attribute__((__may_alias__))
     #define RTE_DEPRECATED(x)
     #define __rte_diagnostic_push   _Pragma('GCC diagnostic push')
     #define __rte_diagnostic_ignored_wcast_qual   _Pragma('GCC  diagnostic  ig-
	 nored '-Wcast-qual'')
     #define __rte_weak   RTE_DEPRECATED(__rte_weak) __attribute__((__weak__))
     #define __rte_pure   __attribute__((pure))
     #define __rte_used   __attribute__((used))
     #define __rte_unused   __attribute__((__unused__))
     #define __rte_restrict   __restrict
     #define RTE_SET_USED(x)   (void)(x)
     #define	 __rte_format_printf(format_index,     first_arg)	   __at-
	 tribute__((format(printf, format_index, first_arg)))
     #define __rte_section(name)	__attribute__((section(name)))
     #define __rte_alloc_size(...)
     #define __rte_alloc_align(argno)
     #define __rte_malloc
     #define __rte_dealloc(dealloc,  argno)
     #define RTE_INIT_PRIO(func,  prio)   static  void	__attribute__((construc-
	 tor(RTE_PRIO(prio)), used)) func(void)
     #define RTE_INIT(func)	   RTE_INIT_PRIO(func, LAST)
     #define  RTE_FINI_PRIO(func,   prio)    static void __attribute__((destruc-
	 tor(RTE_PRIO(prio)), used)) func(void)
     #define RTE_FINI(func)	   RTE_FINI_PRIO(func, LAST)
     #define __rte_noreturn   __attribute__((noreturn))
     #define __rte_unreachable()   __assume(0)
     #define __rte_warn_unused_result	__attribute__((warn_unused_result))
     #define __rte_always_inline   inline __attribute__((always_inline))
     #define __rte_noinline   __attribute__((noinline))
     #define __rte_hot	 __attribute__((hot))
     #define __rte_cold   __attribute__((cold))
     #define __rte_assume(condition)   __assume(condition)
     #define __rte_no_asan
     #define RTE_PTR_ADD(ptr,  x)   ((void*)((uintptr_t)(ptr) + (x)))
     #define RTE_PTR_SUB(ptr,  x)   ((void *)((uintptr_t)(ptr) - (x)))
     #define RTE_PTR_DIFF(ptr1,  ptr2)	 ((uintptr_t)(ptr1) - (uintptr_t)(ptr2))
     #define RTE_PTR_UNQUAL(X)	 ((void *)(uintptr_t)(X))
     #define RTE_CAST_PTR(type,  ptr)	((type)(uintptr_t)(ptr))
     #define	 RTE_CAST_FIELD(var,	  field,       type)		 (*(type
	 *)((uintptr_t)(var) + offsetof(typeof(*(var)), field)))
     #define		       RTE_PTR_ALIGN_FLOOR(ptr, 		  align)
	   ((typeof(ptr))RTE_ALIGN_FLOOR((uintptr_t)(ptr), align))
     #define	RTE_ALIGN_FLOOR(val,	 align)        (typeof(val))((val)     &
	 (~((typeof(val))((align) - 1))))
     #define		       RTE_PTR_ALIGN_CEIL(ptr,			  align)
	    RTE_PTR_ALIGN_FLOOR((typeof(ptr))RTE_PTR_ADD(ptr,  (align)	 -   1),
	 align)
     #define	RTE_ALIGN_CEIL(val,	align)	      RTE_ALIGN_FLOOR(((val)   +
	 ((typeof(val)) (align) - 1)), align)
     #define RTE_PTR_ALIGN(ptr,  align)   RTE_PTR_ALIGN_CEIL(ptr, align)
     #define RTE_ALIGN(val,  align)   RTE_ALIGN_CEIL(val, align)
     #define RTE_ALIGN_MUL_CEIL(v,  mul)     ((((v) + (typeof(v))(mul)	-  1)  /
	 ((typeof(v))(mul))) * (typeof(v))(mul))
     #define  RTE_ALIGN_MUL_FLOOR(v,   mul)	(((v)  /  ((typeof(v))(mul)))  *
	 (typeof(v))(mul))
     #define RTE_ALIGN_MUL_NEAR(v,  mul)
     #define  RTE_BUILD_BUG_ON(condition)    do  {   static_assert(!(condition),
	 #condition); } while (0)
     #define RTE_CACHE_LINE_MASK   (RTE_CACHE_LINE_SIZE-1)
     #define	     RTE_CACHE_LINE_ROUNDUP(size)	    RTE_ALIGN_CEIL(size,
	 RTE_CACHE_LINE_SIZE)
     #define RTE_CACHE_LINE_MIN_SIZE   64
     #define __rte_cache_aligned   __rte_aligned(RTE_CACHE_LINE_SIZE)
     #define __rte_cache_min_aligned   __rte_aligned(RTE_CACHE_LINE_MIN_SIZE)
     #define RTE_CACHE_GUARD   _RTE_CACHE_GUARD_HELPER1(__COUNTER__)
     #define RTE_MIN(a,  b)
     #define RTE_MIN_T(a,  b,  t)	((t)(a) < (t)(b) ? (t)(a) : (t)(b))
     #define RTE_MAX(a,  b)
     #define RTE_MAX_T(a,  b,  t)	((t)(a) > (t)(b) ? (t)(a) : (t)(b))
     #define offsetof(TYPE,  MEMBER)   __builtin_offsetof (TYPE, MEMBER)
     #define container_of(ptr,	type,  member)
     #define RTE_SWAP(a,  b)
     #define RTE_SIZEOF_FIELD(type,  field)   (sizeof(((type *)0)->field))
     #define RTE_STR(x)   _RTE_STR(x)
     #define RTE_FMT(fmt, ...)	 fmt '%.0s', __VA_ARGS__ ''
     #define RTE_LEN2MASK(ln,  tp)	((tp)((uint64_t)-1 >>  (sizeof(uint64_t)
	 * CHAR_BIT - (ln))))
     #define RTE_DIM(a)   (sizeof (a) / sizeof ((a)[0]))

   Typedefs
     typedef uint64_t phys_addr_t
     typedef uint64_t rte_iova_t

   Functions
     static  int rte_is_aligned (const void *const __rte_restrict ptr, const un-
	 signed int align)
     uint64_t rte_str_to_size (const char *str)
     __rte_experimental  char  *  rte_size_to_str  (char  *buf,  int   buf_size,
	 uint64_t count, bool use_iec, const char *unit)
     __rte_noreturn  void  rte_exit  (int  exit_code,  const  char  *format,...)
	 __rte_format_printf(2

   Variables
     __extension__ typedef void * RTE_MARKER [0]
     __extension__ typedef uint8_t RTE_MARKER8 [0]
     __extension__ typedef uint16_t RTE_MARKER16 [0]
     __extension__ typedef uint32_t RTE_MARKER32 [0]
     __extension__ typedef uint64_t RTE_MARKER64 [0]

Detailed Description
     Generic, commonly-used macro and inline function definitions for DPDK.

     Definition in file rte_common.h.

Macro Definition Documentation
   #define __rte_aligned(a)   __attribute__((__aligned__(a)))
     Force type alignment

     This macro should be used when alignment of a struct or union type  is  re-
     quired.   For   toolchain	 compatibility	it  should  appear  between  the
     {struct,union} keyword and tag. e.g.

     struct __rte_aligned(8) tag { ... };

     If alignment of an object/variable is required then this macro  should  not
     be used, instead prefer C11 alignas(a).

     Definition at line 121 of file rte_common.h.

   #define	  __rte_packed	       (RTE_DEPRECATED(__rte_packed)	   __at-
     tribute__((__packed__)))
     Deprecated

     See also
	 __rte_packed_begin

	 __rte_packed_end

     Force a structure to be packed

     Definition at line 144 of file rte_common.h.

   #define __rte_packed_begin
     Force a structure to be packed Usage: struct __rte_packed_begin mystruct  {
     ...   }   __rte_packed_end;   union  __rte_packed_begin  myunion  {  ...  }
     __rte_packed_end; Note: alignment attributes when	present  should  precede
     __rte_packed_begin.

     Definition at line 158 of file rte_common.h.

   #define __rte_may_alias   __attribute__((__may_alias__))
     Macro to mark a type that is not subject to type-based aliasing rules

     Definition at line 168 of file rte_common.h.

   #define RTE_DEPRECATED(x)
     Macro to mark macros and defines scheduled for removal

     Definition at line 188 of file rte_common.h.

   #define __rte_diagnostic_push   _Pragma('GCC diagnostic push')
     Macros to cause the compiler to remember the state of the diagnostics as of
     each push, and restore to that point at each pop.

     Definition at line 196 of file rte_common.h.

   #define __rte_diagnostic_ignored_wcast_qual	 _Pragma('GCC diagnostic ignored
     '-Wcast-qual'')
     Macro to disable compiler warnings about removing a type qualifier from the
     target type.

     Definition at line 208 of file rte_common.h.

   #define __rte_weak	RTE_DEPRECATED(__rte_weak) __attribute__((__weak__))
     Mark a function or variable to a weak reference.

     Definition at line 219 of file rte_common.h.

   #define __rte_pure	__attribute__((pure))
     Mark a function to be pure.

     Definition at line 228 of file rte_common.h.

   #define __rte_used	__attribute__((used))
     Force symbol to be generated even if it appears to be unused.

     Definition at line 237 of file rte_common.h.

   #define __rte_unused   __attribute__((__unused__))
     short definition to mark a function parameter unused

     Definition at line 248 of file rte_common.h.

   #define __rte_restrict   __restrict
     Mark pointer as restricted with regard to pointer aliasing.

     Definition at line 255 of file rte_common.h.

   #define RTE_SET_USED(x)   (void)(x)
     definition  to mark a variable or function parameter as used so as to avoid
     a compiler warning

     Definition at line 264 of file rte_common.h.

   #define     __rte_format_printf(format_index,     first_arg) 	   __at-
     tribute__((format(printf, format_index, first_arg)))
     Check format string and its arguments at compile-time.

     GCC  on  Windows  assumes MS-specific format string by default, even if the
     underlying stdio implementation is ANSI-compliant, so this must be overrid-
     den.

     Definition at line 280 of file rte_common.h.

   #define __rte_section(name)	      __attribute__((section(name)))
     Specify data or function section/segment.

     Definition at line 292 of file rte_common.h.

   #define __rte_alloc_size( ...)
     Tells compiler that the function returns a value  that  points  to  memory,
     where  the  size  is given by the one or two arguments. Used by compiler to
     validate object size.

     Definition at line 305 of file rte_common.h.

   #define __rte_alloc_align(argno)
     Tells the compiler that the function returns a value that points to  memory
     aligned by a function argument.

     Note: not enabled on Clang because it warns if align argument is zero.

     Definition at line 318 of file rte_common.h.

   #define __rte_malloc
     Tells  the compiler this is a function like malloc and that the pointer re-
     turned cannot alias any other pointer (ie new memory).

     Definition at line 328 of file rte_common.h.

   #define __rte_dealloc(dealloc, argno)
     With recent GCC versions also able to track that proper  deallocator  func-
     tion is used for this pointer.

     Definition at line 339 of file rte_common.h.

   #define  RTE_INIT_PRIO(func,  prio)	  static  void	__attribute__((construc-
     tor(RTE_PRIO(prio)), used)) func(void)
     Run function before main() with high priority.

     Parameters
	 func Constructor function.
	 prio Priority number must be above 100. Lowest number is the  first  to
	 run.

     Definition at line 361 of file rte_common.h.

   #define RTE_INIT(func)	 RTE_INIT_PRIO(func, LAST)
     Run function before main() with low priority.

     The constructor will be run after prioritized constructors.

     Parameters
	 func Constructor function.

     Definition at line 393 of file rte_common.h.

   #define   RTE_FINI_PRIO(func,  prio)    static  void  __attribute__((destruc-
     tor(RTE_PRIO(prio)), used)) func(void)
     Run after main() with low priority.

     Parameters
	 func Destructor function name.
	 prio Priority number must be above 100. Lowest number is  the	last  to
	 run.

     Definition at line 407 of file rte_common.h.

   #define RTE_FINI(func)	 RTE_FINI_PRIO(func, LAST)
     Run after main() with high priority.

     The destructor will be run before prioritized destructors.

     Parameters
	 func Destructor function name.

     Definition at line 434 of file rte_common.h.

   #define __rte_noreturn   __attribute__((noreturn))
     Hint never returning function

     Definition at line 443 of file rte_common.h.

   #define __rte_unreachable()	 __assume(0)
     Hint point in program never reached

     Definition at line 452 of file rte_common.h.

   #define __rte_warn_unused_result   __attribute__((warn_unused_result))
     Issue a warning in case the function's return value is ignored.

     The  use of this attribute should be restricted to cases where ignoring the
     marked function's return value is almost always a bug. With GCC,  some  ef-
     fort  is  required  to  make clear that ignoring the return value is inten-
     tional. The usual void-casting method to mark something unused as used does
     not suppress the warning with this compiler.

     __rte_warn_unused_result int foo();

     void ignore_foo_result(void) {
	     foo(); // generates a warning with all compilers

	     (void)foo(); // still generates the warning with GCC (but not clang)

	     int unused __rte_unused;
	     unused = foo(); // does the trick with all compilers
      }

     Definition at line 481 of file rte_common.h.

   #define __rte_always_inline	 inline __attribute__((always_inline))
     Force a function to be inlined

     Definition at line 490 of file rte_common.h.

   #define __rte_noinline   __attribute__((noinline))
     Force a function to be noinlined

     Definition at line 499 of file rte_common.h.

   #define __rte_hot   __attribute__((hot))
     Hint function in the hot path

     Definition at line 508 of file rte_common.h.

   #define __rte_cold	__attribute__((cold))
     Hint function in the cold path

     Definition at line 517 of file rte_common.h.

   #define __rte_assume(condition)   __assume(condition)
     Hint precondition

     Warning
	 Depending on the compiler, any code in  condition  might  be  executed.
	 This currently only occurs with GCC prior to version 13.

     Definition at line 533 of file rte_common.h.

   #define __rte_no_asan
     Disable AddressSanitizer on some code

     Definition at line 546 of file rte_common.h.

   #define RTE_PTR_ADD(ptr, x)	 ((void*)((uintptr_t)(ptr) + (x)))
     add a byte-value offset to a pointer

     Definition at line 554 of file rte_common.h.

   #define RTE_PTR_SUB(ptr, x)	 ((void *)((uintptr_t)(ptr) - (x)))
     subtract a byte-value offset from a pointer

     Definition at line 559 of file rte_common.h.

   #define RTE_PTR_DIFF(ptr1, ptr2)   ((uintptr_t)(ptr1) - (uintptr_t)(ptr2))
     get  the difference between two pointer values, i.e. how far apart in bytes
     are the locations they point two. It is assumed that ptr1 is  greater  than
     ptr2.

     Definition at line 566 of file rte_common.h.

   #define RTE_PTR_UNQUAL(X)   ((void *)(uintptr_t)(X))
     Macro  to	discard  qualifiers  (such  as const, volatile, restrict) from a
     pointer, without the compiler emitting a warning.

     Definition at line 574 of file rte_common.h.

   #define RTE_CAST_PTR(type, ptr)   ((type)(uintptr_t)(ptr))
     Macro to cast a pointer to a specific type, without the compiler emitting a
     warning about discarding qualifiers.

     Warning
	 When casting a pointer to point to a larger type, the resulting pointer
	 may be misaligned, which results in undefined behavior. E.g.:

     struct s { uint16_t a; uint8_t b; uint8_t c; uint8_t d; } v; uint16_t * p =
     RTE_CAST_PTR(uint16_t *, &v.c); // 'p' is not 16 bit aligned!

     Definition at line 593 of file rte_common.h.

   #define RTE_CAST_FIELD(var, field, type)	 (*(type  *)((uintptr_t)(var)  +
     offsetof(typeof(*(var)), field)))
     Workaround to cast a const field of a structure to non-const type.

     Definition at line 598 of file rte_common.h.

   #define		      RTE_PTR_ALIGN_FLOOR(ptr,			  align)
	((typeof(ptr))RTE_ALIGN_FLOOR((uintptr_t)(ptr), align))
     Macro to align a pointer to a given  power-of-two.  The  resultant  pointer
     will  be a pointer of the same type as the first parameter, and point to an
     address no higher than the first parameter.  Second  parameter  must  be  a
     power-of-two value.

     Definition at line 610 of file rte_common.h.

   #define     RTE_ALIGN_FLOOR(val,	align)	       (typeof(val))((val)     &
     (~((typeof(val))((align) - 1))))
     Macro to align a value to a given power-of-two. The resultant value will be
     of the same type as the first parameter, and will be  no  bigger  than  the
     first parameter. Second parameter must be a power-of-two value.

     Definition at line 619 of file rte_common.h.

   #define		       RTE_PTR_ALIGN_CEIL(ptr,			  align)
	 RTE_PTR_ALIGN_FLOOR((typeof(ptr))RTE_PTR_ADD(ptr, (align) - 1), align)
     Macro to align a pointer to a given  power-of-two.  The  resultant  pointer
     will  be a pointer of the same type as the first parameter, and point to an
     address no lower than the first  parameter.  Second  parameter  must  be  a
     power-of-two value.

     Definition at line 628 of file rte_common.h.

   #define     RTE_ALIGN_CEIL(val,    align)	     RTE_ALIGN_FLOOR(((val)    +
     ((typeof(val)) (align) - 1)), align)
     Macro to align a value to a given power-of-two. The resultant value will be
     of the same type as the first parameter, and will	be  no	lower  than  the
     first parameter. Second parameter must be a power-of-two value.

     Definition at line 637 of file rte_common.h.

   #define RTE_PTR_ALIGN(ptr, align)   RTE_PTR_ALIGN_CEIL(ptr, align)
     Macro  to	align  a  pointer to a given power-of-two. The resultant pointer
     will be a pointer of the same type as the first parameter, and point to  an
     address  no  lower  than  the  first  parameter. Second parameter must be a
     power-of-two value. This function is the same as RTE_PTR_ALIGN_CEIL

     Definition at line 647 of file rte_common.h.

   #define RTE_ALIGN(val, align)   RTE_ALIGN_CEIL(val, align)
     Macro to align a value to a given power-of-two. The resultant value will be
     of the same type as the first parameter, and will	be  no	lower  than  the
     first  parameter. Second parameter must be a power-of-two value. This func-
     tion is the same as RTE_ALIGN_CEIL

     Definition at line 656 of file rte_common.h.

   #define RTE_ALIGN_MUL_CEIL(v, mul)	   ((((v)  +  (typeof(v))(mul)	-  1)  /
     ((typeof(v))(mul))) * (typeof(v))(mul))
     Macro  to align a value to the multiple of given value. The resultant value
     will be of the same type as the first parameter and will be no  lower  than
     the first parameter.

     Definition at line 663 of file rte_common.h.

   #define   RTE_ALIGN_MUL_FLOOR(v,   mul)	(((v)  /  ((typeof(v))(mul)))  *
     (typeof(v))(mul))
     Macro to align a value to the multiple of given value. The resultant  value
     will  be of the same type as the first parameter and will be no higher than
     the first parameter.

     Definition at line 671 of file rte_common.h.

   #define RTE_ALIGN_MUL_NEAR(v, mul)
     Value:.PP
	 __extension__ ({		     \
	     typeof(v) ceil = RTE_ALIGN_MUL_CEIL(v, mul);    \
	     typeof(v) floor = RTE_ALIGN_MUL_FLOOR(v, mul);  \
	     (ceil - (v)) > ((v) - floor) ? floor : ceil;  \
	 })
     Macro to align value to the nearest multiple of the given value. The resul-
     tant value might be greater than or less than the first parameter whichever
     difference is the lowest.

     Definition at line 679 of file rte_common.h.

   #define RTE_BUILD_BUG_ON(condition)	 do { static_assert(!(condition),  #con-
     dition); } while (0)
     Triggers an error at compilation time if the condition is true.

     The  do  { } while(0) exists to workaround a bug in clang (#55821) where it
     would not handle _Static_assert in a switch case.

     Definition at line 716 of file rte_common.h.

   #define RTE_CACHE_LINE_MASK	 (RTE_CACHE_LINE_SIZE-1)
     Cache line mask.

     Definition at line 721 of file rte_common.h.

   #define	    RTE_CACHE_LINE_ROUNDUP(size)	    RTE_ALIGN_CEIL(size,
     RTE_CACHE_LINE_SIZE)
     Return the first cache-aligned value greater or equal to size.

     Definition at line 724 of file rte_common.h.

   #define RTE_CACHE_LINE_MIN_SIZE   64
     Cache line size in terms of log2 Minimum Cache line size.

     Definition at line 736 of file rte_common.h.

   #define __rte_cache_aligned	 __rte_aligned(RTE_CACHE_LINE_SIZE)
     Force alignment to cache line.

     Definition at line 739 of file rte_common.h.

   #define __rte_cache_min_aligned   __rte_aligned(RTE_CACHE_LINE_MIN_SIZE)
     Force minimum cache line alignment.

     Definition at line 742 of file rte_common.h.

   #define RTE_CACHE_GUARD   _RTE_CACHE_GUARD_HELPER1(__COUNTER__)
     Empty  cache  lines, to guard against false sharing-like effects on systems
     with a next-N-lines hardware prefetcher.

     Use as spacing between data accessed by different lcores, to prevent  cache
     thrashing on hardware with speculative prefetching.

     Definition at line 755 of file rte_common.h.

   #define RTE_MIN(a, b)
     Value:.PP
	 __extension__ ({ \
	     typeof (a) _a = (a); \
	     typeof (b) _b = (b); \
	     _a < _b ? _a : _b; \
	 })
     Macro to return the minimum of two numbers

     Definition at line 795 of file rte_common.h.

   #define RTE_MIN_T(a, b, t)	 ((t)(a) < (t)(b) ? (t)(a) : (t)(b))
     Macro to return the minimum of two numbers

     As  opposed  to  RTE_MIN,	it does not use temporary variables so it is not
     safe if a or b is an expression. Yet it is guaranteed to  be  constant  for
     use in static_assert().

     Definition at line 809 of file rte_common.h.

   #define RTE_MAX(a, b)
     Value:.PP
	 __extension__ ({ \
	     typeof (a) _a = (a); \
	     typeof (b) _b = (b); \
	     _a > _b ? _a : _b; \
	 })
     Macro to return the maximum of two numbers

     Definition at line 815 of file rte_common.h.

   #define RTE_MAX_T(a, b, t)	 ((t)(a) > (t)(b) ? (t)(a) : (t)(b))
     Macro to return the maximum of two numbers

     As  opposed  to  RTE_MAX,	it does not use temporary variables so it is not
     safe if a or b is an expression. Yet it is guaranteed to  be  constant  for
     use in static_assert().

     Definition at line 829 of file rte_common.h.

   #define offsetof(TYPE, MEMBER)   __builtin_offsetof (TYPE, MEMBER)
     Return the offset of a field in a structure.

     Definition at line 836 of file rte_common.h.

   #define container_of(ptr, type, member)
     Value:.PP
		 __extension__ ({	 \
		 const typeof(((type *)0)->member) *_ptr = (ptr); \
		 __rte_unused type *_target_ptr =    \
		     (type *)(ptr);		 \
		 (type *)(((uintptr_t)_ptr) - offsetof(type, member)); \
	     })
     Return pointer to the wrapping struct instance.

     Example:

     struct wrapper { ... struct child c; ... };

     struct  child  *x = obtain(...); struct wrapper *w = container_of(x, struct
     wrapper, c);

     Definition at line 858 of file rte_common.h.

   #define RTE_SWAP(a, b)
     Value:.PP
	 __extension__ ({ \
	     typeof (a) _a = a; \
	     a = b; \
	     b = _a; \
	 })
     Swap two variables.

     Definition at line 868 of file rte_common.h.

   #define RTE_SIZEOF_FIELD(type, field)   (sizeof(((type *)0)->field))
     Get the size of a field in a structure.

     Parameters
	 type The type of the structure.
	 field The field in the structure.

     Returns
	 The size of the field in the structure, in bytes.

     Definition at line 885 of file rte_common.h.

   #define RTE_STR(x)	_RTE_STR(x)
     Take a macro value and get a string version of it

     Definition at line 889 of file rte_common.h.

   #define RTE_FMT(fmt,  ...)	fmt '%.0s', __VA_ARGS__ ''
     ISO C helpers to modify format strings using variadic macros. This is a re-
     placement for the ', ## __VA_ARGS__' GNU extension. An empty s argument  is
     appended to avoid a dangling comma.

     Definition at line 896 of file rte_common.h.

   #define  RTE_LEN2MASK(ln, tp)       ((tp)((uint64_t)-1 >> (sizeof(uint64_t) *
     CHAR_BIT - (ln))))
     Mask value of type 'tp' for the first 'ln' bit set.

     Definition at line 901 of file rte_common.h.

   #define RTE_DIM(a)	(sizeof (a) / sizeof ((a)[0]))
     Number of elements in the array.

     Definition at line 905 of file rte_common.h.

Typedef Documentation
   typedef uint64_t phys_addr_t
     Physical address

     Definition at line 760 of file rte_common.h.

   typedef uint64_t rte_iova_t
     IO virtual address type. When the physical addressing mode (IOVA as PA)  is
     in use, the translation from an IO virtual address (IOVA) to a physical ad-
     dress  is a direct mapping, i.e. the same value. Otherwise, in virtual mode
     (IOVA as VA), an IOMMU may do the translation.

     Definition at line 770 of file rte_common.h.

Function Documentation
   static int rte_is_aligned (const void *const __rte_restrict	ptr,  const  un-
     signed int align) [inline],  [static]
     Checks if a pointer is aligned to a given power-of-two value

     Parameters
	 ptr The pointer whose alignment is to be checked
	 align The power-of-two value to which the ptr should be aligned

     Returns
	 True(1) where the pointer is correctly aligned, false(0) otherwise

     Definition at line 698 of file rte_common.h.

   uint64_t rte_str_to_size (const char * str)
     Converts  a  numeric  string  to  the equivalent uint64_t value. As well as
     straight number conversion, also recognises the suffixes k,  m  and  g  for
     kilobytes, megabytes and gigabytes respectively.

     If  a  negative  number is passed in i.e. a string with the first non-black
     character being '-', zero is returned. Zero is also returned in the case of
     an error with the strtoull call in the function.

     Parameters
	 str String containing number to convert.

     Returns
	 Number.

   __rte_experimental char * rte_size_to_str (char * buf, int buf_size, uint64_t
     count, bool use_iec, const char * unit)
     Warning
	 EXPERIMENTAL: this API may change without prior notice.

     Converts the uint64_t value provided to a human-readable string.  It  null-
     terminates  the  string,  truncating  the	data if needed. An optional unit
     (like 'B') can be provided as a string. It will be appended to the  number,
     and a space will be inserted before the unit if needed.

     Sample   outputs:	(1)  'use_iec'	disabled,  (2)	'use_iec'  enabled,  (3)
     'use_iec' enabled and 'B' as unit. 0 : '0', '0', '0 B' 700 : '700',  '700',
     '700 B' 1000 : '1.00 k', '1000', '1000 B' 1024 : '1.02 k', '1.00 ki', '1.00
     kiB'  21474836480	: '21.5 G', '20.0 Gi', '20.0 GiB' 109951162777600 : '110
     T', '100 Ti', '100 TiB'

     Parameters
	 buf Buffer to write the string to.
	 buf_size Size of the buffer.
	 count Number to convert.
	 use_iec If true, use IEC units (1024-based),  otherwise  use  SI  units
	 (1000-based).
	 unit Unit to append to the string (Like 'B' for bytes). Can be NULL.

     Returns
	 buf on success, NULL if the buffer is too small.

   __rte_noreturn void rte_exit (int exit_code, const char * format,  ...)
     Function  to  terminate the application immediately, printing an error mes-
     sage and returning the exit_code back to the shell.

     This function never returns

     Parameters
	 exit_code The exit code to be returned by the application
	 format The format string to be used for printing the message. This  can
	 include  printf format characters which will be expanded using any fur-
	 ther parameters to the function.

Variable Documentation
   __extension__ typedef void* RTE_MARKER[0]
     Generic marker for any place in a structure.

     Definition at line 778 of file rte_common.h.

   __extension__ typedef uint8_t RTE_MARKER8[0]
     Marker for 1B alignment in a structure.

     Definition at line 780 of file rte_common.h.

   __extension__ typedef uint16_t RTE_MARKER16[0]
     Marker for 2B alignment in a structure.

     Definition at line 782 of file rte_common.h.

   __extension__ typedef uint32_t RTE_MARKER32[0]
     Marker for 4B alignment in a structure.

     Definition at line 784 of file rte_common.h.

   __extension__ typedef uint64_t RTE_MARKER64[0]
     Marker for 8B alignment in a structure.

     Definition at line 786 of file rte_common.h.

Author
     Generated automatically by Doxygen for DPDK from the source code.

Version 25.11.0 		 Thu Aug 27 2026		 rte_common.h(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=__rte_warn_unused_result&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help