On Tue, Oct 25, 2011 at 1:40 PM, Sasha Levin <[email protected]> wrote:
> Stop the ipc thread when shutting down the hypervisor.
>
> This solves a bug where the .sock files weren't removed upon shutdown.
>
> Signed-off-by: Sasha Levin <[email protected]>
> ---
> tools/kvm/include/kvm/kvm-ipc.h | 1 +
> tools/kvm/kvm-ipc.c | 33 +++++++++++++++++++++++++++++----
> tools/kvm/kvm.c | 1 +
> 3 files changed, 31 insertions(+), 4 deletions(-)
>
> diff --git a/tools/kvm/include/kvm/kvm-ipc.h b/tools/kvm/include/kvm/kvm-ipc.h
> index c932052..731767f 100644
> --- a/tools/kvm/include/kvm/kvm-ipc.h
> +++ b/tools/kvm/include/kvm/kvm-ipc.h
> @@ -22,5 +22,6 @@ enum {
> int kvm_ipc__register_handler(u32 type, void (*cb)(int fd, u32 type, u32
> len, u8 *msg));
> int kvm_ipc__handle(int fd, struct kvm_ipc_msg *msg);
> int kvm_ipc__start(int sock);
> +int kvm_ipc__stop(void);
>
> #endif
> diff --git a/tools/kvm/kvm-ipc.c b/tools/kvm/kvm-ipc.c
> index f05e926..65209e1 100644
> --- a/tools/kvm/kvm-ipc.c
> +++ b/tools/kvm/kvm-ipc.c
> @@ -7,12 +7,14 @@
> #include <sys/un.h>
> #include <sys/types.h>
> #include <sys/socket.h>
> +#include <sys/eventfd.h>
>
> #define KVM_IPC_MAX_MSGS 16
>
> static void (*msgs[KVM_IPC_MAX_MSGS])(int fd, u32 type, u32 len, u8 *msg);
> static DECLARE_RWSEM(msgs_rwlock);
> -static int epoll_fd, server_fd;
> +static int epoll_fd, server_fd, stop_fd;
> +static pthread_t thread;
>
> int kvm_ipc__register_handler(u32 type, void (*cb)(int fd, u32 type, u32
> len, u8 *msg))
> {
> @@ -109,8 +111,11 @@ static void *kvm_ipc__thread(void *param)
> nfds = epoll_wait(epoll_fd, &event, 1, -1);
> if (nfds > 0) {
> int fd = event.data.fd;
> -
> - if (fd == server_fd) {
> + printf("bleh\n");
> + if (fd == stop_fd) {
> + printf("Got stop signal\n");
> + break;
LOL. Can I have a version of the patch without those printf calls? :-)
> + } else if (fd == server_fd) {
> int client;
>
> client = kvm_ipc__new_conn(fd);
--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html