linux_kernel_development_etc
bamboolsu
技术总监,产品经理,开发经理,项目经理,PMP, Scrum master, CM
丰富的java,HTML5,python, C/C++开发开发经验,
motorola, google, 第九城市等公司工作经验
跨境电商相关(进出口商城,erp等)产品规划,研发
丰富的产品管理,项目管理,需求管理,技术开发管理敬仰
linux,windows, wxworks等多平台开发
展开
-
A little kernel debug tip
I want to share with you one piece of kernel debug tip, and also remind myself in the future.As you know linux kernel organizesits components into various subsystems. And in order to support var原创 2015-01-23 09:16:11 · 531 阅读 · 0 评论 -
编译Linux2.6内核_02
在X86, Ubuntu 上编译Linux2.6内核,总结如下:基础知识在介绍如何编译内核之前, 需要对内核相关概念有一定的了解. 关于Linux kernel的介绍浩如烟海, 这里只介绍系统中相关的目录, 文件及命令./boot/boot/vmlinuz- : 用于启动的压缩内核镜像, 它也就是/arch//boot中的压缩镜像./boot/sy转载 2015-01-23 17:49:12 · 525 阅读 · 0 评论 -
Linux下的多线程编程
1 引言---------------------------------------------------------- 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被转载 2015-01-23 18:03:04 · 399 阅读 · 0 评论 -
linux kernel, driver, network driver
1, code base/3pp/linux-st7109/patches 2, linux kernel code git http://landley.net/writing/git-bisect-howto.htmlThis downloads a local copy of the entire revision history (b原创 2015-01-23 09:22:17 · 884 阅读 · 0 评论 -
kernel 网站资源汇总
Linux Kernel Newbies(内核开发新手的邮件列表): http://kernelnewbies.org/ http://janitor.kernelnewbies.org/LKML:公开的邮件列表,是kernel.org的产物;一些很好的信件资料存档网站, lkml.org原创 2015-01-23 12:21:15 · 576 阅读 · 0 评论 -
Linux的时间函数
Linux的时间函数#include struct timezone tz;gettimeofday (&tv , &tz);struct timeval tv;gettimeofday (&tv , NULL);fprintf(stderr, "%s:%d:%s, tv_sec:%ld tv_usec:%ld leosu \n",__FILE__,原创 2015-01-23 12:22:42 · 531 阅读 · 0 评论 -
linux core dump
How to enable core dump:– #ulimit c unlimited– #echo /tmp/core.%e.%p > /proc/sys/kernel/core_pattern原创 2015-01-23 13:59:32 · 386 阅读 · 0 评论 -
linux 2.6内核编译_03_配置选项注解
linux 2.6.15.6内核配置(unfinished)http://www.builder.com.cn/2007/1011/545597.shtml注意: 不同的内核版本配置选项(或组织)可能不同, 但原理都是一样的!另外, 关于compile in, compile as module的选择: 根文件系统, 根文件系统所处的设备, PS/2鼠标驱动不能转载 2015-01-23 17:50:48 · 746 阅读 · 0 评论 -
Configure选项配置的详细介绍
Configure选项配置的详细介绍。供大家参考'configure' 脚本有大量的命令行选项.对不同的软件包来说,这些选项可能会有变化,但是许多基本的选项是不会改变的.带上'--help'选项执行'configure'脚本可以看到可用的所有选项.尽管许多选项是很少用到的,但是当你为了特殊的需求而configure一个包时,知道他们的存在是很有益处的.下面对每一个选项进行简转载 2015-01-23 21:47:42 · 10483 阅读 · 0 评论 -
Fedora Core 4 环境下编译内核攻略
概述本攻略详细讲述了如何在Fedora Core 4的环境下编译内核。其中需要注意的是,在进行以下操作前请做好备份。提示:完成这些操作你可能需要有大约350-400MB的空闲空间。具体时间视你的机器速度和编译配置而定.所有操作需要在root身份登录下完成0.备份重要文件备份以下这些文件可以在系统发生错误或崩溃时,能较快速的恢复系统原来的状态。备份内核和启转载 2015-01-23 13:57:42 · 550 阅读 · 0 评论 -
Linux 系统内核的调试_01
linux 2.6.26 与其后的版本,其内置已经支持kgdb了。本文将首先介绍 Linux 内核上的一些内核代码监视和错误跟踪技术,这些调试和跟踪方法因所要求的使用环境和使用方法而各有不同,然后重点介绍三种 Linux 内核的源代码级的调试方法。调试是软件开发过程中一个必不可少的环节,在 Linux 内核开发的过程中也不可避免地会面对如何调试内核的问题。但是,Linux原创 2015-01-23 17:29:51 · 503 阅读 · 0 评论 -
ldd3_内核模块编程之_初窥门径
from http://www.cublog.cn/u/13991/showart_109260.html学习内核模块编程是一 件很有意义的事——要想开发Linux驱动程序, 必须深入理解内核模块编程: 驱动程序就是以模块的形式加载到内核中的嘛! 本文介绍了内核模块编程的"hello, world!". 解释了一些概念, 提出了一些值得注意的问题. 由于初涉模块编程, 难免有所纰漏, 欢迎朋友转载 2015-01-23 17:51:28 · 723 阅读 · 0 评论 -
ldd3_基础知识
Linux Device Drivers第三版,但一直没仔细拜读.最近决定仔细研读它以学习Linux设备驱动程序. 在这里归纳学习笔记. 不知道自己有没有恒心把它看完,总之better later than never. 就让这一系列的笔记伴随我学习ldd3的漫漫长路吧ldd3介绍的是2.6.10版的内核An Introduction to Devices Drivers驱转载 2015-01-23 17:56:26 · 1090 阅读 · 0 评论 -
System.map文件
亲自编译过linux内核的可能编译完内核都会发现在生成vmlinuz的目录下面多出来一个System.map文件,一般位于/boot目录下,那么这个文件是做什么用的呢?通常我们会把发送到标准输出设备的链接映象信息重定向到一个文件中(如System.map)。编译内核时,System.map文件用于存放内核符号表信息。符号表是所有内核符号及其对应地址的一个列表,随着每次内核的编译,就会产生一原创 2015-01-23 17:33:36 · 976 阅读 · 0 评论 -
ldd3_模块VS应用程序
内核模块 VS 应用程序起始与结束应用程序一般从main()开始, 它执行一些指令, 再结束(返回值). Every module must have an entry function and an exit function. 不同于应用程序, 模块从初始化函数开始, 这个初始化函数名可以是init_module(), 也可以是你通过module_init宏注册转载 2015-01-23 17:52:28 · 476 阅读 · 0 评论 -
select、poll、epoll之间的区别总结
select、poll、epoll之间的区别总结[整理] select,poll,epoll都是IO多路复用的机制。I/O多路复用就通过一种机制,可以监视多个描述符,一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但select,poll,epoll本质上都是同步I/O,因为他们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的转载 2015-08-14 13:00:17 · 299 阅读 · 0 评论 -
initrd**.img: boot loader initialized RAM disk
initrdinitrd 所代表的英文含义: initial RAM disk初始 RAM 磁盘(initrd)是在系统引导过程中挂载的一个临时根文件系统,用来支持两阶段的引导过程。initrd文件中包含了各种可执行程序和驱动程序,它们可以用来挂载实际的根文件系统,然后再将这个 initrd RAM 磁盘卸载,并释放内存。在很多嵌入式Linux 系统中,initrd 就是最终的原创 2015-01-23 17:40:50 · 565 阅读 · 0 评论 -
ioctl函数的作用与使用
ioctl函数的作用特殊的read,write, 当你用read,write不能完成某一功能时,就用ioctl我这里说的ioctl函数是在驱动程序里的,因为我不知道还有没有别的场合用到了ioctl,所以就规定了我们讨论的范围。为什么要写篇文章呢,是因为我前一阵子被ioctl给搞混了,这几天才弄明白它,于是在这里清理一下头脑。一、 什么是ioctl。ioctl是设转载 2015-01-23 17:57:23 · 8745 阅读 · 1 评论 -
ldd3笔记_加载模块方法_模块程序组成
模块是如何加载到内核的要支持模块的动态加载,卸载, 在编译内核时要注意: “Lodable Module Support" 中的相应选项要选上. 比如要支持加载模块, 应该选上Enable loadable module support; 要支持卸载模块, 要选上Module unloading ; 要支持强制卸载模块, 要选上Forced module unloading!转载 2015-01-23 17:56:18 · 466 阅读 · 0 评论 -
linux kernel startup process!
compile kernel:make xconfig 此过程需要QT的支持,并且要很多选项进行选择(可以copy /boot/config-2.6.33.3-85.fc13.i686 文件到 linux_kernel/linux_source/linux-2.6.33.3/.config 就是用系统的配置文件替代编译环境的文件,从而此make xconfig可以省略)make转载 2015-01-23 17:42:51 · 343 阅读 · 0 评论 -
linux 进程间通信综述
linux进程间通信主要分为以下4个领域(1)消息传递(管道,FIFO,消息队列)(2)同步(互斥锁,条件变量,读写锁,信号量)(3)共享内存区(匿名共享内存区,有名共享内存区)(4)过程调用(Solaris门,Sun RPC)linux进程间的信息共享可以分为(1) 基于文件系统的共享(2) 基于内核的共享(3) 基于共享内存区的共享IPC对象原创 2015-01-23 21:17:17 · 478 阅读 · 0 评论 -
Linux patches
1, How to Apply Kernel PatchesWith each new kernel release, there is a corresponding 'patch' The simplest way to patch your kernel is to follow the directions in the Kernel HOWTO - Patching you转载 2015-01-23 17:55:36 · 598 阅读 · 0 评论 -
ARM Linux启动过程
1. 引 言Linux 最初是由瑞典赫尔辛基大学的学生 Linus Torvalds在1991 年开发出来的,之后在 GNU的支持下,Linux 获得了巨大的发展。虽然 Linux 在桌面 PC 机上的普及程度远不及微软的 Windows 操作系统,但它的发展速度之快、用户数量的日益增多,也是微软所不能轻视的。而近些年来 Linux 在嵌入式领域的迅猛发展,更是给 Linux 注入了新的活力。转载 2015-01-23 21:44:42 · 961 阅读 · 0 评论 -
Linux动态链接库高级应用
在《LINUX下动态链接库的创建与应用》一文中,我介绍了LINUX动态链接库的基本知识.其要点是:用户根据实际情况需要,利用dlopen,dlsym,dlclose等动态链接库操作函数,装入指定的动态链接库中指定的函数,然后加以执行.程序中使用很少的动态函数时,这样的做法尚可.如果程序需要调用大量的动态函数,那么采用这样的编程手段将是非常繁复的,所以我们必须使用一种更为聪明的办转载 2015-01-23 22:09:01 · 417 阅读 · 0 评论 -
System.map 的作用
什么是符号(Symbols)?在编程中,一个符号(symbol)是一个程序的创建块:它是一个变量名或一个函数名。 正如你自己编制的程序一样,内核具有各种符号也是不应该感到惊奇的。当然,区别在 于内核是一非常复杂的代码块,并且含有许多、许多的全局符号。内核符号表(Kernel Symbol Table)是什么东西?内核并不使用符号名。它是通过变量或函数的地址(指针)来使用转载 2015-01-23 22:09:15 · 525 阅读 · 0 评论 -
如何编写Linux设备驱动程序
序言 Linux是Unix操作系统的一种变种,在Linux下编写驱动程序的原理和思想完全类似于其他的Unix系统,但它与dos或window环境下的驱动程序有很大的区别。在Linux环境下设计驱动程序,思想简洁,操作方便,功能也很强大,但是支持函数少,只能依赖kernel中的函数,有些常用的操作要自己来编写,而且调试也不方便。本人这几周来为实验室自行研制的一块多媒体卡编制了驱动程序,转载 2015-01-23 22:10:57 · 506 阅读 · 0 评论 -
几个重要的Linux内核文件
一、vmlinuz--------------------------------------- vmlinuz是可引导的、压缩的内核。“vm”代表 “Virtual Memory“, Linux支持虚拟内存,不像老的操作系统比如DOS有640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”。vmlinuz是可执行的Linux内核,它位于/boot/v转载 2015-01-23 22:11:38 · 462 阅读 · 0 评论 -
Linux 系统内核的调试_02
2.4 kgdb的一些特点和不足使 用kgdb作为内核调试环境最大的不足在于对kgdb硬件环境的要求较高,必须使用两台计算机分别作为target和development机。尽管使用 虚拟机的方法可以只用一台PC即能搭建调试环境,但是对系统其他方面的性能也提出了一定的要求,同时也增加了搭建调试环境时复杂程度。另外,kgdb内核 的编译、配置也比较复杂,需要一定的技巧,笔者当时做的时候也是费了原创 2015-01-23 17:32:34 · 451 阅读 · 0 评论 -
gdb_kdb_kgdb
kdbftp://oss.sgi.com/projects/kdb/download/latestftp://oss.sgi.com/www/projects/kdb/download/ 内核的源代码中就有,用menuconfig重新设置内核选项,在kernel hacking中。kdb编译,安装,使用完全手册编译kdb步骤1:kdb不是Linu原创 2015-01-23 17:35:16 · 1589 阅读 · 0 评论 -
linux内核调试环境搭建步骤
linux内核调试环境搭建步骤linux 2.6.26 与其后的版本,其内置已经支持kgdb了。下面的内容描述了怎样在Linux环境下,搭建虚拟机调试linux内核的主要步骤:我的环境是Ubuntu10.4+VirtualBox(linux2.6.32.16内核源码)。一、安装VirtualBox以及目标机Linux这里目标机用来做测试环境,根据具体开发需要,可原创 2015-01-23 17:38:09 · 2980 阅读 · 0 评论 -
insmod: error inserting 'hello.ko': -1 Invalid module format
1, make xconfigGeneral setup---->>>local version -append to kernel release: 在这儿添加下面内容-170.2.117.fc10.i686or modify ./.config file:## General setup#CONFIG_EXPERIMENTAL=yCONFIG_L原创 2015-01-23 17:45:01 · 772 阅读 · 0 评论 -
Linux内核编译详解_01
Linux内核编译详解#tar -zxvf linux-2.4.18.tar.gz.tar.gz #make xconfig(基于图形窗口模式的配置界面,Xwindow下推荐使用) #make dep#make clean#make bzImage或make zImage#make modules#make modules_install#depmod原创 2015-01-23 17:48:31 · 612 阅读 · 0 评论 -
ldd3笔记_字符设备驱动
设备名字符设备通过文件系统中的文件名(设备名)来访问.这些设备名, 文件名有许多不同的, 可以互换的叫法, 比如: 设备节点, 节点文件, 设备文件... 在Linux中, 所有的设备都被视为特殊文件. 它们储存在文件系统中, 但是仅占用文件目录, 而不涉及存储数据. 实际上, 它们只记录了设备所属的设备类别, 主设备号和从设备号等相关信息. 上述的设备名位于/dev目录中,转载 2015-01-23 17:53:35 · 536 阅读 · 0 评论 -
Linux内核态和用户态的区别
当一个任务(进程)执行系统调用而陷入内核代码中执 行时,我们就称进程处于内核运行态(或简称为内核态)。此时处理器处于特权级最高的(0级)内核代码中 执行。当进程处于内核态时,执行的内核代码会使用当前进程的内核栈。每个进程都有自己的内核栈。当进程在执行用户自己的代码时,则称其处于用户运行态(用 户态)。即此时处理器在特权级最低的(3级)用户代码中运行。当正在执行用户程序而突然被中断程转载 2015-01-23 17:54:53 · 2376 阅读 · 1 评论 -
Linux 2015 年最热门的 10 篇技术文章
Linux2015 Linux 热门文章 Top 10 来自微信公众号 LinuxHub 「Linux爱好者」专注分享 Linux 相关内容,包括:业界动态、工具资源、使用技巧、课程和书籍等。长按上面的二维码关注 LinuxHub 后,发送 2015 阅读以下10篇热门Linux文章《Deb原创 2016-01-24 21:27:05 · 663 阅读 · 0 评论