#pragma once #ifdef __cplusplus extern "C" { #endif #include "packet_io.h" struct marsio_io; struct marsio_io *marsio_io_new(const char *app_symbol, const char *dev_symbol, uint16_t *cpu_mask, uint16_t nr_threads); void marsio_io_free(struct marsio_io *handle); int marsio_io_init(struct marsio_io *handle, uint16_t thr_idx); uint16_t marsio_io_input(struct marsio_io *handle, uint16_t thr_idx, struct packet *pkts, uint16_t nr_pkts); void marsio_io_output(struct marsio_io *handle, uint16_t thr_idx, struct packet *pkts, uint16_t nr_pkts); void marsio_io_drop(struct marsio_io *handle, uint16_t thr_idx, struct packet *pkts, uint16_t nr_pkts); uint16_t marsio_io_inject(struct marsio_io *handle, uint16_t thr_idx, struct packet *pkts, uint16_t nr_pkts); void marsio_io_yield(struct marsio_io *handle, uint16_t thr_idx, uint64_t timeout_ms); struct packet_io_stat *marsio_io_stat(struct marsio_io *handle, uint16_t thr_idx); #ifdef __cplusplus } #endif