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

建一个购物网站要多少钱成都包装设计公司

建一个购物网站要多少钱,成都包装设计公司,开发公司没有资质有什么影响,怎样上百度做广告一、tasklet_disable_nosync(...) 该函数主要功能为增加tasklet_struct结构体变量中的count字段的值,此结构体描述的软中断不能被调度执行,使其处于睡眠状态。具体Linux内核源码设计如下: 【代码案例】 taskletdisablenosynctest.c #includ…

一、tasklet_disable_nosync(...)

        该函数主要功能为增加tasklet_struct结构体变量中的count字段的值,此结构体描述的软中断不能被调度执行,使其处于睡眠状态。具体Linux内核源码设计如下:

 

【代码案例】

taskletdisablenosynctest.c

#include <linux/module.h>
#include <linux/init.h>
#include <linux/interrupt.h>static struct tasklet_struct tl;
static unsigned long data = 0;// 自定义中断处理函数
static void irqtask_actionfunc(unsigned long data){printk("调用自定义中断处理函数:irqtask_actionfunc(...)函数.\n");printk("data : %ld\n",data);printk("打印输出:OK.\n");printk("退出自定义中断处理函数:irqtask_actionfunc(...)函数.\n");
}static int __init taskletdisablenosync_initfunc(void){printk("调用内核模块函数:taskletdisablenosync_initfunc(...)函数.\n");tasklet_init(&tl,irqtask_actionfunc,data);tasklet_schedule(&tl); // 将软中断加入到等待队列,等待调度执行处理printk("调用tasklet_disable_nosync(...)函数之前 count成员值为:%d\n", atomic_read(&tl.count));tasklet_disable_nosync(&tl);if(atomic_read(&tl.count) != 0) // 测试当前的count成员值printk("tasklet is disable(禁用).\n");printk("调用tasklet_disable_nosync(...)函数之后 count成员值为:%d\n", atomic_read(&tl.count));tasklet_enable(&tl); if(atomic_read(&tl.count) == 0)printk("tasklet is enable(启用).\n");printk("tasklet count成员值为:%d\n", atomic_read(&tl.count));tasklet_kill(&tl); // 等待软中断的执行结束printk("退出内核模块函数:taskletdisablenosync_initfunc(...)函数.\n");return 0;
}static void __exit taskletdisablenosync_exitfunc(void){printk("正常退出内核:tasklet_disable_nosync(...)函数.\n");
}MODULE_LICENSE("GPL");
module_init(taskletdisablenosync_initfunc);
module_exit(taskletdisablenosync_exitfunc);

Makefile

#!/bin/bashccflags_y += -O2ifneq ($(KERNELRELEASE),)
obj-m := taskletdisablenosynctest.o
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)default:$(MAKE) -C $(KERNELDIR) M=$(PWD) modules 
endifclean:rm -rf *.o *.ko *.mod.cdepend .depend dep:$(CC)  -M *.c > .depend 

编译插入卸载

二、 tasklet_disable

        该函数的主要功能是增加软中断描述符的count成员的值,让软中断处于睡眠状态(不能响应对应的中断)。具体Linux源码设计如下:

         该函数会暂时禁止给定的tasklet被tasklet_schedule调度,知道这个tasklet被再次enable。若这个tasklet正在当前执行,这个函数忙等到这个tasklet退出。

tasklet_disable

  • 当前正在运行的 tasklet:当调用 tasklet_disable 时,如果指定的 tasklet 正在某个 CPU 上运行,该函数会进入忙等待状态,直到这个 tasklet 执行完毕。它无法立即终止当前正在运行的 tasklet,只能等待其自然结束。
  • 后续 tasklet 的运行:在等待当前运行的 tasklet 结束后,tasklet_disable 会将该 tasklet 标记为禁用状态。此后,即使有其他事件触发该 tasklet 调度,它也不会再被执行,直到调用 tasklet_enable 重新启用它。

tasklet_disable_nosync

  • 当前正在运行的 tasklettasklet_disable_nosync 不会等待当前正在运行的 tasklet 结束。也就是说,当调用该函数时,如果指定的 tasklet 正在执行,它会继续执行完,tasklet_disable_nosync 不会进行任何等待操作。
  • 后续 tasklet 的运行:调用 tasklet_disable_nosync 后,该 tasklet 会被标记为禁用状态,后续不会再被调度执行,直到调用 tasklet_enable 重新启用它。

        综上所述,这两个函数都不能直接禁止当前正在运行的 tasklettasklet_disable 会等待当前运行的 tasklet 结束后再禁用后续执行,而 tasklet_disable_nosync 则直接禁用后续执行,不等待当前运行的 tasklet 结束。

【代码案例】

 taskletdisabletest.c

#include <linux/module.h>
#include <linux/init.h>
#include <linux/interrupt.h>static struct tasklet_struct tl;
static unsigned long data = 0;static void irqtasklet_actionfunc(unsigned long data){printk("data : %ld\n",data);printk("调用自定义中断函数:irqtasklet_actionfunc(...)函数.\n");
}static int __init taskletdisalbe_initfunc(void){tasklet_init(&tl,irqtasklet_actionfunc,data);tasklet_schedule(&tl);printk("调用内核模块函数:taskletdisalbe_initfunc(...)函数.\n");printk("输出调用tasklet_disable之前的count成员的值为:%d\n",atomic_read(&tl.count));tasklet_disable(&tl); // 调用此函数使tasklet对应的处理函数不能执行if(atomic_read(&tl.count)!=0)printk("tasklet is disabled.\n");printk("输出调用tasklet_disable之后的count成员的值为:%d\n",atomic_read(&tl.count));tasklet_enable(&tl); // 调用此函数使tasklet启用if(atomic_read(&tl.count)==0)printk("tasklet is enabled.\n");printk("调用tasklet_enable函数之后tasklet的count成员值为:%d\n",atomic_read(&tl.count));tasklet_kill(&tl);printk("退出内核模块函数:taskletdisalbe_initfunc(...)函数.\n");return 0;
}static void __exit taskletdisalbe_exitfunc(void){printk("正常退出内核:tasklet_disable(...)函数.\n");
}MODULE_LICENSE("GPL");module_init(taskletdisalbe_initfunc);
module_exit(taskletdisalbe_exitfunc);

Makefile

#!/bin/bashccflags_y += -O2ifneq ($(KERNELRELEASE),)
obj-m := taskletdisabletest.o
else
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)default:$(MAKE) -C $(KERNELDIR) M=$(PWD) modules 
endifclean:rm -rf *.o *.ko *.mod.cdepend .depend dep:$(CC)  -M *.c > .depend 

编译插入卸载

 

https://github.com/0voice

http://www.dtcms.com/wzjs/572757.html

相关文章:

  • 苏州知名网站制作西安做网站报价
  • 网站登录记录怎么删除周口网络推广哪家好
  • 网站程序代码昆明网站建站
  • 连锁连锁酒店网站建设方案响应式网站 哪些
  • 网站安装php020网站开发多少钱
  • 做网站放广告赚钱网站优化查询代码
  • excel动态表格图表制作优化设计六年级上册语文答案
  • 佛山专业网站建设哪家好wordpress 免费电商主题
  • 企业网站建设一般原则青岛信息网
  • 凡科建站免费dede视频网站源码
  • 网站首页如何做浮动窗口众筹网站建设报价
  • 企业网站建设收费标准无锡网站建设培训班
  • 网站建设负责那内容上传吗注册登记
  • 信誉好的广州做网站电商网站怎么做聚合
  • 做网站报价网站上线盈利
  • 宁波城乡住房建设厅网站镇海建设交通局网站首页
  • 搜索网站排名软件上海网站开发与设
  • 无锡建设主管部门网站WordPress jwt
  • 师德师风建设网站济南公司网站推广优化最大的
  • 网站数据库购买建设银行官方网站个人系统板块
  • 网站推广方案设计郑州外贸网站建设公司价格
  • 做的最好的门户网站旅游网站建设设计公司
  • 福建网站建设科技有限公司站长seo软件
  • 司法行政网站建设目的凡科网站产品导航怎么做
  • 怎么建立自己网站视频做机械一般做那个外贸网站
  • 一级a做爰片免费的网站有吗电子商务网站建设的试卷
  • 外卖网站那家做的好别人买了域名做违法网站
  • 项目网站建设应入哪个科目直播系统开发公司
  • 在本地做改版如何替换旧网站会影响百度收录吗响应式网站 尺寸
  • 网站推广软文欣赏网站群建设座谈会