- 博客(5)
- 资源 (18)
- 收藏
- 关注
原创 内核与用户态程序共享内存的方法
一、首先获取一块物理上连续的物理内存有多种方法。(a)通过kernel命令行参数预留一些内存这种方法,适合于需要大块的物理连续的内存。假设物理内存总量为256M。命令行参数中,指定 mem=224M。即只让内核使用前224M内存,忽略其余的内存。这样,我们就有了32M的内存可用,内存起始物理地址为224*1024*1024。在内核态,通过ioremap,就可以将此物理地址处
2015-03-17 18:35:43 9308
原创 Linux内核模块(驱动)编译详解
本文主要说说如何编译自己开发的内核模块。由于驱动通常也被编译成内核模块,因此文章的内容也适用于驱动的编译。由于在下能力相当有限,有不当之处,还望大家批评指正^_^一、准备工作准备工作如何做,这里就不详说了。a) 首先,你要有一台PC(这不废话么^_^),装好了Linux。b) 安装好GCC(这个指的是host gcc,用于编译生成运行于pc机程序的)、m
2015-03-08 15:50:37 23728 6
原创 Linux内核编译详解
学习了网上的一些资料,自己试着摸索了一下,整理出此文。由于在下水平相当有限,不当之处,还望大家批评指正^_^重要的参考资料有:http://raspberrypi.stackexchange.com/questions/192/how-do-i-cross-compile-the-kernel-on-a-ubuntu-hosthttp://blog.csdn.net/x
2015-03-08 12:43:54 53315 5
原创 话说Linux内核模块
首先,一个内核模块,就是一个ELF文件。内核本身也是一个ELF文件。一个模块,可能是一个协议,一个文件系统,一个驱动,一种具体的应用,等等任何东西。也可能是多种东西的组合。内核在运行时,通过动态加载/卸载内核模块,可以动态扩展/删减内核的功能。每个模块在编译时(假设模块名为xxx),会自动生成一个xxx.mod.c的文件,该文件会链接到xxx模块中去。下面是此文件的一个
2015-03-16 15:05:06 3719
原创 用户态实现线程调度(任务调度)
代码适用于X86与X86_64架构。不支持抢占,任务只能自己让出CPU。下面是代码,将代码全部复制到一个.c文件中,即可编译运行。/* * 本软件为免费、开源软件。 * 本软件的版权(包括源码及二进制发布版本)归一切公众所有。 * 您可以自由使用、传播本软件。 * 您也可以以任何形式、任何目的使用本软件(包括源码及二进制发布版本),而不受任何版权限制。 * ========
2015-03-05 11:42:03 2945
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人