Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 83196
b: refs/heads/master
c: fee64d3
h: refs/heads/master
v: v3
  • Loading branch information
Jeff Dike authored and Linus Torvalds committed Feb 5, 2008
1 parent abd9529 commit d85e7d7
Show file tree
Hide file tree
Showing 3 changed files with 151 additions and 119 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: 260c0cb886c304b760835b6033bf876a7701eb91
refs/heads/master: fee64d3c153f1d5c28f91214b4d0db54d3f1fe0a
27 changes: 13 additions & 14 deletions trunk/arch/um/os-Linux/irq.c
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
/*
* Copyright (C) 2000, 2001, 2002 Jeff Dike (jdike@karaya.com)
* Copyright (C) 2000 - 2007 Jeff Dike (jdike@{addtoit,linux.intel}.com)
* Licensed under the GPL
*/

#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <poll.h>
#include <signal.h>
#include <string.h>
#include <sys/poll.h>
#include <sys/types.h>
#include <sys/time.h>
#include "user.h"
#include "process.h"
#include "sigio.h"
#include "irq_user.h"
#include "kern_constants.h"
#include "os.h"
#include "process.h"
#include "um_malloc.h"
#include "user.h"

/*
* Locked by irq_lock in arch/um/kernel/irq.c. Changed by os_create_pollfd
Expand All @@ -35,7 +32,7 @@ int os_waiting_for_events(struct irq_fd *active_fds)
if (n < 0) {
err = -errno;
if (errno != EINTR)
printk("sigio_handler: os_waiting_for_events:"
printk(UM_KERN_ERR "os_waiting_for_events:"
" poll returned %d, errno = %d\n", n, errno);
return err;
}
Expand Down Expand Up @@ -94,24 +91,26 @@ void os_free_irq_by_cb(int (*test)(struct irq_fd *, void *), void *arg,
struct irq_fd *old_fd = *prev;
if ((pollfds[i].fd != -1) &&
(pollfds[i].fd != (*prev)->fd)) {
printk("os_free_irq_by_cb - mismatch between "
"active_fds and pollfds, fd %d vs %d\n",
printk(UM_KERN_ERR "os_free_irq_by_cb - "
"mismatch between active_fds and "
"pollfds, fd %d vs %d\n",
(*prev)->fd, pollfds[i].fd);
goto out;
}

pollfds_num--;

/* This moves the *whole* array after pollfds[i]
/*
* This moves the *whole* array after pollfds[i]
* (though it doesn't spot as such)!
*/
memmove(&pollfds[i], &pollfds[i + 1],
(pollfds_num - i) * sizeof(pollfds[0]));
if(*last_irq_ptr2 == &old_fd->next)
if (*last_irq_ptr2 == &old_fd->next)
*last_irq_ptr2 = prev;

*prev = (*prev)->next;
if(old_fd->type == IRQ_WRITE)
if (old_fd->type == IRQ_WRITE)
ignore_sigio_fd(old_fd->fd);
kfree(old_fd);
continue;
Expand Down
Loading

0 comments on commit d85e7d7

Please sign in to comment.