[En-Nut-Discussion] Nut/OS Initialization
Thiago A. Corrêa
thiago.correa at gmail.com
Wed Sep 17 18:58:03 CEST 2008
On Wed, Sep 17, 2008 at 1:54 PM, Nathan Moore <nategoose at gmail.com> wrote:
> On Wed, Sep 17, 2008 at 12:29 PM, Harald Kipp <harald.kipp at egnite.de> wrote:
>
>>
>>
>> If you override weakly defined default structures, these defaults will
>> not appear in the final code. If you don't override them, the defaults
>> will be linked in. Empty would mean in this case, that they are zeroed
>> out, but still occupy space.
>>
>> After writing this I got the strong feeling of having missed something.
>> Possibly it has to do with link pointers....
>>
>>
> Well the simplest thing I was imagining was:
> some OS lib source:
> ...
> x = GetThing(thing_dev);
> if (user_callback(x) ) {
> /* user does not like thing!! */
> } else {
> /* process thing */
> }
> ...
>
> some other OS lib source:
> int user_callback(struct thing * th) {
> return 0;
> }
>
> Then if the application didn't define a user_callback symbol the linker
> would still have it in it's list of unresolved symbols
> as it was searching the last of the libraries.
> It's similar to the IpFilter *f() except doesn't require the pointer or the
> check, and you could probably get away with
> aliasing one default callback function as multiple call backs so you don't
> end up a bunch of code that not only does
> nothing, but does the exact same nothing -- just have one copy of it with as
> many names as needed.
>
> Nathan
Exactly.
Then user_callback does the normal NutRegisterDevice as it is. No
structs and such :)
At least not required to.
Kind Regards,
Thiago A. Correa
More information about the En-Nut-Discussion
mailing list