From: "Will Deacon" <will.deacon@arm.com>
To: ltp-list@lists.sourceforge.net
Subject: [LTP] ltp_clone
Date: Fri, 25 Feb 2011 11:11:25 -0000 [thread overview]
Message-ID: <000a01cbd4dc$be7a97b0$3b6fc710$@deacon@arm.com> (raw)
Hello,
The definition of ltp_clone looks like this:
int
ltp_clone(unsigned long clone_flags, int (*fn)(void *arg), void *arg,
size_t stack_size, void *stack)
{
int ret;
#if defined(__hppa__)
ret = clone(fn, stack, clone_flags, arg);
#elif defined(__ia64__)
ret = clone2(fn, stack, stack_size, clone_flags, arg, NULL, NULL, NULL);
#elif defined(__arm__)
/*
* Stack size should be a multiple of 32 bit words
* & stack limit must be aligned to a 32 bit boundary
*/
ret = clone(fn, (stack ? stack + stack_size : NULL),
clone_flags, arg);
#else
ret = clone(fn, (stack ? stack + stack_size - 1 : NULL),
clone_flags, arg);
#endif
return ret;
}
I believe the __arm__ case is to ensure that we pass an aligned
stack pointer to the syscall (as required by the architecture).
What I don't understand, is why we pass an unaligned address in
the #else case? Given that a stack push decrements the sp before
writing on every architecture I know of, it seems that the __arm__
case should be used as the default rather than forcing a misaligned
stack on other architectures.
Will
------------------------------------------------------------------------------
Free Software Download: Index, Search & Analyze Logs and other IT data in
Real-Time with Splunk. Collect, index and harness all the fast moving IT data
generated by your applications, servers and devices whether physical, virtual
or in the cloud. Deliver compliance at lower cost and gain new business
insights. http://p.sf.net/sfu/splunk-dev2dev
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list
next reply other threads:[~2011-02-25 11:11 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-02-25 11:11 Will Deacon [this message]
2011-02-25 14:41 ` [LTP] ltp_clone Hannu Heikkinen
2011-02-25 14:46 ` Will Deacon
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='000a01cbd4dc$be7a97b0$3b6fc710$@deacon@arm.com' \
--to=will.deacon@arm.com \
--cc=ltp-list@lists.sourceforge.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox