xref: /illumos-gate/usr/src/lib/libktest/common/libktest.h (revision 6e4a39cc9c0ca330a6d67580711b9a9d3c37df37)
1*6e4a39ccSPatrick Mooney /*
2*6e4a39ccSPatrick Mooney  * This file and its contents are supplied under the terms of the
3*6e4a39ccSPatrick Mooney  * Common Development and Distribution License ("CDDL"), version 1.0.
4*6e4a39ccSPatrick Mooney  * You may only use this file in accordance with the terms of version
5*6e4a39ccSPatrick Mooney  * 1.0 of the CDDL.
6*6e4a39ccSPatrick Mooney  *
7*6e4a39ccSPatrick Mooney  * A full copy of the text of the CDDL should have accompanied this
8*6e4a39ccSPatrick Mooney  * source.  A copy of the CDDL is also available via the Internet at
9*6e4a39ccSPatrick Mooney  * http://www.illumos.org/license/CDDL.
10*6e4a39ccSPatrick Mooney  */
11*6e4a39ccSPatrick Mooney 
12*6e4a39ccSPatrick Mooney /*
13*6e4a39ccSPatrick Mooney  * Copyright 2025 Oxide Computer Company
14*6e4a39ccSPatrick Mooney  */
15*6e4a39ccSPatrick Mooney 
16*6e4a39ccSPatrick Mooney #ifndef _LIBKTEST_H
17*6e4a39ccSPatrick Mooney #define	_LIBKTEST_H
18*6e4a39ccSPatrick Mooney 
19*6e4a39ccSPatrick Mooney #include <stdbool.h>
20*6e4a39ccSPatrick Mooney 
21*6e4a39ccSPatrick Mooney #ifdef __cplusplus
22*6e4a39ccSPatrick Mooney extern "C" {
23*6e4a39ccSPatrick Mooney #endif
24*6e4a39ccSPatrick Mooney 
25*6e4a39ccSPatrick Mooney typedef struct ktest_hdl ktest_hdl_t;
26*6e4a39ccSPatrick Mooney typedef struct ktest_list_iter ktest_list_iter_t;
27*6e4a39ccSPatrick Mooney 
28*6e4a39ccSPatrick Mooney typedef struct ktest_entry {
29*6e4a39ccSPatrick Mooney 	const char	*ke_module;
30*6e4a39ccSPatrick Mooney 	const char	*ke_suite;
31*6e4a39ccSPatrick Mooney 	const char	*ke_test;
32*6e4a39ccSPatrick Mooney 	bool		ke_requires_input;
33*6e4a39ccSPatrick Mooney } ktest_entry_t;
34*6e4a39ccSPatrick Mooney 
35*6e4a39ccSPatrick Mooney typedef struct ktest_run_req {
36*6e4a39ccSPatrick Mooney 	const char	*krq_module;
37*6e4a39ccSPatrick Mooney 	const char	*krq_suite;
38*6e4a39ccSPatrick Mooney 	const char	*krq_test;
39*6e4a39ccSPatrick Mooney 	uchar_t		*krq_input;
40*6e4a39ccSPatrick Mooney 	size_t		krq_input_len;
41*6e4a39ccSPatrick Mooney } ktest_run_req_t;
42*6e4a39ccSPatrick Mooney 
43*6e4a39ccSPatrick Mooney typedef enum ktest_code {
44*6e4a39ccSPatrick Mooney 	KTEST_CODE_NONE,
45*6e4a39ccSPatrick Mooney 	KTEST_CODE_PASS,
46*6e4a39ccSPatrick Mooney 	KTEST_CODE_FAIL,
47*6e4a39ccSPatrick Mooney 	KTEST_CODE_SKIP,
48*6e4a39ccSPatrick Mooney 	KTEST_CODE_ERROR
49*6e4a39ccSPatrick Mooney } ktest_code_t;
50*6e4a39ccSPatrick Mooney 
51*6e4a39ccSPatrick Mooney typedef struct ktest_run_result {
52*6e4a39ccSPatrick Mooney 	ktest_code_t	krr_code;
53*6e4a39ccSPatrick Mooney 	char		*krr_msg;
54*6e4a39ccSPatrick Mooney 	uint_t		krr_line;
55*6e4a39ccSPatrick Mooney } ktest_run_result_t;
56*6e4a39ccSPatrick Mooney 
57*6e4a39ccSPatrick Mooney extern ktest_hdl_t *ktest_init(void);
58*6e4a39ccSPatrick Mooney extern void ktest_fini(ktest_hdl_t *);
59*6e4a39ccSPatrick Mooney 
60*6e4a39ccSPatrick Mooney extern ktest_list_iter_t *ktest_list(ktest_hdl_t *);
61*6e4a39ccSPatrick Mooney extern void ktest_list_free(ktest_list_iter_t *);
62*6e4a39ccSPatrick Mooney extern bool ktest_list_next(ktest_list_iter_t *, ktest_entry_t *);
63*6e4a39ccSPatrick Mooney extern void ktest_list_reset(ktest_list_iter_t *);
64*6e4a39ccSPatrick Mooney 
65*6e4a39ccSPatrick Mooney extern bool ktest_run(ktest_hdl_t *, const ktest_run_req_t *,
66*6e4a39ccSPatrick Mooney     ktest_run_result_t *);
67*6e4a39ccSPatrick Mooney 
68*6e4a39ccSPatrick Mooney extern const char *ktest_code_name(ktest_code_t);
69*6e4a39ccSPatrick Mooney 
70*6e4a39ccSPatrick Mooney extern bool ktest_mod_load(const char *);
71*6e4a39ccSPatrick Mooney extern bool ktest_mod_load_all(void);
72*6e4a39ccSPatrick Mooney extern void ktest_mod_unload(const char *);
73*6e4a39ccSPatrick Mooney extern bool ktest_mod_unload_all(void);
74*6e4a39ccSPatrick Mooney 
75*6e4a39ccSPatrick Mooney extern size_t ktest_max_input_size(void);
76*6e4a39ccSPatrick Mooney 
77*6e4a39ccSPatrick Mooney 
78*6e4a39ccSPatrick Mooney #ifdef __cplusplus
79*6e4a39ccSPatrick Mooney }
80*6e4a39ccSPatrick Mooney #endif
81*6e4a39ccSPatrick Mooney 
82*6e4a39ccSPatrick Mooney #endif /* _LIBKTEST_H */
83