Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 2526
b: refs/heads/master
c: dbce706
h: refs/heads/master
v: v3
  • Loading branch information
Paolo 'Blaisorblade' Giarrusso authored and Linus Torvalds committed Jun 22, 2005
1 parent 5e67c20 commit 96bf054
Show file tree
Hide file tree
Showing 9 changed files with 13 additions and 12 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: 5757b284a300e0e5d2173750906625b6470bd9f0
refs/heads/master: dbce706e2550253c5ab6043f4f5dfde0cd02470f
2 changes: 0 additions & 2 deletions trunk/arch/um/drivers/line.c
Original file line number Diff line number Diff line change
Expand Up @@ -406,14 +406,12 @@ void line_disable(struct tty_struct *tty, int current_irq)
if(line->driver->read_irq == current_irq)
free_irq_later(line->driver->read_irq, tty);
else {
free_irq_by_irq_and_dev(line->driver->read_irq, tty);
free_irq(line->driver->read_irq, tty);
}

if(line->driver->write_irq == current_irq)
free_irq_later(line->driver->write_irq, tty);
else {
free_irq_by_irq_and_dev(line->driver->write_irq, tty);
free_irq(line->driver->write_irq, tty);
}

Expand Down
1 change: 0 additions & 1 deletion trunk/arch/um/drivers/net_kern.c
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,6 @@ static int uml_net_close(struct net_device *dev)
netif_stop_queue(dev);
spin_lock(&lp->lock);

free_irq_by_irq_and_dev(dev->irq, dev);
free_irq(dev->irq, dev);
if(lp->close != NULL)
(*lp->close)(lp->fd, &lp->user);
Expand Down
1 change: 0 additions & 1 deletion trunk/arch/um/drivers/port_kern.c
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,6 @@ int port_wait(void *data)
* connection. Then we loop here throwing out failed
* connections until a good one is found.
*/
free_irq_by_irq_and_dev(TELNETD_IRQ, conn);
free_irq(TELNETD_IRQ, conn);

if(conn->fd >= 0) break;
Expand Down
1 change: 0 additions & 1 deletion trunk/arch/um/drivers/xterm_kern.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,6 @@ int xterm_fd(int socket, int *pid_out)
* isn't set) this will hang... */
wait_for_completion(&data->ready);

free_irq_by_irq_and_dev(XTERM_IRQ, data);
free_irq(XTERM_IRQ, data);

ret = data->new_fd;
Expand Down
11 changes: 7 additions & 4 deletions trunk/arch/um/kernel/irq.c
Original file line number Diff line number Diff line change
Expand Up @@ -124,14 +124,16 @@ void irq_unlock(unsigned long flags)
spin_unlock_irqrestore(&irq_spinlock, flags);
}

/* presently hw_interrupt_type must define (startup || enable) &&
* disable && end */
/* hw_interrupt_type must define (startup || enable) &&
* (shutdown || disable) && end */
static void dummy(unsigned int irq)
{
}

static struct hw_interrupt_type SIGIO_irq_type = {
/* This is used for everything else than the timer. */
static struct hw_interrupt_type normal_irq_type = {
.typename = "SIGIO",
.release = free_irq_by_irq_and_dev,
.disable = dummy,
.enable = dummy,
.ack = dummy,
Expand All @@ -140,6 +142,7 @@ static struct hw_interrupt_type SIGIO_irq_type = {

static struct hw_interrupt_type SIGVTALRM_irq_type = {
.typename = "SIGVTALRM",
.release = free_irq_by_irq_and_dev,
.shutdown = dummy, /* never called */
.disable = dummy,
.enable = dummy,
Expand All @@ -160,7 +163,7 @@ void __init init_IRQ(void)
irq_desc[i].status = IRQ_DISABLED;
irq_desc[i].action = NULL;
irq_desc[i].depth = 1;
irq_desc[i].handler = &SIGIO_irq_type;
irq_desc[i].handler = &normal_irq_type;
enable_irq(i);
}
}
Expand Down
2 changes: 0 additions & 2 deletions trunk/arch/um/kernel/irq_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -85,8 +85,6 @@ void sigio_handler(int sig, union uml_pt_regs *regs)
next = irq_fd->next;
if(irq_fd->freed){
free_irq(irq_fd->irq, irq_fd->id);
free_irq_by_irq_and_dev(irq_fd->irq,
irq_fd->id);
}
}
}
Expand Down
1 change: 1 addition & 0 deletions trunk/include/linux/irq.h
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ struct hw_interrupt_type {
void (*ack)(unsigned int irq);
void (*end)(unsigned int irq);
void (*set_affinity)(unsigned int irq, cpumask_t dest);
void (*release)(unsigned int irq, void *dev_id);
};

typedef struct hw_interrupt_type hw_irq_controller;
Expand Down
4 changes: 4 additions & 0 deletions trunk/kernel/irq/manage.c
Original file line number Diff line number Diff line change
Expand Up @@ -255,6 +255,10 @@ void free_irq(unsigned int irq, void *dev_id)

/* Found it - now remove it from the list of entries */
*pp = action->next;

if (desc->handler->release)
desc->handler->release(irq, dev_id);

if (!desc->action) {
desc->status |= IRQ_DISABLED;
if (desc->handler->shutdown)
Expand Down

0 comments on commit 96bf054

Please sign in to comment.