Commit a4d8c55e authored by Sasha Levin's avatar Sasha Levin Committed by Will Deacon
Browse files

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: default avatarIngo Molnar <mingo@kernel.org>
Signed-off-by: default avatarSasha Levin <sasha.levin@oracle.com>
[ penberg@kernel.org: specify vcpu names ]
Signed-off-by: default avatarPekka Enberg <penberg@kernel.org>
parent bca12bf6
......@@ -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;
......
......@@ -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++)
......
......@@ -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 */
......@@ -24,6 +24,8 @@ static void *ioeventfd__thread(void *param)
{
u64 tmp = 1;
kvm__set_thread_name("ioeventfd-worker");
for (;;) {
int nfds, i;
......
......@@ -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;
......
#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);
......
#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 {
......
......@@ -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");
......
......@@ -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;
......
......@@ -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;
......
......@@ -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)
......
......@@ -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];
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment