Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 147999
b: refs/heads/master
c: 5dac051
h: refs/heads/master
i:
  147997: 8c4d7e6
  147995: 6146c38
  147991: 1fbdd57
  147983: 781756a
  147967: eb257d8
v: v3
  • Loading branch information
Rusty Russell committed Jun 12, 2009
1 parent 672d190 commit 69879e5
Show file tree
Hide file tree
Showing 5 changed files with 6 additions and 44 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 659a0e6633567246edcb7bd400c7e2bece9237d9
refs/heads/master: 5dac051bc6030963181b69faddd9e0ad04f85fa8
11 changes: 3 additions & 8 deletions trunk/drivers/lguest/core.c
Original file line number Diff line number Diff line change
Expand Up @@ -209,10 +209,6 @@ int run_guest(struct lg_cpu *cpu, unsigned long __user *user)
if (signal_pending(current))
return -ERESTARTSYS;

/* If Waker set break_out, return to Launcher. */
if (cpu->break_out)
return -EAGAIN;

/* Check if there are any interrupts which can be delivered now:
* if so, this sets up the hander to be executed when we next
* run the Guest. */
Expand All @@ -231,13 +227,12 @@ int run_guest(struct lg_cpu *cpu, unsigned long __user *user)
break;

/* If the Guest asked to be stopped, we sleep. The Guest's
* clock timer or LHREQ_BREAK from the Waker will wake us. */
* clock timer will wake us. */
if (cpu->halted) {
set_current_state(TASK_INTERRUPTIBLE);
/* Just before we sleep, make sure nothing snuck in
/* Just before we sleep, make sure no interrupt snuck in
* which we should be doing. */
if (interrupt_pending(cpu, &more) < LGUEST_IRQS
|| cpu->break_out)
if (interrupt_pending(cpu, &more) < LGUEST_IRQS)
set_current_state(TASK_RUNNING);
else
schedule();
Expand Down
4 changes: 1 addition & 3 deletions trunk/drivers/lguest/lg.h
Original file line number Diff line number Diff line change
Expand Up @@ -71,9 +71,7 @@ struct lg_cpu {
/* Virtual clock device */
struct hrtimer hrt;

/* Do we need to stop what we're doing and return to userspace? */
int break_out;
wait_queue_head_t break_wq;
/* Did the Guest tell us to halt? */
int halted;

/* Pending virtual interrupts */
Expand Down
31 changes: 0 additions & 31 deletions trunk/drivers/lguest/lguest_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,32 +11,6 @@
#include <linux/file.h>
#include "lg.h"

/*L:055 When something happens, the Waker process needs a way to stop the
* kernel running the Guest and return to the Launcher. So the Waker writes
* LHREQ_BREAK and the value "1" to /dev/lguest to do this. Once the Launcher
* has done whatever needs attention, it writes LHREQ_BREAK and "0" to release
* the Waker. */
static int break_guest_out(struct lg_cpu *cpu, const unsigned long __user*input)
{
unsigned long on;

/* Fetch whether they're turning break on or off. */
if (get_user(on, input) != 0)
return -EFAULT;

if (on) {
cpu->break_out = 1;
if (!wake_up_process(cpu->tsk))
kick_process(cpu->tsk);
/* Wait for them to reset it */
return wait_event_interruptible(cpu->break_wq, !cpu->break_out);
} else {
cpu->break_out = 0;
wake_up(&cpu->break_wq);
return 0;
}
}

bool send_notify_to_eventfd(struct lg_cpu *cpu)
{
unsigned int i;
Expand Down Expand Up @@ -202,9 +176,6 @@ static int lg_cpu_start(struct lg_cpu *cpu, unsigned id, unsigned long start_ip)
* address. */
lguest_arch_setup_regs(cpu, start_ip);

/* Initialize the queue for the Waker to wait on */
init_waitqueue_head(&cpu->break_wq);

/* We keep a pointer to the Launcher task (ie. current task) for when
* other Guests want to wake this one (eg. console input). */
cpu->tsk = current;
Expand Down Expand Up @@ -344,8 +315,6 @@ static ssize_t write(struct file *file, const char __user *in,
return initialize(file, input);
case LHREQ_IRQ:
return user_send_irq(cpu, input);
case LHREQ_BREAK:
return break_guest_out(cpu, input);
case LHREQ_EVENTFD:
return attach_eventfd(lg, input);
default:
Expand Down
2 changes: 1 addition & 1 deletion trunk/include/linux/lguest_launcher.h
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ enum lguest_req
LHREQ_INITIALIZE, /* + base, pfnlimit, start */
LHREQ_GETDMA, /* No longer used */
LHREQ_IRQ, /* + irq */
LHREQ_BREAK, /* + on/off flag (on blocks until someone does off) */
LHREQ_BREAK, /* No longer used */
LHREQ_EVENTFD, /* + address, fd. */
};

Expand Down

0 comments on commit 69879e5

Please sign in to comment.