[LTP] [PATCH v3 1/9] syscalls: Add epoll_create03

Cyril Hrubis chrubis@suse.cz
Thu Jul 9 15:40:19 CEST 2026


Hi!
> > +static void setup(void)
> > +{
> > +	int fd;
> > +
> > +	variant_info();
> > +
> > +	maxfds = SAFE_SYSCONF(_SC_OPEN_MAX);
> > +	fds = SAFE_MALLOC(maxfds * sizeof(int));
> > +	memset(fds, -1, maxfds * sizeof(int));
> > +
> > +	fds[0] = SAFE_OPEN("dummy", O_RDWR | O_CREAT, 0700);
> > +	nfds = 1;
> > +
> > +	for (int i = 1; i < maxfds; i++) {
> > +		fd = dup(fds[0]);
> > +		if (fd == -1)
> > +			break;
> > +		fds[nfds++] = fd;
> > +	}
> 
> How many files are created is done via `ulimit -n`, right? (not sure if there
> is file for it in /proc/sys).

It's not about created files. There is a per-process limit on the number
of file descriptors. That can be accessed either via sysconf() or via
rlimit() and the values are also exported into /proc/$PID/limits.

> Would it be worth we check that? Or at least check that at least 2 files were
> opened? Maybe this check should be rather put into dup03.c.

I guess that it would make more sense to put such check into dup03.c.
However we would have to scan the whole file descriptor table first to
check on how many fds are already open.

Something as;

	int used_fds = 0;

	for (i = 0; i < maxfds; i++) {
		if (fcntl(i, F_GETFD) != -1)
			used_fds++;
	}

Then we can expect that the limit for the test is maxfds - used_fd

-- 
Cyril Hrubis
chrubis@suse.cz


More information about the ltp mailing list