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

网站交互方式望野原文

网站交互方式,望野原文,摄影师个人网站制作,wordpress移除编辑器区块这部分对应的是第七章和第十一章#xff0c;因为内容也不是很多#xff0c;就一起写了。里面的内容基本上就是一个个的点#xff0c;所以也就一个个点简单总结一下。 1 数据类型 1.1 数据长度 不同操作系统类型长度可能不一样#xff0c;看图的话最好用u8#xff0c;u16因为内容也不是很多就一起写了。里面的内容基本上就是一个个的点所以也就一个个点简单总结一下。 1 数据类型 1.1 数据长度 不同操作系统类型长度可能不一样看图的话最好用u8u16u32u64。 内存页最好使用PAGE_SIZE而不要使用4K因为很多平台可能不是4K。 1.2 字节序大小端 这个在网络编程涉及到也很多用的时候查一下就知道了。 1.3 数据对齐 书里面说的是最后加一个__attribute__ ((packed)) scsi;这个是取消对齐不过我记得在一般常用的时候都是手动指定对齐 struct BitFieldStruct {unsigned int a : 4; // 占用 4 位unsigned int b : 3; // 占用 3 位unsigned int c : 1; // 占用 1 位 }; 具体用的时候再看吧。。 1.4 判断指针 不要用NULL用ERR_PTRIS_ERRPTR_ERR。 1.5 链表 这个不用自己搞用内核里面的linux/list.h 2 定时器 内核通过定时器中断来跟踪时间的流动大部分平台运行在 100 或者 1000 中断每秒; 流行的 x86 PC 缺省是 1000。 2.1 定时器 一般用的是 jiffies定时器是在linux/jiffies.h。用法就不多写了要用的时候搜一下或者GPT答案都很标准。 高进度的定时器可以用TSC例子是 unsigned long ini, end; rdtscl(ini); rdtscl(end); printk(time lapse: %li\n, end - ini); 两者的区别 特性TSC 定时器jiffies 定时器依赖硬件依赖 CPU 硬件支持不依赖硬件完全由内核实现精度纳秒级毫秒级性能非常高效开销较小但需依赖时钟中断多核一致性可能存在问题无多核一致性问题功耗较高高频访问可能增加功耗较低只在时钟中断时更新时间跨度通常不适合长时间跨度可用于长时间跨度只需考虑溢出典型场景高精度时间戳性能测量延迟计算调度、内核延迟、一般计时需求 2.2 当前时间 获取当前时间时间戳这些和应用层好像差不多就不多说了。 延迟在应用层基本上就是一个sleep打天下。在内核好像东西多了不少。 long wait_event_interruptible_timeout(wait_queue_head_t *q, condition, signed long timeout);这个是用在条件变量。 signed long schedule_timeout(signed long timeout);这个会让当前任务进行休眠但是会被唤醒比如信号量。 例子 #include linux/jiffies.h #include linux/sched.h #include linux/delay.hvoid example_function(void) {long timeout msecs_to_jiffies(100); // 将100毫秒转换为jiffiesset_current_state(TASK_INTERRUPTIBLE); // 设置当前任务状态为可中断睡眠schedule_timeout(timeout); // 让当前任务睡眠指定的时间 } ndelayudelaymdelay。这几个都是让CPU空转会占用很多CPU资源。所以只能用在短时间。 msleep。基于调度器调度不会占用太多CPU资源。 2.3 内核定时器 定义是在linux/timer.h让内核在指定时间后执行某个任务某个事件或函数。通过timer_list结构使用 init_timer() 或 timer_setup() 初始化定时器。 使用 add_timer() 启动定时器。 使用 del_timer() 删除定时器。 例子 void setup_my_timer(void) {timer_setup(my_timer, my_timer_callback, 0);my_timer.expires jiffies msecs_to_jiffies(1000); // 设置定时1秒add_timer(my_timer); } 2.4 Tasklets机制 Tasklets 是 Linux 内核中一种轻量级的底半部Bottom Half机制专门用于在软中断SoftIRQ上下文中执行延迟处理任务。它可以延迟执行某些非时间敏感的任务而不会阻塞中断处理程序Top Half。 这里有一个例子 #include linux/module.h #include linux/kernel.h #include linux/interrupt.hMODULE_LICENSE(GPL); MODULE_AUTHOR(Your Name); MODULE_DESCRIPTION(Simple Tasklet Example);// Tasklet 函数 void my_tasklet_func(unsigned long data) {printk(KERN_INFO Tasklet executed! Data: %lu\n, data); }// 定义 Tasklet初始化时指定执行函数和参数 DECLARE_TASKLET(my_tasklet, my_tasklet_func, 42);// 模块加载时调用 static int __init tasklet_example_init(void) {printk(KERN_INFO Tasklet example module loaded.\n);// 调度 Tasklettasklet_schedule(my_tasklet);printk(KERN_INFO Tasklet scheduled.\n);return 0; }// 模块卸载时调用 static void __exit tasklet_example_exit(void) {// 确保 Tasklet 在卸载前被销毁tasklet_kill(my_tasklet);printk(KERN_INFO Tasklet example module unloaded.\n); }module_init(tasklet_example_init); module_exit(tasklet_example_exit);运行结果如下 [553563.141606] Tasklet example module loaded. //insmod [553563.141615] Tasklet scheduled. [553563.141618] Tasklet executed with data: 42 [553595.066381] Tasklet example module unloaded. //rmmod 看看代码就基本明白tasklet其实就是将任务提交给CPU调度。比如说收到一个网络包中断处理中收到包之后还有繁琐的解包操作如果还是占用中断会阻塞其它任务。这个是可以调用tasklet来处理不用全部占用CPU提高系统整体性能。 这样中断的前半部分就是硬中断后半部分就是软中断tasklet这些。 例子 irqreturn_t my_interrupt_handler(int irq, void *dev_id) {// 检查中断源是否来自预期设备if (check_device_irq(irq)) {// 读取设备状态寄存器unsigned int status read_device_status();// 清除中断标志clear_device_irq(irq);// 做一些简单的处理如将数据从设备缓冲区拷贝到内存的临时位置copy_data_from_device();// 触发中断下半部处理schedule_delayed_work(my_work, msecs_to_jiffies(10));return IRQ_HANDLED;}return IRQ_NONE; } 2.5 工作队列 在#include linux/workqueue.h中。create_workqueuecreate_singlethread_workqueueDECLARE_WORKINIT_WORKPREPARE_WORK。。。 说实话之前也没用过这个查了一下本质上就是优先级更低的tasklet可以被内核调度适用于耗时更长可以阻塞的任务。不过貌似现在要被kthread替代了。 最后之前知乎看到一篇写定时器的写的哇塞C/C中如何稳定地每隔5ms执行某个函数
http://www.dnsts.com.cn/news/149462.html

相关文章:

  • 企业网站建设对网络营销的影响主要表现在( )搭建房子流程
  • 成都网站制作成都seo排名课程咨询电话
  • 营销型网站建设设计服务网站后台怎么做超链接
  • 书籍教你如何做网站外贸相关岗位人才招聘启事
  • 可以免费做试卷题目的网站怎么提高自己网站的知名度
  • 深圳做小程序网站设计武穴建设网站
  • 深圳住房和建设局网站 宝安wordpress的结构
  • 仿网站教程搜索引擎作弊的网站有哪些
  • 四川建设人员数据网站中国能源建设集团有限公司总部
  • 备案 网站 漏接 电话旅游网站建设的背景
  • 做店标 做店招的网站桂林漓江景区游玩攻略
  • 做团建活动网站公众号创建好了怎么在微信里搜索
  • 苏州建设网站公司在什么地方网络舆情监测适合女生嘛
  • 服务器维护公告seo推广系统
  • 安徽科技网站建设企业网站的建设目的包含什么
  • 晋江做网站的公司哪家好南通外贸建站
  • 宿迁网站建设托管深入解析wordpress二手
  • 免费企业建站系统源码佛山网页开发
  • 用人名做网站域名wordpress 图集功能
  • 提供资料下载的网站如何建设网站建设重点
  • 网站建设需要洽谈什么专业的seo搜索引擎优化培训
  • 网站建设开发教程护肤品网络推广方案
  • 药监局网站建设方案wordpress能做社交
  • 什么建站程序好收录江苏建设行业证书编号查询网站
  • 西安搬家公司联系电话大连seo交流群
  • 网站原图怎么做淘宝客网站主题
  • 网站留言板怎么做php上海网站 牛巨微网络科技seo公司
  • 湘潭做网站价格 磐石网络seo专员简历
  • js实现网站简体转繁体徐州城乡建设网站
  • 专业做视频的网站有哪些免费简单网页制作成品