// SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (c) 2019 Cyril Hrubis */ #ifndef TST_BUFFERS_H__ #define TST_BUFFERS_H__ /* * Buffer description consist of a pointer to a pointer and buffer type/size * encoded as a different structure members. * * Only one of the size and iov_sizes can be set at a time. */ struct tst_buffers { /* * This pointer points to a buffer pointer. */ void *ptr; /* * Buffer size. */ size_t size; /* * Array of iov buffer sizes terminated by -1. */ int *iov_sizes; }; /* * Allocates buffers based on the tst_buffers structure. * * @bufs NULL terminated array of test buffer descriptions. * * This is called from the test library if the tst_test->bufs pointer is set. */ void tst_buffers_alloc(struct tst_buffers bufs[]); /* * strdup() that callls tst_alloc(). */ char *tst_strdup(const char *str); /* * Allocates size bytes, returns pointer to the allocated buffer. */ void *tst_alloc(size_t size); /* * Allocates iovec structure including the buffers. * * @sizes -1 terminated array of buffer sizes. */ struct iovec *tst_iovec_alloc(int sizes[]); /* * Frees all allocated buffers. * * This is called at the end of the test automatically. */ void tst_free_all(void); #endif /* TST_BUFFERS_H__ */