* fhandler.cc (fhandler_base::open_9x): Handle O_SYNC and O_DIRECT

flags.
	(fhandler_base::open): Ditto.
	* fhandler_floppy.cc (fhandler_dev_floppy::open): Don't allocate devbuf
	in O_DIRECT case.
	* fhandler_raw.cc (fhandler_dev_raw::ioctl): Don't allow buffer
	changes in O_DIRECT case.  Allow returning a buffer size 0, which
	indicates O_DIRECT.
	* fhandler_tape.cc (fhandler_dev_tape::open): Use O_SYNC flag to
	hand down the !buffer_writes case.  Don't allocate devbuf in O_DIRECT
	case.
	(fhandler_dev_tape::raw_read): Don't mess with devbuf if it's NULL.
	* include/fcntl.h: Define _FDIRECT, O_DIRECT, O_DSYNC and O_RSYNC.
	* include/cygwin/version.h: Bump API minor version.
This commit is contained in:
Corinna Vinschen
2005-12-14 15:54:33 +00:00
parent 10cba930d4
commit e3d14af155
7 changed files with 127 additions and 78 deletions

View File

@@ -161,9 +161,10 @@ fhandler_dev_floppy::open (int flags, mode_t)
relatively big value increases performance by means. The new ioctl call
with 'rdevio.h' header file supports changing this value.
Let's try to be smart: Let's take a multiple of typical tar and cpio
buffer sizes by default. */
devbufsiz = 61440L;
As default buffer size, we're using some value which is a multiple of
the typical tar and cpio buffer sizes, Except O_DIRECT is set, in which
case we're not buffering at all. */
devbufsiz = (flags & O_DIRECT) ? 0L : 61440L;
int ret = fhandler_dev_raw::open (flags);
if (ret && get_drive_info (NULL))