Give threads a meaningful name. This makes debugging much easier, and
everything else much prettier.

Suggested-by: Ingo Molnar <[email protected]>
Signed-off-by: Sasha Levin <[email protected]>
---
 tools/kvm/disk/core.c       | 2 ++
 tools/kvm/include/kvm/kvm.h | 7 +++++++
 tools/kvm/ioeventfd.c       | 2 ++
 tools/kvm/kvm-ipc.c         | 2 ++
 tools/kvm/net/uip/tcp.c     | 3 +++
 tools/kvm/net/uip/udp.c     | 3 +++
 tools/kvm/ui/sdl.c          | 2 ++
 tools/kvm/ui/vnc.c          | 2 ++
 tools/kvm/util/threadpool.c | 2 ++
 tools/kvm/virtio/blk.c      | 2 ++
 tools/kvm/virtio/net.c      | 4 ++++
 11 files changed, 31 insertions(+)

diff --git a/tools/kvm/disk/core.c b/tools/kvm/disk/core.c
index b313b28..dd59751 100644
--- a/tools/kvm/disk/core.c
+++ b/tools/kvm/disk/core.c
@@ -63,6 +63,8 @@ static void *disk_image__thread(void *param)
        int nr, i;
        u64 dummy;
 
+       kvm__set_thread_name("disk-image-io");
+
        while (read(disk->evt, &dummy, sizeof(dummy)) > 0) {
                nr = io_getevents(disk->ctx, 1, ARRAY_SIZE(event), event, 
&notime);
                for (i = 0; i < nr; i++)
diff --git a/tools/kvm/include/kvm/kvm.h b/tools/kvm/include/kvm/kvm.h
index b460656..1c7fab7 100644
--- a/tools/kvm/include/kvm/kvm.h
+++ b/tools/kvm/include/kvm/kvm.h
@@ -10,6 +10,7 @@
 #include <linux/types.h>
 #include <time.h>
 #include <signal.h>
+#include <sys/prctl.h>
 
 #define SIGKVMEXIT             (SIGRTMIN + 0)
 #define SIGKVMPAUSE            (SIGRTMIN + 1)
@@ -118,4 +119,10 @@ static inline void *guest_flat_to_host(struct kvm *kvm, 
unsigned long offset)
 
 bool kvm__supports_extension(struct kvm *kvm, unsigned int extension);
 
+static inline void kvm__set_thread_name(const char *name)
+{
+       prctl(PR_SET_NAME, name);
+}
+
 #endif /* KVM__KVM_H */
+
diff --git a/tools/kvm/ioeventfd.c b/tools/kvm/ioeventfd.c
index a68d8d0..ff665d4 100644
--- a/tools/kvm/ioeventfd.c
+++ b/tools/kvm/ioeventfd.c
@@ -24,6 +24,8 @@ static void *ioeventfd__thread(void *param)
 {
        u64 tmp = 1;
 
+       kvm__set_thread_name("ioeventfd-worker");
+
        for (;;) {
                int nfds, i;
 
diff --git a/tools/kvm/kvm-ipc.c b/tools/kvm/kvm-ipc.c
index d23edd2..bdcc0d1 100644
--- a/tools/kvm/kvm-ipc.c
+++ b/tools/kvm/kvm-ipc.c
@@ -260,6 +260,8 @@ static void *kvm_ipc__thread(void *param)
        struct epoll_event event;
        struct kvm *kvm = param;
 
+       kvm__set_thread_name("kvm-ipc");
+
        for (;;) {
                int nfds;
 
diff --git a/tools/kvm/net/uip/tcp.c b/tools/kvm/net/uip/tcp.c
index 711a716..830aa3f 100644
--- a/tools/kvm/net/uip/tcp.c
+++ b/tools/kvm/net/uip/tcp.c
@@ -1,5 +1,6 @@
 #include "kvm/uip.h"
 
+#include <kvm/kvm.h>
 #include <linux/virtio_net.h>
 #include <linux/kernel.h>
 #include <linux/list.h>
@@ -176,6 +177,8 @@ static void *uip_tcp_socket_thread(void *p)
        int len, left, ret;
        u8 *payload, *pos;
 
+       kvm__set_thread_name("uip-tcp");
+
        sk = p;
 
        payload = malloc(UIP_MAX_TCP_PAYLOAD);
diff --git a/tools/kvm/net/uip/udp.c b/tools/kvm/net/uip/udp.c
index d4518b2..5b6ec1c 100644
--- a/tools/kvm/net/uip/udp.c
+++ b/tools/kvm/net/uip/udp.c
@@ -1,5 +1,6 @@
 #include "kvm/uip.h"
 
+#include <kvm/kvm.h>
 #include <linux/virtio_net.h>
 #include <linux/kernel.h>
 #include <linux/list.h>
@@ -160,6 +161,8 @@ static void *uip_udp_socket_thread(void *p)
        int nfds;
        int i;
 
+       kvm__set_thread_name("uip-udp");
+
        info = p;
 
        do {
diff --git a/tools/kvm/ui/sdl.c b/tools/kvm/ui/sdl.c
index 172a12b..9994490 100644
--- a/tools/kvm/ui/sdl.c
+++ b/tools/kvm/ui/sdl.c
@@ -206,6 +206,8 @@ static void *sdl__thread(void *p)
        SDL_Event ev;
        Uint32 flags;
 
+       kvm__set_thread_name("kvm-sdl-worker");
+
        if (SDL_Init(SDL_INIT_VIDEO) != 0)
                die("Unable to initialize SDL");
 
diff --git a/tools/kvm/ui/vnc.c b/tools/kvm/ui/vnc.c
index efdc0f4..12e4bd5 100644
--- a/tools/kvm/ui/vnc.c
+++ b/tools/kvm/ui/vnc.c
@@ -185,6 +185,8 @@ static void *vnc__thread(void *p)
        char argv[1][1] = {{0}};
        int argc = 1;
 
+       kvm__set_thread_name("kvm-vnc-worker");
+
        server = rfbGetScreen(&argc, (char **) argv, fb->width, fb->height, 8, 
3, 4);
        server->frameBuffer             = fb->mem;
        server->alwaysShared            = TRUE;
diff --git a/tools/kvm/util/threadpool.c b/tools/kvm/util/threadpool.c
index 85ac7e7..a363831 100644
--- a/tools/kvm/util/threadpool.c
+++ b/tools/kvm/util/threadpool.c
@@ -78,6 +78,8 @@ static void *thread_pool__threadfunc(void *param)
 {
        pthread_cleanup_push(thread_pool__threadfunc_cleanup, NULL);
 
+       kvm__set_thread_name("threadpool-worker");
+
        while (running) {
                struct thread_pool__job *curjob = NULL;
 
diff --git a/tools/kvm/virtio/blk.c b/tools/kvm/virtio/blk.c
index cff38aa..f76342c 100644
--- a/tools/kvm/virtio/blk.c
+++ b/tools/kvm/virtio/blk.c
@@ -179,6 +179,8 @@ static void *virtio_blk_thread(void *dev)
        u64 data;
        int r;
 
+       kvm__set_thread_name("virtio-blk-io");
+
        while (1) {
                r = read(bdev->io_efd, &data, sizeof(u64));
                if (r < 0)
diff --git a/tools/kvm/virtio/net.c b/tools/kvm/virtio/net.c
index d6d344a..ac429cc 100644
--- a/tools/kvm/virtio/net.c
+++ b/tools/kvm/virtio/net.c
@@ -79,6 +79,8 @@ static void *virtio_net_rx_thread(void *p)
        u16 head;
        int len;
 
+       kvm__set_thread_name("virtio-net-rx");
+
        kvm = ndev->kvm;
        vq = &ndev->vqs[VIRTIO_NET_RX_QUEUE];
 
@@ -115,6 +117,8 @@ static void *virtio_net_tx_thread(void *p)
        u16 head;
        int len;
 
+       kvm__set_thread_name("virtio-net-tx");
+
        kvm = ndev->kvm;
        vq = &ndev->vqs[VIRTIO_NET_TX_QUEUE];
 
-- 
1.7.12.4

--
To unsubscribe from this list: send the line "unsubscribe kvm" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to