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>