[PATCH] nvptx: Add _ssize_t as _READ_WRITE_RETURN_TYPE in newlib/libc/include/sys/config.h

Thomas Schwinge tschwinge@baylibre.com
Wed Jul 16 18:12:52 GMT 2025


Hi Arijit!

On 2025-07-16T22:45:39+0530, Arijit Kumar Das <arijitkdgit.official@gmail.com> wrote:
> On Wed, Jul 16, 2025 at 1:17 PM Thomas Schwinge <tschwinge@baylibre.com> wrote:
>> Generic code (for example: 'newlib/libc/include/sys/config.h',
>> 'newlib/libc/stdio/stdio.c'), which has to work for all possible newlib
>> targets/configurations, is often using some indirections/abstractions
>> (for example: '_ssize_t' corresponding to the actual 'ssize_t', or
>> '_READ_WRITE_RETURN_TYPE' corresponding to the actual 'read', 'write'
>> return type), so that certain targets/configurations are able to "fix up
>> things" if necessary.
>>
>> In contrast, the target-specific implementations (for example:
>> 'newlib/libc/machine/nvptx/write.c') can directly use the actual types
>> (for example: 'ssize_t' instead of '_ssize_t' or
>> '_READ_WRITE_RETURN_TYPE'); they (mostly) don't need the
>> indirections/abstractions, as they define (implement) code for the actual
>> target/configuration.
>>
>
> Got it! I'll be sending the patch soon. Here's what I'll add to config.h:
>
> #ifdef __nvptx__
> #define _READ_WRITE_RETURN_TYPE    ssize_t
> #define _READ_WRITE_BUFSIZE_TYPE    size_t

No, in the (generic) 'newlib/libc/include/sys/config.h', you should use
'_ssize_t' and '__size_t'.  It won't make a difference in practice, but
for consistency.

>> [...] let's
>> first sort out the '_READ_WRITE_RETURN_TYPE', '_READ_WRITE_BUFSIZE_TYPE'
>> thing, [...]
>
> Alright! But can I also update the function signatures in write.c and misc.c to
> _READ_WRITE_RETURN_TYPE and _READ_WRITE_BUFSIZE_TYPE
> wherever applicable and leave the rest of the things as it is (i.e. not include
> my filesystem code yet)?

Do not include your new code yet, just update:

> Otherwise the function signatures for read()
> and write()
> become different since write() uses_READ_WRITE_RETURN_TYPE and
> read() uses int which can cause a run time CUDA error.

... these to 'ssize_t' return type.


Grüße
 Thomas


More information about the Newlib mailing list