<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi,</p>
    <p>I think the main reason why the mkdir() is called in the first
      place, from for example rasta-io driver, is that once other
      drivers register their device pciN.devM into the
      /dev/pciboardN/devM it would fail if the the directory
      /dev/pciboardN has not been created. So it is an attempt to avoid
      mkdir() in all IO drivers and move themkdir() dependency up to the
      pciboardN driver instead. An alternative approach could be that
      rtems_io_register_name("/dev/pciboardN/devM") would actually make
      sure that /dev/pciboardN directory is created if does not exist?
      or by introducing a new supporting function
      rtems_io_register_name_dircreat()? However, I suppose that would
      mean we would drag in mkdir() routines in all cases even when the
      IO drivers are only registering devices directly under /dev/ which
      is the most common case.<br>
    </p>
    <p>Daniel</p>
    <div class="moz-signature">
      <pre>
      
</pre>
    </div>
    <div class="moz-cite-prefix">On 2021-02-20 20:31, Chris Johns wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:2fdd8454-4d37-dfb3-611a-eeaccad3e070@rtems.org">
      <pre class="moz-quote-pre" wrap="">On 21/2/21 5:29 am, Gedare Bloom wrote:
</pre>
      <blockquote type="cite">
        <pre class="moz-quote-pre" wrap="">On Fri, Feb 19, 2021 at 5:26 PM Joel Sherrill <a class="moz-txt-link-rfc2396E" href="mailto:joel@rtems.org"><joel@rtems.org></a> wrote:
</pre>
        <blockquote type="cite">
          <pre class="moz-quote-pre" wrap="">On Fri, Feb 19, 2021, 5:32 PM Chris Johns <a class="moz-txt-link-rfc2396E" href="mailto:chrisj@rtems.org"><chrisj@rtems.org></a> wrote:
</pre>
          <blockquote type="cite">
            <pre class="moz-quote-pre" wrap="">
On 20/2/21 7:56 am, Joel Sherrill wrote:
</pre>
            <blockquote type="cite">
              <pre class="moz-quote-pre" wrap="">On Fri, Feb 19, 2021 at 2:51 PM Gedare Bloom <<a class="moz-txt-link-abbreviated" href="mailto:gedare@rtems.org">gedare@rtems.org</a>
<a class="moz-txt-link-rfc2396E" href="mailto:gedare@rtems.org"><mailto:gedare@rtems.org></a>> wrote:

    I think the suggestion is to provide a catch-all rather than try to add new
    faults for every possible condition. This mkdir is a pretty esoteric fault
    that is unlikely to happen in properly developed code.

Then why shouldn't this just be a debug _Assert and value not check deliberately?
</pre>
            </blockquote>
            <pre class="moz-quote-pre" wrap="">
Will the call ever fail in production? Could a user configure RTEMS in a manner
that generates the failure?

</pre>
            <blockquote type="cite">
              <pre class="moz-quote-pre" wrap="">Isn't an assert something that should not happen in a properly designed BSP. In
this case, it would be the sysinit magic that would be utterly broken.
</pre>
            </blockquote>
            <pre class="moz-quote-pre" wrap="">
I would not step out as far as utterly broken but yes I see your point. There
are other places where we have taken this approach.

If the lack of making a directory in GRLIB is handled by errors in the other
dependent calls then why not add some documentation to the BSP.
</pre>
          </blockquote>
          <pre class="moz-quote-pre" wrap="">
Confirmation appreciated but it is making the directory to out a device node. The device node create will fail if there isn't a directory so this will return an error.

<a class="moz-txt-link-freetext" href="https://git.rtems.org/rtems/tree/bsps/shared/grlib/pci/gr_rasta_io.c#n577">https://git.rtems.org/rtems/tree/bsps/shared/grlib/pci/gr_rasta_io.c#n577</a>

Which means an assert is ok

</pre>
        </blockquote>
        <pre class="moz-quote-pre" wrap="">
I think an assert that /dev exists is fine within device drivers that
want to create device nodes on /dev. It's not their responsibility to
create the /dev tree, right?
</pre>
      </blockquote>
      <pre class="moz-quote-pre" wrap="">
I agree. It means there is a system level initialisation issue. Maybe a sysint
call that is fatal is added before drivers are initialised?

Chris
_______________________________________________
devel mailing list
<a class="moz-txt-link-abbreviated" href="mailto:devel@rtems.org">devel@rtems.org</a>
<a class="moz-txt-link-freetext" href="http://lists.rtems.org/mailman/listinfo/devel">http://lists.rtems.org/mailman/listinfo/devel</a>
</pre>
    </blockquote>
  </body>
</html>