Commit Graph

6 Commits

Author SHA1 Message Date
Ross Lagerwall 902f6e14fc io: Fix QIOChannelFile when creating and opening read-write
The code wrongly passes the mode to open() only if O_WRONLY is set.
Instead, the mode should be passed when O_CREAT is set (or O_TMPFILE on
Linux). Fix this by always passing the mode since open() will correctly
ignore the mode if it is not needed. Add a testcase which exercises this
bug and also change the existing testcase to check that the mode of the
created file is correct.

Signed-off-by: Ross Lagerwall <ross.lagerwall@citrix.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2018-02-15 16:54:57 +00:00
Markus Armbruster da34e65cb4 include/qemu/osdep.h: Don't include qapi/error.h
Commit 57cb38b included qapi/error.h into qemu/osdep.h to get the
Error typedef.  Since then, we've moved to include qemu/osdep.h
everywhere.  Its file comment explains: "To avoid getting into
possible circular include dependencies, this file should not include
any other QEMU headers, with the exceptions of config-host.h,
compiler.h, os-posix.h and os-win32.h, all of which are doing a
similar job to this file and are under similar constraints."
qapi/error.h doesn't do a similar job, and it doesn't adhere to
similar constraints: it includes qapi-types.h.  That's in excess of
100KiB of crap most .c files don't actually need.

Add the typedef to qemu/typedefs.h, and include that instead of
qapi/error.h.  Include qapi/error.h in .c files that need it and don't
get it now.  Include qapi-types.h in qom/object.h for uint16List.

Update scripts/clean-includes accordingly.  Update it further to match
reality: replace config.h by config-target.h, add sysemu/os-posix.h,
sysemu/os-win32.h.  Update the list of includes in the qemu/osdep.h
comment quoted above similarly.

This reduces the number of objects depending on qapi/error.h from "all
of them" to less than a third.  Unfortunately, the number depending on
qapi-types.h shrinks only a little.  More work is needed for that one.

Signed-off-by: Markus Armbruster <armbru@redhat.com>
[Fix compilation without the spice devel packages. - Paolo]
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
2016-03-22 22:20:15 +01:00
Peter Maydell 250f53ddaa Merge I/O fixes 2016/02/16 v1
-----BEGIN PGP SIGNATURE-----
 Version: GnuPG v1
 
 iQIcBAABCAAGBQJWw0NlAAoJEL6G67QVEE/f1/UP/iw5KIjKJGUv+eF3GP5dx779
 6ZFuOfZ2QNGCon6uaRbfvZ/fsnyyHg/7WiXKO2QT/6dF+A602dbY5/HLfTq+5khr
 StNNlS5s12S81uWp4OspucHU6Vx0q7FFLfTLckPYg6Ban8nGW0CZH/KnllaKJZAu
 THJlaW6GecnYME4K8bWtBL2kiHv7AXjmztbtUedAtGH82DCMYkkzRE9EJgk0Fh/J
 Kdf0LSGtbuY0v1VgusFB5bi1nBQd2wTYhGCZztRqB8HO+FTpj16hv/xm2IDq03N/
 iV1OyB1dV6Yuc/ZeHINrKCtnkCZj2OhY6UC8u0R5Hnfc6P9sNr3e3dov92bN7L6r
 OQoE03kqaHg0c2Q0gp8jbGcSKHq0BcaCg+6MgODkUH4XZXMi8YdZoUHu/95rGblL
 9u4j2Fnplthz/PCfsbIddb5rnetUnF0X8QHIdMvvhneghwyCQTZ9emFC3LN/HWyY
 vbFURfxDWcmYQ8idAZi3kLsCCD/5M1wjj+KTMkORoKAVrJVWkM4zcAMoKfipONEg
 XHBsMlQJjhROcMltRf+IUHIV06IU+zxNAU8nJS+ZnYAxkWpr/Ep4Ah5LdLSIN6mQ
 /8hsCmkWGhGFlCSkZU45aXg5D4XzjrGYhvKzx8M3nM4mXLfcaxRxeLgpLivQe0Po
 X/IoYKebusTQOwrJX1IJ
 =+3s5
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/berrange/tags/pull-io-next-2016-02-16-1' into staging

Merge I/O fixes 2016/02/16 v1

# gpg: Signature made Tue 16 Feb 2016 15:42:29 GMT using RSA key ID 15104FDF
# gpg: Good signature from "Daniel P. Berrange <dan@berrange.com>"
# gpg:                 aka "Daniel P. Berrange <berrange@redhat.com>"

* remotes/berrange/tags/pull-io-next-2016-02-16-1:
  io: convert QIOChannelBuffer to use uint8_t instead of char
  io: introduce helper for creating channels from file descriptors
  io: improve docs for QIOChannelSocket async functions

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
2016-02-16 15:47:35 +00:00
Peter Maydell 681c28a33e tests: Clean up includes
Clean up includes so that osdep.h is included first and headers
which it implies are not included manually.

This commit was created with scripts/clean-includes.

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Eric Blake <eblake@redhat.com>
Tested-by: Eric Blake <eblake@redhat.com>
2016-02-16 14:29:27 +00:00
Daniel P. Berrange c767ae62b9 io: introduce helper for creating channels from file descriptors
Depending on what object a file descriptor refers to a different
type of IO channel will be needed - either a QIOChannelFile or
a QIOChannelSocket. Introduce a qio_channel_new_fd() method
which will return the appropriate channel implementation.

Reviewed-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2016-02-15 14:49:00 +00:00
Daniel P. Berrange d6e48869a4 io: add QIOChannelFile class
Add a QIOChannel subclass that is capable of operating on things
that are files, such as plain files, pipes, character/block
devices, but notably not sockets.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
2015-12-18 12:18:31 +00:00