博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
中断API之irq_set_chip
阅读量:4214 次
发布时间:2019-05-26

本文共 1205 字,大约阅读时间需要 4 分钟。

int irq_set_chip(unsigned int irq, struct irq_chip *chip)为形参的irq设置对应的irq_chip其使用的例程如下:void irq_remove_generic_chip(struct irq_chip_generic *gc, u32 msk,			     unsigned int clr, unsigned int set){	unsigned int i = gc->irq_base;	raw_spin_lock(&gc_lock);	list_del(&gc->list);	raw_spin_unlock(&gc_lock);	for (; msk; msk >>= 1, i++) {		if (!(msk & 0x01))			continue;		/* Remove handler first. That will mask the irq line */		irq_set_handler(i, NULL);		irq_set_chip(i, &no_irq_chip);		irq_set_chip_data(i, NULL);		irq_modify_status(i, clr, set);	}}其源码分析如下:int irq_set_chip(unsigned int irq, struct irq_chip *chip){	unsigned long flags;	#根据中断号得到中断描述符	struct irq_desc *desc = irq_get_desc_lock(irq, &flags, 0);	#中断描述符为null,则退出	if (!desc)		return -EINVAL;	#要设置的形参chip为null的话,则设置为no_irq_chip	if (!chip)		chip = &no_irq_chip;	#更新中断描述符的irq_data.chip,从这里看到irq_set_chip 可以被反复调用,新值会覆盖旧值	desc->irq_data.chip = chip;	irq_put_desc_unlock(desc, flags);	/*	 * For !CONFIG_SPARSE_IRQ make the irq show up in	 * allocated_irqs.	 */	 #在allocated_irqs中设置irq对应的bit	irq_mark_irq(irq);	return 0;}void irq_mark_irq(unsigned int irq){	mutex_lock(&sparse_irq_lock);	bitmap_set(allocated_irqs, irq, 1);	mutex_unlock(&sparse_irq_lock);}

转载地址:http://kgjmi.baihongyu.com/

你可能感兴趣的文章
Conclusion for Resource Management
查看>>
Conclusion for Constructors,Destructors,and Assignment Operators
查看>>
Conclusion for Accustoming Yourself to C++
查看>>
面试题1:赋值运算函数(offer)
查看>>
Mark : MessagePack简介及使用
查看>>
Mark : Hadoop Raid-实战经验总结
查看>>
Structured Streaming 实现思路与实现概述
查看>>
Apache Spark 2.2.0 中文文档 - Structured Streaming 编程指南 | ApacheCN
查看>>
Mark:大数据最佳学习路线
查看>>
Spark 多线程模型
查看>>
编程第一性原则
查看>>
Mark : SpringBoot核心-非关系型数据库NoSQL
查看>>
Mark : hive文件存储格式
查看>>
mark : hadoop 四种压缩格式
查看>>
Mark : hive snappy的数据是否支持split的测试
查看>>
Hadoop 压缩格式
查看>>
Mark : Spark Streaming vs. Kafka Stream 哪个更适合你
查看>>
Mark : spark streaming去重
查看>>
Mark : RCFile和ORCFile
查看>>
Linux学习之/etc/init.d/functions详解
查看>>