All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peter Lieven <pl@kamp.de>
To: Eric Blake <eblake@redhat.com>, qemu-devel@nongnu.org
Cc: kwolf@redhat.com, mreitz@redhat.com, pbonzini@redhat.com,
	mst@redhat.com, dgilbert@redhat.com, peter.maydell@linaro.org,
	rth@twiddle.net, armbru@redhat.com
Subject: Re: [Qemu-devel] [PATCH V4 1/6] oslib-posix: add helpers for stack alloc and free
Date: Tue, 12 Jul 2016 16:41:54 +0200	[thread overview]
Message-ID: <578501B2.5000703@kamp.de> (raw)
In-Reply-To: <57850082.1040502@kamp.de>

Am 12.07.2016 um 16:36 schrieb Peter Lieven:
> Am 11.07.2016 um 18:39 schrieb Eric Blake:
>> On 07/11/2016 03:07 AM, Peter Lieven wrote:
>>> the allocated stack will be adjusted to the minimum supported stack size
>>> by the OS and rounded up to be a multiple of the system pagesize.
>>> Additionally an architecture dependent guard page is added to the stack
>>> to catch stack overflows.
>>>
>>> Signed-off-by: Peter Lieven <pl@kamp.de>
>>> ---
>>>  include/sysemu/os-posix.h | 23 +++++++++++++++++++++++
>>>  util/oslib-posix.c        | 44 ++++++++++++++++++++++++++++++++++++++++++++
>>>  2 files changed, 67 insertions(+)
>>>
>>> +
>>> +static size_t adjust_stack_size(size_t sz)
>>> +{
>>> +    /* avoid stacks smaller than _SC_THREAD_STACK_MIN */
>>> +    sz = MAX(sz, sysconf(_SC_THREAD_STACK_MIN));
>> sz is unsigned, but sysconf() is signed.  Furthermore, sysconf() is
>> permitted to return -1 if there is no such minimum.  MAX() would then
>> operate on the common integral promotion between the two arguments,
>> which may treat (unsigned)(-1) as the larger of the two values, and give
>> you the wrong results.
>>
>> I think it is theoretical (all platforms that we compile on have a
>> working sysconf(_SC_THREAD_STACK_MIN), right?), but still may be worth
>> being sure that sysconf() returned a positive value before computing MAX().
>>
> If you feel more comfortable I can surround it by a
>
> if (sysconf(_SC_THREAD_STACK_MIN) > 0) { }
>
> I wonder if the _SC_THREAD_STACK_MIN constant exists if there is no minimum?

Update:

glibc basically does the following:

static gulong g_thread_min_stack_size = 0;

#ifdef _SC_THREAD_STACK_MIN
g_thread_min_stack_size = MAX (sysconf (_SC_THREAD_STACK_MIN), 0);
#endif /* _SC_THREAD_STACK_MIN */

stack_size = MAX (g_thread_min_stack_size, stack_size);


So we should do sth similar, I think?!

Peter

  reply	other threads:[~2016-07-12 14:42 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-07-11  9:07 [Qemu-devel] [PATCH V4 0/6] coroutine: mmap stack memory and stack size Peter Lieven
2016-07-11  9:07 ` [Qemu-devel] [PATCH V4 1/6] oslib-posix: add helpers for stack alloc and free Peter Lieven
2016-07-11 16:28   ` Richard Henderson
2016-07-11 16:39   ` Eric Blake
2016-07-12 14:36     ` Peter Lieven
2016-07-12 14:41       ` Peter Lieven [this message]
2016-07-12 15:32         ` Eric Blake
2016-07-11  9:07 ` [Qemu-devel] [PATCH V4 2/6] coroutine: add a macro for the coroutine stack size Peter Lieven
2016-07-11  9:07 ` [Qemu-devel] [PATCH V4 3/6] coroutine-ucontext: use helper for allocating stack memory Peter Lieven
2016-07-11  9:08 ` [Qemu-devel] [PATCH V4 4/6] coroutine-sigaltstack: " Peter Lieven
2016-07-11  9:08 ` [Qemu-devel] [PATCH V4 5/6] oslib-posix: add a configure switch to debug stack usage Peter Lieven
2016-07-11  9:08 ` [Qemu-devel] [PATCH V4 6/6] coroutine: reduce stack size to 64kB Peter Lieven

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=578501B2.5000703@kamp.de \
    --to=pl@kamp.de \
    --cc=armbru@redhat.com \
    --cc=dgilbert@redhat.com \
    --cc=eblake@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=mst@redhat.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.