kvm tools: Use kvm__get_dir() helper function

This patch adds a kvm__get_dir() helper function that replaces open-coded uses
of HOME_DIR and KVM_PID_FILE_PATH.

Cc: Asias He <asias.hejun@gmail.com>
Cc: Cyrill Gorcunov <gorcunov@gmail.com>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Sasha Levin <levinsasha928@gmail.com>
Signed-off-by: Pekka Enberg <penberg@kernel.org>
This commit is contained in:
Pekka Enberg
2011-10-16 21:22:49 +03:00
committed by Will Deacon
parent 127b84f7ed
commit 9667701c38
6 changed files with 42 additions and 13 deletions

View File

@@ -78,7 +78,7 @@ static int kvm_list_rootfs(void)
DIR *dir;
struct dirent *dirent;
snprintf(name, PATH_MAX, "%s%s", HOME_DIR, KVM_PID_FILE_PATH);
snprintf(name, PATH_MAX, "%s", kvm__get_dir());
dir = opendir(name);
if (dir == NULL)
return -1;

View File

@@ -121,7 +121,7 @@ static int img_name_parser(const struct option *opt, const char *arg, int unset)
return 0;
}
snprintf(path, PATH_MAX, "%s%s%s", HOME_DIR, KVM_PID_FILE_PATH, arg);
snprintf(path, PATH_MAX, "%s%s", kvm__get_dir(), arg);
if (stat(path, &st) == 0 &&
S_ISDIR(st.st_mode)) {
@@ -842,7 +842,7 @@ int kvm_cmd_run(int argc, const char **argv, const char *prefix)
kvm_setup_create_new("default");
kvm_setup_resolv("default");
snprintf(tmp, PATH_MAX, "%s%s%s", HOME_DIR, KVM_PID_FILE_PATH, "default");
snprintf(tmp, PATH_MAX, "%s%s", kvm__get_dir(), "default");
if (virtio_9p__register(kvm, tmp, "/dev/root") < 0)
die("Unable to initialize virtio 9p");
if (virtio_9p__register(kvm, "/", "hostfs") < 0)

View File

@@ -125,7 +125,7 @@ static int copy_init(const char *guestfs_name)
{
char path[PATH_MAX];
snprintf(path, PATH_MAX, "%s%s%s/virt/init", HOME_DIR, KVM_PID_FILE_PATH, guestfs_name);
snprintf(path, PATH_MAX, "%s%s/virt/init", kvm__get_dir(), guestfs_name);
return copy_file("guest/init", path);
}
@@ -135,7 +135,7 @@ static int make_guestfs_symlink(const char *guestfs_name, const char *path)
char target[PATH_MAX];
char name[PATH_MAX];
snprintf(name, PATH_MAX, "%s%s%s%s", HOME_DIR, KVM_PID_FILE_PATH, guestfs_name, path);
snprintf(name, PATH_MAX, "%s%s%s", kvm__get_dir(), guestfs_name, path);
snprintf(target, PATH_MAX, "/host%s", path);
@@ -146,7 +146,7 @@ static void make_root_dir(void)
{
char name[PATH_MAX];
snprintf(name, PATH_MAX, "%s%s", HOME_DIR, KVM_PID_FILE_PATH);
snprintf(name, PATH_MAX, "%s", kvm__get_dir());
mkdir(name, 0777);
}
@@ -155,7 +155,7 @@ static int make_dir(const char *dir)
{
char name[PATH_MAX];
snprintf(name, PATH_MAX, "%s%s%s", HOME_DIR, KVM_PID_FILE_PATH, dir);
snprintf(name, PATH_MAX, "%s%s", kvm__get_dir(), dir);
return mkdir(name, 0777);
}
@@ -173,7 +173,7 @@ void kvm_setup_resolv(const char *guestfs_name)
{
char path[PATH_MAX];
snprintf(path, PATH_MAX, "%s%s%s/etc/resolv.conf", HOME_DIR, KVM_PID_FILE_PATH, guestfs_name);
snprintf(path, PATH_MAX, "%s%s/etc/resolv.conf", kvm__get_dir(), guestfs_name);
copy_file("/etc/resolv.conf", path);
}

View File

@@ -57,6 +57,9 @@ struct kvm {
const char *name;
};
void kvm__set_dir(const char *fmt, ...);
const char *kvm__get_dir(void);
struct kvm *kvm__init(const char *kvm_dev, u64 ram_size, const char *name);
int kvm__recommended_cpus(struct kvm *kvm);
int kvm__max_cpus(struct kvm *kvm);

31
kvm.c
View File

@@ -78,6 +78,27 @@ extern struct kvm_cpu *kvm_cpus[KVM_NR_CPUS];
static int pause_event;
static DEFINE_MUTEX(pause_lock);
static char kvm_dir[PATH_MAX];
static void set_dir(const char *fmt, va_list args)
{
vsnprintf(kvm_dir, sizeof(kvm_dir), fmt, args);
}
void kvm__set_dir(const char *fmt, ...)
{
va_list args;
va_start(args, fmt);
set_dir(fmt, args);
va_end(args);
}
const char *kvm__get_dir(void)
{
return kvm_dir;
}
static bool kvm__supports_extension(struct kvm *kvm, unsigned int extension)
{
int ret;
@@ -122,9 +143,9 @@ static void kvm__create_pidfile(struct kvm *kvm)
if (!kvm->name)
return;
sprintf(full_name, "%s/%s", HOME_DIR, KVM_PID_FILE_PATH);
sprintf(full_name, "%s", kvm__get_dir());
mkdir(full_name, 0777);
sprintf(full_name, "%s/%s/%s.pid", HOME_DIR, KVM_PID_FILE_PATH, kvm->name);
sprintf(full_name, "%s/%s.pid", kvm__get_dir(), kvm->name);
fd = open(full_name, O_CREAT | O_WRONLY, 0666);
sprintf(pid, "%u\n", getpid());
if (write(fd, pid, strlen(pid)) <= 0)
@@ -136,7 +157,7 @@ void kvm__remove_pidfile(const char *name)
{
char full_name[PATH_MAX];
sprintf(full_name, "%s/%s/%s.pid", HOME_DIR, KVM_PID_FILE_PATH, name);
sprintf(full_name, "%s/%s.pid", kvm__get_dir(), name);
unlink(full_name);
}
@@ -146,7 +167,7 @@ pid_t kvm__get_pid_by_instance(const char *name)
pid_t pid;
char pid_str[10], pid_file[PATH_MAX];
sprintf(pid_file, "%s/%s/%s.pid", HOME_DIR, KVM_PID_FILE_PATH, name);
sprintf(pid_file, "%s/%s.pid", kvm__get_dir(), name);
fd = open(pid_file, O_RDONLY);
if (fd < 0)
return -1;
@@ -171,7 +192,7 @@ int kvm__enumerate_instances(int (*callback)(const char *name, int pid))
struct dirent entry, *result;
int ret = 0;
sprintf(full_name, "%s/%s", HOME_DIR, KVM_PID_FILE_PATH);
sprintf(full_name, "%s", kvm__get_dir());
dir = opendir(full_name);
while (dir != NULL) {

5
main.c
View File

@@ -1,3 +1,6 @@
#include "kvm/kvm.h"
#include <stdlib.h>
#include <stdio.h>
/* user defined header files */
@@ -10,5 +13,7 @@ static int handle_kvm_command(int argc, char **argv)
int main(int argc, char *argv[])
{
kvm__set_dir("%s/%s", HOME_DIR, KVM_PID_FILE_PATH);
return handle_kvm_command(argc - 1, &argv[1]);
}