From: Kay Sievers Date: Tue, 18 Mar 2014 21:17:22 +0000 (+0100) Subject: add debug log code X-Git-Tag: upstream/0.20140325.112233cet~35 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4a3321d3143fbb0156c0233c26702fb6853fcbc4;p=platform%2Fcore%2Fsystem%2Fkdbus-bus.git add debug log code --- diff --git a/connection.c b/connection.c index b3227ef..a226f08 100644 --- a/connection.c +++ b/connection.c @@ -702,6 +702,7 @@ static int kdbus_conn_queue_insert(struct kdbus_conn *conn, /* link the message into the receiver's queue */ mutex_lock(&conn->lock); kdbus_conn_queue_add(conn, queue); + kdbus_pool_log(conn->pool, queue->off, queue->size, "SEND", conn_src ? conn_src->id : 0, conn->id, queue->cookie); mutex_unlock(&conn->lock); /* wake up poll() */ @@ -1073,6 +1074,7 @@ int kdbus_cmd_msg_recv(struct kdbus_conn *conn, } ret = kdbus_conn_msg_install(conn, queue); + kdbus_pool_log(conn->pool, queue->off, queue->size, "RECV", 0 , conn->id, queue->cookie); kdbus_conn_queue_remove(conn, queue); kdbus_conn_queue_cleanup(queue); diff --git a/pool.c b/pool.c index cbf8ee7..16de369 100644 --- a/pool.c +++ b/pool.c @@ -24,6 +24,7 @@ #include #include #include +#include #include "pool.h" #include "util.h" @@ -678,3 +679,45 @@ int kdbus_pool_mmap(const struct kdbus_pool *pool, struct vm_area_struct *vma) return pool->f->f_op->mmap(pool->f, vma); } + +void kdbus_pool_log(const struct kdbus_pool *pool, size_t off, size_t len, + const char *s, u64 src, u64 dst, u64 cookie) +{ + struct address_space *mapping = pool->f->f_mapping; + struct page *page; + char *kaddr; + size_t o = off & (PAGE_CACHE_SIZE - 1); + char buf[256]; + unsigned int i; + + page = find_get_page(mapping, off >> PAGE_CACHE_SHIFT); + if (!page) + return; + + kaddr = kmap(page); + + for (i = 0; i < len && i < sizeof(buf)-1; i++) { + char c = kaddr[o + i]; + + switch (c) { + case '1' ... '9': + case 'a' ... 'z': + case 'A' ... 'Z': + case '-': + case '/': + case ':': + buf[i] = c; + break; + case '\0': + buf[i] = '_'; + break; + default: + buf[i] = '.'; + } + } + buf[i] = '\0'; + printk(KERN_INFO "XXX %s %04llu %04llu %08zu %08zu %04llu '%s'\n", s, src, dst, len, off, cookie, buf); + + kunmap(page); + put_page(page); +} diff --git a/pool.h b/pool.h index d1df425..e0a1faa 100644 --- a/pool.h +++ b/pool.h @@ -31,4 +31,6 @@ int kdbus_pool_move(struct kdbus_pool *dst_pool, void kdbus_pool_flush_dcache(const struct kdbus_pool *pool, size_t off, size_t len); int kdbus_pool_mmap(const struct kdbus_pool *pool, struct vm_area_struct *vma); +void kdbus_pool_log(const struct kdbus_pool *pool, size_t off, size_t len, + const char *s, u64 src, u64 dst, u64 cookie); #endif