fopen() on /dev/console

Joel Sherrill joel at rtems.org
Fri Feb 14 16:23:48 UTC 2020


On Fri, Feb 14, 2020 at 10:11 AM Sebastian Huber <
sebastian.huber at embedded-brains.de> wrote:

> On 14/02/2020 17:02, Joel Sherrill wrote:
>
> > Hi
> >
> > I was porting some code from Linux to RTEMS. It doesn't use stdin/out,
> > error directly but does all debug IO to a configured file. Most of the
> > time
> > when running on Linux, the device is /dev/stderr. For the RTEMS port,
> > I added link(/dev/console, /dev/stderr) to the init task and that worked.
> The locking is done at the FILE object level, if you use multiple FILE
> objects with a single file descriptor you may get mixed output.
>

There are multiple file descriptors. Each thread opens it independently.


> > But the application uses fopen(name, "w") to open the logging file.
> > This works on Linux. On RTEMS, this failed because "w" implies
> > ftruncate() and that returned -1.
> >
> > I got around this by changing the logging helper to use fopen(name, "a").
> >
> > I haven't done a POSIX deep dive and consulted with my POSIX contacts
> > yet for a strict POSIX ruling but I think we probably want the "w" to
> work
> > on RTEMS if it works on Lnux.
> >
> > I can put together a test case but I would like to settle on the accepted
> > behavior first.
>
> This is probably because of our rtems_filesystem_default_ftruncate()
> implementation:
>
> int rtems_filesystem_default_ftruncate(
>    rtems_libio_t *iop,
>    off_t          length
> )
> {
>    rtems_set_errno_and_return_minus_one( EINVAL );
> }
>

I debugged to that call and then realized if I used "a", it wouldn't call
it.


>
> Are there some rules for character devices? What happens on FreeBSD or
> macOS?
>

I haven't looked there. Hopefully someone can answer that.  I'm not going to
be able to produce an example before the close of business today though.

I have reached out to a POSIX contact on what he thinks. But I'm also prone
to do what makes us have the same behavior as the others.

--joel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/devel/attachments/20200214/21998fcb/attachment.html>


More information about the devel mailing list