linux设备驱动模块引用和依赖

/modules/04 # lsmod
	test 787 0 - Live 0xbf010000 (PO)
	func 633 1 test, Live 0xbf00c000 (PO)		test -> func
			 ^ 引用计数
	/modules/04 # rmmod func					引用计数>0 不能卸载
	rmmod: remove 'func': Resource temporarily unavailable	

 	modprobe自动解决依赖:
	/ # modprobe test
	[  307.800000] test: Unknown symbol print (err 0)
	[  307.850000] hello kernel		<-- insmod func.ko ; insmod test.ko
	/ # lsmod
	test 787 0 - Live 0xbf01c000 (PO)
	func 633 1 test, Live 0xbf018000 (PO)

	/ # modprobe -r func			<-- 引用计数>0 不能卸载
	modprobe: remove 'func': Resource temporarily unavailable
	/ # modprobe -r test			<-- rmmod test.ko ; rmmod func.ko
	[  363.130000] cleanup module
时间: 2024-09-23 00:30:11

linux设备驱动模块引用和依赖的相关文章

Linux设备驱动之Ioctl控制【转】

  转自:http://www.cnblogs.com/geneil/archive/2011/12/04/2275372.html 大部分驱动除了需要具备读写设备的能力之外,还需要具备对硬件控制的能力. 一.在用户空间,使用ioctl系统调用来控制设备,原型如下: int ioctl(int fd,unsigned long cmd,...);/*fd:文件描述符cmd:控制命令...:可选参数:插入*argp,具体内容依赖于cmd*/ 用户程序所作的只是通过命令码告诉驱动程序它想做什么,至于

《Linux设备驱动开发详解 A》一一3.1 Linux内核的发展与演变

3.1 Linux内核的发展与演变 Linux操作系统是UNIX操作系统的一种克隆系统,是一种类UNIX操作系统,诞生于1991年10月5日(第一次正式向外公布的时间),起初的作者是Linus Torvalds.Linux操作系统的诞生.发展和成长过程依赖着5个重要支柱:UNIX操作系统.Minix操作系统.GNU计划.POSIX标准和Internet. 1.?UNIX操作系统 UNIX 操作系统是美国贝尔实验室的Ken. Thompson和Dennis Ritchie于1969年夏在DEC P

《Linux设备驱动开发详解 A》一一1.5 Linux设备驱动的开发环境构建

1.5 Linux设备驱动的开发环境构建 1.5.1 PC上的Linux环境 本书配套资源提供了一个Ubuntu的VirtualBox虚拟机映像,该虚拟机上安装了本书涉及的所有源代码.工具链和各种开发工具,读者无须再安装和配置任何环境.该虚拟机可运行于Windows.Ubuntu等操作系统中,运行方法如下. 1)安装VirtualBox. 如果主机为Windows系统,请安装VirtualBox WIN版本: VirtualBox-4.3.20-96997-Win.exe 如果主机为Ubuntu

嵌入式 使用udev高效、动态地管理Linux 设备文件

本文以通俗的方法阐述 udev 及相关术语的概念.udev 的配置文件和规则文件,然后以 Red Hat Enterprise Server 为平台演示一些管理设备文件和查询设备信息的实例.本文会使那些需要高效地.方便地管理 Linux 设备的用户受益匪浅,这些用户包括 Linux 最终用户.设备驱动开发人员.设备测试人员和系统管理员等等.   概述: Linux 用户常常会很难鉴别同一类型的设备名,比如 eth0, eth1, sda, sdb 等等.通过观察这些设备的内核设备名称,用户通常能

手把手教你写Linux设备驱动---中断(二)--tasklet实现(基于友善之臂4412开发板)

上节:http://blog.csdn.net/morixinguan/article/details/68958185 在上一节博文中,教会了大家如何来写一个Linux设备的中断程序,实现也非常简单,我们来回顾一下具体的操作流程,只要遵循以下几个步骤即可实现最简单的中断处理程序: 使用中断相关的API和定义时要包含以下头文件: #include <linux/interrupt.h> 然后写中断需要以下步骤 1.申请中断号 使用gpio_to_irq函数,可以从返回值获取到对应的中断号 2.

从Visual Studio中生成Linux设备

本文讲的是从Visual Studio中生成Linux设备,[IT168 云计算频道]近日Novell发布了SUSE Studio:一个用于创建Linux设备(appliance)的工具.与此同时,Mono小组创建了一个插件以从Visual Studio中生成支持SUSE的设备. SUSE Studio的项目经理Nat Friedman将软件设备(software appliance)定义为:所谓软件设备,实际上就是一个完整的应用栈,包括操作系统.应用软件.所需的任何依赖以及与操作相关的配置与数

《Linux 设备驱动开发详解(第2版)》——1.2 无操作系统时的设备驱动

1.2 无操作系统时的设备驱动 Linux 设备驱动开发详解(第2版)并不是任何一个计算机系统都一定要运行操作系统,在许多情况下,操作系统都不必存在.对于功能比较单一.控制并不复杂的系统,譬如ASIC内部.公交车的刷卡机.电冰箱.微波炉.简单的手机和小灵通等,并不需要多任务调度.文件系统.内存管理等复杂功能,用单任务架构完全可以良好地支持它们的工作.一个无限循环中夹杂对设备中断的检测或者对设备的轮询是这种系统中软件的典型架构,如代码清单1.1. 代码清单1.1 单任务软件典型架构 1 int m

linux 设备树【转】

转自:http://blog.csdn.net/chenqianleo/article/details/77779439 [-] linux 设备树 为什么要使用设备树Device Tree 设备树的的组成和结构 1设备树的组成 11 DTS和DTSI 12 DTC 13 DTB 14 绑定bingding 15 Bootloader 使用dtb 2设备树框架 设备树语法 下面这个是rk3399-fpgadts 1根节点兼容性 2节点名 3引用 KEY 1compatible 2address

Linux设备模型(9)_device resource management ---devm申请空间【转】

转自:http://www.wowotech.net/linux_kenrel/device_resource_management.html   1. 前言 蜗蜗建议,每一个Linux驱动工程师,都能瞄一眼本文. 之所以用"瞄",因此它很简单,几乎不需要花费心思就能理解.之所有这建议,是因为它非常实用,可以解答一些困惑,可以使我们的代码变得简单.简洁.先看一个例子: 1: /* drivers/media/platform/soc_camera/mx1_camera.c, line