Merge branch 'semaphore' of git://git.kernel.org/pub/scm/linux/kernel/git/willy/misc
[pandora-kernel.git] / arch / um / kernel / irq.c
index 277fce1..3d7aad0 100644 (file)
@@ -102,15 +102,14 @@ void sigio_handler(int sig, struct uml_pt_regs *regs)
 
 static DEFINE_SPINLOCK(irq_lock);
 
-int activate_fd(int irq, int fd, int type, void *dev_id)
+static int activate_fd(int irq, int fd, int type, void *dev_id)
 {
        struct pollfd *tmp_pfd;
        struct irq_fd *new_fd, *irq_fd;
        unsigned long flags;
-       int pid, events, err, n;
+       int events, err, n;
 
-       pid = os_getpid();
-       err = os_set_fd_async(fd, pid);
+       err = os_set_fd_async(fd);
        if (err < 0)
                goto out;
 
@@ -127,7 +126,6 @@ int activate_fd(int irq, int fd, int type, void *dev_id)
                                     .fd                = fd,
                                     .type              = type,
                                     .irq               = irq,
-                                    .pid               = pid,
                                     .events            = events,
                                     .current_events    = 0 } );
 
@@ -218,7 +216,7 @@ static int same_irq_and_dev(struct irq_fd *irq, void *d)
        return ((irq->irq == data->irq) && (irq->id == data->dev));
 }
 
-void free_irq_by_irq_and_dev(unsigned int irq, void *dev)
+static void free_irq_by_irq_and_dev(unsigned int irq, void *dev)
 {
        struct irq_and_dev data = ((struct irq_and_dev) { .irq  = irq,
                                                          .dev  = dev });
@@ -326,7 +324,7 @@ int deactivate_all_fds(void)
 }
 
 /*
- * do_IRQ handles all normal device IRQ's (the special
+ * do_IRQ handles all normal device IRQs (the special
  * SMP cross-CPU interrupts have their own specific
  * handlers).
  */
@@ -347,14 +345,15 @@ int um_request_irq(unsigned int irq, int fd, int type,
 {
        int err;
 
-       err = request_irq(irq, handler, irqflags, devname, dev_id);
-       if (err)
-               return err;
-
-       if (fd != -1)
+       if (fd != -1) {
                err = activate_fd(irq, fd, type, dev_id);
-       return err;
+               if (err)
+                       return err;
+       }
+
+       return request_irq(irq, handler, irqflags, devname, dev_id);
 }
+
 EXPORT_SYMBOL(um_request_irq);
 EXPORT_SYMBOL(reactivate_fd);
 
@@ -404,37 +403,6 @@ void __init init_IRQ(void)
        }
 }
 
-int init_aio_irq(int irq, char *name, irq_handler_t handler)
-{
-       int fds[2], err;
-
-       err = os_pipe(fds, 1, 1);
-       if (err) {
-               printk(KERN_ERR "init_aio_irq - os_pipe failed, err = %d\n",
-                      -err);
-               goto out;
-       }
-
-       err = um_request_irq(irq, fds[0], IRQ_READ, handler,
-                            IRQF_DISABLED | IRQF_SAMPLE_RANDOM, name,
-                            (void *) (long) fds[0]);
-       if (err) {
-               printk(KERN_ERR "init_aio_irq - : um_request_irq failed, "
-                      "err = %d\n",
-                      err);
-               goto out_close;
-       }
-
-       err = fds[1];
-       goto out;
-
- out_close:
-       os_close_file(fds[0]);
-       os_close_file(fds[1]);
- out:
-       return err;
-}
-
 /*
  * IRQ stack entry and exit:
  *