AnyPS5/docs
milescoviello 0d30059bf5 fix(libkernel): handle FIOCLEX and FIONCLEX in ioctl
ioctl() on a file, directory, pipe or character device threw "request
0x20006601 ... is not implemented" for FIOCLEX, and the same for
FIONCLEX, although the close-on-exec flag they change is already kept
for these descriptors and reported by fcntl(F_GETFD).

FreeBSD 11.4 handles both requests in kern_ioctl() for every descriptor,
before the request reaches the file's own ioctl, by changing the flag
F_GETFD reads. sys/kern/sys_generic.c, kern_ioctl():

	case FIONCLEX:
		fdp->fd_ofiles[fd].fde_flags &= ~UF_EXCLOSE;
		goto out;
	case FIOCLEX:
		fdp->fd_ofiles[fd].fde_flags |= UF_EXCLOSE;
		goto out;

sys/kern/kern_descrip.c, kern_fcntl():

	case F_GETFD:
	...
			td->td_retval[0] =
			    (fde->fde_flags & UF_EXCLOSE) ? FD_CLOEXEC : 0;

Both requests now set or clear that flag and return 0. libuv before 1.44
sets close-on-exec this way on FreeBSD (uv__cloexec_ioctl).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-13 14:59:42 +01:00
..
dev fix(libkernel): handle FIOCLEX and FIONCLEX in ioctl 2026-10-13 14:59:42 +01:00
user Merge pull request #4140 from veosett/fix/relinker-windows-fixed-base 2026-10-13 14:26:54 +02:00