[newlib-cygwin/main] nvptx: Change 'read' and 'write' to 'ssize_t' return type

Thomas Schwinge tschwinge@sourceware.org
Thu Jul 17 13:28:13 GMT 2025


https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=5d8c71af5e0fa5cdc99d9f741624920e34756418

commit 5d8c71af5e0fa5cdc99d9f741624920e34756418
Author: Arijit Kumar Das <arijitkdgit.official@gmail.com>
Date:   Thu Jul 17 16:21:16 2025 +0530

    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>

Diff:
---
 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;


More information about the Newlib-cvs mailing list