#include #include #include #include raw_socket_t * socket = NULL; void __free_mbufs(struct rte_mbuf * bufs[], int nr_bufs) { for (int i = 0; i < nr_bufs; i++) rte_pktmbuf_free(bufs[i]); return; } void * recv_thread(void * arg) { mrlib_thread_init(); struct rte_mbuf * mbufs[128]; while (1) { int ret = marsio_raw_recv(socket, mbufs, 128); __free_mbufs(mbufs, ret); } } int main(int argc, char * argv[]) { int nr_thread = 4; int ret = mrlib_init("testapp", stderr); assert(ret == 0); socket = marsio_raw_socket("mr0"); assert(socket != NULL); pthread_t * pids = (pthread_t *)malloc(sizeof(pthread_t) * nr_thread); for (int i = 0; i < nr_thread; i++) pthread_create(&pids[i], NULL, recv_thread, instance); for (int i = 0; i < nr_thread; i++) pthread_join(pids[i], NULL); return ret; }