Re: thread_info address calculation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Vijay,

On Fri, Sep 16, 2011 at 5:16 AM, Vijay Chauhan <kernel.vijay@xxxxxxxxx> 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.

-- 
Dave Hylands
Shuswap, BC, Canada
http://www.davehylands.com

_______________________________________________
Kernelnewbies mailing list
Kernelnewbies@xxxxxxxxxxxxxxxxx
http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux