Re: LinuxPPS low-level IRQs timestamps & ldisc

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Alan Cox
Date: Monday, June 2, 2008 - 7:02 am

> It could be a bit better... I did as above since I supposed that you

Ideally. But if it is genuinely the case that the serial port IRQ handler
in some cases needs to do

my_interrupt() {
	get_timestamp()
	frob_with_hardware()
	ld->dcd_change(blah, timestamp)
}

then that is still fairly clean and more importantly actually appears to
work. I'd avoid all the ifdefs with this in the serial drivers that need
more accuracy:

{
	struct timespec ts;
	if (ld->dcd_change)
		getnstimeofday(&ts);
	existing tty stuff
	if (ld->dcd_change)
		ld->dcd_change(tty, status, &ts);
}

And in ld->dcd_change do

	struct timespec myts;
	/* Caller passed NULL meaning 'do your own timestamp' */
	if (ts == NULL) {
		ts = &myts;
		getnstimeofday(&myts);
	}

so for uart that would

	uart_dcd_change(struct uart_port *port, unsigned int status,
					struct timespec *ts) {
	{
		...
	}

passing the timestamp from the ttys own IRQ handler

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
LinuxPPS low-level IRQs timestamps & ldisc, Rodolfo Giometti, (Sun Jun 1, 9:15 am)
Re: LinuxPPS low-level IRQs timestamps & ldisc, Lennart Sorensen, (Sun Jun 1, 12:26 pm)
Re: LinuxPPS low-level IRQs timestamps & ldisc, Rodolfo Giometti, (Mon Jun 2, 2:25 am)
Re: LinuxPPS low-level IRQs timestamps & ldisc, Alan Cox, (Mon Jun 2, 7:02 am)
Re: LinuxPPS low-level IRQs timestamps & ldisc, Rodolfo Giometti, (Mon Jun 2, 7:56 am)
Re: LinuxPPS low-level IRQs timestamps & ldisc, Lennart Sorensen, (Mon Jun 2, 10:09 am)
Re: LinuxPPS low-level IRQs timestamps & ldisc, Rodolfo Giometti, (Mon Jun 2, 10:22 am)
Re: LinuxPPS low-level IRQs timestamps & ldisc, Matti Aarnio, (Mon Jun 2, 1:21 pm)