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
tschwinge@baylibre.com
Thu Jul 17 13:30:26 GMT 2025
Hi!
On 2025-07-17T17:00:59+0530, Arijit Kumar Das <arijitkdgit.official@gmail.com> 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 <arijitkdgit.official@gmail.com>
> 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 <arijitkdgit.official@gmail.com>
> ---
> 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
More information about the Newlib
mailing list