Re: + posix-timer-cleanup-common_timer_get.patch added to -mm tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Wed, 15 Mar 2006, Thomas Gleixner wrote:

> -	if (timr->it.real.interval.tv64 == 0) {
> +	if (iv.tv64)

Just for the record: this wasn't my bug... :)

> +	if (iv.tv64 && (timr->it_requeue_pending & REQUEUE_PENDING ||
> +	    (timr->it_sigev_notify & ~SIGEV_THREAD_ID) == SIGEV_NONE))
> +		timr->it_overrun += hrtimer_forward(timer, now, iv);

The iv.tv64 test is only needed for the SIGEV_NONE case, so one could also 
move it to the end:

	if ((timr->it_requeue_pending & REQUEUE_PENDING) ||
	    ((timr->it_sigev_notify & ~SIGEV_THREAD_ID) == SIGEV_NONE && iv.tv64))

OTOH since it_requeue_pending is unused for SIGEV_NONE, we could as well 
initialize it during timer_set:

	if (timr->it_sigev_notify & ~SIGEV_THREAD_ID) == SIGEV_NONE)
		timr->it_requeue_pending == interval.tv64 ? REQUEUE_PENDING : 0;

and make the test even simpler.

> +	if (remaining.tv64 <= 0) {
> +		/*
> +		 * A single shot SIGEV_NONE timer must return 0, when
> +		 * it is expired !
> +		 */
> +		if ((timr->it_sigev_notify & ~SIGEV_THREAD_ID) != SIGEV_NONE)
> +			cur_setting->it_value.tv_nsec = 1;

It's maybe practically not relevant, but theoretically a (iv.tv64) would 
be more correct and then we could also move it up to the initial (iv.tv64) 
test and leave the (remaining.tv64 > 0) case here.

bye, Roman
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux