While reading through the Linux Device Drivers, I could understand that the Process Descriptor (of type
struct task_struct) has all the info regarding a particular task. The process descriptors are allocated dynamically by the slab allocator.
What I would like to know is about the need to introduce a new structure called
thread_info which is stored at the bottom of the stack (assuming x86). Why was this done?
Why was it not possible to place the address of the current executing task address (
struct task_struct) to the kernel stack?