Re: [PATCH] nvptx: Add _ssize_t as _READ_WRITE_RETURN_TYPE in newlib/libc/include/sys/config.h
Arijit Kumar Das <[email protected]>
| Newsgroups | gmane.comp.lib.newlib |
|---|---|
| Message-ID | <CALDPgrsm9_1YmojYtOHZCAL-beMtwt32qM8GW7qepmx89KbENQ@mail.gmail.com> |
Hi Thomas! Here's the updated version and (hopefully) this one's done as you instructed :-) Best regards, Arijit 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 On Thu, Jul 17, 2025 at 1:49 PM Thomas Schwinge <[email protected]> wrote: > > Hi Arijit! > > On 2025-07-17T01:27:41+0530, Arijit Kumar Das <[email protected]> wrote: > > Here's the final commit. I hope it's okay :-) > > Almost. ;-) > > > From 3089acec0f3b5606bffcbca3b6864023ccd2afa3 Mon Sep 17 00:00:00 2001 > > From: Arijit Kumar Das <[email protected]> > > Date: Thu, 17 Jul 2025 01:01:03 +0530 > > Subject: [PATCH] [nvptx]: Use _READ_WRITE_RETURN_TYPE for return type and > > _READ_WRITE_BUFSIZE_TYPE for count in read() and write() > > The important thing about this commit is the changes of types. I'd say: > > nvptx: Change 'read' and 'write' to 'ssize_t' return type, and 'size_t count' > > Your following text is just textually describing the commit: > > > - Changed the return type of read() from int to _READ_WRITE_RETURN_TYPE as per conventions. > > - Changed the 'count' parameter of read() and write() to _READ_WRITE_BUFSIZE_TYPE. > > - Defined both of the above macros in libc/include/sys/config.h under __nvptx__. > > - _READ_WRITE_RETURN_TYPE defined as _ssize_t (ssize_t). > > - _READ_WRITE_BUFSIZE_TYPE defined as __size_t (size_t). > > ..., so I personally wouldn't include that. Instead, you could add some > rationale, perhaps: > > ... to match their specification in POSIX, and enable large files. > > > Signed-off-by: Arijit Kumar Das <[email protected]> > > --- > > newlib/libc/include/sys/config.h | 5 +++++ > > newlib/libc/machine/nvptx/misc.c | 4 ++-- > > newlib/libc/machine/nvptx/write.c | 3 ++- > > 3 files changed, 9 insertions(+), 3 deletions(-) > > > --- 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 > > ACK. > > But for the following two nvptx-specific implementation files: > > > --- a/newlib/libc/machine/nvptx/misc.c > > +++ b/newlib/libc/machine/nvptx/misc.c > > > -int > > -read(int fd, void *buf, size_t count) { > > +_READ_WRITE_RETURN_TYPE > > +read(int fd, void *buf, _READ_WRITE_BUFSIZE_TYPE count) { > > > --- a/newlib/libc/machine/nvptx/write.c > > +++ b/newlib/libc/machine/nvptx/write.c > > > -_READ_WRITE_RETURN_TYPE write (int fd, const void *buf, size_t count) > > +_READ_WRITE_RETURN_TYPE > > +write (int fd, const void *buf, _READ_WRITE_BUFSIZE_TYPE count) > > { > > ..., I'd like you to use the actual types. So, please here replace > '_READ_WRITE_RETURN_TYPE' with 'ssize_t', and revert back > '_READ_WRITE_BUFSIZE_TYPE' to 'size_t'. > > > Grüße > Thomas
0001-nvptx-Change-read-and-write-to-ssize_t-return-type-a.patch
(text/x-patch, 2.2 KB)
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