linux驱动概述
2015-08-23 21:53
357 查看
内核主要包括以下功能:进程管理、内存管理、文件系统、设备控制、网络功能。
进程管理:创建和销毁进程,处理进程的输入输出,实现不同进程之间的通信,进程调度
Linux将设备分成三种基本类型:字符设备、块设备、网络设备
内核运行时不依赖C库,也不能依赖C库,因此不能使用printf等
printk不支持浮点数,内核代码也不能实现浮点数运算。
编译内核模块的Makefile:
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KDIR := /home/ubuntu/splicer/F14/kernel
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.c .symvers
endif
Linux 内核代码(包括驱动程序代码)必须是可重入的,它必须能够同时运行在多个上下文中。
内核代码可通过访问全局项 current 来获得当前进程,它是一个指向 struct tast_struct 的指针。在 open、read 等系统调用的执行过程中,当前进程指的是调用这些系统调用的进程。
内核的栈一般都很小,因此在使用较大的变量结构时,应动态分配该结构。
进程管理:创建和销毁进程,处理进程的输入输出,实现不同进程之间的通信,进程调度
Linux将设备分成三种基本类型:字符设备、块设备、网络设备
内核运行时不依赖C库,也不能依赖C库,因此不能使用printf等
printk不支持浮点数,内核代码也不能实现浮点数运算。
编译内核模块的Makefile:
ifneq ($(KERNELRELEASE),)
obj-m := hello.o
else
KDIR := /home/ubuntu/splicer/F14/kernel
all:
make -C $(KDIR) M=$(PWD) modules
clean:
rm -f *.ko *.o *.mod.c .symvers
endif
Linux 内核代码(包括驱动程序代码)必须是可重入的,它必须能够同时运行在多个上下文中。
内核代码可通过访问全局项 current 来获得当前进程,它是一个指向 struct tast_struct 的指针。在 open、read 等系统调用的执行过程中,当前进程指的是调用这些系统调用的进程。
内核的栈一般都很小,因此在使用较大的变量结构时,应动态分配该结构。
相关文章推荐
- Linux下批量转换到utf-8编码的问题
- linux内核中的IS_ERR()、PTR_ERR()、ERR_PTR()
- 坚持不懈之linux haproxy的配置文件关键字查询手册
- Linux并发控制方式
- 每天一个Linux命令-22(关闭防火墙)
- Centos6.5下MySQL5.5.45数据库迁移
- Linux的一些基本命令
- Linux命令详解(3):cd
- Linux基础知识--4.LInux用户和用户组以及权限管理
- Linux基础--/etc/shadow中字段的分支和操作
- Ubuntu学习之Linux文件和目录管理
- CentOS6.5实现PXE+Kickstart无人值守安装操作系统
- linux时间命令date、clock、hwclock
- Linux下复制粘贴快捷键
- 7the_last
- 4final_prepare
- 3Packages
- 2disk
- 1prepare
- Linux命令详解(2):pwd