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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.