[CRIU] [PATCH 0/4] signalfd: a kernel interface for dumping/restoring pending signals
Andrew Vagin
avagin at parallels.com
Tue Dec 4 10:01:25 EST 2012
On Tue, Dec 04, 2012 at 03:18:32PM +0400, Pavel Emelyanov wrote:
> On 12/04/2012 02:05 PM, Andrey Vagin wrote:
> > The idea is simpe. We need to get the siginfo for each signal on dump,
> > and then return it back on restore.
> >
> > The first problem is that the kernel doesn’t report complete siginfo-s
> > in user-space. In a signal handler the kernel strips SI_CODE from
> > siginfo. When a siginfo is received from signalfd, it has a different
> > format with fixed sizes of fields. The interface of signalfd was
> > extended. If a signalfd is created with the flag SFD_RAW, it returns
> > siginfo in a raw format. We need to choose a queue, so two flags
> > SFD_GROUP and SFD_PRIVATE were added.
> >
> > rt_igqueueinfo looks suitable for restoring signals, but it can’t send
> > siginfo with a positive si_code, because these codes are reserved for
> > the kernel. In the real world each person has right to do anything with
> > himself, so I think a process should able to send any siginfo to itself.
> >
> > Andrey Vagin (3):
> > signal: add helper to get siginfo without removing from the queue
> > signalfd: add ability to get signal without removing from the queue
> > signalfd: add ability to send any siginfo to itself
> >
> > fs/signalfd.c | 84 +++++++++++++++++++++++++++++++++++++++----
> > include/linux/sched.h | 2 ++
> > include/uapi/linux/signalfd.h | 2 ++
> > kernel/signal.c | 27 ++++++++++++++
> > 4 files changed, 109 insertions(+), 6 deletions(-)
> >
>
> Andrey, this looks very good. Fix the shared/personal queue handling,
> resolve my comments and I'll apply these patches. Then start pushing
> the kernel part upstream.
I'm going to start after my vacation.
Thanks.
More information about the CRIU
mailing list