Prior to the Linux 2.6 kernel, struct task_struct was present at the end of the kernel stack of each process. There was no thread_info struct concept. But in Linux 2.6 kernel, instead of task_struct being placed at the end of the kernel stack for the process, the thread_info struct is placed at the end. This thread_info struct contains a pointer to the task_struct structure.
What was the need for thread_info structure to be introduced ?. We could have accessed the task_struct structure using the stack pointer directly if task_struct was placed at the end of the kernel stack of the process.
In 2.6 Kernel, task_struct is dynamically allocated using slab_allocator. Prior to 2.6 Kernel, was it statically allocated?
FrankH, he is looking (out of pure interest as I am, I suspect) for a reason for this change. This if what I’ve found with my l33t google skills. A bit more info behind the link:
(c) http://www.spinics.net/lists/newbies/msg22263.html