コード例 #1
0
/*===========================================================================*
 *				irqtab_dmp				     *
 *===========================================================================*/
PUBLIC void irqtab_dmp()
{
  int i,r;
  struct irq_hook irq_hooks[NR_IRQ_HOOKS];
  int irq_actids[NR_IRQ_VECTORS];
  struct irq_hook *e;	/* irq tab entry */
  char *irq[] = {
  	"clock",	/* 00 */
  	"keyboard",	/* 01 */
  	"cascade",	/* 02 */
  	"rs232",	/* 03 */
  	"rs232",	/* 04 */
  	"NIC(eth)",	/* 05 */
  	"floppy",	/* 06 */
  	"printer",	/* 07 */
  	"",	/* 08 */
  	"",	/* 09 */
  	"",	/* 10 */
  	"",	/* 11 */
  	"",	/* 12 */
  	"",	/* 13 */
  	"at_wini_0",	/* 14 */
  	"at_wini_1",	/* 15 */
  };

  if ((r = sys_getirqhooks(irq_hooks)) != OK) {
      report("IS","warning: couldn't get copy of irq hooks", r);
      return;
  }
  if ((r = sys_getirqactids(irq_actids)) != OK) {
      report("IS","warning: couldn't get copy of irq mask", r);
      return;
  }

#if 0
  printf("irq_actids:");
  for (i= 0; i<NR_IRQ_VECTORS; i++)
	printf(" [%d] = 0x%08x", i, irq_actids[i]);
  printf("\n");
#endif

  printf("IRQ policies dump shows use of kernel's IRQ hooks.\n");
  printf("-h.id- -proc.nr- -IRQ vector (nr.)- -policy- -notify id-\n");
  for (i=0; i<NR_IRQ_HOOKS; i++) {
  	e = &irq_hooks[i];
  	printf("%3d", i);
  	if (e->proc_nr_e==NONE) {
  	    printf("    <unused>\n");
  	    continue;
  	}
  	printf("%10d  ", e->proc_nr_e); 
  	printf("    %9.9s (%02d) ", irq[e->irq], e->irq); 
  	printf("  %s", (e->policy & IRQ_REENABLE) ? "reenable" : "    -   ");
  	printf("   %d", e->notify_id);
	if (irq_actids[e->irq] & (1 << i))
		printf("masked");
	printf("\n");
  }
  printf("\n");
}
コード例 #2
0
ファイル: dmp_kernel.c プロジェクト: locosoft1986/nucleos
/*===========================================================================*
 *				irqtab_dmp				     *
 *===========================================================================*/
void irqtab_dmp()
{
  int i,r;
  struct irq_hook irq_hooks[NR_IRQ_HOOKS];
  int irq_actids[NR_IRQ_VECTORS];
  struct irq_hook *e;	/* irq tab entry */

  if ((r = sys_getirqhooks(irq_hooks)) != 0) {
      report("IS","warning: couldn't get copy of irq hooks", r);
      return;
  }
  if ((r = sys_getirqactids(irq_actids)) != 0) {
      report("IS","warning: couldn't get copy of irq mask", r);
      return;
  }

#if 0
  printk("irq_actids:");
  for (i= 0; i<NR_IRQ_VECTORS; i++)
	printk(" [%d] = 0x%08x", i, irq_actids[i]);
  printk("\n");
#endif

  printk("IRQ policies dump shows use of kernel's IRQ hooks.\n");
  printk("-h.id- -proc.nr- -irq nr- -policy- -notify id-\n");
  for (i=0; i<NR_IRQ_HOOKS; i++) {
  	e = &irq_hooks[i];
  	printk("%3d", i);
  	if (e->proc_nr_e==ENDPT_NONE) {
  	    printk("    <unused>\n");
  	    continue;
  	}
  	printk("%10d  ", e->proc_nr_e); 
  	printk("    (%02d) ", e->irq); 
  	printk("  %s", (e->policy & IRQ_REENABLE) ? "reenable" : "    -   ");
  	printk("   %d", e->notify_id);
	if (irq_actids[e->irq] & (1 << i))
		printk("masked");
	printk("\n");
  }
  printk("\n");
}