[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH V12 01/15] Implement qemu_read_full
From: |
malc |
Subject: |
Re: [Qemu-devel] [PATCH V12 01/15] Implement qemu_read_full |
Date: |
Mon, 5 Sep 2011 21:57:37 +0400 (MSD) |
User-agent: |
Alpine 2.00 (LNX 1167 2008-08-23) |
On Mon, 5 Sep 2011, M. Mohan Kumar wrote:
> Signed-off-by: M. Mohan Kumar <address@hidden>
> ---
> osdep.c | 32 ++++++++++++++++++++++++++++++++
> qemu-common.h | 2 ++
> 2 files changed, 34 insertions(+), 0 deletions(-)
>
> diff --git a/osdep.c b/osdep.c
> index 56e6963..5a4d670 100644
> --- a/osdep.c
> +++ b/osdep.c
> @@ -126,6 +126,38 @@ ssize_t qemu_write_full(int fd, const void *buf, size_t
> count)
> }
>
> /*
> + * A variant of read(2) which handles interrupted read.
> + * Simlar to qemu_write_full function
> + *
> + * Return the number of bytes read.
> + *
> + * This function does not work with non-blocking fd's.
> + * errno is set if fewer than `count' bytes are read because of any
> + * error
> + */
> +ssize_t qemu_read_full(int fd, void *buf, size_t count)
> +{
> + ssize_t ret = 0;
> + ssize_t total = 0;
> +
> + while (count) {
> + ret = read(fd, buf, count);
> + if (ret <= 0) {
> + if (errno == EINTR) {
ret == 0 is not an error so here the stale value of errno is checked,
iow this is wrong and recipe for an endless loop.
> + continue;
> + }
> + break;
> + }
> +
> + count -= ret;
> + buf += ret;
> + total += ret;
> + }
> +
> + return total;
> +}
> +
> +/*
> * Opens a socket with FD_CLOEXEC set
> */
> int qemu_socket(int domain, int type, int protocol)
> diff --git a/qemu-common.h b/qemu-common.h
> index 404c421..d6aabd2 100644
> --- a/qemu-common.h
> +++ b/qemu-common.h
> @@ -189,6 +189,8 @@ void qemu_mutex_unlock_iothread(void);
> int qemu_open(const char *name, int flags, ...);
> ssize_t qemu_write_full(int fd, const void *buf, size_t count)
> QEMU_WARN_UNUSED_RESULT;
> +ssize_t qemu_read_full(int fd, void *buf, size_t count)
> + QEMU_WARN_UNUSED_RESULT;
> void qemu_set_cloexec(int fd);
>
> #ifndef _WIN32
>
--
mailto:address@hidden
- [Qemu-devel] [PATCH V12 14/15] hw/9pfs: readlink in chroot environment, (continued)
- [Qemu-devel] [PATCH V12 14/15] hw/9pfs: readlink in chroot environment, M. Mohan Kumar, 2011/09/05
- [Qemu-devel] [PATCH V12 09/15] hw/9pfs: Rename in chroot environment, M. Mohan Kumar, 2011/09/05
- [Qemu-devel] [PATCH V12 15/15] hw/9pfs: Chroot environment for other functions, M. Mohan Kumar, 2011/09/05
- [Qemu-devel] [PATCH V12 07/15] hw/9pfs: Creating special files in chroot environment, M. Mohan Kumar, 2011/09/05
- [Qemu-devel] [PATCH V12 13/15] hw/9pfs: stat in chroot environment, M. Mohan Kumar, 2011/09/05
- [Qemu-devel] [PATCH V12 11/15] hw/9pfs: chmod in chroot environment, M. Mohan Kumar, 2011/09/05
- [Qemu-devel] [PATCH V12 04/15] hw/9pfs: qemu interfaces for chroot environment, M. Mohan Kumar, 2011/09/05
- [Qemu-devel] [PATCH V12 05/15] hw/9pfs: Support for opening a file in chroot environment, M. Mohan Kumar, 2011/09/05
- [Qemu-devel] [PATCH V12 02/15] hw/9pfs: Enable CONFIG_THREAD if CONFIG_VIRTFS is enabled, M. Mohan Kumar, 2011/09/05
- [Qemu-devel] [PATCH V12 01/15] Implement qemu_read_full, M. Mohan Kumar, 2011/09/05
- Re: [Qemu-devel] [PATCH V12 01/15] Implement qemu_read_full,
malc <=
- [Qemu-devel] [PATCH V12 06/15] hw/9pfs: Create support in chroot environment, M. Mohan Kumar, 2011/09/05
- [Qemu-devel] [PATCH V12 03/15] hw/9pfs: Provide chroot worker side interfaces, M. Mohan Kumar, 2011/09/05
- Re: [Qemu-devel] [PATCH V12 00/15] virtio-9p: chroot environment for passthrough security model, Stefan Hajnoczi, 2011/09/06