summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/utils.c14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/utils.c b/lib/utils.c
index 74f5639..b5e32c3 100644
--- a/lib/utils.c
+++ b/lib/utils.c
@@ -28,6 +28,7 @@
#include <netlink/netlink.h>
#include <netlink/utils.h>
#include <linux/socket.h>
+#include <stdlib.h> /* exit() */
/**
* Global variable indicating the desired level of debugging output.
@@ -421,10 +422,15 @@ static void __init get_psched_settings(void)
strncpy(name, "/proc/net/psched", sizeof(name) - 1);
if ((fd = fopen(name, "r"))) {
- uint32_t ns_per_usec, ns_per_tick, nom, denom;
-
- fscanf(fd, "%08x %08x %08x %08x",
- &ns_per_usec, &ns_per_tick, &nom, &denom);
+ unsigned int ns_per_usec, ns_per_tick, nom, denom;
+
+ if (fscanf(fd, "%08x %08x %08x %08x",
+ &ns_per_usec, &ns_per_tick, &nom, &denom) != 4) {
+ fprintf(stderr, "Fatal error: can not read psched settings from \"%s\". " \
+ "Try to set TICKS_PER_USEC, PROC_NET_PSCHED or PROC_ROOT " \
+ "environment variables\n", name);
+ exit(1);
+ }
ticks_per_usec = (double) ns_per_usec /
(double) ns_per_tick;