I figured out the answer to some of my own questions. Oh ye curious,  see
below.

Gordon McNutt wrote:

> Hi,
>
> I've been looking over the kernel patch and the rtl module code trying
> to figure out what needs to be done for an ARM port. I've been focusing
> on the 2.4 version where the patch is concerned. I'm using rev 3 of RTL.
>
> I have some questions.
>
> A. Does the MIPS version really work?
> 1. The MIPS version of arch_takeover tries to patch  __save_flags_ptr.
> 2. The prepatched kernel does not have this symbol.
> 3. The kernel patch does not add this symbol.
> 4. MIPS arch.h declares this symbol as an extern.
> 5. MIPS arch.c uses the symbol but does not define it.
>
> So it seems that, for MIPS, 'insmod rtl' would result in unresolved
> kernel symbols.
>
> B. I know the i386 version works, but something puzzles me.
> 1. The __start_rtlinux_funcs and __stop_rtlinux_funcs symbols are
> exported by the kernel after the patch.
> 2. They are declared extern, and do not appear anywhere else as
> non-extern (in the kernel or the rtl module).
> 3. cat /proc/ksyms reveals that they exist (which surprised me! My best
> guess why this works is that symbols which are exported to the kernel
> symbol table are defined _there_,  allocated space _there_, and somehow
> the linker -- when linking the kernel -- must know to go to the symbol
> table for exported symbols... can anybody explain this better?)
> 4. cat /proc/ksyms shows their location separated by 56 bytes.
> arch_takeover appears to treat this region like a call table, where it
> patches the relevant kernel functions. Is this correct? And where did
> those 56 bytes of separation come from?
>

__start_rtlinux_funcs is, apparently, some kind of implicit macro which
references the beginning of the "rtlinux_funcs" section. This section is
established by the RTLINUX_EXPORT macro used in rtlinux.c. By doing an
EXPORT_SYMBOL on it, the patch makes it available for the rtl module to
grab ahold of the rtlinux_funcs section (and all the variable pointers
stashed there by the RTLINUX_EXPORT macro calls).

Obvious.

Not sure why they don't just EXPORT_SYMBOL the symbols placed in
rtlinux_funcs. Perhaps if I stare at it some more the reason will appear.

--Gordon

-- [rtl] ---
To unsubscribe:
echo "unsubscribe rtl" | mail [EMAIL PROTECTED] OR
echo "unsubscribe rtl <Your_email>" | mail [EMAIL PROTECTED]
---
For more information on Real-Time Linux see:
http://www.rtlinux.org/rtlinux/

Reply via email to