- 博客(23)
- 资源 (10)
- 收藏
- 关注
转载 linux内存管理之内存分配函数区别
malloc 、calloc、kmalloc、kzalloc、vmalloc、和get_free_page() 等区别用户/内核 API名称 物理连续? 大小限制 单位 场景 用户空间 malloc/calloc/realloc/free 不保证 堆申请 字节 calloc初始化为0;realloc改变内存大小。 all...
2020-04-18 16:17:17
305
转载 转----嵌入式Linux驱动笔记(十六)------设备驱动模型(kobject、kset、ktype)
2017年10月27日 20:43:01 风筝丶 阅读数:4458版权声明:本文为 风筝 博主原创文章,转载请署名出处!!谢谢合作。文章地址: https://blog.csdn.net/Guet_Kite/article/details/78368928###你好!这里是风筝的博客,###欢迎和我一起交流。前几天去面试,被问到Linux设备驱动模型这个问题,没答好,回来后恶...
2019-05-08 20:01:13
253
转载 转----[翻译]你不会想知道的kobject,kset,和ktypes
-------------------------------------------------------------------------------------------------------------------------------阿辉翻译自Linux内核文档:\linux-3.4.75\Documentation\kobject.txt原创翻译,欢迎转载,转载请注明...
2019-05-08 19:55:41
228
转载 《深入理解Linux网络技术内幕》阅读笔记 --- 路由基本概念
一、路由的基本概念 1、一条路由就是一组参数,这些参数存储了往一个给定目的地转发流量所需的信息,而一条路由所需的最少的参数集合为:(1)目的网络,(2)出口设备,(3)下一跳网关 2、路由中的相关术语:(1)对称路由:如果从主机A到主机B的路由与从主机B返回主机A的路由相同,这样的路由称为对称路由,(2)metric:是一条路由上配置的可选参数,不要与路由协议中的metric混淆...
2018-12-14 16:35:41
363
原创 linux 网络设备驱动之alloc_etherdev
最近在看网络驱动时,发现这个函数: struct net_device *netdev;netdev = alloc_etherdev(sizeof(synopGMACPciNetworkAdapter));顺着这个函数进行追踪:#define alloc_etherdev(sizeof_priv) alloc_etherdev_mq(sizeof_priv, 1)#...
2018-11-14 19:39:55
5101
原创 linux 下获取socket fd数量
最近做了个项目,需要统计linux 下当前socket 的fd数量,总结如下:Linux中查看socket状态:IPV4 cat /proc/net/sockstatsockets: used 130TCP: inuse 64 orphan 0 tw 0 alloc 70 mem 3UDP: inuse 4 mem 0UDPLITE: inuse 0RAW: inus...
2018-11-14 15:27:09
3623
转载 linux platform_get_resource解析
最近在网络驱动的代码,看到了platform_get_resource函数,发现大多数调用该函数时,第三个参数都传递0,很是奇怪,就上网查阅了下资料,发现了一个常用但被忽略的知识点。if语句中多条件判断顺序:if ( conditionA && conditionB ) 和 if ( conditionA || conditionB ),先判断condit...
2018-11-13 08:44:25
2920
原创 linux 字符串操作函数
1 strchr函数原型:extern char *strchr(char *str,char character)参数说明:str为一个字符串的指针,character为一个待查找字符。 所在库名:#include <string.h> 函数功能:从字符串str中寻找字符character第一次出现的位置。 返回说明:返回指向第一次出现字符cha...
2018-11-08 16:59:16
2528
转载 linux 内核线程的创建
内核线程和普通的进程的区别在于内核线程没有独立的地址空间(实际上指向地址空间的mm指针被设置成NULL),只在内核空间运行,从来不到用户空间去。可以被调度,可以被抢占1.头文件#include <linux/sched.h> //wake_up_process()#include <linux/kthread.h>//kthread_create()、kth...
2018-11-08 16:07:30
747
原创 linux spinlock之使用
linux spinlock的资料网上一大堆,但是每次查过之后,过段时间就忘记了,今天简单的总结下使用方法。 自旋锁最多可以被一个可执行线程持有,如果一个执行线程试图获取一个已经被持有的自旋锁,那么该线程就会一直进行忙循环--旋转--等待锁重新可用。要是锁未被持有,请求锁的执行线程便能立刻得到它,继续执行。在任意时间,自旋锁可以防止多于一个的执行线程同时进入临界区,同一个锁可以用...
2018-11-08 11:55:15
6350
转载 linux自旋锁
一、前言在linux kernel的实现中,经常会遇到这样的场景:共享数据被中断上下文和进程上下文访问,该如何保护呢?如果只有进程上下文的访问,那么可以考虑使用semaphore或者mutex的锁机制,但是现在中断上下文也参和进来,那些可以导致睡眠的lock就不能使用了,这时候,可以考虑使用spin lock。本文主要介绍了linux kernel中的spin lock的原理以及代码实现。由于...
2018-11-07 17:25:15
630
转载 linux spinlock
目录自旋锁作用与基本使用方法?在SMP和UP上的不同表现?自旋锁与上下文使用spin_lock()后为什么不能睡眠?强调:锁什么?参考 1、自旋锁作用与基本使用方法?与其他锁一样,自旋锁也用于保护临界区,但是自旋锁主要是用于在SMP上保护临界区。在SMP上,自旋锁最多只能被一个可执行线程持有,如果一个线程尝试获得一个被争用的自旋锁,该线程将一直旋转(whi...
2018-11-07 17:22:50
175
原创 linux 内核之completion
如果内核中一个任务需要发出信号通知另外一个任务发生了某个特定事件,使用完成量completion是两个任得以同步的最简单方法。当任务1需要执行某些工作时,需要等待任务2完成特定操作才能继续执行,那么任务1就会阻塞等待,当任务2的特定操作执行完成之后,通过completion通知任务1并唤醒,这时候任务1可以继续执行。头文件<linux/completion.h>①声明一...
2018-11-07 16:49:26
358
原创 linux 之内核通知链
1 概念:在内核中,有很多的模块,这些模块之间是相互独立的,也有可能某个模块会对其他模块的某个事件感兴趣,这时候就需要将两个模块进行关联,让这两个模块进行通信。所以在linux内核中提供了通知链机制,通知只能用在内核模块之间,不可用在内核和应用空间进行事件的通信。通知链是一个函数链表,链表上的每一个节点都注册了一个函数,当某个事件发生时,链表上的所有节点都会被通知,所以,在通知事件时,所运行的函数...
2018-11-07 14:08:18
392
转载 Linux设备驱动之字符设备驱动---转
一、linux系统将设备分为3类:字符设备、块设备、网络设备。应用程序调用的流程框图:三种设备的定义分别如下,字符设备:只能一个字节一个字节的读写的设备,不能随机读取设备内存中的某一数据,读取数据需要按照先后顺序进行。字符设备是面向流的设备,常见的字符设备如鼠标、键盘、串口、控制台、LED等。块设备:是指可以从设备的任意位置读取一定长度的数据设备。块设备如硬盘、磁盘、U盘和...
2018-11-07 13:54:42
341
原创 linux copy_to_user() copy_from_user()
最近在学Linux的驱动,有两个函数:copy_from_user(void *to, const void __user *from, unsigned long count)、copy_to_user(void __user *to, const void *from, usigned long count)。①三个参数: to 目标地址,这个地址是用户空间的地
2015-01-03 11:32:52
477
原创 x210 DNW配置问题 win7系统
最近在使用九鼎的x210开发板,在使用dnw烧写程序时遇到了问题,记录下:使用DNW连接开发板时,USB连接有问题,如下图:这是因为dnw的驱动安装有问题。解决方法:1、打开电脑的设备管理器,将开发板的USB线连接到电脑,给开发板上电,按住POWER按键,在设备管理器中会显示下图:对标红处右键,更改驱动,选择DNW的USB驱动就可以了。
2014-12-12 23:24:19
957
3
原创 安装keil uv4时注意事项
之前安装了keil,在使用时报错error: L6050U: The code size of this image (47788 bytes) exceeds the maximum allowed for this version of the linker.
2014-10-25 12:41:55
1367
原创 imx515 wince6.0下配置GPIO中断
最近在wince平台下DDKIomuxSetPinMux(DDK_IOMUX_PIN_CSI1_D9, DDK_IOMUX_PIN_MUXMODE_ALT3, DDK_IOMUX_PIN_SION_REGULAR); DDKIomuxSetPadConfig(DDK_IOMUX_PAD_CSI1_D9, DDK_IOMUX_PAD_SLEW_SLOW, DDK_IOMUX_PAD_D
2014-10-24 10:59:11
774
转载 arm-linux-gcc的安装
arm-linux-gcc安装成功,以下是操作步骤:(基本是网上找的资料,自己没那本事)一: 网上下载个压缩包,我下载的是arm-linux-gcc-4.4.3-20100728.tar.gz,地址:http://arm9.net/download.asp二: Fedora 17 平台 解压arm-linux-gcc-4.4.3-201
2014-09-15 16:02:12
466
原创 wince 流驱动和应用函数调用关系
XXX_Init 加载驱动时调用XXX_Deinit 卸装驱动时调用XXX_Open 打开驱动CreateFile时调用XXX_Close 关闭驱动CloseHandle时调用XXX_Read ReadFile时调用XXX_Write WriteFile时调用XXX_Seek SetF
2014-09-12 09:34:36
646
原创 Error: unrecognized/unsupported machine ID(r1 = 0x00000378).
我使用的是尚观的s3c6410的版主,UBOOT是1.6版本,kernel是2.6,在下载内核时报错,Error: unrecognized/unsupported machine ID(r1 = 0x00000000).,在网上查了写资料,最后修改成功,由于6410传入的ID是0x00000000,修改kernel 源代码目录树中的arch/arm/tools/mach-types文件:
2014-08-24 00:26:07
1549
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人