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