From patchwork Tue May 21 20:04:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: DJ Delorie X-Patchwork-Id: 90633 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 3B3563858C60 for ; Tue, 21 May 2024 20:05:25 +0000 (GMT) X-Original-To: libc-alpha@sourceware.org Delivered-To: libc-alpha@sourceware.org Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 6557B3858D1E for ; Tue, 21 May 2024 20:04:54 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6557B3858D1E Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6557B3858D1E Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=170.10.129.124 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716321900; cv=none; b=ihRKv1uCd9E4yGUpNx0wuMLHKEwansq2zmnnZrbRM2+k9NGfqzR4uYdzCx3d9SKLh/z0m1Y8ud0acGPreo67GXOfdRrCmJ28/qzNN2iemrdqmk+aFAtFY5VJwRQ+rELYT44zrRhWmvYEK7gQ57YPR8jHDzFL757Ov6NMYoAVbpY= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1716321900; c=relaxed/simple; bh=xeM4ZYP/LBWhuqZo892k2q/U99odeDxlhGL1ALIgHGk=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=bKxXZ6US5NKZloKPGrPbyO4dnVAG0VsNFCiOcvWvPb79HPnJ76qriOhwAa0VpdNeYyroIrq//SuszjH3tqdIDBEk5lhjxmsptLTDQc+rAU9IWcX8nhkfiqVBj2UA1hbE12bW/7EQM9TLsovTSbs20QgxMc1CYCOfGdD4WvtliIg= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1716321894; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to; bh=lAm0G+CYEPALo6+2IOdIcuiwe6tOPGSlx9fRrfoZQnw=; b=DTH0XTfeXyBW0RxNxy7yhDh4b5cQgHmE7GdUfNTd5EFrG1qbZH5q7HK0AqWuaVHJsIeyH+ ifHunsVpy6Ec/S0/0Ss+Kls8jqMJauLj2vkr2amrGnikNWmrft3OGI5if+iI6zdKdLgpU/ yUrtqmfpAolxAUVguMnMZwXJ82dGlmU= Received: from mimecast-mx02.redhat.com (mx-ext.redhat.com [66.187.233.73]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_256_GCM_SHA384) id us-mta-389--EVRAd3nOjCqwiov6SNa7g-1; Tue, 21 May 2024 16:04:50 -0400 X-MC-Unique: -EVRAd3nOjCqwiov6SNa7g-1 Received: from smtp.corp.redhat.com (int-mx09.intmail.prod.int.rdu2.redhat.com [10.11.54.9]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 800823C025B6; Tue, 21 May 2024 20:04:50 +0000 (UTC) Received: from greed.delorie.com (unknown [10.22.8.114]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 2D019492BC6; Tue, 21 May 2024 20:04:50 +0000 (UTC) Received: from greed.delorie.com.redhat.com (localhost [127.0.0.1]) by greed.delorie.com (8.16.1/8.16.1) with ESMTP id 44LK4nx73288321; Tue, 21 May 2024 16:04:49 -0400 From: DJ Delorie To: Alejandro Colomar Cc: carlos@redhat.com, libc-alpha@sourceware.org Subject: [patch v3] manual: add syscall list In-Reply-To: (message from Alejandro Colomar on Tue, 21 May 2024 00:10:17 +0200) Date: Tue, 21 May 2024 16:04:49 -0400 Message-ID: MIME-Version: 1.0 X-Scanned-By: MIMEDefang 3.4.1 on 10.11.54.9 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_NONE, TXREP 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 Alejandro Colomar writes: > Current upstream is 6.8; you may want to choose that one. [v3 has the above, plus a syntax change to allow .info files, hopefully this one will pass CI] Default version of man-pages is in configure.ac but can be overridden by --with-man-pages=X.Y Reviewed-by: Alejandro Colomar diff --git a/config.make.in b/config.make.in index 55e8b7563b..36096881b7 100644 --- a/config.make.in +++ b/config.make.in @@ -91,6 +91,7 @@ use-nscd = @use_nscd@ build-hardcoded-path-in-tests= @hardcoded_path_in_tests@ build-pt-chown = @build_pt_chown@ pthread-in-libc = @pthread_in_libc@ +man-pages-version = @man_pages_version@ # Build tools. CC = @CC@ diff --git a/configure b/configure index 432e40a592..73ec5cdd66 100755 --- a/configure +++ b/configure @@ -706,6 +706,7 @@ force_install bindnow hardcoded_path_in_tests enable_timezone_tools +man_pages_version rtld_early_cflags extra_nonshared_cflags sysheaders @@ -787,6 +788,7 @@ with_headers with_nonshared_cflags with_rtld_early_cflags with_timeoutfactor +with_man_pages enable_sanity_checks enable_shared enable_profile @@ -1509,6 +1511,8 @@ Optional Packages: build early initialization with additional CFLAGS --with-timeoutfactor=NUM specify an integer to scale the timeout + --with-man-pages=VERSION + tie manual to a specific man-pages version --with-cpu=CPU select code for CPU variant Some influential environment variables: @@ -4091,11 +4095,11 @@ if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++11 features" >&5 printf %s "checking for $CXX option to enable C++11 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx11+y} +if test ${ac_cv_prog_cxx_11+y} then : printf %s "(cached) " >&6 else $as_nop - ac_cv_prog_cxx_cxx11=no + ac_cv_prog_cxx_11=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4137,11 +4141,11 @@ if test x$ac_prog_cxx_stdcxx = xno then : { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for $CXX option to enable C++98 features" >&5 printf %s "checking for $CXX option to enable C++98 features... " >&6; } -if test ${ac_cv_prog_cxx_cxx98+y} +if test ${ac_cv_prog_cxx_98+y} then : printf %s "(cached) " >&6 else $as_nop - ac_cv_prog_cxx_cxx98=no + ac_cv_prog_cxx_98=no ac_save_CXX=$CXX cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ @@ -4374,6 +4378,17 @@ fi printf "%s\n" "#define TIMEOUTFACTOR $timeoutfactor" >>confdefs.h +man_pages_version=6.8 + + +# Check whether --with-man-pages was given. +if test ${with_man_pages+y} +then : + withval=$with_man_pages; man_pages_version=$withval +fi + + + # Check whether --enable-sanity-checks was given. if test ${enable_sanity_checks+y} then : diff --git a/configure.ac b/configure.ac index bdc385d03c..bdd82a8356 100644 --- a/configure.ac +++ b/configure.ac @@ -168,6 +168,15 @@ AC_ARG_WITH([timeoutfactor], [timeoutfactor=1]) AC_DEFINE_UNQUOTED(TIMEOUTFACTOR, $timeoutfactor) +man_pages_version=6.8 + +AC_ARG_WITH([man-pages], + AS_HELP_STRING([--with-man-pages=VERSION], + [tie manual to a specific man-pages version]), + [man_pages_version=$withval], + []) +AC_SUBST(man_pages_version) + AC_ARG_ENABLE([sanity-checks], AS_HELP_STRING([--disable-sanity-checks], [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]), diff --git a/manual/Makefile b/manual/Makefile index b5fda4a7ae..1d5b557fa8 100644 --- a/manual/Makefile +++ b/manual/Makefile @@ -55,7 +55,8 @@ examples = $(filter %.c.texi, $(texis)) # Generated files directly included from libc.texinfo. libc-texi-generated = chapters.texi top-menu.texi dir-add.texi \ - libm-err.texi version.texi pkgvers.texi + libm-err.texi version.texi pkgvers.texi \ + syscalls.texi syscallsc.texi # Add path to build dir for generated files texis-path := $(filter-out $(libc-texi-generated) summary.texi $(examples), \ @@ -117,6 +118,7 @@ $(objpfx)stamp-pkgvers: $(common-objpfx)config.make echo "@set PKGVERSION_DEFAULT" >> $(objpfx)pkgvers-tmp; \ fi echo "@set REPORT_BUGS_TO $(REPORT_BUGS_TEXI)" >> $(objpfx)pkgvers-tmp + echo "@set man_pages_version $(man-pages-version)" >> $(objpfx)pkgvers-tmp; \ echo "@end ifclear" >> $(objpfx)pkgvers-tmp $(move-if-change) $(objpfx)pkgvers-tmp $(objpfx)pkgvers.texi touch $@ @@ -138,6 +140,31 @@ $(objpfx)%.c.texi: examples/%.c $< | expand > $@.new mv -f $@.new $@ +# Generate a list of wrapped syscalls +$(objpfx)syscalls.texi: $(objpfx)stamp-syscalls ; +$(objpfx)stamp-syscalls: $(common-objpfx)config.make + cat `find ../sysdeps -name syscalls.list -print` \ + | sed -e '/^[^_a-zA-Z]/d' \ + -e '/[ \t]C/d' \ + -e 's/[ \t].*//' \ + -e 's/^/@code{/; s/$$/}/' \ + | sort -u \ + > $(objpfx)syscalls-tmp + $(move-if-change) $(objpfx)syscalls-tmp $(objpfx)syscalls.texi + touch $@ +# Cancelled syscalls +$(objpfx)syscallsc.texi: $(objpfx)stamp-syscallsc ; +$(objpfx)stamp-syscallsc: $(common-objpfx)config.make + cat `find ../sysdeps -name syscalls.list -print` \ + | sed -e '/^[^_a-zA-Z]/d' \ + -e '/[ \t]C/!d' \ + -e 's/[ \t].*//' \ + -e 's/^/@code{/; s/$$/}/' \ + | sort -u \ + > $(objpfx)syscallsc-tmp + $(move-if-change) $(objpfx)syscallsc-tmp $(objpfx)syscallsc.texi + touch $@ + $(objpfx)%.info: %.texinfo LANGUAGE=C LC_ALL=C $(MAKEINFO) -P $(objpfx) --output=$@ $< diff --git a/manual/startup.texi b/manual/startup.texi index 96a7a472bb..527e4d4795 100644 --- a/manual/startup.texi +++ b/manual/startup.texi @@ -690,7 +690,30 @@ you don't need to know about it because you can just use @theglibc{}'s @code{chmod} function. @cindex kernel call -System calls are sometimes called kernel calls. +System calls are sometimes called syscalls or kernel calls, and this +interface is mostly a purely mechanical translation from the kernel's +ABI to the C ABI. For the set of syscalls where we do not guarantee +POSIX Thread cancellation the wrappers only organize the incoming +arguments from the C calling convention to the calling convention of +the target kernel. For the set of syscalls where we provided POSIX +Thread cancellation the wrappers set some internal state in the +library to support cancellation, but this does not impact the +behaviour of the syscall provided by the kernel. + +@Theglibc{} includes by reference the Linux man-pages +@value{man_pages_version} documentation to document the listed +syscalls for the Linux kernel. For reference purposes only the latest +@uref{https://www.kernel.org/doc/man-pages/,Linux man-pages Project} +documentation can be accessed from the +@uref{https://www.kernel.org,Linux kernel} website. Where the syscall +has more specific documentation in this manual that more specific +documentation is considered authoritative. + +Non-cancellable system calls: +@include syscalls.texi + +Cancellable system calls: +@include syscallsc.texi However, there are times when you want to make a system call explicitly, and for that, @theglibc{} provides the @code{syscall} function.