From patchwork Fri Jan 24 16:28:14 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tavian Barnes X-Patchwork-Id: 105364 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7BB1A3857706 for ; Fri, 24 Jan 2025 16:32:43 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7BB1A3857706 X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from mail-qk1-f173.google.com (mail-qk1-f173.google.com [209.85.222.173]) by sourceware.org (Postfix) with ESMTPS id F2C703858C56 for ; Fri, 24 Jan 2025 16:31:52 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org F2C703858C56 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=tavianator.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org F2C703858C56 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=209.85.222.173 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737736313; cv=none; b=r+B0WxFhLVzSvSAeIqZ2Zcs055FUuW95joMXckdhDG31yAFG1skb9Xv/bGhYZiemTFpzAtlwJlV+NnaJ6jGVeG5drkrVnrSQ86ZDaMpRLNKVT9MzpBNSaErRftiJHzihjvC8l8HS5VipfhZMsqzAdKA1o9eULNeXt2YWaxXfX34= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1737736313; c=relaxed/simple; bh=IY+XD62yIu9tobp0GTpgj/KwKJG3UesOXRQBeYe7f6o=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=CBArzpRBYxFrLMtPe26CMBOeXaen4Dhk5i/C6cXq2lRvwt67BlgWL8okDNnDUshDVXxXkSdYd8dJYlvtfb59PFwwCjNKxro/q5e08gEyiIUN6Azf2dKI8rPmG9aHSgYQj1yrOqvsJKMrRra55+q4VOMxXlof03Gii8poCAlZYQ4= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org F2C703858C56 Received: by mail-qk1-f173.google.com with SMTP id af79cd13be357-7b6ef047e9bso220088985a.1 for ; Fri, 24 Jan 2025 08:31:52 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1737736312; x=1738341112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=pvXfQjjDAiVMS4kZu2BeuitTaEKJ42uh2oDR3kgFWNo=; b=xSso8d5eq3EIOsqGhAdXH0FrkZP6JSeJmYKZ5fqG5qhZs1sGo4cnNysEJqcecEYJez zFOOBCboh5r1OrYDS4IxZ8UG74Myr5FXz2kL4cea1/SWnBobWDevWf3bS8PMc7LBDqh8 ntwjsyJwO3QV0HgZpIzeeRtT64hSLkUSemt9nV8qrsjbVIp6vq2x5aQh96zX9tJGY3cN q4m7X8kJUJLeypfIxBF25x5ug2S+40ekP24eFyhjOGDTltcK5hewXKEhJ1n1WR1CIEOT 67Quedwku3v5oiX6FNjso159UpruWAiBnFK5arVyWXRBbpBgynptR4z/M4Vyb/+BGSFZ 6CDQ== X-Gm-Message-State: AOJu0YzWbXBZLaPbv4AlezLbZEd256vZeZ/E5sZoo9Gn71TOcJeywSYO vShwaIU8as90mznUstLmjBuqYhoto2mTs9ISxN0ushh9LzIFup8BqY7pIBNlt4Y= X-Gm-Gg: ASbGncvxPgHL04cIeYqolh0l2nCNLzs3Vpu9QqwAJ47r30Eq6qnBR2eqqNyW176/EB/ 35nRP/GbmcCCc4xDLN2snF8eKQu2tM7Er8pcHX+n1dJ5yWn79jQmLRXY/l+UiS8ETfaa2o0NDDR 0eWwvzcUcNU/qIDmi3AqanNc7wNJtrsWcGbp9RpFqXsejJXc/4ER2ecYmq+4JVUYuieLYxTadye Ac32WvyuqgEauP+uHTRUOHwRaxMEHrOQ5FQVWzMKuK7rDzpZtF19ahG20VKjZ/sEwu2436OZEL+ uzPdI4/bKLbzLVknvfeWd8RC5U0TkYA= X-Google-Smtp-Source: AGHT+IHIrjwfdYPuRdY2d1TBaaDvv/0JwDkL+QnFRObqxqXaBuLABl9zaYUcPlmDIahiXZ5smXDk2A== X-Received: by 2002:a05:620a:d86:b0:7b6:d611:ce6f with SMTP id af79cd13be357-7be9af33b24mr610525685a.8.1737736312216; Fri, 24 Jan 2025 08:31:52 -0800 (PST) Received: from tachyon.tail92c87.ts.net ([192.159.180.233]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7be9af0d118sm108185285a.93.2025.01.24.08.31.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 24 Jan 2025 08:31:51 -0800 (PST) From: Tavian Barnes To: libc-alpha@sourceware.org Cc: Tavian Barnes Subject: [PATCH] sysconf: Add _SC_NSIG Date: Fri, 24 Jan 2025 11:28:14 -0500 Message-ID: <8d798321d98e92fcd159405fd7dcef8489f4d9d4.1737736057.git.tavianator@tavianator.com> X-Mailer: git-send-email 2.48.1 MIME-Version: 1.0 X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, FREEMAIL_FORGED_FROMDOMAIN, FREEMAIL_FROM, GIT_PATCH_0, HEADER_FROM_DIFFERENT_DOMAINS, KAM_DMARC_STATUS, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.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.1-2024 introduces a portable way to get the highest possible signal number (plus one): sysconf(_SC_NSIG). This is equivalent to glibc's non-portable NSIG macro. Link: https://www.austingroupbugs.net/view.php?id=741 Signed-off-by: Tavian Barnes Reviewed-by: Adhemerval Zanella --- There is also a new NSIG_MAX constant, but I'm less sure how to expose that. That is supposed to be the highest possible signal number (plus one) that sigset_t could support, so that new signals can be added without breaking ABI. If that's not a concern, we could just do #define NSIG_MAX NSIG Otherwise, it would have to be something like #define NSIG_MAX (CHAR_BIT * sizeof(sigset_t) + 1) but that's not usable in preprocessor conditionals. (I'm not sure it has to be, but most of the *_MAX macros are I think.) --- bits/confname.h | 5 ++++- posix/getconf.c | 2 ++ posix/sysconf.c | 2 ++ posix/tst-getconf.sh | 1 + sysdeps/posix/sysconf.c | 7 +++++++ 5 files changed, 16 insertions(+), 1 deletion(-) diff --git a/bits/confname.h b/bits/confname.h index 2eaf8a2eb2..9084e3ac90 100644 --- a/bits/confname.h +++ b/bits/confname.h @@ -531,8 +531,11 @@ enum _SC_MINSIGSTKSZ, #define _SC_MINSIGSTKSZ _SC_MINSIGSTKSZ - _SC_SIGSTKSZ + _SC_SIGSTKSZ, #define _SC_SIGSTKSZ _SC_SIGSTKSZ + + _SC_NSIG +#define _SC_NSIG _SC_NSIG }; /* Values for the NAME argument to `confstr'. */ diff --git a/posix/getconf.c b/posix/getconf.c index 4ba9c0dee8..29933ceeb5 100644 --- a/posix/getconf.c +++ b/posix/getconf.c @@ -405,6 +405,8 @@ static const struct conf vars[] = { "_POSIX_IPV6", _SC_IPV6, SYSCONF }, { "_POSIX_RAW_SOCKETS", _SC_RAW_SOCKETS, SYSCONF }, + { "NSIG", _SC_NSIG, SYSCONF }, + { NULL, 0, SYSCONF } }; diff --git a/posix/sysconf.c b/posix/sysconf.c index c3bf3b78fa..0f93305fe9 100644 --- a/posix/sysconf.c +++ b/posix/sysconf.c @@ -269,6 +269,8 @@ __sysconf (int name) case _SC_MINSIGSTKSZ: case _SC_SIGSTKSZ: + case _SC_NSIG: + break; } diff --git a/posix/tst-getconf.sh b/posix/tst-getconf.sh index eeb4c51d84..30f442b83a 100644 --- a/posix/tst-getconf.sh +++ b/posix/tst-getconf.sh @@ -56,6 +56,7 @@ _NPROCESSORS_CONF NPROCESSORS_CONF _NPROCESSORS_ONLN NPROCESSORS_ONLN +NSIG MQ_OPEN_MAX MQ_PRIO_MAX OPEN_MAX diff --git a/sysdeps/posix/sysconf.c b/sysdeps/posix/sysconf.c index 8f9a0adab2..853fd42a23 100644 --- a/sysdeps/posix/sysconf.c +++ b/sysdeps/posix/sysconf.c @@ -1209,6 +1209,13 @@ __sysconf (int name) #else return -1; #endif + + case _SC_NSIG: +#ifdef NSIG + return NSIG; +#else + return -1; +#endif } }