当前位置: 首页 > news >正文

asp.net 网站提速wordpress百度推荐

asp.net 网站提速,wordpress百度推荐,基础建设图片,制作网站的后台中断上下部 软中断、tasklet、工作对列 软中断优点:运行在软中断上下文,优先级比普通进程高,调度速度快。 缺点:由于处于中断上下文,所以不能睡眠。 相对于软中断/tasklet,工作对列运行在进程上下文 h…

中断上下部

软中断、tasklet、工作对列

软中断优点:运行在软中断上下文,优先级比普通进程高,调度速度快。

缺点:由于处于中断上下文,所以不能睡眠。

相对于软中断/tasklet,工作对列运行在进程上下文

https://blog.csdn.net/jsn_ze/article/details/50740002

https://blog.csdn.net/jsn_ze/article/details/50740058

tasklet

https://blog.csdn.net/lovemengx/article/details/125947279

// kernel\linux-5.10\include\interrupt.h
static inline void tasklet_schedule(struct tasklet_struct *t)
{if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))__tasklet_schedule(t);
}// kernel\linux-5.10\kernel\softirq.c
void __tasklet_schedule(struct tasklet_struct *t)
{__tasklet_schedule_common(t, &tasklet_vec,TASKLET_SOFTIRQ);
}static void __tasklet_schedule_common(struct tasklet_struct *t,struct tasklet_head __percpu *headp,unsigned int softirq_nr)
{struct tasklet_head *head;unsigned long flags;local_irq_save(flags);head = this_cpu_ptr(headp);	// 将指定的 tasklet 加入到链表内并设置软中断t->next = NULL;*head->tail = t;head->tail = &(t->next);raise_softirq_irqoff(softirq_nr);local_irq_restore(flags);
}

irq_work

中断上下文执行回调函数的机制,使能该功能需要开启CONFIG_IRQ_WORK。主要逻辑是先通过enqueue work(NMI save的),然后触发一个IPI中断,然后在IPI中断中执行enqueue的work func。其它路径下也有调用回调函数,比如offline cpu、进入idle等。

[Linux内核机制—irq_work](https://www.cnblogs.com/hellokitty2/p/16414217.html#top)

开关中断

1. 关中断

可以通过下面两个函数中的其中任何一个 关闭当前处理器上的所有中断处理, 这两个函数定义在

void local_irq_save(unsigned long flags);
void local_irq_disable(void);

local_irq_save 的调用把当前的中断状态(开或关)保存到flags中,然后禁用当前处理器上的中断。注意, flags 被直接传递, 而不是通过指针来传递,这是由于 local_irq_save被实现为宏 。

local_irq_disable 不保存状态而关闭本地处理器上的中断发送; 只有我们知道中断并未在其他地方被禁用的情况下,才能使用这个版本。

2. 开中断

可通过如下函数打开中断:

void local_irq_restore(unsigned long flags);
void local_irq_enable(void);

local_irq_restore将 保存的flags状态值恢复(即 local_irq_save的入参flag ), 恢复之前的状态(开或关)。

local_irq_enable则无条件打开中断。

在一个关闭中断的环境中调用 local_irq_disable和 local_irq_enable后会破坏之前的中断响应状态。尽管调用 local_irq_disable前是关中断的环境,但是在调用 local_irq_enable后却变成开中断,这显然不是我们希望的 。

调用 local_irq_restore后不一定会开启中断,只会恢复调用 local_irq_save之前的中断状态,如果调用 local_irq_save之前是开中断,那么就打开中断; 如果调用 local_irq_save之前是关中断,那么就关闭中断。

所以 local_irq_save local_irq_restore会更安全。

没有方法全局禁用整个系统的所有中断。 内核开发者认为关闭所有中断的代价太高,因此没有必要提供这个能力。

3. 屏蔽/使能单个中断号

屏蔽中断号

 void disable_irq(int irq);void disable_irq_nosync(int irq);

在全局范围内屏蔽某一个中断号(irq num)。该irq num对应的irq handler不会在任何一个CPU上执行。这个操作是通过设置中断控制器中的寄存器来对指定中断进行屏蔽,而其他未屏蔽的中断依然可以正常送往CPU。

disable_irq 关闭中断并等待中断处理完后返回,会有发生阻塞的可能,因此在中断上半部不能使用disable_irq; 而disable_irq_nosync关闭中断后立即返回,不会发生阻塞。

使能中断号

 void enable_irq(int irq);
static DECLARE_DELAYED_WORK(work, do_softint);
static void do_softint(struct work_struct *work)
{......if (touched) {input_report_key(hp680_ts_dev, BTN_TOUCH, 1);input_report_abs(hp680_ts_dev, ABS_X, absx);input_report_abs(hp680_ts_dev, ABS_Y, absy);} else {input_report_key(hp680_ts_dev, BTN_TOUCH, 0);}input_sync(hp680_ts_dev);enable_irq(HP680_TS_IRQ);
}static irqreturn_t hp680_ts_interrupt(int irq, void *dev)
{disable_irq_nosync(irq);schedule_delayed_work(&work, HZ / 20);return IRQ_HANDLED;
}
http://www.yayakq.cn/news/361079/

相关文章:

  • 我想加盟个代理记账公司seo网站推广多少钱
  • 微信怎么做链接网站服务营销策略
  • 网站如何进行内外营销运营wordpress 分类目录id
  • 怎么做商务网站的架构重庆建筑公司100强
  • 宁波网站推广平台效果好医药公司网站备案
  • 成都私人视频网站制作平台wordpress企业能用吗
  • 自己建设的网站怎么上传图片热搜榜百度一下你就知道
  • wordpress啦珠海网站建设优化推广
  • 昆明网站排名优化费用什么是网站优化
  • 珠海网站开发维护科技公司举例描述该如何布局网站关键词
  • 网站开发公司 杭州职业教育网站建设方案
  • 网站建设地图怎么设置wordpress 侧边栏菜单
  • 网站架构师培训西宁网络信息 网站建设
  • 网站后台管理界面代码开发者助手app
  • 杭州装饰网站建设方案建设官方网站需要那些人员
  • 哪个网站可以做结婚证上海网站建设q479185700棒
  • 怎么制作网站详细流程投放广告赚钱平台有哪些
  • 本网站正在建设图片seo网站建设 刘贺稳营销专家a
  • 建设银行网站支付限额怎么办施工企业汛期工作实施方案
  • 网站优化网站开发的实施方案
  • 免费制作封面的网站如何选择编程培训机构
  • 推广网站有效的方法网站建设远洋国际
  • c网站制作百度做网站为什么上阿里云备案
  • 视频变成网站怎么做做类似慕课网的网站要多少钱
  • 网站 视觉上网站开发对算法有要求么
  • 南昌微网站建设qq创号申请注册网站
  • 横岗做网站企业查询免费网站
  • 建网站公司 深圳网站的关键词挖掘方式
  • 瓯北网站制作公司seo服务的三种方式
  • 济南公司网站建设公司哪家好市场营销案例分析