Linux Container Development
 help / color / mirror / Atom feed
* [PATCH 1/1] signal c/r: don't play with zero timeouts
@ 2009-08-27 18:49 Serge E. Hallyn
       [not found] ` <20090827184934.GA20580-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Serge E. Hallyn @ 2009-08-27 18:49 UTC (permalink / raw)
  To: Oren Laadan; +Cc: Linux Containers

If it_virt_expires or it_prof_expires is zero, then don't
subtract {virt,prof}_ticks(t) from it.  This is the same
thing do_getitimer() does, and it fixes my issues with
the signals c/r patchset on s390.

Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
---
 checkpoint/signal.c |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/checkpoint/signal.c b/checkpoint/signal.c
index 960356c..15b7cdc 100644
--- a/checkpoint/signal.c
+++ b/checkpoint/signal.c
@@ -382,13 +382,17 @@ static int checkpoint_signal(struct ckpt_ctx *ctx, struct task_struct *t)
 	}
 	h->it_real_incr = ktime_to_ns(signal->it_real_incr);
 
-	cputime = cputime_sub(signal->it_virt_expires, virt_ticks(t));
+	cputime = signal->it_virt_expires;
+	if (!cputime_eq(cputime, cputime_zero))
+		cputime = cputime_sub(signal->it_virt_expires, virt_ticks(t));
 	cputime_to_timeval(cputime, &tval);
 	h->it_virt_value = timeval_to_ns(&tval);
 	cputime_to_timeval(signal->it_virt_incr, &tval);
 	h->it_virt_incr = timeval_to_ns(&tval);
 
-	cputime = cputime_sub(signal->it_prof_expires, prof_ticks(t));
+	cputime = signal->it_prof_expires;
+	if (!cputime_eq(cputime, cputime_zero))
+		cputime = cputime_sub(signal->it_prof_expires, prof_ticks(t));
 	cputime_to_timeval(cputime, &tval);
 	h->it_prof_value = timeval_to_ns(&tval);
 	cputime_to_timeval(signal->it_prof_incr, &tval);
-- 
1.6.1

^ permalink raw reply related	[flat|nested] 2+ messages in thread

* Re: [PATCH 1/1] signal c/r: don't play with zero timeouts
       [not found] ` <20090827184934.GA20580-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
@ 2009-08-28 15:21   ` Oren Laadan
  0 siblings, 0 replies; 2+ messages in thread
From: Oren Laadan @ 2009-08-28 15:21 UTC (permalink / raw)
  To: Serge E. Hallyn; +Cc: Linux Containers


Yep. Pushed...

Serge E. Hallyn wrote:
> If it_virt_expires or it_prof_expires is zero, then don't
> subtract {virt,prof}_ticks(t) from it.  This is the same
> thing do_getitimer() does, and it fixes my issues with
> the signals c/r patchset on s390.
> 
> Signed-off-by: Serge E. Hallyn <serue-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
> ---
>  checkpoint/signal.c |    8 ++++++--
>  1 files changed, 6 insertions(+), 2 deletions(-)
> 
> diff --git a/checkpoint/signal.c b/checkpoint/signal.c
> index 960356c..15b7cdc 100644
> --- a/checkpoint/signal.c
> +++ b/checkpoint/signal.c
> @@ -382,13 +382,17 @@ static int checkpoint_signal(struct ckpt_ctx *ctx, struct task_struct *t)
>  	}
>  	h->it_real_incr = ktime_to_ns(signal->it_real_incr);
>  
> -	cputime = cputime_sub(signal->it_virt_expires, virt_ticks(t));
> +	cputime = signal->it_virt_expires;
> +	if (!cputime_eq(cputime, cputime_zero))
> +		cputime = cputime_sub(signal->it_virt_expires, virt_ticks(t));
>  	cputime_to_timeval(cputime, &tval);
>  	h->it_virt_value = timeval_to_ns(&tval);
>  	cputime_to_timeval(signal->it_virt_incr, &tval);
>  	h->it_virt_incr = timeval_to_ns(&tval);
>  
> -	cputime = cputime_sub(signal->it_prof_expires, prof_ticks(t));
> +	cputime = signal->it_prof_expires;
> +	if (!cputime_eq(cputime, cputime_zero))
> +		cputime = cputime_sub(signal->it_prof_expires, prof_ticks(t));
>  	cputime_to_timeval(cputime, &tval);
>  	h->it_prof_value = timeval_to_ns(&tval);
>  	cputime_to_timeval(signal->it_prof_incr, &tval);

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2009-08-28 15:21 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2009-08-27 18:49 [PATCH 1/1] signal c/r: don't play with zero timeouts Serge E. Hallyn
     [not found] ` <20090827184934.GA20580-r/Jw6+rmf7HQT0dZR+AlfA@public.gmane.org>
2009-08-28 15:21   ` Oren Laadan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox