7#ifndef ODP_PIPELINE_WORK_H_
8#define ODP_PIPELINE_WORK_H_
17#define ODP_PL_WORK_CONCAT_HELPER(a, b) a##b
18#define ODP_PL_WORK_CONCAT(a, b) ODP_PL_WORK_CONCAT_HELPER(a, b)
23 config_setting_t *param;
33typedef int (*odp_pl_work_fn_t)(uintptr_t data,
odp_event_t ev[],
int num,
34 odp_pl_work_stats_t *stats);
41typedef void (*odp_pl_work_init_fn_t)(
const odp_pl_work_param_t *param, odp_pl_work_init_t *init);
42typedef void (*odp_pl_work_print_fn_t)(
const char *queue,
const odp_pl_work_stats_t *stats);
43typedef void (*odp_pl_work_destroy_fn_t)(uintptr_t data);
45void odp_pl_work_register_work(
const char *name, odp_pl_work_init_fn_t init_fn,
46 odp_pl_work_print_fn_t print_fn,
47 odp_pl_work_destroy_fn_t destroy_fn);
49#define ODP_PL_WORK_AUTOREGISTER(name, init, print, destroy) \
50 __attribute__((constructor)) \
51 static void ODP_PL_WORK_CONCAT(autoregister, __LINE__)(void) { \
52 odp_pl_work_register_work(name, init, print, destroy); \