Subject: Re: async I/O
To: Jan-Hinrich Fessel <oskar@zappa.unna.ping.de>
From: Tom I Helbekkmo <tih@Hamartun.Priv.NO>
List: current-users
Date: 09/04/1996 15:33:08
On Wed, 4 Sep 1996, Jan-Hinrich Fessel wrote:
> In fact, this wasn't my problem at all, for after changing he
> relevant files, i get the familiar message:
> Sep 4 08:58:46 zippo.unna.ping.de xntpd[20057]: ioctl(TIOCSCTTY, 0)
> fails for clock I/O: Operation not permitted
> That is produced, when i start xntpd -d. Now, if I start it without
> debugging, it seems to work:
That's part of the workaround in xntpd for the missing implementation
of a "real" F_SETOWN. The code goes like this:
#if defined(TIOCSCTTY) && defined(USE_FSETOWNCTTY)
/*
* there are, however, always exceptions to the rules
* one is, that OSF accepts SETOWN on TTY fd's only, iff they are
* CTTYs. SunOS and HPUX do not semm to have this restriction.
* another question is: how can you do multiple SIGIO from several
* ttys (as they all should be CTTYs), wondering...
*
* kd 95-07-16
*/
if (ioctl(rio->fd, TIOCSCTTY, 0) == -1) {
syslog(LOG_ERR, "ioctl(TIOCSCTTY, 0) fails for clock I/O: %m");
return 1;
}
#endif /* TIOCSCTTY && USE_FSETOWNCTTY */
if (fcntl(rio->fd, F_SETOWN, getpid()) == -1) {
syslog(LOG_ERR, "fcntl(F_SETOWN) fails for clock I/O: %m");
return 1;
}
The TIOCSCTTY is needed because it's the only way xntpd will be
allowed to do the F_SETOWN (which it must do), but a side effect is
that it cannot do this unless it's in the background. Thus, until
either F_SETOWN is actually implemented under NetBSD, or some more
complicated workaround is done for xntpd, it's impossible to run it
with the '-d' flag.
-tih
--
Tom Ivar Helbekkmo
tih@Hamartun.Priv.NO