Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 14 Oct 2003 17:38:26 -0400 (EDT)
From:      John Baldwin <jhb@FreeBSD.org>
To:        Ken Smith <kensmith@cse.Buffalo.EDU>
Cc:        freebsd-doc@freebsd.org
Subject:   RE: SYSINIT() fixes for Architecture Manual
Message-ID:  <XFMail.20031014173826.jhb@FreeBSD.org>
In-Reply-To: <20031014034838.GA20484@electra.cse.Buffalo.EDU>

next in thread | previous in thread | raw e-mail | index | archive | help

On 14-Oct-2003 Ken Smith wrote:
> 
> Murray suggested I just send this here, and he'd chime in if nobody
> else feels like enough of an authority to say whether or not I'm
> lying.  :-)
> 
> While working on PR docs/57568 to fix the SYSINIT() examples I
> decided to try and clarify a little bit what SYSINIT() is/isn't
> used for.  Can anyone say one way or another if I hit the target?
> 
> Thanks.
> 
> [ snip ]
>  
>  void foo_null(void *unused)
>  {
>          foo_doo();
>  }
> -SYSINIT(foo_null, SI_SUB_FOO, SI_ORDER_FOO, NULL);
> +SYSINIT(foo, SI_SUB_FOO, SI_ORDER_FOO, foo_null, NULL);
>  
>  struct foo foo_voodoo = {
>          FOO_VOODOO;
> @@ -115,26 +126,34 @@
>          struct foo *foo = (struct foo *)vdata;
>          foo_data(foo);
>  }
> -SYSINIT(foo_arg, SI_SUB_FOO, SI_ORDER_FOO, foo_voodoo);
> -      </programlisting>
> +SYSINIT(foo, SI_SUB_FOO, SI_ORDER_FOO, foo_arg, foo_voodoo);
> +        </programlisting>
> +      </example>
> +
> +      <para>Note that <literal>SI_SUB_FOO</literal> and
> +     <literal>SI_ORDER_FOO</literal> need to be in the
> +     <literal>sysinit_sub_id</literal> and
> +     <literal>sysinit_elem_order</literal> enum's as mentioned above.
> +     Either use existing ones or add your own to the enum's.</para>
>      </sect2>

You should make sure both SYSINITs have uniqe uniqifiers, maybe
use 'bar' instead of 'foo' for the second example.  Also, you might
want to note that you can do math on the SYSINITs.  For example,
you can do something like this:

static void
mptable_register(void *dummy __unused)
{

        apic_register_enumerator(&mptable_enumerator);
}
SYSINIT(mptable_register, SI_SUB_TUNABLES - 1, SI_ORDER_FIRST,
    mptable_register, NULL)


Also, using 'Sysinit' seems really odd.  I would either go with
'sysinit', 'SYSINIT', or 'system initialization function'.

>      <sect2>
>        <title>Shutdown</title>
>  
> -      <para>The <literal>SYSUNINIT()</literal> macro behaves similarly
> +      <para>The <literal>SYSUNINIT()</literal> macro behaves similar
>          to the <literal>SYSINIT()</literal> macro except that it adds
>          the Sysinit data to Sysinit's shutdown data set.</para>

similar is an adjective, not an adverb.  You are describing how it
behaves, so it should be the adverb form: similarly.  Even if it is
a mouthful to say. :)

> @@ -143,8 +162,9 @@
>  void foo_flush(void *vdata)
>  {
>  }
> -SYSUNINIT(foo_flush, SI_SUB_FOO, SI_ORDER_FOO, foo_stack);
> -      </programlisting>
> +SYSUNINIT(foo, SI_SUB_FOO, SI_ORDER_FOO, foo_flush, foo_stack);
> +     </programlisting>
> +      </example>
>      </sect2>
>    </sect1>
>  </chapter>

Again, make sure you have uniqe uniqifiers in this example as
well.

-- 

John Baldwin <jhb@FreeBSD.org>  <><  http://www.FreeBSD.org/~jhb/
"Power Users Use the Power to Serve!"  -  http://www.FreeBSD.org/



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?XFMail.20031014173826.jhb>