[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <94dd5170929f454fbc0a10a2eb3b108d@AcuMS.aculab.com>
Date: Thu, 8 Jun 2023 14:35:49 +0000
From: David Laight <David.Laight@...LAB.COM>
To: 'Zhangjin Wu' <falcon@...ylab.org>,
"thomas@...ch.de" <thomas@...ch.de>, "w@....eu" <w@....eu>
CC: "arnd@...db.de" <arnd@...db.de>,
"linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>,
"linux-kselftest@...r.kernel.org" <linux-kselftest@...r.kernel.org>,
"linux-riscv@...ts.infradead.org" <linux-riscv@...ts.infradead.org>,
Thomas Weißschuh <linux@...ssschuh.net>
Subject: RE: [PATCH v2 1/4] tools/nolibc: sys.h: add __syscall() and
__sysret() helpers
From: Zhangjin Wu
> Sent: 06 June 2023 09:10
>
> most of the library routines share the same code model, let's add two
> helpers to simplify the coding and shrink the code lines too.
>
...
> +/* Syscall return helper, set errno as -ret when ret < 0 */
> +static inline __attribute__((always_inline)) long __sysret(long ret)
> +{
> + if (ret < 0) {
> + SET_ERRNO(-ret);
> + ret = -1;
> + }
> + return ret;
> +}
If that right?
I thought that that only the first few (1024?) negative values
got used as errno values.
Do all Linux architectures even use negatives for error?
I thought at least some used the carry flag.
(It is the historic method of indicating a system call failure.)
David
-
Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK
Registration No: 1397386 (Wales)
Powered by blists - more mailing lists