// SPDX-License-Identifier: GPL-2.0-or-later /* * kernel API * * Copyright (C) 2005-2009 Rodolfo Giometti <[email protected]> */ #define pr_fmt(fmt) … #include <linux/kernel.h> #include <linux/module.h> #include <linux/init.h> #include <linux/sched.h> #include <linux/time.h> #include <linux/timex.h> #include <linux/spinlock.h> #include <linux/fs.h> #include <linux/pps_kernel.h> #include <linux/slab.h> #include "kc.h" /* * Local functions */ static void pps_add_offset(struct pps_ktime *ts, struct pps_ktime *offset) { … } static void pps_echo_client_default(struct pps_device *pps, int event, void *data) { … } /* * Exported functions */ /* pps_register_source - add a PPS source in the system * @info: the PPS info struct * @default_params: the default PPS parameters of the new source * * This function is used to add a new PPS source in the system. The new * source is described by info's fields and it will have, as default PPS * parameters, the ones specified into default_params. * * The function returns, in case of success, the PPS device. Otherwise * ERR_PTR(errno). */ struct pps_device *pps_register_source(struct pps_source_info *info, int default_params) { … } EXPORT_SYMBOL(…); /* pps_unregister_source - remove a PPS source from the system * @pps: the PPS source * * This function is used to remove a previously registered PPS source from * the system. */ void pps_unregister_source(struct pps_device *pps) { … } EXPORT_SYMBOL(…); /* pps_event - register a PPS event into the system * @pps: the PPS device * @ts: the event timestamp * @event: the event type * @data: userdef pointer * * This function is used by each PPS client in order to register a new * PPS event into the system (it's usually called inside an IRQ handler). * * If an echo function is associated with the PPS device it will be called * as: * pps->info.echo(pps, event, data); */ void pps_event(struct pps_device *pps, struct pps_event_time *ts, int event, void *data) { … } EXPORT_SYMBOL(…);