From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-il1-x143.google.com (mail-il1-x143.google.com [IPv6:2607:f8b0:4864:20::143]) by sourceware.org (Postfix) with ESMTPS id 0909E38618E2 for ; Thu, 9 Jul 2020 17:24:10 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 0909E38618E2 Received: by mail-il1-x143.google.com with SMTP id k6so2705234ili.6 for ; Thu, 09 Jul 2020 10:24:10 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=sEbnI1IXQ5OMxCCfAwkKJ/ThjBhIUUC51Fc/UN5dyDo=; b=CQ99fFZde1fi+8bUn8ifZ8qEP9lh1EFTvlpEmHcv52Ue4MDTMURGbnxIK+WLVlgpZs oQPUEQzYYOYBI4AVYm1SBBlFILwu69Xkiwq1tzTow6EuQoqpr4Y9rl5WgxeMn3zZE7Hv ovJb98yjxWJQUNpq9OPqKMC6pIWwcawQMXbyh0byqEdqS5uxvxwJqTk3okSqqlFVOLkz j4U2XPry1pqJDWNzXTCkpfZgshDQdDO82u7uxV0X9QUGWZRPxFjljSFChYHR1F9oQ5VD 6mgfU6DTjUWofkSVKXfUS4JffJBAtI+7nJaF2KfzPfpGX2LFYzH6XX+ikNj+9VBK1CuA Xz5g== X-Gm-Message-State: AOAM5320M9H2aLhtzN97uEGk4AQzVsl9w6SVJns8Hby4sz6gWcqr5NBQ LT01053RVJMSOHghn0IQsWA9+f9twOH7opAaW6M= X-Google-Smtp-Source: ABdhPJxaah7lEdT1h2PMiswh9qHCz83+4kgvyGAdXTxUkRn3+1VtXc7lIrJV24P4p280yLl8pz4M7k7h8U22TqWODK8= X-Received: by 2002:a92:bb84:: with SMTP id x4mr49449500ilk.177.1594315449503; Thu, 09 Jul 2020 10:24:09 -0700 (PDT) MIME-Version: 1.0 References: <56ade7ab382535b83feb14058df9a84aad0dcaac.1591201405.git.alistair.francis@wdc.com> In-Reply-To: From: Alistair Francis Date: Thu, 9 Jul 2020 10:14:18 -0700 Message-ID: Subject: Re: [PATCH v2 02/18] RISC-V: Define __NR_* as __NR_*_time64/64 for 32-bit To: Adhemerval Zanella Cc: GNU C Library Content-Type: text/plain; charset="UTF-8" X-Spam-Status: No, score=-10.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_NONE, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: libc-alpha@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Libc-alpha mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 09 Jul 2020 17:24:27 -0000 On Wed, Jul 8, 2020 at 10:08 AM Adhemerval Zanella via Libc-alpha wrote: > > > > On 07/07/2020 21:09, Maciej W. Rozycki via Libc-alpha wrote: > > Alistair, > > > > I think the change heading is too cryptic and does not express the intent > > of the change well enough. How about: > > > > RISC-V: Use 64-bit-time syscall numbers with the 32-bit port > > > > and then maybe explain in a little more details in the change description. > > > > On Wed, 3 Jun 2020, Alistair Francis via Libc-alpha wrote: > > > >> diff --git a/sysdeps/unix/sysv/linux/riscv/sysdep.h b/sysdeps/unix/sysv/linux/riscv/sysdep.h > >> index 83e4adf6a2..aa61e8b04d 100644 > >> --- a/sysdeps/unix/sysv/linux/riscv/sysdep.h > >> +++ b/sysdeps/unix/sysv/linux/riscv/sysdep.h > >> @@ -116,6 +116,67 @@ > >> > >> #include > > > > This file is weird, as it includes twice, first > > time indirectly via at the top, > > and then second time here. So I think this second inclusion can be > > removed (along with the preceding inclusion of , as it does not > > appear to change anything), and the following conditional moved to the > > top, just after the inclusion of . Oddly > > has not been protected against multiple inclusion, but its contents do not > > trigger compilation warnings if processed more than once. > > This multiple inclusion is done internally in some places so the file > that wants to override a definition would first include the generic > definitions and then #undef/#define the new one (kernel-features.h > still does it). I'm not sure if this is required. I split out the clean up into a seperate patch and I don't see any regressions. > > I think this is kind of confusing, but this is how sysdep.h is currently > organized. We have been changing bit per bit, but there is a lot of > place where inclusing is done without guards. > > > > > The two #ifdef/#ifndef __ASSEMBLER__ conditionals will then become > > adjacent and can be merged into a single #ifdef/#else one. > > > > This clean-up would probably better be made as a separate preceding > > change. > > > >> +#if __riscv_xlen == 32 > > > > I think using __WORDSIZE here would be more consistent with the rest of > > our code (we do use `__riscv_xlen' in a couple of places, but I think they > > ought to be cleaned up). > > > >> +/* Define the __NR_futex as __NR_futex64 as RV32 doesn't have a > >> + * __NR_futex syscall. > >> + */ > >> +# ifndef __NR_futex > >> +# define __NR_futex __NR_futex_time64 > >> +# endif > > > > The comment does not match the code. > > > > I think it makes no sense to comment on individual entries as they all > > repeat the same pattern and the same purpose, so an introductory comment > > covering them all at the beginning of the conditional would be better > > instead. I suppose you can then reuse it for the change description too. > > > >> +# ifndef __NR_clock_adjtime > >> +# define __NR_clock_adjtime __NR_clock_adjtime64 > >> +# endif > >> +#endif /* __riscv_xlen == 32 */ > > > > Since you have multiple inner conditionals separated by an empty line > > each I think it will make sense to have an empty line as well between the > > final one and the closing of the outer conditional. Likewise at the > > beginning. > > I think the correct way to how ARC port is doing which is: > > 1. Add any required syscall suppression for 32-bit off_t/time_t on > fixup-asm-unistd.h so arch-syscall.h will have only the required > definitions. This might be the case for riscv32 since its kernel > ABI only supports 64-bit off_t/time_t. > > 2. Regenerate arch-syscall.h if it were the case. > > 3. On sysdep.h redefine only the syscall where the generic implementation > still does not have actual 64-bit time_t support: > > /* "workarounds" for generic code needing to handle 64-bit time_t. */ > > /* Fix sysdeps/unix/sysv/linux/clock_getcpuclockid.c. */ > #define __NR_clock_getres __NR_clock_getres_time64 > /* Fix sysdeps/nptl/lowlevellock-futex.h. */ > #define __NR_futex __NR_futex_time64 > [...] > > (with proper guards it should require the #ifndef/#define) > > 4. Add a comment it is a workaround to handle 64-bit time_t > and on each #define comment for which implementation it intends to. Thanks! I have updated this to be similar to the ARC port. I also paraphrased the points above in the commit message (I hope that is ok). Alistair