aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/include/uapi/linux/pps_gen.h
diff options
context:
space:
mode:
authorRodolfo Giometti <giometti@enneenne.com>2024-11-08 08:31:12 +0100
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2025-01-08 13:18:09 +0100
commit86b525bed2758878e788c9fb6b8fb281fd61bdb0 (patch)
tree6e0a31b7ca0e963f53fe9d3b156beec97106cf0f /include/uapi/linux/pps_gen.h
parentpps: Fix a use-after-free (diff)
downloadwireguard-linux-86b525bed2758878e788c9fb6b8fb281fd61bdb0.tar.xz
wireguard-linux-86b525bed2758878e788c9fb6b8fb281fd61bdb0.zip
drivers pps: add PPS generators support
Sometimes one needs to be able not only to catch PPS signals but to produce them also. For example, running a distributed simulation, which requires computers' clock to be synchronized very tightly. This patch adds PPS generators class in order to have a well-defined interface for these devices. Signed-off-by: Rodolfo Giometti <giometti@enneenne.com> Link: https://lore.kernel.org/r/20241108073115.759039-2-giometti@enneenne.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'include/uapi/linux/pps_gen.h')
-rw-r--r--include/uapi/linux/pps_gen.h37
1 files changed, 37 insertions, 0 deletions
diff --git a/include/uapi/linux/pps_gen.h b/include/uapi/linux/pps_gen.h
new file mode 100644
index 000000000000..60a5d0fcfa68
--- /dev/null
+++ b/include/uapi/linux/pps_gen.h
@@ -0,0 +1,37 @@
+/* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
+/*
+ * PPS generator API header
+ *
+ * Copyright (C) 2024 Rodolfo Giometti <giometti@enneenne.com>
+ */
+
+#ifndef _PPS_GEN_H_
+#define _PPS_GEN_H_
+
+#include <linux/types.h>
+#include <linux/ioctl.h>
+
+/**
+ * struct pps_gen_event - the PPS generator events
+ * @event: the event type
+ * @sequence: the event sequence number
+ *
+ * Userspace can get the last PPS generator event by using the
+ * ioctl(pps_gen, PPS_GEN_FETCHEVENT, ...) syscall.
+ * The sequence field can be used to save the last event ID, while in the
+ * event field is stored the last event type. Currently known event is:
+ *
+ * PPS_GEN_EVENT_MISSEDPULSE : last pulse was not generated
+ */
+struct pps_gen_event {
+ unsigned int event;
+ unsigned int sequence;
+};
+
+#define PPS_GEN_EVENT_MISSEDPULSE 1
+
+#define PPS_GEN_SETENABLE _IOW('p', 0xb1, unsigned int *)
+#define PPS_GEN_USESYSTEMCLOCK _IOR('p', 0xb2, unsigned int *)
+#define PPS_GEN_FETCHEVENT _IOR('p', 0xb3, struct pps_gen_event *)
+
+#endif /* _PPS_GEN_H_ */