Question about OS calls in RISCV BSP

Joel Sherrill
Wed Sep 18 01:25:00 GMT 2019

On Tue, Sep 17, 2019, 7:25 PM Jim Wilson <> wrote:

> On Wed, Sep 11, 2019 at 6:40 PM Bandhav Veluri <> wrote:
> > I'm the confused about the list of functions to be implemented in a BSP.
> > Newlib documentation explains 19 syscalls listed here is the "complete
> set
> > of system definitions <
> >".
> > But when I look at RISC-V BSP
> > <
> >,
> > I see lot more extra routines implemented such as getcwd, chown, chdir
> etc.
> > What is the exact list of subroutines a BSP has to implement?
> I think that is a minor bug in the RISC-V libgloss port.  This used to
> have a single syscall.c file which defined functions like open, but
> that was wrong, as it conflicted with the open function in newlib
> which expects to call _open in libgloss.  So the RISC-V syscalls.c
> file was split into multiple files, and the functions all had the
> missing underscore prefixed.  Unfortunately, the syscall.c file also
> had a getcwd function which got renamed to _getcwd, which newlib
> apparently never calls.  So we have an unused function _getcwd, and we
> have a missing getcwd function, but we never should have needed getcwd
> in libgloss in the first place.  Most of the RISC-V libgloss history
> is out of tree, but I'd guess that they were trying to compile POSIX
> programs, and just added every syscall they needed to get those
> programs to compile.  It is better to just use a linux toolchain to
> compile POSIX programs, but maybe they didn't have a working linux
> toolchain at the time.

Fwiw RTEMS has a robust POSIX API set if someone is interested in a RISC-V
RTOS.  It you also need the right toolchain. Just saying Linux isn't the
only POSIX option.

> > Also, any reason why is fcntl missing in the Newlib documentation's list?
> > It seems one of the syscalls required by this list
> > <>.
> Probably just forgot to update the docs when _fcntl support was added.
> Jim

More information about the Newlib mailing list