DPDK  22.11.0
Data Structures | Macros | Typedefs | Functions
rte_class.h File Reference
#include <rte_compat.h>
#include <rte_dev.h>

Go to the source code of this file.

Data Structures

struct  rte_class
 

Macros

#define RTE_REGISTER_CLASS(nm, cls)
 

Typedefs

typedef int(* rte_class_cmp_t) (const struct rte_class *cls, const void *data)
 

Functions

 RTE_TAILQ_HEAD (rte_class_list, rte_class)
 
__rte_experimental struct rte_classrte_class_find (const struct rte_class *start, rte_class_cmp_t cmp, const void *data)
 
__rte_experimental struct rte_classrte_class_find_by_name (const char *name)
 
__rte_experimental void rte_class_register (struct rte_class *cls)
 
__rte_experimental void rte_class_unregister (struct rte_class *cls)
 

Detailed Description

DPDK device class interface.

This file describes the interface of the device class abstraction layer.

A device class defines the type of function a device will be used for e.g.: Ethernet adapter (eth), cryptographic co-processor (crypto), etc.

Definition in file rte_class.h.

Macro Definition Documentation

◆ RTE_REGISTER_CLASS

#define RTE_REGISTER_CLASS (   nm,
  cls 
)
Value:
RTE_INIT_PRIO(classinitfn_ ##nm, CLASS) \
{\
(cls).name = RTE_STR(nm); \
rte_class_register(&cls); \
}
#define RTE_INIT_PRIO(func, prio)
Definition: rte_common.h:182
#define RTE_STR(x)
Definition: rte_common.h:841

Helper for Class registration. The constructor has lower priority than Bus constructors. The constructor has higher priority than PMD constructors.

Definition at line 116 of file rte_class.h.

Typedef Documentation

◆ rte_class_cmp_t

typedef int(* rte_class_cmp_t) (const struct rte_class *cls, const void *data)

Class comparison function.

Parameters
clsClass under test.
dataData to compare against.
Returns
0 if the class matches the data. !0 if the class does not match. <0 if ordering is possible and the class is lower than the data. >0 if ordering is possible and the class is greater than the data.

Definition at line 55 of file rte_class.h.

Function Documentation

◆ RTE_TAILQ_HEAD()

RTE_TAILQ_HEAD ( rte_class_list  ,
rte_class   
)

Double linked list of classes

Examples:
examples/vm_power_manager/channel_manager.c.

◆ rte_class_find()

__rte_experimental struct rte_class* rte_class_find ( const struct rte_class start,
rte_class_cmp_t  cmp,
const void *  data 
)

Class iterator to find a particular class.

This function compares each registered class to find one that matches the data passed as parameter.

If the comparison function returns zero this function will stop iterating over any more classes. To continue a search the class of a previous search can be passed via the start parameter.

Parameters
startStarting point for the iteration.
cmpComparison function.
dataData to pass to comparison function.
Returns
A pointer to a rte_class structure or NULL in case no class matches

◆ rte_class_find_by_name()

__rte_experimental struct rte_class* rte_class_find_by_name ( const char *  name)

Find the registered class for a given name.

◆ rte_class_register()

__rte_experimental void rte_class_register ( struct rte_class cls)

Register a Class handle.

Parameters
clsA pointer to a rte_class structure describing the class to be registered.

◆ rte_class_unregister()

__rte_experimental void rte_class_unregister ( struct rte_class cls)

Unregister a Class handle.

Parameters
clsA pointer to a rte_class structure describing the class to be unregistered.