lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Mon, 2 Jun 2008 15:02:57 +0100
From:	Alan Cox <alan@...rguk.ukuu.org.uk>
To:	Rodolfo Giometti <giometti@...eenne.com>
Cc:	Andrew Morton <akpm@...ux-foundation.org>,
	linux-kernel@...r.kernel.org
Subject: Re: LinuxPPS low-level IRQs timestamps & ldisc

> It could be a bit better... I did as above since I supposed that you
> wished all PPS code should be removed from serial port code.

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

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ