xref: /aosp_15_r20/external/liburing/test/helpers.h (revision 25da2bea747f3a93b4c30fd9708b0618ef55a0e6)
1*25da2beaSAndroid Build Coastguard Worker /* SPDX-License-Identifier: MIT */
2*25da2beaSAndroid Build Coastguard Worker /*
3*25da2beaSAndroid Build Coastguard Worker  * Description: Helpers for tests.
4*25da2beaSAndroid Build Coastguard Worker  */
5*25da2beaSAndroid Build Coastguard Worker #ifndef LIBURING_HELPERS_H
6*25da2beaSAndroid Build Coastguard Worker #define LIBURING_HELPERS_H
7*25da2beaSAndroid Build Coastguard Worker 
8*25da2beaSAndroid Build Coastguard Worker #ifdef __cplusplus
9*25da2beaSAndroid Build Coastguard Worker extern "C" {
10*25da2beaSAndroid Build Coastguard Worker #endif
11*25da2beaSAndroid Build Coastguard Worker 
12*25da2beaSAndroid Build Coastguard Worker #include "liburing.h"
13*25da2beaSAndroid Build Coastguard Worker 
14*25da2beaSAndroid Build Coastguard Worker enum t_setup_ret {
15*25da2beaSAndroid Build Coastguard Worker 	T_SETUP_OK	= 0,
16*25da2beaSAndroid Build Coastguard Worker 	T_SETUP_SKIP,
17*25da2beaSAndroid Build Coastguard Worker };
18*25da2beaSAndroid Build Coastguard Worker 
19*25da2beaSAndroid Build Coastguard Worker /*
20*25da2beaSAndroid Build Coastguard Worker  * Helper for allocating memory in tests.
21*25da2beaSAndroid Build Coastguard Worker  */
22*25da2beaSAndroid Build Coastguard Worker void *t_malloc(size_t size);
23*25da2beaSAndroid Build Coastguard Worker 
24*25da2beaSAndroid Build Coastguard Worker 
25*25da2beaSAndroid Build Coastguard Worker /*
26*25da2beaSAndroid Build Coastguard Worker  * Helper for allocating size bytes aligned on a boundary.
27*25da2beaSAndroid Build Coastguard Worker  */
28*25da2beaSAndroid Build Coastguard Worker void t_posix_memalign(void **memptr, size_t alignment, size_t size);
29*25da2beaSAndroid Build Coastguard Worker 
30*25da2beaSAndroid Build Coastguard Worker 
31*25da2beaSAndroid Build Coastguard Worker /*
32*25da2beaSAndroid Build Coastguard Worker  * Helper for allocating space for an array of nmemb elements
33*25da2beaSAndroid Build Coastguard Worker  * with size bytes for each element.
34*25da2beaSAndroid Build Coastguard Worker  */
35*25da2beaSAndroid Build Coastguard Worker void *t_calloc(size_t nmemb, size_t size);
36*25da2beaSAndroid Build Coastguard Worker 
37*25da2beaSAndroid Build Coastguard Worker 
38*25da2beaSAndroid Build Coastguard Worker /*
39*25da2beaSAndroid Build Coastguard Worker  * Helper for creating file and write @size byte buf with 0xaa value in the file.
40*25da2beaSAndroid Build Coastguard Worker  */
41*25da2beaSAndroid Build Coastguard Worker void t_create_file(const char *file, size_t size);
42*25da2beaSAndroid Build Coastguard Worker 
43*25da2beaSAndroid Build Coastguard Worker /*
44*25da2beaSAndroid Build Coastguard Worker  * Helper for creating file and write @size byte buf with @pattern value in
45*25da2beaSAndroid Build Coastguard Worker  * the file.
46*25da2beaSAndroid Build Coastguard Worker  */
47*25da2beaSAndroid Build Coastguard Worker void t_create_file_pattern(const char *file, size_t size, char pattern);
48*25da2beaSAndroid Build Coastguard Worker 
49*25da2beaSAndroid Build Coastguard Worker /*
50*25da2beaSAndroid Build Coastguard Worker  * Helper for creating @buf_num number of iovec
51*25da2beaSAndroid Build Coastguard Worker  * with @buf_size bytes buffer of each iovec.
52*25da2beaSAndroid Build Coastguard Worker  */
53*25da2beaSAndroid Build Coastguard Worker struct iovec *t_create_buffers(size_t buf_num, size_t buf_size);
54*25da2beaSAndroid Build Coastguard Worker 
55*25da2beaSAndroid Build Coastguard Worker /*
56*25da2beaSAndroid Build Coastguard Worker  * Helper for setting up a ring and checking for user privs
57*25da2beaSAndroid Build Coastguard Worker  */
58*25da2beaSAndroid Build Coastguard Worker enum t_setup_ret t_create_ring_params(int depth, struct io_uring *ring,
59*25da2beaSAndroid Build Coastguard Worker 				      struct io_uring_params *p);
60*25da2beaSAndroid Build Coastguard Worker enum t_setup_ret t_create_ring(int depth, struct io_uring *ring,
61*25da2beaSAndroid Build Coastguard Worker 			       unsigned int flags);
62*25da2beaSAndroid Build Coastguard Worker 
63*25da2beaSAndroid Build Coastguard Worker enum t_setup_ret t_register_buffers(struct io_uring *ring,
64*25da2beaSAndroid Build Coastguard Worker 				    const struct iovec *iovecs,
65*25da2beaSAndroid Build Coastguard Worker 				    unsigned nr_iovecs);
66*25da2beaSAndroid Build Coastguard Worker 
67*25da2beaSAndroid Build Coastguard Worker #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
68*25da2beaSAndroid Build Coastguard Worker 
69*25da2beaSAndroid Build Coastguard Worker #ifdef __cplusplus
70*25da2beaSAndroid Build Coastguard Worker }
71*25da2beaSAndroid Build Coastguard Worker #endif
72*25da2beaSAndroid Build Coastguard Worker 
73*25da2beaSAndroid Build Coastguard Worker #endif
74