函数逻辑报告

Linux Kernel (v4.4)

Source File:kernel\irq\manage.c Create Date:2016-01-14 19:06:21
Last Modify:2016-01-11 07:01:32 Copyright©Brick
首页 函数Tree
注解内核English

函数名称:__setup_irq

函数原型:static int __setup_irq(unsigned int irq, struct irq_desc *desc, struct irqaction *new)

返回类型:static int

函数参数:

类型 参数名称备注
unsigned int irq中断号
struct irq_desc * desc中断描述
struct irqaction * new新中断线描述

功能描述:注册中断

1107  thread_mask等于0
1108  shared等于0
1111  如果非中断描述则返回负无效的函数自变量
1114  如果中断控制器信息恒等于无中断控制器实例的地址则返回负无效的系统调用号
1116  如果非判断模块是否处于活动状态则返回负无此设备
1119  中断号等于中断号
1125  线程是嵌套中断类型
1126  如果线程是嵌套中断类型的结果
1127  如果非线程中断处理器
1128  ret等于负无效的函数自变量
1129  跳转到out_mput
1136  中断处理函数等于嵌套线程中断的主处理程序
1137  否则
1138  如果中断可以线程化
1140  如果中断线程化的结果则跳转到out_mput
1150  如果线程中断处理器且非线程是嵌套中断类型的结果
1151  setup_irq_thread(新中断线描述, 中断号, false)
1152  如果setup_irq_thread(新中断线描述, 中断号, false)的结果则跳转到out_mput
1161  如果非分配CPU掩码
1162  setup_irq_thread( pointer to secondary irqaction(force threading), 中断号, true)的结果等于负内存溢出
1163  跳转到out_thread
1175  如果芯片专用标志按位与一次不需要掩码中断动作标志等于与硬件中断处理完后触发的反
1181  保存中断状态、禁止中断并上锁
1182  old_ptr等于中断服务例程链表的地址
1183  old等于*old_ptr
1184  如果old
1194  如果非中断动作标志按位与中断动作标志按位与共享中断的值或中断动作标志按位异或中断动作标志的值按位与触发中断(高/低电平/上升/下降沿)中断动作标志按位异或中断动作标志的值按位与硬件中断处理完后触发则跳转到mismatch
1199  如果中断动作标志按位与CPU周期中断的值不等于中断动作标志按位与CPU周期中断的值则跳转到mismatch
1203  循环
1210  old_ptr等于下一个共享中断的地址
1211  old等于*old_ptr
1212 old循环
1213  shared等于1
1221  如果中断动作标志按位与硬件中断处理完后触发
1226  如果thread_mask恒等于0UL的反则
1227  ret等于负设备或资源忙
1228  跳转到out_mask
1250  线程跟踪屏蔽等于1左移在字中找到第一个为零的位
1253  否则如果中断处理函数恒等于线程中断的默认主中断处理程序且非芯片专用标志按位与一次不需要掩码的值则
1270  打印错误信息
1271  ret等于负无效的函数自变量
1272  跳转到out_mask
1275  如果非shared
1276  取中断处理程序
1280  跳转到out_mask
1283  初始化等待队列头
1295  核心内部状态信息等于与中断线用来进行硬件设备探测按位或由于产生了欺骗性中断,中断线被禁止按位或直到线程函数执行完毕才会开启该中断按位或硬件设备探测状态的值的反
1296  清除中断标志
1298  如果中断动作标志按位与CPU周期中断
1303  如果中断动作标志按位与硬件中断处理完后触发核心内部状态信息等于或直到线程函数执行完毕才会开启该中断
1306  如果中断能够被设置启动中断处理
1308  否则嵌套级数等于1
1313  如果中断动作标志按位与复位中断
1319  设置CPU操作掩码
1321  否则如果中断动作标志按位与触发中断(高/低电平/上升/下降沿)
1322  nmsk等于中断动作标志按位与触发中断(高/低电平/上升/下降沿)
1323  取中断触发方式
1325  如果nmsk不等于取中断触发方式的结果打印警告信息
1331  *old_ptr等于新中断线描述
1333  安装实例
1336  发生的中断次数等于0
1337  无法处理中断次数等于0
1343  如果shared核心内部状态信息按位与由于产生了欺骗性中断,中断线被禁止
1344  核心内部状态信息等于与由于产生了欺骗性中断,中断线被禁止的反
1345  嵌套深度为1时使能中断
1348  开中断并解锁
1354  如果中断线程唤醒中断线程
1356  如果 pointer to secondary irqaction(force threading)唤醒中断线程
1359  在系统文件中注册中断进程
1360  入口埠等于NULL
1361  在系统文件中注册新建中断进程
1362  释放CPU掩码
1364  返回0
1366  mismatch
1367  如果非中断动作标志按位与探测共享中断的值则
1369  打印错误信息
1374  设置中断触发方式的结果等于负设备或资源忙
1376  out_mask
1377  开中断并解锁
1378  释放CPU掩码
1380  out_thread
1381  如果中断线程
1382  *t等于中断线程
1384  中断线程等于NULL
1385  结束线程的运行
1386  put_task_struct(t)
1388  如果 pointer to secondary irqaction(force threading)中断线程
1389  *t等于中断线程
1391  中断线程等于NULL
1392  结束线程的运行
1393  put_task_struct(t)
1395  out_mput
1396  module_put(中断描述符)
1397  返回ret
调用函数
函数名称功能描述
setup_irq注册中断
request_threaded_irq注册中断线程
setup_percpu_irq setup a per-cpu interrupt
request_percpu_irq allocate a percpu interrupt line