Linux kernel 中断之proc接口之irq

文件proc/irq/主要是用于对每个irq进行设置和信息查看:

void init_irq_proc(void) {  unsigned int irq;  struct irq_desc *desc;

 /* create /proc/irq */  root_irq_dir = proc_mkdir("irq", NULL);  if (!root_irq_dir)   return;

 register_default_affinity_proc();

 /*   * Create entries for all existing IRQs.   */  for_each_irq_desc(irq, desc) 对系统内的所有的中断进行注册   register_irq_proc(irq, desc); }

void register_irq_proc(unsigned int irq, struct irq_desc *desc) {  static DEFINE_MUTEX(register_lock);  char name [MAX_NAMELEN];

 if (!root_irq_dir || (desc->irq_data.chip == &no_irq_chip))   return;

 /*   * irq directories are registered only when a handler is   * added, not when the descriptor is created, so multiple   * tasks might try to register at the same time.   */  mutex_lock(&register_lock);

 if (desc->dir)   goto out_unlock;

 sprintf(name, "%d", irq);

 /* create /proc/irq/1234 */  desc->dir = proc_mkdir(name, root_irq_dir);  if (!desc->dir)   goto out_unlock;

#ifdef CONFIG_SMP  /* create /proc/irq/<irq>/smp_affinity */  proc_create_data("smp_affinity", 0644, desc->dir,     &irq_affinity_proc_fops, (void *)(long)irq);

 /* create /proc/irq/<irq>/affinity_hint */  proc_create_data("affinity_hint", 0444, desc->dir,     &irq_affinity_hint_proc_fops, (void *)(long)irq);

 /* create /proc/irq/<irq>/smp_affinity_list */  proc_create_data("smp_affinity_list", 0644, desc->dir,     &irq_affinity_list_proc_fops, (void *)(long)irq);

 proc_create_data("node", 0444, desc->dir,     &irq_node_proc_fops, (void *)(long)irq); #endif

 proc_create_data("spurious", 0444, desc->dir,     &irq_spurious_proc_fops, (void *)(long)irq);

out_unlock:  mutex_unlock(&register_lock); }

:/proc/irq # ls ls 100 101 102 103 104 105 106 107 108 109 110 111 112 99

:/proc/irq/203 # ls ls affinity_hint node smp_affinity smp_affinity_list spurious

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值