- 博客(11)
- 资源 (24)
- 收藏
- 关注
原创 高级字符设备驱动操作(wait_event/poll/访问控制)
wait_event阻塞指的是当执行操作的时候,如果条件未满足,则挂起线程直至条件满足之后在进行操作,被挂起的线程进入睡眠状态。当一个进程被置为休眠状态的时候,它会被标记为一种特殊状态并且从运行队列中移除。直到某些情况下修改了这个状态,进程才会继续运行。休眠的进程会被搁置到一边,等待将来某个事件的发生。说明如何进入休眠状态前,请牢记两条规则:1、永远不要在原子上下文中进入休眠。2、当我们被...
2019-07-31 17:54:30 1327
原创 并发和竞态
竞态:假设有两个进程(A和B),正在独立的尝试向同一片共享的数据进行操作,例如下面的示例代码中,假设在同一时间两个进程都到到了if判断的位置,那么两个进程都会分配内存,而每个进程都会将结果指针赋值给dptr->data[s_pos]。最终的结果就是谁后赋值谁会赋值成功,假设B赋值成功,那么A分配的内存将失去管理,造成内存泄露。if (!dptr->data[s_pos]) { dp...
2019-07-30 11:26:40 128
原创 创建设备节点 -废弃
书中所使用的是mknod命令手动创建节点,事实上有一组函数支持自动创建设备节点。内核中定义了struct class结构体,一个struct class结构体变量对应一个类,内核提供了class_create宏来创建一个类。调用class_create会在/sys/class目录下生成一个目录,接着再调用device_create来创建设备节点,创建的设备节点位于/dev目录下。定义在<li...
2019-07-26 17:46:00 1648
原创 字符设备的注册 -废弃
前面提到,内核内部使用struct cdev结构来表示字符设备。在内核调用设备的操作之前,必须分配并注册一个或者多个上述结构。在<linux/cdev.h>中定义了这个结构以及与其相关的一些辅助函数。如果需要动态的初始化,应该编写如下代码:struct cdev *my_cdev = cdev_alloc();my_cdev->ops = &my_ops;这时,...
2019-07-26 10:47:19 356
原创 函数语法快速参考(构造和运行模块、字符设备驱动程序)
insmodmodprobermmod用来装载到正运行的内核和移除模块的用户空间工具__init__initdata__exit__exitdata仅用于模块初始化或者清除阶段的函数(__init和__exit)和数据(__initdata和__exitdata)标记。标记为初始化的项目会在初始化结束之后丢弃;而退出项目在内核未被配置为可卸载模块的情况下被丢弃。内核通过将相遇的目标...
2019-07-25 11:28:21 182
原创 快速排序
基本逻辑以从小到大排序为例:找到一个基准值,然后把比基准值大的放左边,比基准值小的放右边,直至基准值左边全部比基准值小,右边全部比基准值大为止。然后以现基准值为分界线,左右两边分别重复此过程。 代码步骤调用排序函数的函数中1、定义数组头和数组尾排序函数中1、定义基准值和基准下标2、定义从数组头移动的下标和数组尾部移动的下标3、比较数组尾部和基准值,如果比基准值小,则双方...
2019-07-19 15:35:57 57
原创 获取和改变当前工作目录
获取当前工作目录:char *getcwd(char *buf, size_t size);改变工作目录:int chdir ( const char *path );实例#include <stdio.h>#include <unistd.h>#include <string.h>int main(int argc, char const...
2019-07-01 17:35:33 856
linux_fpbigtool.zip
2021-03-03
ndk-build.exe
2020-07-02
logfilter_2.1.zip
2020-06-11
Total.Uninstall.6.27.0.CHS.Pro.x64.7z
2020-03-24
cmder.tar.gz
2020-03-19
微信大礼包图书PDF(10本).rar
2019-07-29
scull_examples.zip
2019-06-27
Linux设备驱动程序设计入门.pdf.tar.gz
2019-06-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人