From: Sukadev Bhattiprolu <sukadev-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>
To: Dave Hansen
<dave-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org>,
containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
Subject: Re: [RFC][PATCH] clone_with_pids()^w eclone() for x86_64
Date: Thu, 19 Nov 2009 23:29:14 -0800 [thread overview]
Message-ID: <20091120072914.GA4291@us.ibm.com> (raw)
In-Reply-To: <20091119095844.GP4379-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
Louis Rilling [Louis.Rilling-aw0BnHfMbSpBDgjK7y7TUQ@public.gmane.org] wrote:
| >
| > __asm__ __volatile__(
| > "syscall\n\t" /* Linux/x86_64 system call */
| > "testq %0,%0\n\t" /* check return value */
| > "jne 1f\n\t" /* jump if parent */
| > "popq %%rbx\n\t" /* get subthread function */
| > "call *%%rbx\n\t" /* start subthread function */
| > "movq %2,%0\n\t"
| > "syscall\n" /* exit system call: exit subthread */
| > "1:\n\t"
| > "popq %%rbp\t" /* restore parent's ebp */
| > :"=a" (retval)
| > :"0" (__NR_clone3), "i" (__NR_exit)
| > :"ebx", "ecx", "edx"
| > );
|
| 2. You should probably not separate this into two asm statements. In particular,
| the compiler has no way to know that r10 should be preserved between the two
| statements, and may be confused by the change of rsp.
|
Don't know enough asm, but can we leave them as two asm statements if we
add all registers with parameters to the clobbered list ? The i386 code that
Dave is referring to adds 3 (%ebx, %ecx, %edx) to the clobbered list, but is
the missing the fourth, %edi.
Sukadev
| 3. r10 and r11 should be listed as clobbered.
|
| 4. I fail to see the magic that puts the subthread function pointer in the
| stack.
|
| 5. Maybe rdi should contain the subthread argument before calling the subthread?
|
| 6. rdi, rsi, rdx, rcx, r8 and r9 should be added to the clobber list because of
| the call to the subthread function.
|
| 7. rsi could be used in place of rbx to hold the function pointer, which would
| allow you to remove ebx from the clobber list.
|
| 8. I don't see why rbp should be saved. The ABI says it must be saved by the
| callee.
|
| 9. Before calling exit(), maybe put some exit code in rdi?
|
| >
| > if (retval < 0) {
| > errno = -retval;
| > retval = -1;
| > }
| > return retval;
| > }
|
| Thanks,
|
| Louis
|
| [...]
|
| --
| Dr Louis Rilling Kerlabs
| Skype: louis.rilling Batiment Germanium
| Phone: (+33|0) 6 80 89 08 23 80 avenue des Buttes de Coesmes
| http://www.kerlabs.com/ 35700 Rennes
| _______________________________________________
| Containers mailing list
| Containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org
| https://lists.linux-foundation.org/mailman/listinfo/containers
next prev parent reply other threads:[~2009-11-20 7:29 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-19 0:48 [RFC][PATCH] clone_with_pids()^w eclone() for x86_64 Dave Hansen
2009-11-19 9:58 ` Louis Rilling
[not found] ` <20091119095844.GP4379-Hu8+6S1rdjywhHL9vcZdMVaTQe2KTcn/@public.gmane.org>
2009-11-19 17:48 ` Dave Hansen
2009-11-19 21:26 ` Louis Rilling
2009-11-19 21:29 ` Louis Rilling
2009-11-19 21:32 ` Dave Hansen
2009-11-19 21:44 ` Louis Rilling
2009-11-20 13:51 ` Louis Rilling
2009-11-20 7:29 ` Sukadev Bhattiprolu [this message]
[not found] ` <20091120072914.GA4291-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-11-20 9:31 ` Louis Rilling
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=20091120072914.GA4291@us.ibm.com \
--to=sukadev-23vcf4htsmix0ybbhkvfkdbpr1lh4cv8@public.gmane.org \
--cc=containers-cunTk1MwBs9QetFLy7KEm3xJsTq8ys+cHZ5vskTnxNA@public.gmane.org \
--cc=dave-23VcF4HTsmIX0ybBhKVfKdBPR1lH4CV8@public.gmane.org \
/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.