From patchwork Wed Feb 25 02:58:53 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Collin Funk X-Patchwork-Id: 130609 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id B7F844B9DB6E for ; Wed, 25 Feb 2026 02:59:55 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B7F844B9DB6E Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20230601 header.b=kHix/qBW X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-dy1-x1341.google.com (mail-dy1-x1341.google.com [IPv6:2607:f8b0:4864:20::1341]) by sourceware.org (Postfix) with ESMTPS id 62BA34BA23C6 for ; Wed, 25 Feb 2026 02:59:17 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 62BA34BA23C6 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 62BA34BA23C6 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::1341 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1771988357; cv=none; b=ZeGBBnNnSROYSXgal6KxIFIOEHooVhSa3PRIiGg0oVNPmAAS5Dclj/YhzqhLKFL3efp+qz9r7Suc3x8b92JMLX93YhbvG1GBQuor84ZwDoj0DyOo989YHRNcUHuWTzqMV4YBQ4XPqH5teXjYSUk5rBEWbL7vJomqOH0O69ecE8s= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1771988357; c=relaxed/simple; bh=NGAts/soEDHmpWJbQdqvxc2muL72bLgHvqmdedxbkik=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=DR1DLqgklPyKeMHfMHxUgXCUVV2VIk0Ab3PVtVhJWWImqETzTT9OSKhcUsDSp3mC/E3ni0ptvcvbMSN3+M2tjF8hCEv7G57ByC/HZJZdjTZODiCORu2jMMI3zID1Nck6S83ACMbeCYLj9aJ5PgJ/65IhgJHRbOIAnPONc4feAwM= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 62BA34BA23C6 Received: by mail-dy1-x1341.google.com with SMTP id 5a478bee46e88-2bdbdbc6b46so240535eec.0 for ; Tue, 24 Feb 2026 18:59:17 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771988356; x=1772593156; darn=sourceware.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=E7zbqUYLvOfOnnr1r6+APTzb78TsEwNQcsR6tb5UPn8=; b=kHix/qBW3pv6LbAgfQiO1H5nUzktANxMJzdQrowm6RDpaBEzlUTQvIcDiozTDj9ySc pO/adfldJaBEFoW0Uo2pHZ41pxW9kTqSzvKoq+QYAGhi0xwfOKKatE08VZEvjAxY+IOs nlW5tFLKoMiEQTzJECBoJJ63QB6hxhFJ4bjK5/Q6a4PD4bzVJn8L+8owOr9g3WVM1Su0 aDY11mkuPy0nw0lP2z2o39ioFHT+MlOHXr6NX24R2E8SRsVv5cq+WWPV0KZFy2INuRyG K88tDCJ+wMIh0yBrfIfpOqvKZ39Oavm7ZQLjbW8AZF41yW285NcZojANm0UdRvPL1GaP Eovg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771988356; x=1772593156; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-gg:x-gm-message-state:from :to:cc:subject:date:message-id:reply-to; bh=E7zbqUYLvOfOnnr1r6+APTzb78TsEwNQcsR6tb5UPn8=; b=ntBsWotO29jR9Iz7nL4R3ewMsQzcFG6OHP2YV7VYQHl8DB3XucfhTsrDhbxhL5jcQi OZW9h9vW7v1CDOrBF8a1ITzyv0anFlcidlLq77iAb5GXk/EsF6yIRQgefTKWmjGniXuL snp69kieul6UjLpVg7KUrR6031aoc5GEFmvKrtM1jecdisDNpFkMIXc5QGULU+91Hytz a0F+bQAlS+qeUHqJRJvfN/vmVjkwVfM1ZyLIui046N0ciQ1ZeLB/w2QlrXY8o4CInzQs uDBbLUBTp+PcH6WdYCO/1z8piV6MR8X+BQIPTxn61+tBH8gDjS68HhDmP87xmUE+qKNk Xa2A== X-Gm-Message-State: AOJu0YwmUh6KNyBXZbVdqcJAPoOrxPSX2k8RLnVSnfJ82UpuifDDIFj0 X5iSQO11CmSUtYNwa3B14HtrSGDKlDkDg4RL32dcgoNsWJ4dQzUMfxhG1wYT1mlQ X-Gm-Gg: ATEYQzwTBBjVIL4AtJF6+M7gIS6pJTvCLEFgpVhqD7uc/3EoN8AKyhyXsT2Slje8klo moZ1ilj+ATt4ftOTTzmNTQoetqnrf6fF2C6jmQHi+SX+G8b6qyzKZu86R0Gx5lkXVm1Cnt5HjHQ xQ+nosQz9aSfENvWQ0OQyWtQEeqV16e/4RG1Jp3GQGcl5VvmvCZNdbDAKNobWpbS4J5z8QOg62a GBXS8u4xHj2AQENGroOvnD3UkG+Gm+1EHVtsWDseWZSOg0NkAE/5Jqh5rNGCztqcOQKMf0m26Gw pkbvAVefZe66RDnp96b5O8uIaF6tuOmyFY/McR1ZnvQCLx1erRcDfygLgfe1cNzs84y/X6BlAVY vc18yXG/2wPST5q8L4o7zQ7DBsKFaTJ5vFmYde1XfawKj+Nn2Wgtqf9CJiFb8uzJBOpykX/kfIg /2B0tUF+hZ13KYJvQteEt+YaDn X-Received: by 2002:a05:7300:ca4:b0:2ba:640e:2ce8 with SMTP id 5a478bee46e88-2bdbc34ebc9mr827107eec.7.1771988356060; Tue, 24 Feb 2026 18:59:16 -0800 (PST) Received: from localhost.localdomain ([2601:646:8081:3770::996e]) by smtp.gmail.com with ESMTPSA id 5a478bee46e88-2bd7dbe78b9sm7808254eec.18.2026.02.24.18.59.15 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 24 Feb 2026 18:59:15 -0800 (PST) From: Collin Funk To: libc-alpha@sourceware.org Cc: Florian Weimer , Collin Funk Subject: [PATCH v2] unistd: use __USE_XOPEN2K24 for existing POSIX.1-2024 interfaces Date: Tue, 24 Feb 2026 18:58:53 -0800 Message-ID: <632f80de101ddfc0af2bcb7a23fb82cad2ec70a3.1771988307.git.collin.funk1@gmail.com> X-Mailer: git-send-email 2.53.0 In-Reply-To: <72efc6803313a48a3c86965fd713321da8c441ec.1771649254.git.collin.funk1@gmail.com> References: <72efc6803313a48a3c86965fd713321da8c441ec.1771649254.git.collin.funk1@gmail.com> MIME-Version: 1.0 X-Spam-Status: No, score=-9.4 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_ENVFROM_END_DIGIT, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_BLOCKED, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: libc-alpha-bounces~patchwork=sourceware.org@sourceware.org * posix/unistd.h (SEEK_DATA, SEEK_HOLE, pipe2, dup2, getresgid) (getresuid, setresgid, setresuid, _Fork): Make visible when __USE_XOPEN2K24 is defined, which is also defined when __USE_GNU is defined. (getentropy): Also define when __USE_XOPEN2K24 is defined. * conform/data/unistd.h-data: Add checks for the prototypes, although conform has not yet been adjusted to support POSIX.1-2024. --- conform/data/unistd.h-data | 25 +++++++++++++++++++++++++ posix/unistd.h | 12 ++++++------ 2 files changed, 31 insertions(+), 6 deletions(-) diff --git a/conform/data/unistd.h-data b/conform/data/unistd.h-data index b4531868fd..2846d1cf5c 100644 --- a/conform/data/unistd.h-data +++ b/conform/data/unistd.h-data @@ -171,6 +171,11 @@ constant SEEK_SET constant SEEK_CUR constant SEEK_END +#ifdef POSIX24 +constant SEEK_DATA +constant SEEK_HOLE +#endif + #ifndef POSIX constant _SC_2_C_BIND #endif @@ -446,6 +451,9 @@ allow cuserid #endif function int dup (int) function int dup2 (int, int) +#ifdef POSIX24 +function int dup3 (int, int, int) +#endif function int execl (const char*, const char*, ...) function int execle (const char*, const char*, ...) function int execlp (const char*, const char*, ...) @@ -468,6 +476,9 @@ function int fchdir (int) #if !defined XPG4 && !defined XPG42 function int fdatasync (int) #endif +#ifdef POSIX24 +function pid_t _Fork (void) +#endif # if defined XOPEN2K8 || defined POSIX2008 function int fexecve (int, char *const[], char *const[]) # endif @@ -483,6 +494,9 @@ function int getdtablesize (void) #endif function gid_t getegid (void) function uid_t geteuid (void) +#ifdef POSIX24 +function int getentropy (void*, size_t) +#endif function gid_t getgid (void) function int getgroups (int, gid_t[]) #if !defined XPG4 && !defined POSIX && !defined POSIX2008 @@ -508,6 +522,10 @@ function pid_t getpgid (pid_t) function pid_t getpgrp (void) function pid_t getpid (void) function pid_t getppid (void) +#ifdef POSIX24 +function int getresgid (gid_t*, gid_t*, gid_t*) +function int getresuid (uid_t*, uid_t*, uid_t*) +#endif #if !defined XPG4 && !defined POSIX function pid_t getsid (pid_t) #endif @@ -533,6 +551,9 @@ function int nice (int) function {long int} pathconf (const char*, int) function int pause (void) function int pipe (int[2]) +#ifdef POSIX24 +function int pipe2 (int[2], int) +#endif #if !defined POSIX && !defined XPG4 && !defined XPG42 function ssize_t pread (int, void*, size_t, off_t) #endif @@ -564,6 +585,10 @@ function pid_t setpgrp (void) function int setregid (gid_t, gid_t) function int setreuid (uid_t, uid_t) # endif +#ifdef POSIX24 +function int setresgid (gid_t, gid_t, gid_t) +function int setresuid (uid_t, uid_t, uid_t) +#endif function pid_t setsid (void) function int setuid (uid_t) function {unsigned int} sleep (unsigned int) diff --git a/posix/unistd.h b/posix/unistd.h index 06a6a88b52..6bfc5a2d29 100644 --- a/posix/unistd.h +++ b/posix/unistd.h @@ -316,7 +316,7 @@ extern int faccessat (int __fd, const char *__file, int __type, int __flag) # define SEEK_SET 0 /* Seek from beginning of file. */ # define SEEK_CUR 1 /* Seek from current position. */ # define SEEK_END 2 /* Seek from end of file. */ -# ifdef __USE_GNU +# ifdef __USE_XOPEN2K24 # define SEEK_DATA 3 /* Seek to next data. */ # define SEEK_HOLE 4 /* Seek to next hole. */ # endif @@ -436,7 +436,7 @@ extern ssize_t pwrite64 (int __fd, const void *__buf, size_t __n, Returns 0 if successful, -1 if not. */ extern int pipe (int __pipedes[2]) __THROW __wur; -#ifdef __USE_GNU +#ifdef __USE_XOPEN2K24 /* Same as pipe but apply flags passed in FLAGS to the new file descriptors. */ extern int pipe2 (int __pipedes[2], int __flags) __THROW __wur; @@ -554,7 +554,7 @@ extern int dup (int __fd) __THROW __wur; /* Duplicate FD to FD2, closing FD2 and making it open on the same file. */ extern int dup2 (int __fd, int __fd2) __THROW; -#ifdef __USE_GNU +#ifdef __USE_XOPEN2K24 /* Duplicate FD to FD2, closing FD2 and making it open on the same file while setting flags according to FLAGS. */ extern int dup3 (int __fd, int __fd2, int __flags) __THROW; @@ -749,7 +749,7 @@ extern int setregid (__gid_t __rgid, __gid_t __egid) __THROW __wur; extern int setegid (__gid_t __gid) __THROW __wur; #endif /* Use POSIX.1-2001. */ -#ifdef __USE_GNU +#ifdef __USE_XOPEN2K24 /* Fetch the real user ID, effective user ID, and saved-set user ID, of the calling process. */ extern int getresuid (__uid_t *__ruid, __uid_t *__euid, __uid_t *__suid) @@ -786,7 +786,7 @@ extern __pid_t fork (void) __THROWNL; extern __pid_t vfork (void) __THROW; #endif /* Use misc or XPG < 7. */ -#ifdef __USE_GNU +#ifdef __USE_XOPEN2K24 /* This is similar to fork, however it does not run the atfork handlers neither reinitialize any internal locks in multithread case. Different than fork, _Fork is async-signal-safe. */ @@ -1195,7 +1195,7 @@ extern int pthread_atfork (void (*__prepare) (void), void (*__child) (void)) __THROW; #endif -#ifdef __USE_MISC +#if defined __USE_MISC || defined __USE_XOPEN2K24 /* Write LENGTH bytes of randomness starting at BUFFER. Return 0 on success or -1 on error. */ int getentropy (void *__buffer, size_t __length) __wur