mirror of
https://github.com/openharmony/third_party_rust_bindgen.git
synced 2026-07-21 15:15:27 -04:00
1213b3dfb1
remove `clap` dependency 🎉
update the book installation instructions
111 lines
3.6 KiB
C
111 lines
3.6 KiB
C
// bindgen-flags: --with-derive-hash --with-derive-partialeq --with-derive-eq --impl-partialeq --rust-target 1.40
|
|
typedef unsigned char uint8_t;
|
|
typedef unsigned short uint16_t;
|
|
typedef unsigned int uint32_t;
|
|
typedef unsigned long long uint64_t;
|
|
|
|
typedef long long size_t;
|
|
|
|
#define RTE_CACHE_LINE_SIZE 64
|
|
|
|
/**
|
|
* Force alignment
|
|
*/
|
|
#define __rte_aligned(a) __attribute__((__aligned__(a)))
|
|
|
|
/**
|
|
* Force alignment to cache line.
|
|
*/
|
|
#define __rte_cache_aligned __rte_aligned(RTE_CACHE_LINE_SIZE)
|
|
|
|
#define RTE_MEMPOOL_OPS_NAMESIZE 32 /**< Max length of ops struct name. */
|
|
|
|
/**
|
|
* Prototype for implementation specific data provisioning function.
|
|
*
|
|
* The function should provide the implementation specific memory for
|
|
* for use by the other mempool ops functions in a given mempool ops struct.
|
|
* E.g. the default ops provides an instance of the rte_ring for this purpose.
|
|
* it will most likely point to a different type of data structure, and
|
|
* will be transparent to the application programmer.
|
|
* This function should set mp->pool_data.
|
|
*/
|
|
typedef int (*rte_mempool_alloc_t)(struct rte_mempool *mp);
|
|
|
|
/**
|
|
* Free the opaque private data pointed to by mp->pool_data pointer.
|
|
*/
|
|
typedef void (*rte_mempool_free_t)(struct rte_mempool *mp);
|
|
|
|
/**
|
|
* Enqueue an object into the external pool.
|
|
*/
|
|
typedef int (*rte_mempool_enqueue_t)(struct rte_mempool *mp,
|
|
void * const *obj_table, unsigned int n);
|
|
|
|
/**
|
|
* Dequeue an object from the external pool.
|
|
*/
|
|
typedef int (*rte_mempool_dequeue_t)(struct rte_mempool *mp,
|
|
void **obj_table, unsigned int n);
|
|
|
|
/**
|
|
* Return the number of available objects in the external pool.
|
|
*/
|
|
typedef unsigned (*rte_mempool_get_count)(const struct rte_mempool *mp);
|
|
/** Structure defining mempool operations structure */
|
|
struct rte_mempool_ops {
|
|
char name[RTE_MEMPOOL_OPS_NAMESIZE]; /**< Name of mempool ops struct. */
|
|
rte_mempool_alloc_t alloc; /**< Allocate private data. */
|
|
rte_mempool_free_t free; /**< Free the external pool. */
|
|
rte_mempool_enqueue_t enqueue; /**< Enqueue an object. */
|
|
rte_mempool_dequeue_t dequeue; /**< Dequeue an object. */
|
|
rte_mempool_get_count get_count; /**< Get qty of available objs. */
|
|
} __rte_cache_aligned;
|
|
|
|
#define RTE_MEMPOOL_MAX_OPS_IDX 16 /**< Max registered ops structs */
|
|
|
|
/**
|
|
* The rte_spinlock_t type.
|
|
*/
|
|
typedef struct {
|
|
volatile int locked; /**< lock status 0 = unlocked, 1 = locked */
|
|
} rte_spinlock_t;
|
|
|
|
/**
|
|
* Structure storing the table of registered ops structs, each of which contain
|
|
* the function pointers for the mempool ops functions.
|
|
* Each process has its own storage for this ops struct array so that
|
|
* the mempools can be shared across primary and secondary processes.
|
|
* The indices used to access the array are valid across processes, whereas
|
|
* any function pointers stored directly in the mempool struct would not be.
|
|
* This results in us simply having "ops_index" in the mempool struct.
|
|
*/
|
|
struct rte_mempool_ops_table {
|
|
rte_spinlock_t sl; /**< Spinlock for add/delete. */
|
|
uint32_t num_ops; /**< Number of used ops structs in the table. */
|
|
/**
|
|
* Storage for all possible ops structs.
|
|
*/
|
|
struct rte_mempool_ops ops[RTE_MEMPOOL_MAX_OPS_IDX];
|
|
} __rte_cache_aligned;
|
|
|
|
|
|
/* Number of free lists per heap, grouped by size. */
|
|
#define RTE_HEAP_NUM_FREELISTS 13
|
|
|
|
#define LIST_HEAD(name, type) \
|
|
struct name { \
|
|
struct type *lh_first; /* first element */ \
|
|
}
|
|
|
|
/**
|
|
* Structure to hold malloc heap
|
|
*/
|
|
struct malloc_heap {
|
|
rte_spinlock_t lock;
|
|
LIST_HEAD(, malloc_elem) free_head[RTE_HEAP_NUM_FREELISTS];
|
|
unsigned alloc_count;
|
|
size_t total_size;
|
|
} __rte_cache_aligned;
|