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