Blame test/cq-size.c

Packit d3489f
/* SPDX-License-Identifier: MIT */
Packit d3489f
/*
Packit d3489f
 * Description: test CQ ring sizing
Packit d3489f
 */
Packit d3489f
#include <errno.h>
Packit d3489f
#include <stdio.h>
Packit d3489f
#include <unistd.h>
Packit d3489f
#include <stdlib.h>
Packit d3489f
#include <string.h>
Packit d3489f
#include <fcntl.h>
Packit d3489f
Packit d3489f
#include "liburing.h"
Packit d3489f
Packit d3489f
int main(int argc, char *argv[])
Packit d3489f
{
Packit d3489f
	struct io_uring_params p;
Packit d3489f
	struct io_uring ring;
Packit d3489f
	int ret;
Packit d3489f
Packit d3489f
	if (argc > 1)
Packit d3489f
		return 0;
Packit d3489f
Packit d3489f
	memset(&p, 0, sizeof(p));
Packit d3489f
	p.flags = IORING_SETUP_CQSIZE;
Packit d3489f
	p.cq_entries = 64;
Packit d3489f
Packit d3489f
	ret = io_uring_queue_init_params(4, &ring, &p);
Packit d3489f
	if (ret) {
Packit d3489f
		if (ret == -EINVAL) {
Packit d3489f
			printf("Skipped, not supported on this kernel\n");
Packit d3489f
			goto done;
Packit d3489f
		}
Packit d3489f
		printf("ring setup failed\n");
Packit d3489f
		return 1;
Packit d3489f
	}
Packit d3489f
Packit d3489f
	if (p.cq_entries < 64) {
Packit d3489f
		printf("cq entries invalid (%d)\n", p.cq_entries);
Packit d3489f
		goto err;
Packit d3489f
	}
Packit d3489f
	io_uring_queue_exit(&ring);
Packit d3489f
Packit d3489f
	memset(&p, 0, sizeof(p));
Packit d3489f
	p.flags = IORING_SETUP_CQSIZE;
Packit d3489f
	p.cq_entries = 0;
Packit d3489f
Packit d3489f
	ret = io_uring_queue_init_params(4, &ring, &p);
Packit d3489f
	if (ret >= 0 || errno != EINVAL) {
Packit d3489f
		printf("zero sized cq ring succeeded\n");
Packit d3489f
		goto err;
Packit d3489f
	}
Packit d3489f
Packit d3489f
done:
Packit d3489f
	return 0;
Packit d3489f
err:
Packit d3489f
	io_uring_queue_exit(&ring);
Packit d3489f
	return 1;
Packit d3489f
}