From: Cyril Hrubis <chrubis@suse.cz>
To: ltp@lists.linux.it
Subject: [LTP] Query: Adding support for clone3()
Date: Fri, 28 Feb 2020 12:48:01 +0100 [thread overview]
Message-ID: <20200228114801.GA8324@rei> (raw)
In-Reply-To: <20200228102432.3kdhl4aqkla4akss@vireshk-i7>
Hi!
> > > One of the challenges with the implementation of clone3() is that
> > > there is no glibc wrapper available. And in case of clone() glibc
> > > wrapper isn't ordinary as it takes care of calling fn() and handling
> > > few stack related things, apart from calling the real syscall.
> > >
> > > I am confused now on how should I write support for clone3().
> > >
> > > Any suggestions will be appreciated. Thanks.
> >
> > Let's just add the code into lapi/clone.h, would that work for you?
>
> Which code are you talking about ?
>
> Here is some stuff about the glibc wrapper for clone() from an stackoverflow
> page [1]:
>
> clone(void (*fn)(void *), void *stack_pointer)
> {
> push fn onto stack_pointer
> syscall_clone()
> if (child) {
> pop fn off of stack
> fn();
> exit();
> }
> }
>
> This takes care of calling fn() and doing some stack related stuff.
> The kernel syscall doesn't expect the fn() argument but only the
> userspace calls do. How should I handle the extra stuff that userspace
> expects for a clone() call ?
That depends I guess mostly on the clone() flags, right? Unless we pass
CLONE_VM the child lives in a separate copy of the memory space and we
do not have to do anything about the stack.
So for the most clone3() tests we can just need the struct clone_args
and the syscall number and we can treat it mostly like more complex
version of fork(), i.e. pass NULL and 0 for the stack and stack_size
parameters.
So I would start by adding the kernel version of the clone3() syscall,
the structure, and the V0 structure size into the lapi header and use
that for a basic testcases.
--
Cyril Hrubis
chrubis@suse.cz
next prev parent reply other threads:[~2020-02-28 11:48 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-02-28 8:14 [LTP] Query: Adding support for clone3() Viresh Kumar
2020-02-28 8:58 ` Cyril Hrubis
2020-02-28 10:24 ` Viresh Kumar
2020-02-28 11:48 ` Cyril Hrubis [this message]
2020-03-04 7:45 ` Viresh Kumar
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=20200228114801.GA8324@rei \
--to=chrubis@suse.cz \
--cc=ltp@lists.linux.it \
/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