switch (cmd) { case PPS_GEN_SETENABLE:
dev_dbg(pps_gen->dev, "PPS_GEN_SETENABLE\n");
ret = get_user(status, uiuarg); if (ret) return -EFAULT;
ret = pps_gen->info->enable(pps_gen, status); if (ret) return ret;
pps_gen->enabled = status;
break;
case PPS_GEN_USESYSTEMCLOCK:
dev_dbg(pps_gen->dev, "PPS_GEN_USESYSTEMCLOCK\n");
ret = put_user(pps_gen->info->use_system_clock, uiuarg); if (ret) return -EFAULT;
break;
case PPS_GEN_FETCHEVENT: { struct pps_gen_event info; unsignedint ev = pps_gen->last_ev;
dev_dbg(pps_gen->dev, "PPS_GEN_FETCHEVENT\n");
ret = wait_event_interruptible(pps_gen->queue,
ev != pps_gen->last_ev); if (ret == -ERESTARTSYS) {
dev_dbg(pps_gen->dev, "pending signal caught\n"); return -EINTR;
}
/** * pps_gen_register_source() - add a PPS generator in the system * @info: the PPS generator info struct * * This function is used to register a new PPS generator in the system. * When it returns successfully the new generator is up and running, and * it can be managed by the userspace. * * Return: the PPS generator device in case of success, and ERR_PTR(errno) * otherwise.
*/ struct pps_gen_device *pps_gen_register_source(conststruct pps_gen_source_info *info)
{ struct pps_gen_device *pps_gen; int err;
/** * pps_gen_unregister_source() - remove a PPS generator from the system * @pps_gen: the PPS generator device to be removed * * This function is used to deregister a PPS generator from the system. When * called, it disables the generator so no pulses are generated anymore.
*/ void pps_gen_unregister_source(struct pps_gen_device *pps_gen)
{
pps_gen_unregister_cdev(pps_gen);
}
EXPORT_SYMBOL(pps_gen_unregister_source);
/* pps_gen_event - register a PPS generator event into the system * @pps: the PPS generator device * @event: the event type * @data: userdef pointer * * This function is used by each PPS generator in order to register a new * PPS event into the system (it's usually called inside an IRQ handler).
*/ void pps_gen_event(struct pps_gen_device *pps_gen, unsignedint event, void *data)
{ unsignedlong flags;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.