Add a generic internal API for handling any FD based stream

To avoid the need for duplicating implementations of virStream
drivers, provide a generic implementation that can handle any
FD based stream. This code is copied from the existing impl
in the QEMU driver, with the locking moved into the stream
impl, and addition of a read callback

The FD stream code will refuse to operate on regular files or
block devices, since those can't report EAGAIN properly when
they would block on I/O

* include/libvirt/virterror.h, include/libvirt/virterror.h: Add
  VIR_FROM_STREAM error domain
* src/qemu/qemu_driver.c: Remove code obsoleted by the new
  generic streams driver.
* src/fdstream.h, src/fdstream.c, src/fdstream.c,
  src/libvirt_private.syms: Generic reusable FD based streams
This commit is contained in:
Daniel P. Berrange
2010-09-22 19:32:21 +01:00
parent 4ef40df13d
commit 7c08fcc439
10 changed files with 570 additions and 282 deletions

View File

@@ -74,7 +74,8 @@ typedef enum {
VIR_FROM_HOOK, /* Error from Synchronous hooks */
VIR_FROM_DOMAIN_SNAPSHOT, /* Error from domain snapshot */
VIR_FROM_AUDIT, /* Error from auditing subsystem */
VIR_FROM_SYSINFO /* Error from sysinfo/SMBIOS */
VIR_FROM_SYSINFO, /* Error from sysinfo/SMBIOS */
VIR_FROM_STREAMS, /* Error from I/O streams */
} virErrorDomain;