当前位置:   article > 正文

/proc/interrupts

/proc/interrupts

/proc/interrupts中的字段依次是逻辑中断号、中断在各CPU上发生的次数,中断所属父设备名称、硬件中断号、中断触发方式(电平或边沿)、中断名称
/proc/interrupts的具体实现查看代码kernel/irq/proc.c中函数show_interrupts
在这里插入图片描述

添加一个中断函数后/proc/interrupts的变化

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/kthread.h>
#include <linux/delay.h>
#include <linux/i2c.h>
#include <linux/regmap.h>
#include <linux/device.h>
#include <linux/gpio.h>
#include <linux/interrupt.h>
#include <linux/gpio/driver.h>
#include <linux/gpio/consumer.h>

int gpio_index;

static irqreturn_t handler_gpio(int irq, void *arg)
{
        printk("%s\n", __func__);

        return IRQ_HANDLED;
}

static int __init gpio_test_int_init(void)
{
        int irq;
        int ret;

        /* gpio 504 correspond to P0_4/EXP_IO2 of PCA6416 */
        gpio_index = 504;
        if(gpio_is_valid(gpio_index)) {
                ret = gpio_request_one(gpio_index, GPIOF_DIR_IN, "tca6416");
                if (ret) {
                        printk("gpio_request for %d fail\n", gpio_index);
                        return -EIO;
                }

                irq = gpio_to_irq(gpio_index);
                printk("irq is %d\n", irq);

                ret = request_any_context_irq(irq, handler_gpio,
                        IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING | IRQF_SHARED,
                        "gpio_x", &gpio_index);
                if (ret < 0) {
                        printk("request_irq for %d fail, ret=%d\n", irq, ret);
                        goto err;
                }
        } else {
                printk("gpio %d is not valid, do nothing\n", gpio_index);
        }

        printk("%s ok\n", __func__);
        return 0;

err:
        gpio_free(gpio_index);
        return -1;
}

static void __exit gpio_test_int_exit(void)
{
        int irq = gpio_to_irq(gpio_index);

        free_irq(irq, &gpio_index);
        gpio_free(gpio_index);

        printk("%s\n", __func__);
}
module_init(gpio_test_int_init);
module_exit(gpio_test_int_exit);
MODULE_AUTHOR("Frank Wang <lei.wang_15@nxp.com>");
MODULE_DESCRIPTION("pca6416 gpio test driver");
MODULE_LICENSE("GPL v2");
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/224979?site
推荐阅读
相关标签
  

闽ICP备14008679号