newlib: Regenerate autotools files
[newlib-cygwin.git] / libgloss / riscv / semihost-sys_write.c
blob9aee6d30b707b095dca76540f687711565338db0
1 /*
2 * Copyright (C) 2020 Embecosm Limited
3 * SPDX-License-Identifier: BSD-2-Clause
4 */
5 #include <machine/syscall.h>
6 #include <sys/types.h>
7 #include "semihost_syscall.h"
8 #include "semihost_fdtable.h"
10 /* Write to a file. */
11 ssize_t
12 _write (int file, const void *ptr, size_t len)
14 struct fdentry *fd =__get_fdentry (file);
15 long data_block[3];
16 long res;
18 if (fd == NULL)
19 return -1;
21 data_block[0] = fd->handle;
22 data_block[1] = (long) ptr;
23 data_block[2] = len;
24 res = syscall_errno (SEMIHOST_write, data_block);
25 if (res >= 0)
27 ssize_t bytes_written = len - res;
28 fd->pos += bytes_written;
29 return bytes_written;
31 return -1;