Fix the following warning on OpenBSD 6.2 (gcc 4.2.1).
This can probably be silenced with void** argument and memcpy() too,
but returning a non-void pointer is clearer IMO when the code also
targets C++.
Compiles with regular make/gmake as well as
# g++ -O2 -g -shared -rdynamic -fPIC -o cpp_null null.c -DFIO_EXTERNAL_ENGINE
--
CC engines/null.o
engines/null.c: In function 'fio_null_init':
engines/null.c:142: warning: dereferencing type-punned pointer will break strict-aliasing rules
Signed-off-by: Tomohiro Kusumi <tkusumi@tuxera.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
-static int null_init(struct thread_data *td, struct null_data **nd_ptr)
+static struct null_data *null_init(struct thread_data *td)
- struct null_data *nd = (struct null_data *) malloc(sizeof(**nd_ptr));
+ struct null_data *nd = (struct null_data *) malloc(sizeof(*nd));
memset(nd, 0, sizeof(*nd));
memset(nd, 0, sizeof(*nd));
} else
td->io_ops->flags |= FIO_SYNCIO;
} else
td->io_ops->flags |= FIO_SYNCIO;
- *nd_ptr = nd;
- return 0;
static int fio_null_init(struct thread_data *td)
{
static int fio_null_init(struct thread_data *td)
{
- return null_init(td, (struct null_data **)&td->io_ops_data);
+ td->io_ops_data = null_init(td);
+ assert(td->io_ops_data);
+ return 0;
}
static struct ioengine_ops ioengine = {
}
static struct ioengine_ops ioengine = {
struct NullData {
NullData(struct thread_data *td)
{
struct NullData {
NullData(struct thread_data *td)
{
+ impl_ = null_init(td);
+ assert(impl_);