summaryrefslogtreecommitdiffstats
path: root/tools/hv
diff options
context:
space:
mode:
authorOlaf Hering <olaf@aepfle.de>2013-08-06 14:55:38 -0400
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>2013-09-26 15:03:31 -0400
commit269ce62bbc00c4e80bf3ca2aa21823f20625bcf6 (patch)
tree357ff8f61092daf5c861ce13f7d1ec0a647a95d9 /tools/hv
parent58125210ab3b202917c04fca014317944d464ea0 (diff)
Tools: hv: use single send+recv buffer
send_buffer is used only once during registration. To reduce runtime memory usage reuse the recv_buffer for registration. Also use NLMSG_LENGTH instead of NLMSG_HDRLEN to take alignment into account. Signed-off-by: Olaf Hering <olaf@aepfle.de> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'tools/hv')
-rw-r--r--tools/hv/hv_kvp_daemon.c10
-rw-r--r--tools/hv/hv_vss_daemon.c8
2 files changed, 7 insertions, 11 deletions
diff --git a/tools/hv/hv_kvp_daemon.c b/tools/hv/hv_kvp_daemon.c
index 21bd7d4574fc..b8d6d541d854 100644
--- a/tools/hv/hv_kvp_daemon.c
+++ b/tools/hv/hv_kvp_daemon.c
@@ -1434,7 +1434,6 @@ int main(void)
1434 int pool; 1434 int pool;
1435 char *if_name; 1435 char *if_name;
1436 struct hv_kvp_ipaddr_value *kvp_ip_val; 1436 struct hv_kvp_ipaddr_value *kvp_ip_val;
1437 char *kvp_send_buffer;
1438 char *kvp_recv_buffer; 1437 char *kvp_recv_buffer;
1439 size_t kvp_recv_buffer_len; 1438 size_t kvp_recv_buffer_len;
1440 1439
@@ -1443,11 +1442,10 @@ int main(void)
1443 openlog("KVP", 0, LOG_USER); 1442 openlog("KVP", 0, LOG_USER);
1444 syslog(LOG_INFO, "KVP starting; pid is:%d", getpid()); 1443 syslog(LOG_INFO, "KVP starting; pid is:%d", getpid());
1445 1444
1446 kvp_recv_buffer_len = NLMSG_HDRLEN + sizeof(struct cn_msg) + sizeof(struct hv_kvp_msg); 1445 kvp_recv_buffer_len = NLMSG_LENGTH(0) + sizeof(struct cn_msg) + sizeof(struct hv_kvp_msg);
1447 kvp_send_buffer = calloc(1, kvp_recv_buffer_len);
1448 kvp_recv_buffer = calloc(1, kvp_recv_buffer_len); 1446 kvp_recv_buffer = calloc(1, kvp_recv_buffer_len);
1449 if (!(kvp_send_buffer && kvp_recv_buffer)) { 1447 if (!kvp_recv_buffer) {
1450 syslog(LOG_ERR, "Failed to allocate netlink buffers"); 1448 syslog(LOG_ERR, "Failed to allocate netlink buffer");
1451 exit(EXIT_FAILURE); 1449 exit(EXIT_FAILURE);
1452 } 1450 }
1453 /* 1451 /*
@@ -1494,7 +1492,7 @@ int main(void)
1494 /* 1492 /*
1495 * Register ourselves with the kernel. 1493 * Register ourselves with the kernel.
1496 */ 1494 */
1497 message = (struct cn_msg *)kvp_send_buffer; 1495 message = (struct cn_msg *)kvp_recv_buffer;
1498 message->id.idx = CN_KVP_IDX; 1496 message->id.idx = CN_KVP_IDX;
1499 message->id.val = CN_KVP_VAL; 1497 message->id.val = CN_KVP_VAL;
1500 1498
diff --git a/tools/hv/hv_vss_daemon.c b/tools/hv/hv_vss_daemon.c
index 8611962c672c..8bcb04096eb2 100644
--- a/tools/hv/hv_vss_daemon.c
+++ b/tools/hv/hv_vss_daemon.c
@@ -140,7 +140,6 @@ int main(void)
140 struct cn_msg *incoming_cn_msg; 140 struct cn_msg *incoming_cn_msg;
141 int op; 141 int op;
142 struct hv_vss_msg *vss_msg; 142 struct hv_vss_msg *vss_msg;
143 char *vss_send_buffer;
144 char *vss_recv_buffer; 143 char *vss_recv_buffer;
145 size_t vss_recv_buffer_len; 144 size_t vss_recv_buffer_len;
146 145
@@ -150,10 +149,9 @@ int main(void)
150 openlog("Hyper-V VSS", 0, LOG_USER); 149 openlog("Hyper-V VSS", 0, LOG_USER);
151 syslog(LOG_INFO, "VSS starting; pid is:%d", getpid()); 150 syslog(LOG_INFO, "VSS starting; pid is:%d", getpid());
152 151
153 vss_recv_buffer_len = NLMSG_HDRLEN + sizeof(struct cn_msg) + sizeof(struct hv_vss_msg); 152 vss_recv_buffer_len = NLMSG_LENGTH(0) + sizeof(struct cn_msg) + sizeof(struct hv_vss_msg);
154 vss_send_buffer = calloc(1, vss_recv_buffer_len);
155 vss_recv_buffer = calloc(1, vss_recv_buffer_len); 153 vss_recv_buffer = calloc(1, vss_recv_buffer_len);
156 if (!(vss_send_buffer && vss_recv_buffer)) { 154 if (!vss_recv_buffer) {
157 syslog(LOG_ERR, "Failed to allocate netlink buffers"); 155 syslog(LOG_ERR, "Failed to allocate netlink buffers");
158 exit(EXIT_FAILURE); 156 exit(EXIT_FAILURE);
159 } 157 }
@@ -185,7 +183,7 @@ int main(void)
185 /* 183 /*
186 * Register ourselves with the kernel. 184 * Register ourselves with the kernel.
187 */ 185 */
188 message = (struct cn_msg *)vss_send_buffer; 186 message = (struct cn_msg *)vss_recv_buffer;
189 message->id.idx = CN_VSS_IDX; 187 message->id.idx = CN_VSS_IDX;
190 message->id.val = CN_VSS_VAL; 188 message->id.val = CN_VSS_VAL;
191 message->ack = 0; 189 message->ack = 0;