xl: Add "xl sysrq" command, a clone of "xm sysrq".

Signed-off-by: Yang Hongyang <yanghy@cn.fujitsu.com>
This commit is contained in:
Keir Fraser committed 2010-05-12 08:52:07 +01:00
1 parent 1e2619f4b0
commit c614ef19d3
5 files changed
+57

No files matched your search

+10
View File
@@ -2629,3 +2629,13 @@ int libxl_send_trigger(struct libxl_ctx *ctx, uint32_t domid, char *trigger_name
return rc;
}
int libxl_send_sysrq(struct libxl_ctx *ctx, uint32_t domid, char sysrq)
{
char *dompath = libxl_xs_get_dompath(ctx, domid);
libxl_xs_write(ctx, XBT_NULL, libxl_sprintf(ctx, "%s/control/sysrq", dompath), "%c", sysrq);
return 0;
}
+1
View File
@@ -481,5 +481,6 @@ int libxl_sched_credit_domain_set(struct libxl_ctx *ctx, uint32_t domid,
struct libxl_sched_credit *scinfo);
int libxl_send_trigger(struct libxl_ctx *ctx, uint32_t domid,
char *trigger_name, uint32_t vcpuid);
int libxl_send_sysrq(struct libxl_ctx *ctx, uint32_t domid, char sysrq);
#endif /* LIBXL_H */
+40
View File
@@ -3058,3 +3058,43 @@ int main_trigger(int argc, char **argv)
exit(0);
}
int main_sysrq(int argc, char **argv)
{
int opt;
char *sysrq = NULL;
char *dom = NULL;
while ((opt = getopt(argc, argv, "h")) != -1) {
switch (opt) {
case 'h':
help("sysrq");
exit(0);
default:
fprintf(stderr, "option `%c' not supported.\n", opt);
break;
}
}
dom = argv[optind++];
if (!dom || !argv[optind]) {
fprintf(stderr, "'xl sysrq' requires 2 arguments.\n\n");
help("sysrq");
exit(1);
}
find_domain(dom);
sysrq = argv[optind];
if (sysrq[1] != '\0') {
fprintf(stderr, "Invalid sysrq.\n\n");
help("sysrq");
exit(1);
}
libxl_send_sysrq(&ctx, domid, sysrq[0]);
exit(0);
}
+1
View File
@@ -39,5 +39,6 @@ int main_domid(int argc, char **argv);
int main_domname(int argc, char **argv);
int main_rename(int argc, char **argv);
int main_trigger(int argc, char **argv);
int main_sysrq(int argc, char **argv);
void help(char *command);
+5
View File
@@ -172,6 +172,11 @@ struct cmd_spec cmd_table[] = {
"Send a trigger to a domain",
"<Domain> <nmi|reset|init|power|sleep> [<VCPU>]",
},
{ "sysrq",
&main_sysrq,
"Send a sysrq to a domain",
"<Domain> <letter>",
},
};
int cmdtable_len = sizeof(cmd_table)/sizeof(struct cmd_spec);
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.