Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 11 Nov 2007 17:10:43 -0800
From:      Marcel Moolenaar <xcllnt@mac.com>
To:        Alexander Motin <mav@FreeBSD.org>
Cc:        Kostik Belousov <kostikbel@gmail.com>, Julian Elischer <julian@elischer.org>, freebsd-arch@FreeBSD.org
Subject:   Re: Kernel thread stack usage
Message-ID:  <06618562-A789-4B5E-94BF-0ED8AB51A1FF@mac.com>
In-Reply-To: <4737696A.7050605@FreeBSD.org>
References:  <1191187393.00807485.1191175801@10.7.7.3> <1191189248.00807488.1191177603@10.7.7.3> <4736D8AF.7010209@FreeBSD.org> <20071111163815.GJ37471@deviant.kiev.zoral.com.ua> <47373C5E.2080800@elischer.org> <0414590D-0C2A-4EBD-9617-7AC193ABD1E8@mac.com> <4737696A.7050605@FreeBSD.org>

next in thread | previous in thread | raw e-mail | index | archive | help

On Nov 11, 2007, at 12:43 PM, Alexander Motin wrote:

> Marcel Moolenaar wrote:
>> This is not theoretical at all: On ia64 there are 2 stacks. One
>> growing down and one growing up. The downward stack is used for
>> stack-based variables and the pward growing stack is used by
>> the processor for stacked registers.
>
> Hmm, interesting. And which one is pointed by td_kstack there? Or  
> they are using same segment but from opposite sides?

The latter. The td_kstack variable points to the bottom,
which is where the register stack starts. The memory stack
start from td_kstack + td_kstack_size.

>> The code suggested will not be meaningful on ia64.
>
> Why? If variable stack growing down and it's segment is pointed by  
> td_kstack then where is the problem? Or you mean that system will  
> die earlier when those two stacks in same segment will reach each  
> other?

It's the register stack that grows faster in general and
yes, they grow towards each other so they can eventually
run into each other.

-- 
Marcel Moolenaar
xcllnt@mac.com





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?06618562-A789-4B5E-94BF-0ED8AB51A1FF>