File crash-xen-opt_sched.patch of Package crash
---
xen_hyper.c | 12 ++++++++++--
1 file changed, 10 insertions(+), 2 deletions(-)
--- a/xen_hyper.c
+++ b/xen_hyper.c
@@ -445,13 +445,21 @@ xen_hyper_schedule_init(void)
error(FATAL, "cannot malloc scheduler struct space.\n");
}
buf = GETBUF(XEN_HYPER_SCHEDULER_NAME);
- opt_sched = symbol_value("opt_sched");
+ scheduler_opt_name = XEN_HYPER_OFFSET(scheduler_opt_name);
+ if (symbol_exists("ops")) {
+ if (!readmem(symbol_value("ops") + scheduler_opt_name, KVADDR,
+ &opt_sched, sizeof(ulong), "ops.opt_name",
+ RETURN_ON_ERROR)) {
+ error(FATAL, "cannot read ops.opt_name.\n");
+ }
+ } else {
+ opt_sched = symbol_value("opt_sched");
+ }
if (!readmem(opt_sched, KVADDR, xhscht->opt_sched,
XEN_HYPER_OPT_SCHED_SIZE, "opt_sched,", RETURN_ON_ERROR)) {
error(FATAL, "cannot read opt_sched,.\n");
}
schedulers = symbol_value("schedulers");
- scheduler_opt_name = XEN_HYPER_OFFSET(scheduler_opt_name);
addr = schedulers;
while (xhscht->name == NULL) {
if (!readmem(addr, KVADDR, schedulers_buf,