Implement -e kvm= option on all architectures

Make -e kvm= interface available on all architectures by adding a stub
on those architectures that do not have <linux/kvm.h>.

* filter_qualify.c (qualify_kvm): Define unconditionally.
(qual_options): Define qualify_kvm entry unconditionally.
* strace.c (usage): Mention kvm argument of -e option unconditionally.
This commit is contained in:
Дмитрий Левин 2018-07-11 00:00:57 +00:00
parent 7374607613
commit 048d1885fa
2 changed files with 8 additions and 9 deletions

View File

@ -405,20 +405,24 @@ qualify_inject(const char *const str)
qualify_inject_common(str, false, "inject argument");
}
#ifdef HAVE_LINUX_KVM_H
static void
qualify_kvm(const char *const str)
{
if (strcmp(str, "vcpu") == 0) {
#ifdef HAVE_LINUX_KVM_H
if (os_release >= KERNEL_VERSION(4, 16, 0))
kvm_run_structure_decoder_init();
else
error_msg("-e kvm=vcpu option needs Linux 4.16.0 or higher");
error_msg("-e kvm=vcpu option needs"
" Linux 4.16.0 or higher");
#else
error_msg("-e kvm=vcpu option is not implemented"
" for this architecture");
#endif
} else {
error_msg_and_die("invalid -e kvm= argument: '%s'", str);
}
}
#endif
static const struct qual_options {
const char *name;
@ -443,9 +447,7 @@ static const struct qual_options {
{ "w", qualify_write },
{ "fault", qualify_fault },
{ "inject", qualify_inject },
#ifdef HAVE_LINUX_KVM_H
{ "kvm", qualify_kvm },
#endif
};
void

View File

@ -278,10 +278,7 @@ Statistics:\n\
\n\
Filtering:\n\
-e expr a qualifying expression: option=[!]all or option=[!]val1[,val2]...\n\
options: trace, abbrev, verbose, raw, signal, read, write, fault, inject"
#ifdef HAVE_LINUX_KVM_H
", kvm"
#endif
options: trace, abbrev, verbose, raw, signal, read, write, fault, inject, kvm"
"\n\
-P path trace accesses to path\n\
\n\