diff --git a/src/irq.c b/src/irq.c
index 986efafbb8e77a5d19debbfa0b634cbec230ffdc..1aef344f596219aa3287ffabedb118c1685a9e59 100644 (file)
--- a/src/irq.c
+++ b/src/irq.c
FILE *fh;
char buffer[BUFSIZE];
unsigned int irq;
- unsigned int irq_value;
- long value;
+ unsigned long long irq_value;
+ unsigned long long value;
char *endptr;
int i;
for (i = 1; i < fields_num; i++)
{
errno = 0;
- value = strtol (fields[i], &endptr, 10);
+ value = strtoull (fields[i], &endptr, 10);
if ((*endptr != '\0') || (errno != 0))
break;
irq_value += value;
} /* for (i) */
- irq_submit (irq, irq_value);
+ /* Force 32bit wrap-around */
+ irq_submit (irq, irq_value % 4294967296ULL);
}
+
fclose (fh);
return (0);