[tip:tools/kvm] kvm tools: add kvm_ipc__receive()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Commit-ID:  999bd5a25cf03c1e463e2acff625e4e0939ab123
Gitweb:     http://git.kernel.org/tip/999bd5a25cf03c1e463e2acff625e4e0939ab123
Author:     Lai Jiangshan <laijs@xxxxxxxxxxxxxx>
AuthorDate: Tue, 20 Dec 2011 17:08:50 +0800
Committer:  Pekka Enberg <penberg@xxxxxxxxxx>
CommitDate: Wed, 21 Dec 2011 22:28:08 +0200

kvm tools: add kvm_ipc__receive()

Rename struct kvm_ipc_msg to struct kvm_ipc_head.
Change current kvm_ipc__new_data() to kvm_ipc__receive().
Don't allocate memory for the msg head.

Signed-off-by: Lai Jiangshan <laijs@xxxxxxxxxxxxxx>
Signed-off-by: Pekka Enberg <penberg@xxxxxxxxxx>
---
 tools/kvm/include/kvm/kvm-ipc.h |    6 ------
 tools/kvm/kvm-ipc.c             |   30 ++++++++++++++++--------------
 2 files changed, 16 insertions(+), 20 deletions(-)

diff --git a/tools/kvm/include/kvm/kvm-ipc.h b/tools/kvm/include/kvm/kvm-ipc.h
index c556285..c6f4582 100644
--- a/tools/kvm/include/kvm/kvm-ipc.h
+++ b/tools/kvm/include/kvm/kvm-ipc.h
@@ -3,12 +3,6 @@
 
 #include <linux/types.h>
 
-struct kvm_ipc_msg {
-	u32 type;
-	u32 len;
-	u8 data[];
-};
-
 enum {
 	KVM_IPC_BALLOON	= 1,
 	KVM_IPC_DEBUG	= 2,
diff --git a/tools/kvm/kvm-ipc.c b/tools/kvm/kvm-ipc.c
index be534f8..a875e7d 100644
--- a/tools/kvm/kvm-ipc.c
+++ b/tools/kvm/kvm-ipc.c
@@ -9,6 +9,11 @@
 #include <sys/socket.h>
 #include <sys/eventfd.h>
 
+struct kvm_ipc_head {
+	u32 type;
+	u32 len;
+};
+
 #define KVM_IPC_MAX_MSGS 16
 
 static void (*msgs[KVM_IPC_MAX_MSGS])(int fd, u32 type, u32 len, u8 *msg);
@@ -74,28 +79,25 @@ static void kvm_ipc__close_conn(int fd)
 	close(fd);
 }
 
-static void kvm_ipc__new_data(int fd)
+static void kvm_ipc__receive(int fd)
 {
-	struct kvm_ipc_msg *msg;
+	struct kvm_ipc_head head;
+	u8 *msg = NULL;
 	u32 n;
 
-	msg = malloc(sizeof(*msg));
-	if (msg == NULL)
-		goto done;
-
-	n = read(fd, msg, sizeof(*msg));
-	if (n != sizeof(*msg))
+	n = read(fd, &head, sizeof(head));
+	if (n != sizeof(head))
 		goto done;
 
-	msg = realloc(msg, sizeof(*msg) + msg->len);
+	msg = malloc(head.len);
 	if (msg == NULL)
 		goto done;
 
-	n = read_in_full(fd, msg->data, msg->len);
-	if (n != msg->len)
+	n = read_in_full(fd, msg, head.len);
+	if (n != head.len)
 		goto done;
 
-	kvm_ipc__handle(fd, msg->type, msg->len, msg->data);
+	kvm_ipc__handle(fd, head.type, head.len, msg);
 
 done:
 	free(msg);
@@ -118,11 +120,11 @@ static void *kvm_ipc__thread(void *param)
 				int client;
 
 				client = kvm_ipc__new_conn(fd);
-				kvm_ipc__new_data(client);
+				kvm_ipc__receive(client);
 			} else if (event.events && (EPOLLERR | EPOLLRDHUP | EPOLLHUP)) {
 				kvm_ipc__close_conn(fd);
 			} else {
-				kvm_ipc__new_data(fd);
+				kvm_ipc__receive(fd);
 			}
 		}
 	}
--
To unsubscribe from this list: send the line "unsubscribe linux-tip-commits" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Stable Commits]     [Linux Stable Kernel]     [Linux Kernel]     [Linux USB Devel]     [Linux Video &Media]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux