diff mbox

[OpenWrt-Devel,4/4,ubox] logd: optimize notify function

Message ID 1429635886-4895-4-git-send-email-luka@openwrt.org
State Accepted
Headers show

Commit Message

Luka Perkov April 21, 2015, 5:04 p.m. UTC
No need to construct every time the same blob_buf for each client in the list.

Signed-off-by: Luka Perkov <luka@openwrt.org>
---
 log/logd.c | 18 ++++++++++--------
 1 file changed, 10 insertions(+), 8 deletions(-)
diff mbox

Patch

diff --git a/log/logd.c b/log/logd.c
index a4335ea..27d3cac 100644
--- a/log/logd.c
+++ b/log/logd.c
@@ -147,15 +147,17 @@  ubus_notify_log(struct log_head *l)
 	if (list_empty(&clients))
 		return;
 
-	list_for_each_entry(c, &clients, list) {
-		blob_buf_init(&b, 0);
-		blobmsg_add_string(&b, "msg", l->data);
-		blobmsg_add_u32(&b, "id", l->id);
-		blobmsg_add_u32(&b, "priority", l->priority);
-		blobmsg_add_u32(&b, "source", l->source);
-		blobmsg_add_u64(&b, "time", (((__u64) l->ts.tv_sec) * 1000) + (l->ts.tv_nsec / 1000000));
+	blob_buf_init(&b, 0);
+	blobmsg_add_string(&b, "msg", l->data);
+	blobmsg_add_u32(&b, "id", l->id);
+	blobmsg_add_u32(&b, "priority", l->priority);
+	blobmsg_add_u32(&b, "source", l->source);
+	blobmsg_add_u64(&b, "time", (((__u64) l->ts.tv_sec) * 1000) + (l->ts.tv_nsec / 1000000));
+
+	list_for_each_entry(c, &clients, list)
 		ustream_write(&c->s.stream, (void *) b.head, blob_len(b.head) + sizeof(struct blob_attr), false);
-	}
+
+	blob_buf_free(&b);
 }
 
 static void