diff options
author | 2024-11-08 08:31:12 +0100 | |
---|---|---|
committer | 2025-01-08 13:18:09 +0100 | |
commit | 86b525bed2758878e788c9fb6b8fb281fd61bdb0 (patch) | |
tree | 6e0a31b7ca0e963f53fe9d3b156beec97106cf0f /include/uapi/linux/pps_gen.h | |
parent | pps: Fix a use-after-free (diff) | |
download | wireguard-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.h | 37 |
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_ */ |