nvptx: Change 'read' and 'write' to 'ssize_t' return type (was: [PATCH] nvptx: Add _ssize_t as _READ_WRITE_RETURN_TYPE in newlib/libc/include/sys/config.h)
Thomas Schwinge <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <[email protected]> |
Hi! On 2025-07-17T17:00:59+0530, Arijit Kumar Das <[email protected]> wrote: > Here's the updated version and (hopefully) this one's done as you instructed :-) Pushed to main branch commit 5d8c71af5e0fa5cdc99d9f741624920e34756418 "nvptx: Change 'read' and 'write' to 'ssize_t' return type". Arijit, congratulations to your first commit in newlib! :-D Grüße Thomas > From b7ed7f8883053fd84c77a87e69ed757b55551b5f Mon Sep 17 00:00:00 2001 > From: Arijit Kumar Das <[email protected]> > Date: Thu, 17 Jul 2025 16:21:16 +0530 > Subject: [PATCH] nvptx: Change 'read' and 'write' to 'ssize_t' return type > > This commit changes the return type of the read() and write() syscalls for > nvptx to ssize_t. This would allow large files to be handled properly by > these syscalls in situations where the read/write buffer length exceeds > INT_MAX, for example. This also makes the syscall signatures fully complaint > with their current POSIX specifications. > > We additionally define two macros: '_READ_WRITE_RETURN_TYPE' as _ssize_t and > '_READ_WRITE_BUFSIZE_TYPE' as __size_t in libc/include/sys/config.h under > __nvptx__ for consistency. > > Signed-off-by: Arijit Kumar Das <[email protected]> > --- > newlib/libc/include/sys/config.h | 5 +++++ > newlib/libc/machine/nvptx/misc.c | 2 +- > newlib/libc/machine/nvptx/write.c | 3 ++- > 3 files changed, 8 insertions(+), 2 deletions(-) > > diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h > index 4c9acc55c..c3cd51e86 100644 > --- a/newlib/libc/include/sys/config.h > +++ b/newlib/libc/include/sys/config.h > @@ -12,6 +12,11 @@ > #define __DYNAMIC_REENT__ > #endif > > +#ifdef __nvptx__ > +#define _READ_WRITE_RETURN_TYPE _ssize_t > +#define _READ_WRITE_BUFSIZE_TYPE __size_t > +#endif > + > /* exceptions first */ > #if defined(__H8500__) || defined(__W65__) > #define __SMALL_BITFIELDS > diff --git a/newlib/libc/machine/nvptx/misc.c b/newlib/libc/machine/nvptx/misc.c > index 56e66b9f3..829921ec2 100644 > --- a/newlib/libc/machine/nvptx/misc.c > +++ b/newlib/libc/machine/nvptx/misc.c > @@ -62,7 +62,7 @@ open (const char *pathname, int flags, ...) { > return -1; > } > > -int > +ssize_t > read(int fd, void *buf, size_t count) { > return 0; > } > diff --git a/newlib/libc/machine/nvptx/write.c b/newlib/libc/machine/nvptx/write.c > index 0544dd05e..38f086893 100644 > --- a/newlib/libc/machine/nvptx/write.c > +++ b/newlib/libc/machine/nvptx/write.c > @@ -18,7 +18,8 @@ > #include <unistd.h> > #include <errno.h> > > -_READ_WRITE_RETURN_TYPE write (int fd, const void *buf, size_t count) > +ssize_t > +write (int fd, const void *buf, size_t count) > { > size_t i; > char *b = (char *)buf; > -- > 2.39.5