sched_poll
struct sched_poll sched_poll;
sched_poll.ports = (void *)(unsigned long)(sp32.ports);
sched_poll.nr_ports = sp32.nr_ports;
sched_poll.timeout = sp32.timeout;
if (kvm_read_guest_virt(vcpu, param, &sched_poll,
sizeof(sched_poll), &e)) {
if (unlikely(sched_poll.nr_ports > 1)) {
if (sched_poll.nr_ports > 128) {
ports = kmalloc_objs(*ports, sched_poll.nr_ports);
if (kvm_read_guest_virt(vcpu, (gva_t)sched_poll.ports, ports,
sched_poll.nr_ports * sizeof(*ports), &e)) {
for (i = 0; i < sched_poll.nr_ports; i++) {
if (sched_poll.nr_ports == 1)
if (!wait_pending_event(vcpu, sched_poll.nr_ports, ports)) {
if (sched_poll.timeout)
jiffies + nsecs_to_jiffies(sched_poll.timeout));
if (sched_poll.timeout)
if (unlikely(sched_poll.nr_ports > 1))
struct sched_poll poll;
DEFINE_GUEST_HANDLE_STRUCT(sched_poll);
struct sched_poll p = {
p = (struct sched_poll) {