Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 3 Sep 2001 07:22:16 +0400
From:      "Andrey A. Chernov" <ache@nagual.pp.ru>
To:        Alfred Perlstein <bright@mu.org>
Cc:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/lib/libc/stdio setvbuf.c
Message-ID:  <20010903072215.B97368@nagual.pp.ru>
In-Reply-To: <20010903070334.A97368@nagual.pp.ru>
References:  <200109030235.f832ZAg46853@freefall.freebsd.org> <20010902214528.J81307@elvis.mu.org> <20010903070334.A97368@nagual.pp.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Sep 03, 2001 at 07:03:37 +0400, Andrey A. Chernov wrote:
>
> > What are you validating these changes against?  POSIX? Solaris? Linux?
> 
> Stdio try to optimize seeks internally to keep file offset in memory
> without additional fp->_seek, commonly lseek call (and use __SOFF for it).
> It can be done correctly only for regular files and when fp->_seek not
> changed to non-standard function. Character devices (f.e. normal stdio)
> often move pointer by themselfs, so keeping offset in memory for them
> leads to incorrect offset. Stdio try to detect regular files with fp->seek
> set to standard __seek and set __SOPT flag for them. It means that file
> can be optimized. __SOFF is one sort of optimizations, it means we have
> valid file offset in memory. When setvbuf.c clears __SOPT, no
> optimizations allowed including __SOFF, so __SOFF must be removed too.

IMHO, there is no needs to keep offset in memory at all, it only cause
problems. lseek is very light-weighted syscall, so avoiding it in some
cases (like sequental reading) gains almost nothing. But if BSD stdio
developers choose to keep it, lets do it, but do it correctly.

-- 
Andrey A. Chernov
http://ache.pp.ru/

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010903072215.B97368>