Re: Question about OS calls in RISCV BSP

Joel Sherrill <[email protected]>
Newsgroups gmane.comp.lib.newlib
Message-ID <CAF9ehCV9X-4KS1XAYcCA32FvjWPno6=kj63nXO+uOdv6ZsmRJg@mail.gmail.com>
On Tue, Sep 17, 2019, 7:25 PM Jim Wilson <[email protected]> wrote:

> On Wed, Sep 11, 2019 at 6:40 PM Bandhav Veluri <[email protected]> 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 <https://sourceware.org/newlib/libc.html#Syscalls
> >".
> > But when I look at RISC-V BSP
> > <
> https://github.com/riscv/riscv-newlib/tree/riscv-newlib-3.1.0/libgloss/riscv
> >,
> > 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
> > <https://github.com/eblot/newlib/tree/master/newlib/libc/syscalls>.
>
> Probably just forgot to update the docs when _fcntl support was added.
>
> Jim
>
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.