![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
kernel
文章平均质量分 89
asmxpl
这个作者很懒,什么都没留下…
展开
-
关于f_mass_storage.c的文章
原文地址:http://blog.csdn.net/HellDevil/archive/2010/05/18/5604421.aspxhttp://blog.csdn.net/HellDevil/archive/2010/05/06/5561918.aspxhttp://blog.csdn.net/HellDevil/archive/2010/01/19/5213888.aspxhtt转载 2014-03-24 20:28:27 · 794 阅读 · 0 评论 -
Kprobe在Linux kernel debug中的应用
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://alanwu.blog.51cto.com/3652632/1109054 一直在做kernel开发方面的工作,也一直苦于kernel debug的困惑,到底如何进行kernel开发的debug的工作?今天经美国同事的推荐,我认为kprobe是一个非常好的deb转载 2014-03-19 18:05:24 · 495 阅读 · 0 评论 -
Kernel: Get filename from "struct file *"
char *tmp;char *pathname;path_get(&file->f_path);tmp = (char *)__get_free_page(GFP_TEMPORARY);if (!tmp) { return -ENOMEM;}pathname = d_path(&file->f_path, tmp, PAGE_SIZE);path转载 2014-03-19 15:01:57 · 586 阅读 · 0 评论 -
如何调整Linux内核启动中的驱动初始化顺序
From: http://hi.baidu.com/serial_story/blog/item/d40d49c6907212129c163ded.html如何调整Linux内核启动中的驱动初始化顺序【问题】此处我要实现的是将芯片的ID用于网卡MAC地址,网卡驱动是enc28j60_init。但是,读取芯片ID的函数,在as352x_afe_init模块中,所以要先初始转载 2014-03-19 14:21:23 · 486 阅读 · 0 评论 -
Linux 3.2中回写机制的变革
标签:Linuxcache writeback原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://alanwu.blog.51cto.com/3652632/1109952 writeback机制模型 在Linux-3.2新内核中,page cache和buffer cache的刷新机制发转载 2014-03-19 18:10:31 · 420 阅读 · 0 评论 -
LINUX内核之内存屏障
时间2012-06-11 09:33:30 CSDN博客原文 http://blog.csdn.net/ture010love/article/details/7651536 @CopyLeft by ICANTH, I Can do ANy THing that I CAN THink!~Author: WenHui, WuHan University,2012-转载 2014-03-19 14:56:38 · 684 阅读 · 0 评论 -
Code Debug and Inject
分类: LINUX欢迎转载,转载请保留文档完整性!From:http://blog.chinaunix.net/uid-20662820-id-3799149.html Code Debug and InjectAuthor: Tony tingw.liu@gmail.com Date:2013年7月11日星期四 1. Debug L转载 2014-03-19 14:50:15 · 561 阅读 · 0 评论 -
教你如何注册proc文件系统
分类: LINUX有些时候编写的内核模块,为了具有更高的可调试性,通常会使用proc文件系统。例如netfilter的layer7模块。下面是在2.6.24下的注册proc文件系统,并实现读写功能的代码。在/proc/net下建立目录procdir,在该目录下注册procfile文件。#includelinux/spinlock.h>#include转载 2014-03-19 14:57:28 · 617 阅读 · 0 评论 -
ARM linux kernel从入口到start_kernel代码分析 -- 只到machine type选中为止
转载自:http://blog.sina.com.cn/bytex 本文针对arm linux, 从kernel的第一条指令开始分析,一直分析到进入start_kernel()函数.我们当前以linux-2.6.19内核版本作为范例来分析,本文中所有的代码,前面都会加上行号以便于和源码进行对照.例:在文件init/main.c中:00478: asmlinkage转载 2014-03-19 14:23:21 · 682 阅读 · 0 评论 -
如何根据Kernel Oops中的地址找到对应的代码行
From ChinaUnix: http://bbs.chinaunix.net/thread-3672391-1-1.html来自Linus Torvalds的讨论:https://groups.google.com/group/ ... 41/ed9c0a0cfcd31111例如这样的一个Oops:Oops: 0000 [#1] PREEMPT SMP Modules li转载 2014-03-19 14:17:46 · 483 阅读 · 0 评论 -
writeback机制源码分析
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://alanwu.blog.51cto.com/3652632/1110046 writeback相关数据结构 与writeback相关的数据结构主要有:1,backing_dev_info,该数据结构描述了backing_dev的所有信息,通常块设备的转载 2014-03-19 18:09:42 · 1088 阅读 · 0 评论 -
自动登录(不用*DM)并启动X
今天费半天劲终于把它搞定了,没有新知识,只是找了半天才找到的真正可行的方法,分享一下,以后大家有这样的需求时不用再费劲找了。一、写脚本autologin代码:#!/bin/bash/bin/login -f #你的用户名chmod +x autologin设置可执行权限,移动到/usr/bin/下。二、把/etc/event.d/tty1中下面这一行:转载 2014-03-21 10:01:37 · 638 阅读 · 0 评论 -
使用 watchdog 构建高可用性的 Linux 系统及应用
原文地址:http://www.ibm.com/developerworks/cn/linux/l-cn-watchdog/index.html周婷 (moting9@gmail.com),软件工程师, IBM 中国系统技术实验室简介: Linux在不同领域如电信、终端便携设备等得到广泛应用,不同领域的应用对 Linux系统也提出相应的需求。Carrier Grade Li转载 2014-03-24 20:26:54 · 520 阅读 · 0 评论 -
在线看kernel代码
推荐网站:http://lxr.oss.org.cn/source/原创 2014-03-24 20:14:41 · 1158 阅读 · 0 评论 -
Linux内核中等待队列的几种用法
Linux内核里的等待队列机制在做驱动开发时用的非常多,多用来实现阻塞式访问,下面简单总结了等待队列的四种用法,希望对读者有所帮助。1. 睡眠等待某个条件发生(条件为假时睡眠): 睡眠方式:wait_event, wait_event_interruptible 唤醒方式:wake_up (唤醒时要检测条件是否为真,如果还为假则继续睡眠,唤醒前一定要把条件变转载 2014-03-23 22:31:26 · 369 阅读 · 0 评论 -
Gadget Mass Storage设备驱动程序
Gadget Mass Storage设备驱动程序驱动程序原理介绍USB大存储设备(Mass Storage)是以文件为单位进行存储的从设备(Gadget)。在主设备主机(任何操作系统)上它以U盘的形式出现,在有Linux操作系统的从设备主机上,它以Gadget驱动程序形式出现,实现从设备与主设备的通信。Gadget Mass Storage是USB设备的一个典型的Gadg转载 2014-03-21 18:17:19 · 1263 阅读 · 0 评论 -
Nand 驱动调试记录
新项目使用了 Micro 4Gb 16bit Nand 作为 Storage, 这样,我们需要对下载工具、bootloader、Linux 内核做一些修改。 这里主要记录了 Linux 内核 Nand 驱动调试过程中遇到的问题。问题1: 擦除某个分区会导致系统不能启动执行命令擦除某分区:flash_eraseall /dev/mtd8重启, 发现系统不能启动!重新用 Jtag转载 2014-03-21 18:11:23 · 479 阅读 · 0 评论 -
Linux下USB MASS STORAGE驱动的分析和改造
From:http://www.csksoft.net/blog/post/linux_storage_mod.html这原本是我这学期OS课程设计最后一次的作业,因为比较有意思,所以就把它公布出来吧。作业要求:开发Linux下的usb存储设备的驱动,仅需支持自己的u盘即可。下面是我写的驱动,他基于linux下自带的usb-storage驱动(/driver/usb/s转载 2014-03-21 18:10:21 · 3079 阅读 · 0 评论 -
Linux-USB Gadget : Part 4: 最简单的 gadget驱动:g_zero
Linux-USB Gadget : Part 4: 最简单的 gadget驱动:g_zero作者: zjujoe 转载请注明出处Email:zjujoe@yahoo.comBLOG:http://blog.csdn.net/zjujoe前言前面讲过,gadgetapi 提供了usb devicecontroller 驱动和上层gadget驱动交互的接口。 UDC 驱动是服务提转载 2014-03-21 10:58:39 · 1195 阅读 · 0 评论 -
Ctrl C 不能中止程序问题
Ctrl C 不能中止程序问题作者: zjujoe 转载请注明出处Email:zjujoe@yahoo.comBLOG:http://blog.csdn.net/zjujoe 最近应用组兄弟反应他们的环境(maemo)下 ctrl-c 不能终止程序,跟踪了一下,发现maemo 虽然也使用了 busybox, 但是 init 却是用的 sysvinit 包里面的。 试着更换成 b转载 2014-03-21 10:55:59 · 1544 阅读 · 0 评论 -
关于linux nand 驱动调试的一些注意点
关于linux nand 驱动调试的一些注意点作者: zjujoe 转载请注明出处Email:zjujoe@yahoo.comBLOG:http://blog.csdn.net/zjujoe 最近在开发 nand驱动, 不可避免的, 用到了 nand tools. 这里将一些细节记录下来。网上google 的内容好像也不是很多。Nand tools(mtdutils1.2)似乎转载 2014-03-21 10:03:59 · 601 阅读 · 0 评论 -
kernel: How to decompress the zImage?
zImage不是标准的gzip文件,需要自己strip掉开头的一些东西才可以gunzip。基本上的思路就是找gzip的magic number "1f 8b 08"。具体步骤:$ mkdir -p /tmp/kernel-uncompressed/; cd /tmp/kernel-uncompressed/$ cp /boot/vmlinuz-`uname -r` .$ od -t转载 2014-03-19 14:16:31 · 548 阅读 · 0 评论 -
Kernel: printk's no_console_suspend
在kernel的printk.c中,有一个全局变量console_suspend_enabled,这个变量控制着当suspend之后,是否还可以往console上输出message。默认是不可以的。这会给debug带来一些困扰,尤其是suspend之后如果出现kernel panic或是其他异常情况的时候。所以,可以修改这个变量然后重新编译kernel,或者kernel也提供了一个kernel转载 2014-03-19 14:22:09 · 863 阅读 · 0 评论 -
Kernel wmb/mb宏的作用
内存屏障主要解决的问题是编译器的优化和CPU的乱序执行。编译器在优化的时候,生成的汇编指令可能和c语言程序的执行顺序不一样,在需要程序严格按照c语言顺序执行时,需要显式的告诉编译不需要优化,这在linux下是通过barrier()宏完成的,它依靠volidate关键字和memory关键字,前者告诉编译barrier()周围的指令不要被优化,后者作用是告诉编译器汇编代码会使内存里面的值更改,编译转载 2014-03-19 14:15:24 · 862 阅读 · 0 评论 -
Linux驱动之设备模型(6)-驱动
1. 设备驱动,在Linux设备模型中,设备驱动用device_driver结构来表示[cpp] view plaincopystruct device_driver { const char *name; /*名字*/ struct bus_type转载 2014-03-12 21:12:04 · 321 阅读 · 0 评论 -
Linux驱动之设备模型(5)-设备
1. 设备,LDM中用device结构体来描述设备[cpp] view plaincopystruct device { /* 父设备,通常是某种总线或者是宿主设备 */ struct device *parent; /* 私有数据指针:子设备链表,父设备链表节点,驱动程序链表节点,总线链表节点 */转载 2014-03-12 21:09:56 · 339 阅读 · 0 评论 -
Linux驱动之设备模型(2)
3.ktype& Kset3.1 ktypel 用来描述一组kobject所具有的共同特性,用structkobj_type结构体来表示struct kobj_type{ void (*release)(struct kobject *kobj); const struct sysfs_ops *sysfs_ops; st转载 2014-03-12 20:54:54 · 248 阅读 · 0 评论 -
内核泄露检测(kmemleak)
内核泄露检测(kmemleak)原地址:http://blog.csdn.net/lishenglong666/article/details/8287783介绍:Kmemleak 提供了一种可选的内核泄漏检测,其方法类似于跟踪内存收集器。(http://en.wikipedia.org/wiki/Garbage_collection_%28computer_scien转载 2014-03-12 22:01:24 · 467 阅读 · 0 评论 -
伙伴算法
伙伴算法源地址:http://ilinuxkernel.com/?p=1029Linux内核内存管理的任务包括:遵从CPU的MMU(Memory Management Unit)机制合理、有效、快速地管理内存实现内存保护机制实现虚拟内存共享重定位Linux内核通过伙伴算法来管理物理内存。伙伴系统(Buddy S转载 2014-03-12 21:43:23 · 646 阅读 · 0 评论 -
Linux驱动之设备模型(9)-platform
10.Platform10.1 overviewl 一个现实的Linux设备和驱动通常都需要挂接在一种总线上,对于本身依附于PCI、USB、IIC、SPI等的设备而言,这自然不是问题,但是在嵌入式系统中,SoC系统中集成的独立的外设控制器,挂接在SoC内存空间的外设(IIC,RTC,SPI,LCD,看门狗)等却不依附于此类总线。基于这一背景,Linux发明了一种虚拟的总线,称为plat转载 2014-03-12 21:23:40 · 366 阅读 · 0 评论 -
内核中常见的符号
内核中常见的符号[THIS_MODULE]模块是一种可以在内核运行过程中动态加载、卸载的内核功能组件。2.6内核中模块在被使用时,是不允许被卸载的。编程是需要用”使用计数”来描述模块是否在被使用。THIS_MODULE就充当了这个功能。 [likely& unlikely]在2.6的内核中经常看到这两个符号,表面上看if(likely(value))和if(unlikely(v转载 2014-03-12 21:42:33 · 367 阅读 · 0 评论 -
编写和提交自己的第一个内核patch
write and submit your first linux kernel patch1. 建立自己的branch Git branch test 2. 切换到branch Git checkout test 3. 检查编码的风格cjok@ubuntu:~/git-work/linux$转载 2014-03-12 21:28:56 · 500 阅读 · 0 评论 -
Linux驱动之设备模型(7)
8.类8.1 classl Class是对设备按照功能进行的分类,这样做是为了给用户空间提供一个比较友好的界面。Class也是一个kset,对应于/sys/class下的一个目录int __initclasses_init(void){ /* 对应/sys/class目录 */ class_kset =kset_create_and_ad转载 2014-03-12 21:13:08 · 295 阅读 · 0 评论 -
Linux驱动之设备模型(3)
4.小结4.1 kobject, kset和ktypekobject, kset和ktype就三个结构体,但是却很容易让人混淆,是由于它们内部相互交织。l kobject,是设备模型中的基本对象,包含了引用计数,父子关系,目录项等,通常会嵌入到其它的数据结构中,使其也具有kobject的特性;l ktype,定义了一些kobjct相关的默认特性:析构函数,sysfs操作以及默转载 2014-03-12 21:06:11 · 331 阅读 · 0 评论 -
Linux驱动之设备模型(4)-总线
1 总线 总线,是处理器与一个或者多个设备之间的通道。在Linux设备模型中,所有的设备都通过总线相连,甚至是那些内部的虚拟"platform"总线。用bus_type结构来描述。[cpp] view plaincopy struct bus_type { const char *name; /* 总线名 */转载 2014-03-12 21:08:42 · 571 阅读 · 0 评论 -
Linux 内核模块实现udp发送字符串
声明:欢迎转载和引用,转载请注明出处。引用代码请保证代码完整性。From: http://blog.chinaunix.net/uid-20662820-id-3784251.html昨天CU论坛有人问到如何在内核模块发送数据包,于是找到了之前写的代码,跟大家分享一下。该代码SLES 11 sp2内核3.0.13上编译运行通过。点击(此处)折叠或打开转载 2014-03-19 14:55:44 · 1305 阅读 · 0 评论 -
MMU基础知识
From: http://learn.akae.cn/media/ch17s04.html4. MMU 请点评现代操作系统普遍采用虚拟内存管理(Virtual Memory Management)机制,这需要处理器中的MMU(Memory Management Unit,内存管理单元)提供支持,本节简要介绍MMU的作用。首先引入两个概念,虚拟地址和物理地址。如果处理转载 2014-03-19 14:37:45 · 427 阅读 · 0 评论 -
[经典]Linux内核中ioremap映射的透彻理解
From: http://blog.csdn.net/do2jiang/article/details/5450839几乎每一种外设都是通过读写设备上的寄存器来进行的,通常包括控制寄存器、状态寄存器和数据寄存器三大类,外设的寄存器通常被连续地编址。根据CPU体系结构的不同,CPU对IO端口的编址方式有两种: (1)I/O映射方式(I/O-mapped) 典型地,如X86处理器为转载 2014-03-19 14:24:12 · 342 阅读 · 0 评论 -
Linux kernel: How to debug mutex deadlock 如何调试mutex死锁
和userspace调试lock一样,主要是要:1. 找到lock死锁的地方,打印出调用栈2. 找出这个mutex目前被谁占用了 针对1:在kernel config中,Kernel Hacking这个大项中,enable跟lock/mutex相关的config,比如CONFIG_DEBUG_MUTEX,以及CONFIG_DETECT_HUNG_TASKS, 这样当死锁发生时,稍微转载 2014-03-19 14:17:03 · 1774 阅读 · 0 评论 -
嵌入式Linux系统中的.lds链接脚本基础
连接脚本的格式====================连接脚本是文本文件.你写了一系列的命令作为一个连接脚本. 每一个命令是一个带有参数的关键字,或者是一个对符号的赋值. 你可以用分号分隔命令. 空格一般被忽略.文件名或格式名之类的字符串一般可以被直接键入. 如果文件名含有特殊字符,比如一般作为分隔文件名用的逗号, 你可以把文件名放到双引号中. 文件名中间无法使用双引号.你可以转载 2014-03-16 10:50:52 · 335 阅读 · 0 评论