Commit-ID: c5519894fba5602d92b26f6754e72ed6b401ea2d Gitweb: http://git.kernel.org/tip/c5519894fba5602d92b26f6754e72ed6b401ea2d Author: Sasha Levin <sasha.levin@xxxxxxxxxx> AuthorDate: Wed, 24 Oct 2012 12:52:27 -0400 Committer: Pekka Enberg <penberg@xxxxxxxxxx> CommitDate: Thu, 25 Oct 2012 09:48:00 +0300 kvm tools: Specify names for VM internal threads Give threads a meaningful name. This makes debugging much easier, and everything else much prettier. Suggested-by: Ingo Molnar <mingo@xxxxxxxxxx> Signed-off-by: Sasha Levin <sasha.levin@xxxxxxxxxx> [ penberg@xxxxxxxxxx: specify vcpu names ] Signed-off-by: Pekka Enberg <penberg@xxxxxxxxxx> --- tools/kvm/builtin-run.c | 7 ++++++- tools/kvm/disk/core.c | 2 ++ tools/kvm/include/kvm/kvm.h | 6 ++++++ 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 ++++ 12 files changed, 36 insertions(+), 1 deletion(-) diff --git a/tools/kvm/builtin-run.c b/tools/kvm/builtin-run.c index 709ed33..dec2e74 100644 --- a/tools/kvm/builtin-run.c +++ b/tools/kvm/builtin-run.c @@ -171,7 +171,12 @@ static void handle_sigalrm(int sig, siginfo_t *si, void *uc) static void *kvm_cpu_thread(void *arg) { - current_kvm_cpu = arg; + char name[16]; + + current_kvm_cpu = arg; + + sprintf(name, "kvm-vcpu-%lu", current_kvm_cpu->cpu_id); + kvm__set_thread_name(name); if (kvm_cpu__start(current_kvm_cpu)) goto panic_kvm; 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, ¬ime); for (i = 0; i < nr; i++) diff --git a/tools/kvm/include/kvm/kvm.h b/tools/kvm/include/kvm/kvm.h index b460656..cf959ea 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,9 @@ 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]; -- 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