<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Feb 14, 2020 at 10:11 AM Sebastian Huber <<a href="mailto:sebastian.huber@embedded-brains.de">sebastian.huber@embedded-brains.de</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On 14/02/2020 17:02, Joel Sherrill wrote:<br>
<br>
> Hi<br>
><br>
> I was porting some code from Linux to RTEMS. It doesn't use stdin/out,<br>
> error directly but does all debug IO to a configured file. Most of the <br>
> time<br>
> when running on Linux, the device is /dev/stderr. For the RTEMS port,<br>
> I added link(/dev/console, /dev/stderr) to the init task and that worked.<br>
The locking is done at the FILE object level, if you use multiple FILE <br>
objects with a single file descriptor you may get mixed output.<br></blockquote><div><br></div><div>There are multiple file descriptors. Each thread opens it independently.</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
> But the application uses fopen(name, "w") to open the logging file.<br>
> This works on Linux. On RTEMS, this failed because "w" implies<br>
> ftruncate() and that returned -1.<br>
><br>
> I got around this by changing the logging helper to use fopen(name, "a").<br>
><br>
> I haven't done a POSIX deep dive and consulted with my POSIX contacts<br>
> yet for a strict POSIX ruling but I think we probably want the "w" to work<br>
> on RTEMS if it works on Lnux.<br>
><br>
> I can put together a test case but I would like to settle on the accepted<br>
> behavior first.<br>
<br>
This is probably because of our rtems_filesystem_default_ftruncate() <br>
implementation:<br>
<br>
int rtems_filesystem_default_ftruncate(<br>
   rtems_libio_t *iop,<br>
   off_t          length<br>
)<br>
{<br>
   rtems_set_errno_and_return_minus_one( EINVAL );<br>
}<br></blockquote><div><br></div><div>I debugged to that call and then realized if I used "a", it wouldn't call it.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Are there some rules for character devices? What happens on FreeBSD or <br>
macOS?<br></blockquote><div><br></div><div>I haven't looked there. Hopefully someone can answer that.  I'm not going to</div><div>be able to produce an example before the close of business today though.</div><div><br></div><div>I have reached out to a POSIX contact on what he thinks. But I'm also prone</div><div>to do what makes us have the same behavior as the others.</div><div><br></div><div>--joel</div><div> </div></div></div>