[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v7 06/42] Add wrapper for setting blocking statu
From: |
Juan Quintela |
Subject: |
Re: [Qemu-devel] [PATCH v7 06/42] Add wrapper for setting blocking status on a QEMUFile |
Date: |
Wed, 17 Jun 2015 13:59:16 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) |
"Dr. David Alan Gilbert (git)" <address@hidden> wrote:
> From: "Dr. David Alan Gilbert" <address@hidden>
>
> Add a wrapper to change the blocking status on a QEMUFile
> rather than having to use qemu_set_block(qemu_get_fd(f));
> it seems best to avoid exposing the fd since not all QEMUFile's
> really have one. With this wrapper we could move the implementation
> down to be different on different transports.
>
> Signed-off-by: Dr. David Alan Gilbert <address@hidden>
> Reviewed-by: Amit Shah <address@hidden>
Reviewed-by: Juan Quintela <address@hidden>
Can we improve naming?
> ---
> include/migration/qemu-file.h | 1 +
> migration/qemu-file.c | 15 +++++++++++++++
> 2 files changed, 16 insertions(+)
>
> diff --git a/include/migration/qemu-file.h b/include/migration/qemu-file.h
> index 29a9d69..d43c835 100644
> --- a/include/migration/qemu-file.h
> +++ b/include/migration/qemu-file.h
> @@ -193,6 +193,7 @@ int qemu_file_get_error(QEMUFile *f);
> void qemu_file_set_error(QEMUFile *f, int ret);
> int qemu_file_shutdown(QEMUFile *f);
> void qemu_fflush(QEMUFile *f);
> +void qemu_file_change_blocking(QEMUFile *f, bool block);
>
> static inline void qemu_put_be64s(QEMUFile *f, const uint64_t *pv)
> {
> diff --git a/migration/qemu-file.c b/migration/qemu-file.c
> index c111a6b..c746129 100644
> --- a/migration/qemu-file.c
> +++ b/migration/qemu-file.c
> @@ -651,3 +651,18 @@ size_t qemu_get_counted_string(QEMUFile *f, char
> buf[256])
>
> return res == len ? res : 0;
> }
> +
> +/*
> + * Change the blocking state of the QEMUFile.
> + * Note: On some transports the OS only keeps a single blocking state for
> + * both directions, and thus changing the blocking on the main
> + * QEMUFile can also affect the return path.
> + */
> +void qemu_file_change_blocking(QEMUFile *f, bool block)
qemu_file_set_blocking?
It don't change the blocking, it just do whatever block says?
> +{
> + if (block) {
> + qemu_set_block(qemu_get_fd(f));
> + } else {
> + qemu_set_nonblock(qemu_get_fd(f));
> + }
> +}