thread_info address calculation
dhylands at gmail.com
Fri Sep 16 11:52:43 EDT 2011
On Fri, Sep 16, 2011 at 5:16 AM, Vijay Chauhan <kernel.vijay at gmail.com> wrote:
>> It's the same thing as you read:
>> THREAD size is 8kb so the operation looks like the following:
>> current_stack_pointer & ~(8191) == current_stack_pointet & 0xFFFFFE00
>> (last 13 bits are 0)
> Ok. Got it.
> But how ANDing it with current stack pointer points to the address of
> thread_info structure.
> Suppose stack is growing from higher to lower memory address.
Since the memory for the stack is allocated using a power-of-2
allocator, when you ask for 8K of memory, it is also 8K aligned. The
stack will start at the end of the 8K region and grow towards the
beginning. The thread_info will be stored at the beginning.
ANDing any valid stack pointer with the mask will return the beginning
of the 8K block.
Shuswap, BC, Canada
More information about the Kernelnewbies