湟中县公司网站建设如何快速建一个网站

web/2025/10/8 5:10:15/文章来源:
湟中县公司网站建设,如何快速建一个网站,企业宣传册模板百度云,企业国际网站建设linux内核中存在一个信号SIGIO#xff0c;这个信号就是用于实现信号驱动IO的。当应用程序中想要以信号驱动IO的模型读写硬件数据时#xff0c;首先注册一个SIGIO信号的信号处理函数,当硬件数据就绪#xff0c;硬件会发起一个中断#xff0c;在硬件的中断处理函数中向当前进…linux内核中存在一个信号SIGIO这个信号就是用于实现信号驱动IO的。当应用程序中想要以信号驱动IO的模型读写硬件数据时首先注册一个SIGIO信号的信号处理函数,当硬件数据就绪硬件会发起一个中断在硬件的中断处理函数中向当前进程发送SIGIO信号此时进程捕获到SIGIO信号执行信号处理函数在信号处理函数中将准备好的硬件数据读走. 对于应用程序主程序的执行和SIGIO信号的发送的过程是一个异步的过程信号驱动IO是唯一一种异步IO。 异步操作是指在执行操作期间不会阻塞进程或线程的操作。在驱动开发中异步操作通常是通过使用工作队列、定时器、中断处理程序等机制来实现的。 驱动代码 #include linux/init.h #include linux/module.h #includelinux/fs.h #includelinux/io.h #includelinux/device.h #includelinux/uaccess.h #includelinux/poll.h struct class *cls; struct device *dev; unsigned int major;//定义一个变量保存主设备号 char kbuf[128]{0}; struct fasync_struct *fapp;//定义一个异步对象指针 //封装操作方法 int mycdev_open(struct inode *inode, struct file *file) {printk(%s:%s:%d\n,__FILE__,__func__,__LINE__);return 0; } ssize_t mycdev_read(struct file *file, char *ubuf, size_t size, loff_t *lof) {printk(%s:%s:%d\n,__FILE__,__func__,__LINE__);if(sizesizeof(kbuf))//用户的需求内核满足不了{sizesizeof(kbuf);}long ret;retcopy_to_user(ubuf,kbuf,size);if(ret){printk(copy_to_user filed\n);return -EIO;}return 0; } ssize_t mycdev_write(struct file *file, const char *ubuf, size_t size, loff_t *lof) {printk(%s:%s:%d\n,__FILE__,__func__,__LINE__);if(sizesizeof(kbuf))//用户的需求内核满足不了{sizesizeof(kbuf);}long ret;retcopy_from_user(kbuf,ubuf,size);//表示模拟硬件数据就绪if(ret){printk(copy_from_user filed\n);return -EIO;}//发送信号kill_fasync(fapp,SIGIO,POLL_IN);return 0; } //封装fasync操作方法 int mycdev_fasync(int fd, struct file * file, int on) {//完成发生信号之前的准备工作fasync_helper(fd,file,on,fapp);return 0; } int mycdev_close(struct inode *inode, struct file *file) {printk(%s:%s:%d\n,__FILE__,__func__,__LINE__);return 0; } //定义一个操作方法结构体变量并且初始化 struct file_operations fops{.openmycdev_open,.releasemycdev_close,.readmycdev_read,.fasyncmycdev_fasync,.writemycdev_write, }; static int __init mycdev_init(void) {//注册字符设备驱动majorregister_chrdev(0,mychrdev,fops);if(major0){printk(注册字符设备驱动失败\n);return major;}printk(注册字符设备驱动成功major%d\n,major);// 向上提交目录cls class_create(THIS_MODULE, myled);if (IS_ERR(cls)){printk(向上提交目录失败\n);return -PTR_ERR(cls);}printk(向上提交目录信息成功\n);// 向上提交设备节点信息dev device_create(cls, NULL, MKDEV(major, 0), NULL, mycdev);if (IS_ERR(dev)){printk(向上提交设备节点信息失败\n);return -PTR_ERR(dev);}printk(向上提交设备节点成功\n);return 0; } static void __exit mycdev_exit(void) {// 销毁节点信息device_destroy(cls, MKDEV(major, 0));// 销毁目录信息class_destroy(cls);//注销字符设备驱动unregister_chrdev(major,mychrdev);} module_init(mycdev_init); module_exit(mycdev_exit); MODULE_LICENSE(GPL);应用程序-读数据 #include stdio.h #include sys/types.h #include sys/stat.h #include fcntl.h #include unistd.h #include stdlib.h #include string.h #include sys/wait.h #include sys/ioctl.h #include sys/select.h #include sys/epoll.h #include signal.h /* According to earlier standards */ #include sys/time.hchar buf[128] {0}; int fd; // 定义信号处理函数 void sigio_handler(int sig) {// 读取硬件数据read(fd, buf, sizeof(buf));printf(buf:%s\n, buf); } int main(int argc, char const *argv[]) {// 打开文件fd open(/dev/mycdev, O_RDWR);if (fd 0){printf(打开设备文件失败\n);exit(-1);}// 注册SIGIO的信号处理函数signal(SIGIO, sigio_handler);// 回调驱动中的fasync方法完成驱动中发生信号之前的准备工作int flags fcntl(fd, F_GETFL); // 获取文件描述符的相关属性fcntl(fd, F_SETFL, flags | FASYNC); // 当文件描述符中有FASYNC这个标志时驱动中fasync方法就会被调用// 设置文件描述符fd对应的驱动发生SIGIO信号只发送给当前进程fcntl(fd, F_SETOWN, getpid());while (1){printf(aaaaa\n);sleep(1);}return 0; }应用程序-模拟中断 #includestdlib.h #includestdio.h #include sys/types.h #include sys/stat.h #include fcntl.h #includeunistd.h #includestring.hint main(int argc, char const *argv[]) {int a,b;char buf[128]hello world;int fdopen(/dev/mycdev,O_RDWR);if(fd0){printf(打开设备文件失败\n);exit(-1);}write(fd,buf,sizeof(buf));close(fd);return 0; }

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88885.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

吉林门户网站建设深圳市勘察设计

首先点击试用版本,进入软件,再依次进行一下操作 一、在idea的Plugins配置中添加Z大的插件市场 上图中加载出来的插件是默认的,大家不用在意,直接点击“Manage Plugin Repositoryies…”打开配置弹窗 点击号,添加一行…

绍兴做团购的网站广州设计公司前十名

ubuntu24.04安装Kubernetes1.30.0(kubernetes1.30.0)高可用集群 一、总体概览 目前最新版的K8S版本应该是1.31.0,我们安装的是第二新的版本1.30.0,因为有大神XiaoHH Superme指路,所以基本上没踩坑,很顺利就搭建完成了。所有的机器都采用的最新版Ubuntu-Server-24.04长期支…

专业手机网站建设企业自己做影视网站怎么找代理商

一.tensor创建 1.张量的定义 张量在形式上就是多维数组,例如标量就是0维张量,向量就是一维张量,矩阵就是二维张量,而三维张量就可以想象RGB图片,每个channel是一个二维的矩阵,共有三个channel&#xff0…

泰安网站建设哪里有安阳手机网站制作

Android 为了让我们能够更加方便的管理数据库,特意提供了一个SQLiteOpenHelper帮助类,通过借助这个类就可以非常简单的对数据库进行创建和升级。 SQLiteOpenHelper是一个抽象类,我们要创建一个自己的帮助类去继承它。SQLiteOpenHelper有两个抽…

北京的电商平台网站不用域名访问网站

四:异常的处理 (2)try-catch捕获并处理 throws 对异常并没有处理,而是将异常报告给抛出异常方法的调用者,由调用者处理。如果真正要对异常进行处理,就需要try-catch 语法格式: 语法格式&#…

盱眙网站制作如何建造自己的网站

目录 Spring-Boot配置文件 注意: YAML简介 YAML基础语法 YAML:数据格式 YAML文件读取配置内容 逐个注入 批量注入 ConfigurationProperties 和value的区别 Spring-Boot配置文件 Spring-Boot中不用编写.xml文件,但是spring-Boot中还是存在.prope…

云存储做网站seo网站排名优化快速排

给Advice传递参数 Advice除了可以接收JoinPoint(非Around Advice)或ProceedingJoinPoint(Around Advice)参数外,还可以直接接收与切入点方法执行有关的对象,比如切入点方法参数、切入点目标对象&#xff08…

营销型单页面网站智能小区物业管理系统

工商银行通过网银结账的时候,会给出一个类似于B5G7的字符串,让你在自己的口令卡上找到对应的口令码。因为口令卡上的数字挺多的,而且有水印,找起来挺麻烦的,我就花了几十分钟的时间,写了一个快速查找口令卡…

杭州战争网站建设网站开发开源架构

扇区(sector) 硬盘的读写以扇区为基本单位。磁盘上的每个磁道被等分为若干个弧段,这些弧段称之为扇区。硬盘的物理读写以扇区为基本单位。通常情况下每个扇区的大小是 512 字节。linux 下可以使用 fdisk -l 了解扇区大小: $ sudo /sbin/fdisk -l Disk …

优秀网站下载中国企业商标网

一、文章内容 TodoList结构搭建HTML代码 TodoList样式编写Css代码 TodoList行为表现JavaScript代码 二、项目展示 项目介绍 Todolist是一个基于B/S模式开发的待办事项软件,主要功能是离线记录用户的待办事项和已经完成的事情,基于htmlcssjs实现&am…

ppt模板大全免费下载网站什么网站做h5

文章目录链表介绍应用示例链表介绍 链表是有序的列表,但是它在内存中是存储是不连续的,如下: 链表是以节点的方式来存储,是链式存储: ①每个节点包含data域存储数据,next域指向下一个节点 ②链表的各个节点…

网站建设知名网站信息抽查评估 短信

上一篇文章我们学习了如何使用GDB进行软件断点调试和硬件断点调试:【软件开发底层知识修炼】十五 快速学习GDB调试二 使用GDB进行断点调试本篇文章继续上一篇文章的学习,如何使用GDB的数据断点监测内存中的变量是否被改变 文章目录1 GDB的数据断点1.1 利…

邵阳网站建设优化做网站建设的技巧

项目介绍 libcurl是一个跨平台的网络协议库,支持http、https、ftp等多种协议。 项目地址 https://github.com/curl/curl/releases 影响版本 7.69.0-8.3.0 漏洞分析 漏洞成因在于使用SOCKS5代理过程中造成的溢出。当Curl程序使用 SOCKS5代理时,设置…

作风建设 宣讲家网站万户网络技术有限公司官网

使用Python Django框架制作一个音乐网站, 本篇主要是后台对歌曲类型、歌单功能原有功能进行部分功能实现和显示优化。 目录 歌曲类型功能优化 新增编辑 优化输入项标题显示 父类型显示改为下拉菜单 列表显示 父类型显示名称 过滤器增加父类型 歌单表功能优化…

电子商务网站建设专业主修课程国外h5分享网站

文章目录 前言一、geometry是什么?二、geometry常用函数1.OGC标准函数①管理函数②几何对象关系函数③几何对象处理函数④几何对象存取函数⑤几何对象构造函数 2.PostGIS扩展函数①管理函数②几何操作符③几何量测函数④几何对象输出⑤几何对象创建⑥几何对象编辑⑦…

解决国外网站很慢工业产品设计用什么软件

驱动主要包含两部分,平台驱动和器件驱动。平台驱动主要包括通常在SOC内的GPIO、I2C、SPI等;器件驱动则主要包含通常在SOC外的器件,如 LCD、TP、WLAN等 图1 OpenHarmony 驱动分类 HDF驱动被设计为可以跨OS使用的驱动程序,HDF驱动框…

下载免费网站模板下载安装网站登录界面html

该漏洞因为用户提交表单数据并且验证失败时,后端会将用户之前提交的参数值使用 OGNL 表达式 %{value} 进行解析,然后重新填充到对应的表单数据中。例如注册或登录页面,提交失败后端一般会默认返回之前提交的数据,由于后端使用 %{v…

用记事本做网站纯静态网站开发

连通块记忆性递归的综合运用 这里x,y的设置反我平常的习惯,搞得我有点晕 实际上可以一输入就交换x,y的数据的 如果设置y1为全局变量的话会warning: warning: built-in function y1 declared as non-function 所以我改成p和q了…

茶叶企业网站源码wordpress改了固定链接出现404

jca使用Java密码体系结构(JCA)是一个可扩展的框架,使您能够使用执行加密操作。 JCA还促进实现独立性(程序不应该在乎谁提供加密服务)和实现互操作性(程序不应该与特定加密服务的特定提供者联系在一起&#…

贵州移动端网站建设深圳模板建站多少钱

#!/usr/bin/env python # -*- coding:utf-8 -*- # author:love_cat import cv2 # 接收两个参数,一个是文件名,一个值,如果值为1,接收的是彩色图片,如果值为零,接受的是灰度图片。会有一个返回值&#xff0c…