Rock Lee <[email protected]> writes:

>> Rock Lee <[email protected]> writes:
>>
>>> Hi, all:
>>>     Here is a snippet of linux-v3.4 which drives me crazy.
>>> Because init_task hasn't been declared yet when init_thread_union is
>>> initializing. Why is there no compiling error? Any hint would be helpful.
>>>
>>> union thread_union init_thread_union __init_task_data =
>>>
>>>       { INIT_THREAD_INFO(init_task) };
>>>
>>>
>>>
>>> /*
>>>
>>>    * Initial task structure.
>>>
>>>    *
>>>
>>>    * All other task structs will be allocated on slabs in fork.c
>>>
>>>    */
>>>
>>> struct task_struct init_task = INIT_TASK(init_task);
>>
>>
>> Because init_task is declared "extern" in linux/sched.h
>>
>>
>> Bjørn
>
> I do something like that:
>
> extern int b;
> int a = b + 10;
> int b = 20;
>
> int main(void)
> {
>       return 0;
> }
>
> No doubt, compiling error.

Sure.  That's a completely different issue. But this works:

extern int b;
int *a = &b;
int b = 20;

int main(void)
{
        return 0;
}

and that's what the code you refer do does.



Bjørn


_______________________________________________
Kernelnewbies mailing list
[email protected]
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies

Reply via email to