Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp4172835rwd; Sat, 3 Jun 2023 22:38:33 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ7l0oDABTp4zD51O9jKSDtczILB5npwPz83Zth9uTVyOT19PII9+P5K65aJEhVzAXYnPllN X-Received: by 2002:a25:1444:0:b0:ba6:b486:84ed with SMTP id 65-20020a251444000000b00ba6b48684edmr9890357ybu.20.1685857113623; Sat, 03 Jun 2023 22:38:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1685857113; cv=none; d=google.com; s=arc-20160816; b=vhNTbtKZ1F8vbxOCEbdOhuYNNvcURhLDAUSqUbAm0VEkHfZyh+IUu81i6i9VuFkLme UHGwa74KV4vNMPHS9umm/S+FPtuz1AvyPURGmjizR+arCaD0Gt8iazv3KNydYLIq6339 dlXk5yiNwyi0GvwFf57304dTqdCNSLqNyRL+5ow1RDBU/uDlHLr5IQiXHWm08iPSD6qt PXPF6QeiwwXcacHedTgVz//T2idhTy/ZmmsVH1Pu4UB3i7iliB/Aki3O/MoatbxK4Kt2 JFOG0lyZ4i1dSd6t6s2Shpp6YtAkMTZClkuUur6E0HkOjQLimOgMijp0awjT686sEkn+ 3pww== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:feedback-id:content-transfer-encoding :mime-version:references:in-reply-to:message-id:date:subject:cc:to :from; bh=hhlAESCkobmzUn008FNagAcuFwvqA/T6Fg/nWzHPFa8=; b=BLVTmlNpZF4Lpmo7XPleIDkKOUqOMQJDBFSEvrtBt+p7U306r1n5bphaFSY5vTVTqk zlVG1WyFW5yELi1td2mRLb/waHQbfU2nHLWdXvXJU48He6KLLaIVOgoqPrjAwXlOBzte MrSow3KLQyDEUKN3k/MptpwW11Aaq7A2yMlBMtKjhMIQ7ifIE8R8e5JEkTtDu16bsaTr agr5jtYVUCKSeplb9E/MWnENAJw4Qe7MQuF9ZhxRzpuK25GfgqWiW2qN8cHqNTcDU16m bKW0hC8AwoXq6+koZdK7nOz/dRinSDQPARO9VpoVrvLZtE84InMh77dA/0WlqEETBWhO u2dQ== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id f10-20020a63de0a000000b0053febd41e7esi3767440pgg.380.2023.06.03.22.38.11; Sat, 03 Jun 2023 22:38:33 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229788AbjFDFf2 (ORCPT + 99 others); Sun, 4 Jun 2023 01:35:28 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:60600 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229462AbjFDFfZ (ORCPT ); Sun, 4 Jun 2023 01:35:25 -0400 Received: from bg4.exmail.qq.com (bg4.exmail.qq.com [43.154.54.12]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 4B85FCE; Sat, 3 Jun 2023 22:35:23 -0700 (PDT) X-QQ-mid: bizesmtp83t1685856912tz2mpqb9 Received: from linux-lab-host.localdomain ( [61.141.77.49]) by bizesmtp.qq.com (ESMTP) with id ; Sun, 04 Jun 2023 13:35:11 +0800 (CST) X-QQ-SSF: 01200000000000D0V000000A0000000 X-QQ-FEAT: rZJGTgY0+YN6Hgm0UEoWeI0raRxwz+OClFuVPySOxGuRMnsmCqEXyxefSu3x0 2WU1GagREmkvIIMdLAcKZPPfzXOjtPC6QHE3ohpmFo0EwDu8CwIBqVcnio0loP9RgMSMEle vfF2rNJrqkaUHui8aQBWgK5qof0qpL61KoggBuPyvGXjWlRfC+JUz68VKJvriGEPu22kSbc RqLABcHytpqcY77XZL3DpY4doFeZYFXTqw9icVDCrprILlhn+oHUh/o89uCtTCHgHw1Z4/g qH5mWGlhL8RN+5kTi7TjkC8GBo1nfTwYXvNmegQ1933fDtiBVCTz03KNUfGCKHNsjcRg/aK RsT2h465n546UCWpcxgDIIFqF9rZUXUyBTxm19I3slRZRZGF2/hpk36ULoPt4VGRjQLLtme X-QQ-GoodBg: 0 X-BIZMAIL-ID: 350183426812210734 From: Zhangjin Wu To: w@1wt.eu Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-riscv@lists.infradead.org, thomas@t-8ch.de Subject: [PATCH 1/4] tools/nolibc: unistd.h: add __syscall() and __syscall_ret() helpers Date: Sun, 4 Jun 2023 13:34:29 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrsz:qybglogicsvrsz3a-3 X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_PASS,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 lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org most of the library routines share the same code model, let's add some macros to simplify the coding and shrink the code lines too. One added for syscall return, one added for syscall call, both of them can get the typeof 'return value' automatically. To get the return type of syscalls, __auto_type is better than typeof(), but it is not supported by the old compilers (before 2013, see [1]), so, use typeof() here. [1]: https://gcc.gnu.org/legacy-ml/gcc-patches/2013-11/msg01378.html Signed-off-by: Zhangjin Wu --- tools/include/nolibc/sys.h | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h index 1d6f33f58629..937a8578e3d4 100644 --- a/tools/include/nolibc/sys.h +++ b/tools/include/nolibc/sys.h @@ -28,6 +28,21 @@ #include "errno.h" #include "types.h" +/* Syscall call and return helpers */ +#define __syscall_ret(ret) \ +({ \ + if (ret < 0) { \ + SET_ERRNO(-ret); \ + ret = (typeof(ret))-1; \ + } \ + ret; \ +}) + +#define __syscall(name, ...) \ +({ \ + typeof(sys_##name(__VA_ARGS__)) ret = sys_##name(__VA_ARGS__); \ + __syscall_ret(ret); \ +}) /* Functions in this file only describe syscalls. They're declared static so * that the compiler usually decides to inline them while still being allowed -- 2.25.1