
linux内核
文章平均质量分 64
普通网友
这个作者很懒,什么都没留下…
展开
-
fork()例程--父子进程,对线性地址的说明(3)
各位好以下是我来验证子进程与父进程之间不共享数据的代码 1 #include 2 #include 3 #include 4 int x = 9; 5 int main(int args, char *argc[]) 6 { 7 int status; 8 while(1) 9 { 10原创 2013-01-05 10:47:57 · 943 阅读 · 0 评论 -
linux内核——链表程序经典解说
双循环链表是linux内核常用的数据结构,这也是linux链表的一个非常有特色的地方。而涉及到链表的函数有链表的定义、链表头的初始化、链表的插入、链表的遍历、链表的删除和链表的回收。下面通过一个内核模块来说明链表的相关操作。#include #include #include #include #include MODULE_LICENSE("GPL");MOD转载 2013-01-11 23:16:00 · 716 阅读 · 0 评论 -
内核链表知识点
一、重要知识点 1.内核链表和普通链表的区别内核链表是一个双向链表,但是与普通的双向链表又有所区别。内核链表中的链表元素不与特定类型相关,具有通用性。我们先来看一幅图 kernel list展示的是内核链表的结构,normallist展示的是普通链表的结构。head是链表头,p1,p2,p3是链表节点。从图中可以看出普通链表的p1的转载 2013-01-11 23:17:59 · 734 阅读 · 0 评论 -
对内核链表程序的理解
1、步骤第一步:先构造一个结构体链表struct student第二步:定义一个指针*pstudent,让它指向struct student,并分配空间(kmalloc(sizeof(struct student)*5,GFP_KERNEL)其实*5就是分配5个结构体空间,其实就是一个数组形式,然后pstudent指向这个空间)第三步:list_add()函数向内核链表struct原创 2013-01-12 11:48:18 · 984 阅读 · 0 评论 -
Source Insight 关联 .S文件 汇编文件
(1)做ARM嵌入式开发时,有时得整汇编代码,但在SIS里建立PROJECT并ADD TREE的时候,根据默认设置并不会把该TREE里面所有汇编文件都包含进来,默认只加了.inc和.asm后缀的, .s后缀的没有。而且用SIS打开.s的文件时,一片黑白没有色彩, 感觉回到DOS的EDIT时代里了。 解决方法是在Options->Document Options里面,点左上的Docum转载 2013-01-16 00:21:23 · 1093 阅读 · 0 评论 -
系统调用详解--经典
related files in kernel:arch/arm/kernel/calls.S 声明了系统调用函数和sys_call_tableinclude/asm-arm/unistd.h 定义了系统调用的调 用号规则 vector_swi定义在arch/arm/kernel/entry-common.Svector_IRQ定义在 arch/arm/kernel/en转载 2013-01-16 23:21:38 · 774 阅读 · 0 评论 -
proc文件系统实验---入门经典
步骤:1、调用create_proc_entry创建一个struct proc_dir_entry结构体2、对创建的struct proc_dir_entry结构体进行赋值:read_proc 、mode 、size、 write_proc 、read_proc等注意:(1)、proc文件只有读它的时候才有内容(文件内容动态产生出来,由内核动态产生提供内容)(2)、普通文件,原创 2013-01-17 23:44:40 · 1609 阅读 · 0 评论 -
linux 内核配置机制(make menuconfig、Kconfig、makefile)讲解
前面我们介绍模块编程的时候介绍了驱动进入内核有两种方式:模块和直接编译进内核,并介绍了模块的一种编译方式——在一个独立的文件夹通过makefile配合内核源码路径完成 那么如何将驱动直接编译进内核呢? 在我们实际内核的移植配置过程中经常听说的内核裁剪又是怎么麽回事呢?我们在进行linux内核配置的时候经常会执行make menuconfig这个命令,然后屏幕上会转载 2013-01-19 10:55:37 · 1008 阅读 · 0 评论 -
make与makefile项目管理实验 ---对“$^ $@ $<”参数的说明
实验如下,make命令默认在当前目录下寻找名字为makefile的工程文件: [root@localhost home]# cd /home/makefiles/[root@localhost makefiles]# lsfun.c fun.h main.c makefile[root@localhost makefiles]# vi makefile [ro原创 2013-01-07 21:05:32 · 2051 阅读 · 0 评论 -
linux根文件系统的制作 .(经典实验)
昨天花了我几个小时的时间,最后终于把那个根文件系统制作好了~(一):首先linux根文件系统的制作需要的开发环境。1:移植Linux内核版本: linux-3.0.1 (只要能用就行)2:交叉编译工具:arm-linux-gcc 4.3.2(任选)3:文件系统制作工具:Busybox-1.13.3(任选)4:etc.tar.gz(二):交叉编译环境的搭建(这一步我在转载 2013-01-19 11:25:07 · 941 阅读 · 0 评论 -
linux下的memset函数
起因】希望对各种类型的数组进行初始化,避免野值memset函数将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。 【函数头文件】 提示:在linux中可以在terminal中输入 "man memset"进行查询 #include转载 2013-01-11 00:34:58 · 7651 阅读 · 0 评论 -
逻辑地址,线性地址,物理地址简介(1)
段页式内存管理中,逻辑地址,线性地址,物理地址的差别当使用80386时,我们必须区分以下三种不同的地址: 逻辑地址: 机器语言指令仍用这种地址指定一个操作数的地址或一条指令的地址。这种寻址方式在Intel的分段结构中表现得尤为具体,它使得MS-DOS或Windows程序员把程序分为若干段。每个逻辑地址都由一个段和偏移量组成。 线性地址: 线性地址是一个32位的无符号转载 2013-01-05 10:02:55 · 760 阅读 · 0 评论 -
某单元的逻辑地址是2345H:6789H求其物理地址--对段式管理和页式管理的说明(2)
问题:某单元的逻辑地址是2345H:6789H求其物理地址?????这个问题是要分情况的,不同架构类型的CPU,其寻址方式是不同的,楼主应该指明其硬件环境。在Intel架构的CPU中,一个逻辑地址的前半部分表示段值,后半部分表示偏移量。(1)、如果在80x86实模式下,2345h这个段值是段基址,它的物理地址PA = 2345h * 10h(16d)+ 6789h =原创 2013-01-05 10:13:31 · 2156 阅读 · 0 评论 -
什么是编译和链接??经典解释
编译:首先要把源文件编译成中间代码文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,这个动作叫做编译(compile)。编译时,编译器需要的是语法的正确,函数与变量的声明的正确。对于后者,通常是你需要告诉编译器头文件的所在位置(头文件中应该只是声明,而定义应该放在C/C++文件中),只要所有的语法正确,编译器就可以编译出中间目标文件。原创 2013-01-07 16:16:50 · 1733 阅读 · 0 评论 -
内核模块编程---使用内核模块参数(module_param()) (2)
1、使用内核模块参数有两个步骤:(1)、第一步:第一个变量来存储内核模块传过来的参数值(2)、第二步:声明模块参数module_param(),写在加载函数的前面2、内核模块参数的作用:控制模块不同的行为(例如控制一个驱动为串口还是并口驱动程序)3、例子说明:#include原创 2013-01-09 00:14:39 · 924 阅读 · 0 评论 -
启动分析
U-Boot 1.1.4 (Oct 23 2012 - 19:10:08) // uboot版本信息U-boot AP123DRAM: 32 MB // 内存大小 Flash Manuf Id 0x1c, Devic原创 2013-01-23 10:05:29 · 3645 阅读 · 2 评论 -
内核架构图 和 VFS虚拟文件系统图
1、内和架构图如下:2、VFS虚拟文件系统图:原创 2013-01-08 22:27:42 · 1004 阅读 · 0 评论 -
内核模块编程---helloworld简单入门程序(1)
1、内核模块hello.c程序如下#include #include MODULE_LICENSE("GPL");MODULE_AUTHOR("David Xie");MODULE_DESCRIPTION("Hello World Module");MODULE_ALIAS("a simplest module");static int __init h原创 2013-01-09 00:00:29 · 1612 阅读 · 2 评论 -
内核模块编程---符号导出(EXPORT_SYMBOL()) (3)
1、现在有两个内核模块函数分别为:EXPORT_SYMBOL()作用是,导出本模块函数给“其他模块函数使用”(1)、calculate.c内核模块#include #include MODULE_LICENSE("G原创 2013-01-09 00:34:14 · 1794 阅读 · 0 评论 -
TQ2440开发板启动信息--各种参数体现
TQ2440开发板启动信息##### EmbedSky BIOS for SKY2440/TQ2440 #####Press Space key to Download Mode ! // 提示(bootloader 启动倒计时)相同(1):格式基本固定 // 内核为什么拷贝到从0x00200000 ~0x00300000 空间呢??从0x00200000 ~0x00原创 2013-01-23 00:12:05 · 2513 阅读 · 0 评论 -
arm-linux-gcc交叉工具链的安装和使用
1、安装arm-linux-gcc交叉工具链[root@localhost Denny]# lsarm-linux-gcc-4.3.2.tgz Desktop gcc kernel modules shell实验 smb.conf tftp安装包 wireshark软件包at_remind.c file gdb make原创 2013-01-18 01:01:50 · 15895 阅读 · 1 评论