Linux驱动开发 数据的传输和辅助信息的作用

简介: Linux驱动开发 数据的传输和辅助信息的作用

前言

本文我讲给大家解释驱动开发中的一些辅助信息的作用。


一、APP和驱动间传输数据

APP和驱动间传输数据方式

APP无法直接访问内核:否则内核态容易被破坏了。

如果APP直接去访问内核,随意的去设置了寄存器可能将内核破环导致系统崩溃,所以APP是无法直接得到内核里面的数据的。


APP也就无法传递数据给驱动,驱动属于内核的一部分。


驱动也无法直接方位APP的变量。


驱动要访问APP的数据,必须使用这2个函数:


1.copy_to_user

2.copy_from_user


copy_to_user

在驱动中可以调用copy_to_user将数据传输到应用程序。

static ssize_t hello_read (struct file *file, char __user *buf, size_t size, loff_t *offset)
{
  int err;
  printk("%s %s line %d\n", __FILE__, __FUNCTION__, __LINE__);
  copy_to_user(buf, &ker_val, 4);
  return 4;
}

copy_from_user

在驱动中可以调用copy_from_user去从应用程序中得到数据。

static ssize_t hello_write (struct file *file, const char __user *buf, size_t size, loff_t *offset)
{
  int err;
  printk("%s %s line %d\n", __FILE__, __FUNCTION__, __LINE__);
  copy_from_user(&ker_val, buf, 4);
  return 4;
}

二、class_create

用法

static struct class *class_for_hello;
class_for_hello = class_create(THIS_MODULE, "hello_class"); /* /sys/class/hello_class/ */

使用class_create可以创建一个类,为后面创建device提供信息。

三、device_create

用法

device_create(class_for_hello, NULL, MKDEV(major, 0), NULL, "myhello"); /* /dev/myhello */

使用device_create可以自动的帮我们创建一个设备节点,创建的设备节点在/dev目录下可以查看,节点名字取决于我们。

总结

这些辅助信息可以帮我们自动的去创建设备节点,如果不使用这些辅助信息的话只能自己手工的去创建节点。

相关文章
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
7105 77
|
Ubuntu 搜索推荐 Linux
详解Ubuntu的strings与grep命令:Linux开发的实用工具。
这就是Ubuntu中的strings和grep命令,透明且强大。我希望你喜欢这个神奇的世界,并能在你的Linux开发旅程上,通过它们找到你的方向。记住,你的电脑是你的舞台,在上面你可以做任何你想做的事,只要你敢于尝试。
694 32
|
关系型数据库 MySQL Linux
在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾
以上就是在Linux环境下备份Docker中的MySQL数据并传输到其他服务器以实现数据级别的容灾的步骤。这个过程就像是一场接力赛,数据从MySQL数据库中接力棒一样传递到备份文件,再从备份文件传递到其他服务器,最后再传递回MySQL数据库。这样,即使在灾难发生时,我们也可以快速恢复数据,保证业务的正常运行。
713 28
|
存储 缓存 Linux
Linux系统中如何查看CPU信息
本文介绍了查看CPU核心信息的方法,包括使用`lscpu`命令和读取`/proc/cpuinfo`文件。`lscpu`能快速提供逻辑CPU数量、物理核心数、插槽数等基本信息;而`/proc/cpuinfo`则包含更详细的配置数据,如核心ID和处理器编号。此外,还介绍了如何通过`lscpu`和`dmidecode`命令获取CPU型号、制造商及序列号,并解释了CPU频率与缓存大小的相关信息。最后,详细解析了`lscpu`命令输出的各项参数含义,帮助用户更好地理解CPU的具体配置。
2085 8
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
4137 23
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
缓存 监控 Linux
|
网络协议 Linux 虚拟化
如何在 Linux 系统中查看进程的详细信息?
如何在 Linux 系统中查看进程的详细信息?
2116 1
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
1143 1
二、Linux文本处理与文件操作核心命令