Hi, 
I'm totally new to kernel code, just trying to understand the basics of the core subsystems.
During the do_fork call, there is a call to dup_task_struct, which in turn calls setup_thread_stack. 
What's  this call supposed to do? Inside I can see a call to the "task_thread_info" macro, but I don't quite understand it:

#define task_thread_info(task) ((struct thread_info *)(task)->stack)

can a task_struct be cast to a thread_info? perhaps my C knowledge should be improved..I know :(

Sorry for the trivial question..just trying to understand :)

Regards,

Francesco