Loading drivers/lguest/lguest_user.c +19 −0 Original line number Diff line number Diff line Loading @@ -243,6 +243,23 @@ static int user_send_irq(struct lg_cpu *cpu, const unsigned long __user *input) return 0; } /*L:053 * Deliver a trap: this is used by the Launcher if it can't emulate * an instruction. */ static int trap(struct lg_cpu *cpu, const unsigned long __user *input) { unsigned long trapnum; if (get_user(trapnum, input) != 0) return -EFAULT; if (!deliver_trap(cpu, trapnum)) return -EINVAL; return 0; } /*L:040 * Once our Guest is initialized, the Launcher makes it run by reading * from /dev/lguest. Loading Loading @@ -487,6 +504,8 @@ static ssize_t write(struct file *file, const char __user *in, return getreg_setup(cpu, input); case LHREQ_SETREG: return setreg(cpu, input); case LHREQ_TRAP: return trap(cpu, input); default: return -EINVAL; } Loading include/linux/lguest_launcher.h +1 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ enum lguest_req LHREQ_EVENTFD, /* + address, fd. */ LHREQ_GETREG, /* + offset within struct pt_regs (then read value). */ LHREQ_SETREG, /* + offset within struct pt_regs, value. */ LHREQ_TRAP, /* + trap number to deliver to guest. */ }; /* Loading Loading
drivers/lguest/lguest_user.c +19 −0 Original line number Diff line number Diff line Loading @@ -243,6 +243,23 @@ static int user_send_irq(struct lg_cpu *cpu, const unsigned long __user *input) return 0; } /*L:053 * Deliver a trap: this is used by the Launcher if it can't emulate * an instruction. */ static int trap(struct lg_cpu *cpu, const unsigned long __user *input) { unsigned long trapnum; if (get_user(trapnum, input) != 0) return -EFAULT; if (!deliver_trap(cpu, trapnum)) return -EINVAL; return 0; } /*L:040 * Once our Guest is initialized, the Launcher makes it run by reading * from /dev/lguest. Loading Loading @@ -487,6 +504,8 @@ static ssize_t write(struct file *file, const char __user *in, return getreg_setup(cpu, input); case LHREQ_SETREG: return setreg(cpu, input); case LHREQ_TRAP: return trap(cpu, input); default: return -EINVAL; } Loading
include/linux/lguest_launcher.h +1 −0 Original line number Diff line number Diff line Loading @@ -65,6 +65,7 @@ enum lguest_req LHREQ_EVENTFD, /* + address, fd. */ LHREQ_GETREG, /* + offset within struct pt_regs (then read value). */ LHREQ_SETREG, /* + offset within struct pt_regs, value. */ LHREQ_TRAP, /* + trap number to deliver to guest. */ }; /* Loading