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