Date: Wed, 04 Sep 2013 16:29:59 -0500 From: Nathan Whitehorn <nwhitehorn@freebsd.org> To: John Baldwin <jhb@freebsd.org> Cc: freebsd-geom@freebsd.org, "freebsd-hackers@freebsd.org" <freebsd-hackers@freebsd.org>, Alexander Motin <mav@freebsd.org>, freebsd-current@freebsd.org, Outback Dingo <outbackdingo@gmail.com>, =?ISO-8859-1?Q?Olivier_Cochard-Labb=E9?= <olivier@cochard.me>, FreeBSD SCSI <freebsd-scsi@freebsd.org>, Ryan Stone <rysto32@gmail.com> Subject: Re: [RFC][CFT] GEOM direct dispatch and fine-grained CAM locking Message-ID: <5227A657.4010701@freebsd.org> In-Reply-To: <201309041200.56024.jhb@freebsd.org> References: <520D4ADB.50209@FreeBSD.org> <CAFMmRNzkL%2BuOsC=2Cq_S4Zm5fkmrQRNYcKfijA8yyYcxvLaXPQ@mail.gmail.com> <52273F90.7020303@freebsd.org> <201309041200.56024.jhb@freebsd.org>
next in thread | previous in thread | raw e-mail | index | archive | help
On 09/04/13 11:00, John Baldwin wrote: > On Wednesday, September 04, 2013 10:11:28 am Nathan Whitehorn wrote: >> On 09/04/13 08:20, Ryan Stone wrote: >>> On Wed, Sep 4, 2013 at 8:45 AM, Nathan Whitehorn <nwhitehorn@freebsd.org> > wrote: >>>> Could you describe what this macro is supposed to do so that we can do > the >>>> porting work? >>>> -Nathan >>> #define GET_STACK_USAGE(total, used) >>> >>> GET_STACK_USAGE sets the variable passed in total to the total amount >>> of stack space available to the current thread. used is set to the >>> amount of stack space currently used (this does not have to have >>> byte-precision). Netgraph uses this to decide when to stop recursing >>> and instead defer to a work queue (to prevent stack overflow). I >>> presume that Alexander is using it in a similar way. It looks like >>> the amd64 version could be ported to other architectures quite easily >>> if you were to account for stacks that grow up and stacks that grow >>> down: >>> >>> > http://svnweb.freebsd.org/base/head/sys/amd64/include/proc.h?revision=233291&view=markup >>> /* Get the current kernel thread stack usage. */ >>> #define GET_STACK_USAGE(total, used) do { \ >>> struct thread *td = curthread; \ >>> (total) = td->td_kstack_pages * PAGE_SIZE; \ >>> (used) = (char *)td->td_kstack + \ >>> td->td_kstack_pages * PAGE_SIZE - \ >>> (char *)&td; \ >>> } while (0) >>> _______________________________________________ >>> freebsd-hackers@freebsd.org mailing list >>> http://lists.freebsd.org/mailman/listinfo/freebsd-hackers >>> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@freebsd.org" >> I think that should be MI for us anyway. I'm not aware of any >> architectures FreeBSD supports with stacks that grow up. I'll give it a >> test on PPC. > ia64 has the double stack thingie where the register stack spills into a stack > that grows up rather than down. Not sure how sparc64 window spills are > handled either. > Ah, very well. That's weird. Should be fine for PPC, however. -Nathan
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?5227A657.4010701>