From owner-freebsd-arch@FreeBSD.ORG Sun Nov 11 17:41:38 2007 Return-Path: Delivered-To: freebsd-arch@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id EFC5016A420 for ; Sun, 11 Nov 2007 17:41:38 +0000 (UTC) (envelope-from mav@FreeBSD.org) Received: from cmail.optima.ua (cmail.optima.ua [195.248.191.121]) by mx1.freebsd.org (Postfix) with ESMTP id 7BE6E13C4B5 for ; Sun, 11 Nov 2007 17:41:38 +0000 (UTC) (envelope-from mav@FreeBSD.org) X-Spam-Flag: SKIP X-Spam-Yversion: Spamooborona 1.7.0 Received: from [212.86.226.226] (account mav@alkar.net HELO [192.168.3.2]) by cmail.optima.ua (CommuniGate Pro SMTP 5.1.10) with ESMTPA id 44529236; Sun, 11 Nov 2007 19:41:30 +0200 Message-ID: <47373EC0.2040804@FreeBSD.org> Date: Sun, 11 Nov 2007 19:41:20 +0200 From: Alexander Motin User-Agent: Thunderbird 2.0.0.6 (Windows/20070728) MIME-Version: 1.0 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> In-Reply-To: <47373C5E.2080800@elischer.org> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Cc: Kostik Belousov , freebsd-arch@freebsd.org Subject: Re: Kernel thread stack usage X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 11 Nov 2007 17:41:39 -0000 > Kostik Belousov wrote: >>>> The question is: is there correct way to somehow get current kernel >>>> thread stack usage or just a stack base address? >>> Digging kernel with a dirty hands I have found the way which looks >>> like working. I have briefly tested it on i386. >>> >>> printf("%p, %p. Used %d of %d.\n", &var, >>> (char *)td->td_kstack + td->td_kstack_pages * PAGE_SIZE, >>> (char *)td->td_kstack + td->td_kstack_pages * PAGE_SIZE - >>> (char *)&var, >>> td->td_kstack_pages * PAGE_SIZE); >>> >>> 'var' here is a name of some local variable. >>> >>> Can anybody comment correctness of this way or propose another one? >> >> Most of the time, you will get the correct value. But, see the >> vm_thread_new_altstack() in vm/vm_glue.c. I have seen that. But as I have understood td_altkstack is just a temporal storage for original td_kstack value. I don't see how it interfere my question. -- Alexander Motin