[PATCH]: DELAYTIMER_MAX is defined

Eric Piel
2003-05-06T16:27:11Z

[-- Attachment #1: Type: text/plain, Size: 745 bytes --]

Hello,

Playing around with the posix timers I've noticed that DELAYTIMER_MAX is
not defined. This constant is specified in the POSIX specifications. It
should contain the maximum possible value of overruns on a signal. It is
also said that the overrun shouldn't overflow. cf
http://www.opengroup.org/onlinepubs/007904975/functions/timer_getoverrun.html

So here is a patch to add this constant and a check that the overrun
variable never overflow. It's for 2.5.67 but should apply flawlessly to
2.5.69 too.
Actually one could wonder if the test on the overflow is really needed
has an overrun reaching 2^31 seems very hard to happen. However the
constant definition is not hurting anything and looks necessary for
closer POSIX compliance.

Eric

[-- Attachment #2: delaytimer_max-const.patch --]
[-- Type: text/plain, Size: 1274 bytes --]

diff -ur linux-2.5.67-ia64-hrtcore/include/linux/limits.h linux-2.5.67-ia64-hrtimers/include/linux/limits.h
--- linux-2.5.67-ia64-hrtcore/include/linux/limits.h 2003-04-22 11:10:44.000000000 +0200
+++ linux-2.5.67-ia64-hrtimers/include/linux/limits.h 2003-05-06 13:45:48.000000000 +0200
@@ -17,6 +17,8 @@
#define XATTR_SIZE_MAX 65536 /* size of an extended attribute value (64k) */
#define XATTR_LIST_MAX 65536 /* size of extended attribute namelist (64k) */

+#define DELAYTIMER_MAX INT_MAX /* # timer expiration overruns a POSIX.1b timer may have */
+
#define RTSIG_MAX 32

#endif
diff -ur linux-2.5.67-ia64-hrtcore/include/linux/posix-timers.h linux-2.5.67-ia64-hrtimers/include/linux/posix-timers.h
--- linux-2.5.67-ia64-hrtcore/include/linux/posix-timers.h 2003-04-22 11:10:44.000000000 +0200
+++ linux-2.5.67-ia64-hrtimers/include/linux/posix-timers.h 2003-05-06 16:07:56.000000000 +0200
@@ -25,6 +59,7 @@

#define posix_bump_timer(timr) do { \
(timr)->it_timer.expires += (timr)->it_incr; \
- (timr)->it_overrun++; \
+ if ((timr)->it_overrun < DELAYTIMER_MAX)\
+ (timr)->it_overrun++; \
}while (0)
#endif