Received: by 2002:a05:6358:3188:b0:123:57c1:9b43 with SMTP id q8csp19202401rwd; Wed, 28 Jun 2023 06:28:52 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ5BKJ9ROh3KLbl50095kd98sQA1QdNXIARyZcbmGGsqRqbgcfoxxHSSnsVe2Kf0Bd/XduYn X-Received: by 2002:a05:6a21:32a2:b0:11f:3553:5c8a with SMTP id yt34-20020a056a2132a200b0011f35535c8amr24987500pzb.12.1687958932245; Wed, 28 Jun 2023 06:28:52 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1687958932; cv=none; d=google.com; s=arc-20160816; b=0PzBJMWyMc+ZfDrgdZRiI6TljnQ9irIGyqQ4ABp3dL6EetHRfozQiHfQthyup1jUZY IHaDWpxDuklYhw21YFLdvch3L/Nh6Kmr5SyHcgqYEKWPIj8Qb37MZrExosOwT/qVIZau JzdJOkcgL6D9Ey1rooGZK/PvrCmPpdqwLIfJknQbDHXhAJbQQZ5rm1spfyh5uNc6BuaC PyUyS25yBjDadPQSZmgQPB0D168t+3G1MDG5q0MTfEd8ublQmAvXj3LEqT5X5Vg1EK9p YMXn9KfXfxBia6e2JxZdcXLVwUYpKZl+Tf+8UfQd7FmQQdmIW7P8MGFuOzsMvQkV1EuP dThA== 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=FCCeWsgFKvALR8+qrgbVujxlSmQiVNl7C+dGJ4zbnok=; fh=arSDXtFhzhUD8NXWX21U6uRlvy7s6tz87rxitu0bmAM=; b=QFCbWai3Dmgb7V1ltuHC6HJrdqPS+2AI818e5MSjiGk1l60YxzhZOjNDIDU9q0eu0D MVssLndyV7cwPY1Bn2SQ1DZj3hHmQVIsqERLTQ/z8J0odd9ZeMnBnyFpwCMtiv0OzHBM akSlZVZkfZmx8OF+/lk8CwcS+g49J/pCfhdxvneuP9dRlJrXg65RSo8inobzk60DHrhw p6Oh1V2F7IgfaWAx8fXONTURTeefhkaqLPZ+vYpLe+xe5w5ausyh927SnGdDI/6Ru0d6 jpDJ+1BtkMDLCIqF+RxtdIsJrw1V8MKA9LdZHEr+D21j2YTcyoNOFBdAmQIuxTbEXGXC yPXA== 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 g18-20020a056a001a1200b006630be2db05si9002868pfv.182.2023.06.28.06.28.38; Wed, 28 Jun 2023 06:28:52 -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 S231424AbjF1NK6 (ORCPT + 99 others); Wed, 28 Jun 2023 09:10:58 -0400 Received: from bg4.exmail.qq.com ([43.155.65.254]:26558 "EHLO bg4.exmail.qq.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231136AbjF1NKz (ORCPT ); Wed, 28 Jun 2023 09:10:55 -0400 X-QQ-mid: bizesmtp81t1687957840tk05w25f Received: from linux-lab-host.localdomain ( [116.30.129.193]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 28 Jun 2023 21:10:38 +0800 (CST) X-QQ-SSF: 01200000000000D0V000000A0000000 X-QQ-FEAT: 3M0okmaRx3izmkUOsSxg9uIUu5hu7sXFhGMVn/F21TZKgQ+LTXI715mV+znqg V0FT8m4j5DU0uhm6jSBfO1u4rd7ypCrgSxJ91A3DlKLEueKsMfbTPPs+P9mJAzgNVumAW9U QkEQK3DazjlmxzOw8p068gfMxLkBWHbXFdbP/MVamr2vOlwQG9sNOE1r6D9eod+n8miz9Mk qH26SCAVQRROGIpcJ5YabBf38Pf4XN/b8ImH1ko0hkIy/ANWUjXjd3rcxdpp8bzl3nTjxt4 /eu8Nz4NkPabuRpc5kBjSj7f6YL1B8AiP7pvmV6zn0pBlRyQemBwh60oA6IjG2HfjjdnX3N n38Lno9VJXoOQHtJmlyr9DM9Zvh9zrl+PAfzsaANOHi+Dmo3wsu6GmpGjn/c6JhUUagGQGB X-QQ-GoodBg: 0 X-BIZMAIL-ID: 17494817763370749656 From: Zhangjin Wu To: thomas@t-8ch.de, w@1wt.eu Cc: falcon@tinylab.org, arnd@arndb.de, david.laight@aculab.com, linux-kernel@vger.kernel.org, linux-kselftest@vger.kernel.org, linux-riscv@lists.infradead.org, =?UTF-8?q?Thomas=20Wei=C3=9Fschuh?= Subject: [PATCH v5 01/14] tools/nolibc: sys.h: add a syscall return helper Date: Wed, 28 Jun 2023 21:08:32 +0800 Message-Id: X-Mailer: git-send-email 2.25.1 In-Reply-To: References: MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:tinylab.org:qybglogicsvrsz:qybglogicsvrsz3a-3 Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Most of the library routines share the same syscall return logic: In general, a 0 return value indicates success. A -1 return value indicates an error, and an error number is stored in errno. [1] Let's add a __sysret() helper for the above logic to simplify the coding and shrink the code lines too. Thomas suggested to use inline function instead of macro for __sysret(). Willy suggested to make __sysret() be always inline. [1]: https://man7.org/linux/man-pages/man2/syscall.2.html Suggested-by: Willy Tarreau Link: https://lore.kernel.org/linux-riscv/ZH1+hkhiA2+ItSvX@1wt.eu/ Suggested-by: Thomas Weißschuh Link: https://lore.kernel.org/linux-riscv/ea4e7442-7223-4211-ba29-70821e907888@t-8ch.de/ Reviewed-by: Thomas Weißschuh Signed-off-by: Zhangjin Wu --- tools/include/nolibc/sys.h | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h index 5464f93e863e..097eef88cf7e 100644 --- a/tools/include/nolibc/sys.h +++ b/tools/include/nolibc/sys.h @@ -28,6 +28,16 @@ #include "errno.h" #include "types.h" +/* Syscall return helper, set errno as -ret when ret < 0 */ +static __inline__ __attribute__((unused, always_inline)) +long __sysret(long ret) +{ + if (ret < 0) { + SET_ERRNO(-ret); + ret = -1; + } + return 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