xref: /dpdk/app/test-eventdev/evt_test.h (revision b25a66c49e8df8bd0976d0b70ef36352bed29eff)
153a3b7e8SJerin Jacob /* SPDX-License-Identifier: BSD-3-Clause
253a3b7e8SJerin Jacob  * Copyright(c) 2017 Cavium, Inc
3793a8ba1SJerin Jacob  */
4793a8ba1SJerin Jacob 
5793a8ba1SJerin Jacob #ifndef _EVT_TEST_
6793a8ba1SJerin Jacob #define _EVT_TEST_
7793a8ba1SJerin Jacob 
8793a8ba1SJerin Jacob #include <string.h>
9793a8ba1SJerin Jacob #include <stdbool.h>
10793a8ba1SJerin Jacob #include <sys/queue.h>
11793a8ba1SJerin Jacob 
12793a8ba1SJerin Jacob #include <rte_eal.h>
13793a8ba1SJerin Jacob 
14793a8ba1SJerin Jacob enum evt_test_result {
15793a8ba1SJerin Jacob 	EVT_TEST_SUCCESS,
16793a8ba1SJerin Jacob 	EVT_TEST_FAILED,
17793a8ba1SJerin Jacob 	EVT_TEST_UNSUPPORTED,
18793a8ba1SJerin Jacob };
19793a8ba1SJerin Jacob 
20793a8ba1SJerin Jacob struct evt_test;
21793a8ba1SJerin Jacob struct evt_options;
22793a8ba1SJerin Jacob 
23793a8ba1SJerin Jacob typedef bool (*evt_test_capability_check_t)(struct evt_options *opt);
24793a8ba1SJerin Jacob typedef int (*evt_test_options_check_t)(struct evt_options *opt);
25793a8ba1SJerin Jacob typedef void (*evt_test_options_dump_t)(struct evt_options *opt);
26793a8ba1SJerin Jacob typedef int (*evt_test_setup_t)
27793a8ba1SJerin Jacob 		(struct evt_test *test, struct evt_options *opt);
28793a8ba1SJerin Jacob typedef int (*evt_test_mempool_setup_t)
29793a8ba1SJerin Jacob 		(struct evt_test *test, struct evt_options *opt);
30793a8ba1SJerin Jacob typedef int (*evt_test_ethdev_setup_t)
31793a8ba1SJerin Jacob 		(struct evt_test *test, struct evt_options *opt);
32de2bc16eSShijith Thotton typedef int (*evt_test_cryptodev_setup_t)
33de2bc16eSShijith Thotton 		(struct evt_test *test, struct evt_options *opt);
34*b25a66c4SAmit Prakash Shukla typedef int (*evt_test_dmadev_setup_t)
35*b25a66c4SAmit Prakash Shukla 		(struct evt_test *test, struct evt_options *opt);
36793a8ba1SJerin Jacob typedef int (*evt_test_eventdev_setup_t)
37793a8ba1SJerin Jacob 		(struct evt_test *test, struct evt_options *opt);
38793a8ba1SJerin Jacob typedef int (*evt_test_launch_lcores_t)
39793a8ba1SJerin Jacob 		(struct evt_test *test, struct evt_options *opt);
40793a8ba1SJerin Jacob typedef int (*evt_test_result_t)
41793a8ba1SJerin Jacob 		(struct evt_test *test, struct evt_options *opt);
42793a8ba1SJerin Jacob typedef void (*evt_test_eventdev_destroy_t)
43793a8ba1SJerin Jacob 		(struct evt_test *test, struct evt_options *opt);
44793a8ba1SJerin Jacob typedef void (*evt_test_ethdev_destroy_t)
45793a8ba1SJerin Jacob 		(struct evt_test *test, struct evt_options *opt);
46a734e738SPavan Nikhilesh typedef void (*evt_test_ethdev_rx_stop_t)(struct evt_test *test,
47a734e738SPavan Nikhilesh 					  struct evt_options *opt);
48de2bc16eSShijith Thotton typedef void (*evt_test_cryptodev_destroy_t)
49de2bc16eSShijith Thotton 		(struct evt_test *test, struct evt_options *opt);
50*b25a66c4SAmit Prakash Shukla typedef void (*evt_test_dmadev_destroy_t)
51*b25a66c4SAmit Prakash Shukla 		(struct evt_test *test, struct evt_options *opt);
52793a8ba1SJerin Jacob typedef void (*evt_test_mempool_destroy_t)
53793a8ba1SJerin Jacob 		(struct evt_test *test, struct evt_options *opt);
54793a8ba1SJerin Jacob typedef void (*evt_test_destroy_t)
55793a8ba1SJerin Jacob 		(struct evt_test *test, struct evt_options *opt);
56793a8ba1SJerin Jacob 
57793a8ba1SJerin Jacob struct evt_test_ops {
58793a8ba1SJerin Jacob 	evt_test_capability_check_t cap_check;
59793a8ba1SJerin Jacob 	evt_test_options_check_t opt_check;
60793a8ba1SJerin Jacob 	evt_test_options_dump_t opt_dump;
61793a8ba1SJerin Jacob 	evt_test_setup_t test_setup;
62793a8ba1SJerin Jacob 	evt_test_mempool_setup_t mempool_setup;
63793a8ba1SJerin Jacob 	evt_test_ethdev_setup_t ethdev_setup;
64793a8ba1SJerin Jacob 	evt_test_eventdev_setup_t eventdev_setup;
65de2bc16eSShijith Thotton 	evt_test_cryptodev_setup_t cryptodev_setup;
66*b25a66c4SAmit Prakash Shukla 	evt_test_dmadev_setup_t dmadev_setup;
67793a8ba1SJerin Jacob 	evt_test_launch_lcores_t launch_lcores;
68793a8ba1SJerin Jacob 	evt_test_result_t test_result;
69793a8ba1SJerin Jacob 	evt_test_eventdev_destroy_t eventdev_destroy;
70a734e738SPavan Nikhilesh 	evt_test_ethdev_rx_stop_t ethdev_rx_stop;
71793a8ba1SJerin Jacob 	evt_test_ethdev_destroy_t ethdev_destroy;
72de2bc16eSShijith Thotton 	evt_test_cryptodev_destroy_t cryptodev_destroy;
73*b25a66c4SAmit Prakash Shukla 	evt_test_dmadev_destroy_t dmadev_destroy;
74793a8ba1SJerin Jacob 	evt_test_mempool_destroy_t mempool_destroy;
75793a8ba1SJerin Jacob 	evt_test_destroy_t test_destroy;
76793a8ba1SJerin Jacob };
77793a8ba1SJerin Jacob 
78793a8ba1SJerin Jacob struct evt_test {
79793a8ba1SJerin Jacob 	const char *name;
80793a8ba1SJerin Jacob 	void *test_priv;
81793a8ba1SJerin Jacob 	struct evt_test_ops ops;
82793a8ba1SJerin Jacob };
83793a8ba1SJerin Jacob 
84ccda0499SJerin Jacob struct evt_test_entry {
85ccda0499SJerin Jacob 	struct evt_test test;
86ccda0499SJerin Jacob 
87ccda0499SJerin Jacob 	STAILQ_ENTRY(evt_test_entry) next;
88ccda0499SJerin Jacob };
89ccda0499SJerin Jacob 
90ccda0499SJerin Jacob void evt_test_register(struct evt_test_entry *test);
91ccda0499SJerin Jacob void evt_test_dump_names(void);
92ccda0499SJerin Jacob 
93ccda0499SJerin Jacob #define EVT_TEST_REGISTER(nm)                         \
94ccda0499SJerin Jacob static struct evt_test_entry _evt_test_entry_ ##nm;   \
95f8e99896SThomas Monjalon RTE_INIT(evt_test_ ##nm)                              \
96ccda0499SJerin Jacob {                                                     \
97ccda0499SJerin Jacob 	_evt_test_entry_ ##nm.test.name = RTE_STR(nm);\
98ccda0499SJerin Jacob 	memcpy(&_evt_test_entry_ ##nm.test.ops, &nm,  \
99ccda0499SJerin Jacob 			sizeof(struct evt_test_ops)); \
100ccda0499SJerin Jacob 	evt_test_register(&_evt_test_entry_ ##nm);    \
101ccda0499SJerin Jacob }
102ccda0499SJerin Jacob 
103ccda0499SJerin Jacob struct evt_test *evt_test_get(const char *name);
104ccda0499SJerin Jacob 
105ccda0499SJerin Jacob static inline void *
evt_test_priv(struct evt_test * test)106ccda0499SJerin Jacob evt_test_priv(struct evt_test *test)
107ccda0499SJerin Jacob {
108ccda0499SJerin Jacob 	return test->test_priv;
109ccda0499SJerin Jacob }
110ccda0499SJerin Jacob 
111793a8ba1SJerin Jacob #endif /*  _EVT_TEST_ */
112