From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.133.124]) by sourceware.org (Postfix) with ESMTPS id 2D4853943415 for ; Mon, 5 Dec 2022 16:39:51 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 2D4853943415 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1670258390; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=IZpcj+Amczs/tM5mFmVp1uTlb0pDD6M6xWr/rYQg9jc=; b=YWhjQZM/OMzKGwJfjrfksgmXKDdEENLnAw/qMt6MzhydA6WdRmwlYNA9km7mjQ5/0/9kgg idJcopHalTqMghtDDDPJaqkc1Kmlh26y+NLabXyncz6EiTSyvU7kqzBHXG1Ouu2Pjv0VLk 4ZDzCicogAQ/yhyRA4eP5ZwG52dzwag= Received: from mail-il1-f197.google.com (mail-il1-f197.google.com [209.85.166.197]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-674-hSj6u4v0NemirE3rvBK3gw-1; Mon, 05 Dec 2022 11:39:49 -0500 X-MC-Unique: hSj6u4v0NemirE3rvBK3gw-1 Received: by mail-il1-f197.google.com with SMTP id a13-20020a056e0208ad00b003034c36b8b5so5541607ilt.9 for ; Mon, 05 Dec 2022 08:39:49 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:organization:from:references :to:content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=IZpcj+Amczs/tM5mFmVp1uTlb0pDD6M6xWr/rYQg9jc=; b=GtEfj3Yu6xYtLlu93AO9zaQIq1iYDtNcFnKM//WtDIoHFF1/ARqMBNP3e6UxW1KiBH vYnh9ZCBpoAB+tWfwu6PhYPmKQ5gH2o7q089Z9cSD+atBUHK0Ys6mEmVcjDrZnFUX1NG HWzOMQDk+d4dnhFNT7fKbAyXaWHSuPTnYv0E/NGRJrLKxrrZT8JxuIKT++SK1JSY3pJW sMowwa+r88AJI386+TTcAzV5o64BK0cy3aJc4qPgIzLvj5iNnwghBzsPQSZzdXXFxWfm AXpqBu7EsWz85ZMw0hkXZGXjjDGfoVh4YflxNofT38LELqNokWFPvSklyrGmbHUTpaGv ft2A== X-Gm-Message-State: ANoB5plsaa0bBEq3PLp1sc6AXl91pUOE3RQtcn8yRckAy55PmnLKmXcn KLGeASTb6w2b5yNpkA9xAur3kKkZmJo+qZATmfq3Ib+8iQfa5jsYqoiU2hSU2XX1oo7fs+m854V HNI3oO3BCmM9+x0jQS+tB X-Received: by 2002:a05:6638:36f0:b0:38a:3978:f014 with SMTP id t48-20020a05663836f000b0038a3978f014mr3869375jau.32.1670258388939; Mon, 05 Dec 2022 08:39:48 -0800 (PST) X-Google-Smtp-Source: AA0mqf494GjFFHQeaL/5q1okUoEvXmGP9HXtrkkd45thLqr1j/x5hmtcJu8hQoFYDnij+iD2mWJQDA== X-Received: by 2002:a05:6638:36f0:b0:38a:3978:f014 with SMTP id t48-20020a05663836f000b0038a3978f014mr3869370jau.32.1670258388659; Mon, 05 Dec 2022 08:39:48 -0800 (PST) Received: from [192.168.0.241] (192-0-145-146.cpe.teksavvy.com. [192.0.145.146]) by smtp.gmail.com with ESMTPSA id b7-20020a029587000000b00370decbbff3sm5928100jai.148.2022.12.05.08.39.47 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 05 Dec 2022 08:39:48 -0800 (PST) Message-ID: Date: Mon, 5 Dec 2022 11:39:47 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.4.0 Subject: Re: [PATCH 15/30] Linux: consolidate sendfile implementation To: Adhemerval Zanella , libc-alpha@sourceware.org References: <20221019221433.1082017-1-adhemerval.zanella@linaro.org> <20221019221433.1082017-16-adhemerval.zanella@linaro.org> From: Carlos O'Donell Organization: Red Hat In-Reply-To: <20221019221433.1082017-16-adhemerval.zanella@linaro.org> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-12.6 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,KAM_SHORT,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,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 List-Id: On 10/19/22 18:14, Adhemerval Zanella via Libc-alpha wrote: > This is similar to other LFS consolidation, where the non-LFS is only > built if __OFF_T_MATCHES_OFF64_T is not defined and the LFS version > is aliased to non-LFS name if __OFF_T_MATCHES_OFF64_T is defined. > > For non-LFS variant, use sendfile syscall if defined, otherwise use > sendfile64 plus the offset overflow check (as generic implementation). LGTM. No regressions on x86_64 and i686. Reviewed-by: Carlos O'Donell Tested-by: Carlos O'Donell > > Checked on x86_64-linux-gnu. > --- > .../sysv/linux/mips/mips64/n64/sendfile64.c | 1 - > .../sysv/linux/mips/mips64/n64/syscalls.list | 3 -- > .../{generic/wordsize-32 => }/sendfile.c | 15 ++++++-- > sysdeps/unix/sysv/linux/sendfile64.c | 37 +++++++++++++++++++ > sysdeps/unix/sysv/linux/syscalls.list | 2 - > .../unix/sysv/linux/wordsize-64/sendfile64.c | 1 - > .../unix/sysv/linux/wordsize-64/syscalls.list | 1 - > 7 files changed, 49 insertions(+), 11 deletions(-) > delete mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n64/sendfile64.c > delete mode 100644 sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list > rename sysdeps/unix/sysv/linux/{generic/wordsize-32 => }/sendfile.c (77%) > create mode 100644 sysdeps/unix/sysv/linux/sendfile64.c > delete mode 100644 sysdeps/unix/sysv/linux/wordsize-64/sendfile64.c > > diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/sendfile64.c b/sysdeps/unix/sysv/linux/mips/mips64/n64/sendfile64.c > deleted file mode 100644 > index 4c451bd093..0000000000 > --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/sendfile64.c > +++ /dev/null > @@ -1 +0,0 @@ > -/* sendfile64 is alias of sendfile syscall. */ OK. Remove. > diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list b/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list > deleted file mode 100644 > index 0924f245d4..0000000000 > --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list > +++ /dev/null > @@ -1,3 +0,0 @@ > -# File name Caller Syscall name # args Strong name Weak names > - > -sendfile - sendfile i:iipi sendfile sendfile64 OK. Remove. > diff --git a/sysdeps/unix/sysv/linux/generic/wordsize-32/sendfile.c b/sysdeps/unix/sysv/linux/sendfile.c > similarity index 77% > rename from sysdeps/unix/sysv/linux/generic/wordsize-32/sendfile.c > rename to sysdeps/unix/sysv/linux/sendfile.c > index 4fdf979324..c8bc890944 100644 > --- a/sysdeps/unix/sysv/linux/generic/wordsize-32/sendfile.c > +++ b/sysdeps/unix/sysv/linux/sendfile.c OK. Moved. > @@ -1,4 +1,5 @@ > -/* Copyright (C) 2011-2022 Free Software Foundation, Inc. > +/* Transfer data between file descriptors. Linux version. > + Copyright (C) 2011-2022 Free Software Foundation, Inc. > This file is part of the GNU C Library. > > The GNU C Library is free software; you can redistribute it and/or > @@ -20,11 +21,16 @@ > #include > #include > > +#ifndef __OFF_T_MATCHES_OFF64_T > + > /* Send COUNT bytes from file associated with IN_FD starting at OFFSET to > descriptor OUT_FD. */ > ssize_t > sendfile (int out_fd, int in_fd, off_t *offset, size_t count) > { > +# ifdef __NR_sendfile > + return INLINE_SYSCALL_CALL (sendfile, out_fd, in_fd, offset, count); OK. Consolidated. Call sendfile if we have it. > +# else > __off64_t off64; > int rc; > > @@ -38,9 +44,12 @@ sendfile (int out_fd, int in_fd, off_t *offset, size_t count) > off64 = *offset; > } > > - rc = INLINE_SYSCALL (sendfile64, 4, out_fd, in_fd, > - offset ? &off64 : NULL, count); > + rc = INLINE_SYSCALL_CALL (sendfile64, out_fd, in_fd, offset ? &off64 : NULL, > + count); OK. Otherwise call sendfile64. > if (offset) > *offset = off64; > return rc; > +# endif > } > + > +#endif > diff --git a/sysdeps/unix/sysv/linux/sendfile64.c b/sysdeps/unix/sysv/linux/sendfile64.c > new file mode 100644 > index 0000000000..d9d2a4a4c2 > --- /dev/null > +++ b/sysdeps/unix/sysv/linux/sendfile64.c > @@ -0,0 +1,37 @@ > +/* Transfer data between file descriptors. Linux version. OK. New consolidated version. > + Copyright (C) 2022 Free Software Foundation, Inc. > + This file is part of the GNU C Library. > + > + The GNU C Library is free software; you can redistribute it and/or > + modify it under the terms of the GNU Lesser General Public > + License as published by the Free Software Foundation; either > + version 2.1 of the License, or (at your option) any later version. > + > + The GNU C Library is distributed in the hope that it will be useful, > + but WITHOUT ANY WARRANTY; without even the implied warranty of > + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU > + Lesser General Public License for more details. > + > + You should have received a copy of the GNU Lesser General Public > + License along with the GNU C Library. If not, see > + . */ > + > +#include > +#include > +#include > +#include > + > +/* Send COUNT bytes from file associated with IN_FD starting at OFFSET to > + descriptor OUT_FD. */ > +ssize_t > +sendfile64 (int out_fd, int in_fd, off64_t *offset, size_t count) > +{ > +#ifndef __NR_sendfile64 > +# define __NR_sendfile64 __NR_sendfile > +#endif > + return INLINE_SYSCALL_CALL (sendfile64, out_fd, in_fd, offset, count); OK. > +} > + > +#ifdef __OFF_T_MATCHES_OFF64_T > +strong_alias (sendfile64, sendfile) OK. Alias. > +#endif > diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list > index 6420049e8b..b9f45463c5 100644 > --- a/sysdeps/unix/sysv/linux/syscalls.list > +++ b/sysdeps/unix/sysv/linux/syscalls.list > @@ -62,8 +62,6 @@ sched_primin - sched_get_priority_min i:i __sched_get_priority_min sched_get_pri > sched_setp - sched_setparam i:ip __sched_setparam sched_setparam > sched_sets - sched_setscheduler i:iip __sched_setscheduler sched_setscheduler > sched_yield - sched_yield i: __sched_yield sched_yield > -sendfile - sendfile i:iipU sendfile > -sendfile64 - sendfile64 i:iipU sendfile64 OK. Remove. We have C files for these. > setfsgid EXTRA setfsgid i:i setfsgid > setfsuid EXTRA setfsuid i:i setfsuid > setpgid - setpgid i:ii __setpgid setpgid > diff --git a/sysdeps/unix/sysv/linux/wordsize-64/sendfile64.c b/sysdeps/unix/sysv/linux/wordsize-64/sendfile64.c > deleted file mode 100644 > index 4c451bd093..0000000000 > --- a/sysdeps/unix/sysv/linux/wordsize-64/sendfile64.c > +++ /dev/null > @@ -1 +0,0 @@ > -/* sendfile64 is alias of sendfile syscall. */ OK. > diff --git a/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list b/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list > index 3232f11f51..db80696e41 100644 > --- a/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list > +++ b/sysdeps/unix/sysv/linux/wordsize-64/syscalls.list > @@ -1,4 +1,3 @@ > # File name Caller Syscall name # args Strong name Weak names > > -sendfile - sendfile i:iipi sendfile sendfile64 OK. Have C files. > personality EXTRA personality i:i __personality personality -- Cheers, Carlos.