From: Andy P. <at...@us...> - 2001-08-19 10:33:00
|
Update of /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel In directory usw-pr-cvs1:/tmp/cvs-serv6028 Modified Files: interrupt.c syscall.c Log Message: place do_signal call in correct place Index: interrupt.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/interrupt.c,v retrieving revision 1.13 retrieving revision 1.14 diff -u -r1.13 -r1.14 --- interrupt.c 2001/07/31 17:28:26 1.13 +++ interrupt.c 2001/08/19 10:32:57 1.14 @@ -358,7 +358,12 @@ schedule(); goto ret_from_sys_call; } - /* Check for signals here */ + + /* check for pending signals */ + if (current->sigpending != 0) { + /* FIXME: do we need to check the IPL here (i386 does a sti here) */ + do_signal(); + } done: } @@ -633,8 +638,10 @@ struct irqvector *vector; unsigned char *inside_vec; - for (i=0; i<NR_IRQS; i++) + printk("get irq list: \n"); + for (i=0; i<NR_IRQS; i++) { + printk("\t%d: scb free %d\n",i,scb_vec_free(i)); if (!scb_vec_free(i)) { inside_vec = SCB_VECTOR(i); @@ -647,6 +654,7 @@ vector = (struct irqvector *)(inside_vec - offsetof(struct irqvector, inst_jsb)); len += sprintf(buf+len, "%4d: %8d %s\n", vector->vec_num, 0, vector->action.name); + printk("%4d: %8d %s, len %d\n", vector->vec_num, 0, vector->action.name, len); } } return len; Index: syscall.c =================================================================== RCS file: /cvsroot/linux-vax/kernel-2.4/arch/vax/kernel/syscall.c,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- syscall.c 2001/08/17 20:20:41 1.5 +++ syscall.c 2001/08/19 10:32:58 1.6 @@ -118,19 +118,6 @@ // printk("syscall %d returned %ld (0x%08lx)\n", chmk_arg, regs->r0, regs->r0); - /* now we check for softirqs ready to be run */ - /* This is the equivalent of ENTRY(ret_from_syscall) on other ports */ - if ( (softirq_active(smp_processor_id()) & softirq_mask(smp_processor_id())) !=0 ) do_softirq(); - - /* check for need_reschedule */ - if (current->need_resched !=0) schedule(); - - /* check for pending signals */ - if (current->sigpending != 0) { - /* FIXME: do we need to check the IPL here (i386 does a sti here) */ - do_signal(); - } - return; } |