summaryrefslogtreecommitdiff
path: root/src/watchdog_ioctl.c
diff options
context:
space:
mode:
authorDmitry V. Levin <ldv@strace.io>2021-02-03 08:00:00 +0000
committerDmitry V. Levin <ldv@strace.io>2021-02-03 08:00:00 +0000
commitecb3ed78107c851f71696df6730a15afff91ed3d (patch)
tree0b3d2b083040fc9b08d129f80d027ff41b995059 /src/watchdog_ioctl.c
parentc47943de06204a269e16f732e7c9c71d4284b23f (diff)
downloadstrace-ecb3ed78107c851f71696df6730a15afff91ed3d.tar.gz
Move source files into src subdirectory
* src/Makefile.am: New file. * src/.gitignore: Likewise. * scno.am: Move into src subdirectory. * scno.head: Likewise. * strace-graph: Likewise. * strace-log-merge: Likewise. * linux/: Likewise. * types/: Likewise. * xlat/: Likewise. * *.awk: Likewise. * *.c: Likewise. * *.h: Likewise. * *.sh: Likewise. * .gitignore: Update. * Makefile.am: Update. * bootstrap: Update. * configure.ac: Update. * debian/rules: Update. * debian/strace-udeb.install: Update. * debian/strace.examples: Update. * debian/strace.install: Update. * debian/strace64.install: Update. * m4/gen_bpf_attr_m4.sh: Update. * m4/mpers.m4: Update. * tests/Makefile.am: Update. * tests/init.sh: Update. * tests/legacy_syscall_info.test: Update. * tests/strace-log-merge-error.test: Update. * tests/strace-log-merge-suffix.test: Update.
Diffstat (limited to 'src/watchdog_ioctl.c')
-rw-r--r--src/watchdog_ioctl.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/src/watchdog_ioctl.c b/src/watchdog_ioctl.c
new file mode 100644
index 000000000..160c5f52f
--- /dev/null
+++ b/src/watchdog_ioctl.c
@@ -0,0 +1,46 @@
+/*
+ * Copyright (c) 2019 The strace developers.
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "defs.h"
+
+#include <linux/watchdog.h>
+
+#define XLAT_MACROS_ONLY
+#include "xlat/watchdog_ioctl_cmds.h"
+#undef XLAT_MACROS_ONLY
+
+int
+watchdog_ioctl(struct tcb *const tcp, const unsigned int code,
+ const kernel_ulong_t arg)
+{
+ switch (code) {
+ case WDIOC_GETSTATUS:
+ case WDIOC_GETBOOTSTATUS:
+ case WDIOC_GETTEMP:
+ case WDIOC_GETTIMEOUT:
+ case WDIOC_GETPRETIMEOUT:
+ case WDIOC_GETTIMELEFT:
+ if (entering(tcp))
+ return 0;
+ ATTRIBUTE_FALLTHROUGH;
+ case WDIOC_SETTIMEOUT:
+ case WDIOC_SETPRETIMEOUT:
+ tprints(", ");
+ printnum_int(tcp, arg, "%d");
+ break;
+
+ /*
+ * linux/watchdog.h says that this takes an int, but in
+ * practice the argument is ignored.
+ */
+ case WDIOC_KEEPALIVE:
+ break;
+ default:
+ return RVAL_DECODED;
+ }
+ return RVAL_IOCTL_DECODED;
+}