<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Aug 14, 2020 at 10:51 AM Richi Dubey <<a href="mailto:richidubey@gmail.com">richidubey@gmail.com</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"><div dir="ltr">My god. There's so much that a bachelor's degree does not teach.</div></blockquote><div><br></div><div>This particular one definitely qualifies as an example of Arthur C. Clarke's Third Law to me. :)<br><br>Clarke's Third Law: Any sufficiently advanced technology is indistinguishable from magic.</div>Profiles of the Future (revised edition, 1973)</div><div class="gmail_quote"><br></div><div class="gmail_quote">It really is quite simply once you see the end result. There is just an array of</div><div class="gmail_quote">function pointers in a special section with a start and end symbol. And a</div><div class="gmail_quote">loop to go over them at init time. All built up by the linker based on dependencies.<br><br>--joel</div><div class="gmail_quote"><br></div><div class="gmail_quote"><br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div><div>Thank you for your answer.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Aug 14, 2020 at 6:18 PM Sebastian Huber <<a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">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/08/2020 11:25, Richi Dubey wrote:<br>
<br>
> Is _RTEMS_tasks_Initialize_user_task responsible for starting the Init <br>
> task?<br>
Yes.<br>
><br>
> Also how does the following code which is part <br>
> of rtems_initialize_executive:<br>
><br>
>   /* Invoke the registered system initialization handlers */<br>
>   RTEMS_LINKER_SET_FOREACH( _Sysinit, item ) {<br>
>     ( *item->handler )();<br>
>   }<br>
><br>
> call _RTEMS_tasks_Initialize_user_task?<br>
<br>
This is done via a linker set:<br>
<br>
<a href="https://docs.rtems.org/branches/master/c-user/linker_sets.html" rel="noreferrer" target="_blank">https://docs.rtems.org/branches/master/c-user/linker_sets.html</a><br>
<br>
You can see the entries with this host command line tool:<br>
<br>
<a href="https://docs.rtems.org/branches/master/user/tools/exeinfo.html" rel="noreferrer" target="_blank">https://docs.rtems.org/branches/master/user/tools/exeinfo.html</a><br>
<br>
</blockquote></div>
_______________________________________________<br>
devel mailing list<br>
<a href="mailto:devel@rtems.org" target="_blank">devel@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a></blockquote></div></div>