自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(6)
  • 收藏
  • 关注

原创 LDD-第五章 并发和竞态

并发执行的原因:中断:中断几乎可以在任何时刻异步发生,也就随时可能打断当前正在执行的代码。软中断和tasklet:内核能在任何时刻唤醒或者调度软中断和tasklet,打断当前正在执行的代码。内核抢占:内核具有抢占性,所以内核任务可能被另一任务抢占。睡眠及用户空间的同步:在内核执行的进程可能会睡眠,这就会唤醒调度程序,从而调度一个新的用户进程执行。对称多处理:两个或多个处理器可以...

2018-08-06 14:31:25 329

原创 几个内核函数:filp_open、filp_read、IS_ERR、ERR_PTR、PTR_ERR

内核态文件操作在用户态,我们操作文件可以用C库函数:open()、read()、write()等,但是在内核态没有库函数可用,这时就需要用内核的一些函数:filp_open、filp_close、vfs_read、vfs_write、set_fs、get_fs等函数,在linux/fs.h和asm/uaccess.h中声明。参数说明:第一个参数表明要打开或创建文件的名称(包括...

2018-07-25 16:29:19 17054

原创 LDD-第四章 调试技术

内核编程有自身独特的调试难题。由于内核是一个不与特定进程相关的功能集合,所以内核代码无法轻易放在调试器中执行,而且很难追踪。同样,要想重现内核代码中的错误也是相当困难的,因为这种错误可能导致整个系统崩溃,这样就破坏了可以用来追踪它们的现场。内核中的调试支持内核配置工具的“kernel hacking”菜单中:CONFIG_DEBUG_KERNEL:该选项仅仅使得其他调试选项可用。我...

2018-07-25 16:20:59 681

原创 LDD-第三章 字符设备驱动程序

主设备号和次设备号   对字符设备的访问是通过文件系统内部的设备名称(设备节点)进行的。它们通常位于/dev下。主设备号标识设备对应的驱动程序,次设备号用于确定设备文件所指的设备。MAJOR(dev_t dev); //获得主设备号MINOR(dev_t dev);//获得次设备号MKDEV(int major,int minor);//将主设备号和次设备号转换成dev_t类型分配...

2018-07-21 21:42:29 295

原创 LDD-第二章 构造和运行模块

内核中的并发内核编程区别于常见应用程序编程的地方在于对并发的处理。考虑并发的原因:1.Linux系统通常正在运行多个并发进程,并且可能有多个进程同时使用我们的驱动程序。2.大多数设备能够中断处理器,而中断程序异步运行,而且可能在驱动程序正试图处理其他任务时被调用。3.有一些软件抽象(如内核定时器)也在异步运行。3.Linux可能运行在对称多处理器(SMP)系统上,因此可能同时不止一个CPU运行...

2018-07-21 21:40:29 310

原创 LDD-第一章设备驱动程序简介

设备驱动程序的作用设备驱动程序在Linux内核中扮演特殊的角色。它们是一个个独立的“黑盒子”,使某个特定的硬件响应一组定义良好的内部编程接口,这些接口完全隐藏了设备工作细节。用户的操作通过一组标准化的调用执行,这些调用独立于特定的驱动程序。驱动的作用是将这些调用映射到作用于实际硬件的设备特有操作上。 设备驱动程序在于提供机制,而不是提供策略。大多数编程问题实际上都可以分成两部分:“...

2018-07-21 21:38:38 592

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除