Redhat下安装自己的内核 1. 把下载的内核拷贝到一个目录下。然后解压:$ tar -jxvf linux-2.6.28.tar.bz2. 解压完后,在该文件夹下,会产生一个新的文件linux-2.6.28进入linux-2.6.2目录,执行一下步骤2. $ Makedistclean3.$ Cp /usr/src/kernels/2.6.18-164.el5-i686/.config .config
字符设备驱动 (1)、实现功能:创建设备文件。在用户空间实现对设备文件的操作。(2)、实现过程:写字符设备程序char_1.c 文件==》写makefile并编译==》加载$insmod char_1.ko ==》查看系统的设备号$cat /proc/devices (已经为名为xtl_test的设备申请了一个设备号 111)1、写字符设备程序char_1.c 文件#inclu
内核模块基础 内核的模块第一步:编写一个hello.c文件#include #include /*内核中库文件*/ MODULE_LICENSE("DUAL BSD/GPL");static int num=300;module_param(num,int,S_IRUGO);/*传入可变参数,加载时传入参数*/static int xtl_init(void){ printk
Linux内核模块导出后无法调用问题解决(模块间函数调用通讯) Linux模块间通讯方法非常的多,最便捷的方法莫过于函数符号导出,然后直接调用。然而在linux2.6.26以后的内核中模块的符号导出经常会出现问题,一个模块中的导出符号不能被另外一个模块进行调用。这个使得处理有依赖关系的模块非常的头疼。 1. 符号导出函数EXPORT_SYMBOL() EXPORT_SYMBOL标签内定义的函数对全部内核代码公开,不用修改内核代码
子网掩码和IP地址运算 子网掩码:作用:将某个IP地址划分成网络地址和主机地址两部分。子网掩码一旦设置,网络地址和主机地址就固定了。计算:将IP地址和子网掩码转换为二进制的形式,然后进行“与”计算。得到网络号,也就是该子网的首地址。一直纠结于为什么这么计算,现在整理下对这个计算的理解:1、 首先是子网掩码可以根据子网中的主机数得来。将主机数用二进制表示,计算二进制的个数N。把32位的
从文件系统本质看硬链接和软连接的区别 该文件的注释的参考页码书籍:linux c编程一站式学习1、 首先把一个文件作为分区格式化。然后在这个文件系统中分析硬链接和软连接的区别$ Dd if=/dev/zero of=fscount=256 bs=4k该语句详细解释在P510 2、 用常规文件制作成的文件系统也可以像磁盘分区一样mount 到某个目录。$Sudo mount –o loop fs /mount
堆&链表&中式表达式及实现 /*program name:stack_expre.cfunction:input the expression and caculatte the valuedata:13-8-4author:tt*/#include #include /*defines a structure type*/struct s_node{ int data; struct s_node
二叉树 系统里的文件的关系可以用树来表示,文件是线性的存放在硬盘上的。可以用树表示的内容在硬盘上线性存放着。一、二叉树有三种表示方式1.二叉树数组表示法:(空间浪费大)在主程序中定义了nodelist[16] 和b_tree[16],在执行程序是输入:1 ,2,3,4,5,6时会出现错误。原因是数字依次增大时,形成的是右歪斜树。此时的二叉树空间需要到2^6-1个。分配的空间不够使,
环形队列 环形队列牺牲了一个字节front 指向的字节不能存放数据开始写的添加一个数据的子函数如下:这样程序在添加数据时不会出现错误,在添加到满时会显示“the queue is full”。在删除时就出现错误,如果添加到满,rear 和front 相等。在删除数据的函数中就直接输出“the queue is empty!”程序修改:一个小小的区别~~~各种伤肺~
Makefile 基础知识 1.目的:实现自动化编译2.过程:make命令执行=====》需要一个 Makefile 文件=======》makefile的书写规则3.实现:编写makefile 文件====》执行$make======》生成可执行文件4.makefile详细规则:4.1基本规则:target(目标文件): prerequisites(依赖的文件)command(shell
查看用户空间的内存分配 1.运行一个可执行文件 a.out2.查看用户进程的进程号: ps -as3.显示内存分配:cat /proc/1830/maps4.读可执行文件的EIF文件:readelf -a a.out5.对比找出数据的位置~~~data/biss/~~初始化、未初始化:全局变量、局部变量、指针~~
linux &静态库&动态库 linux支持两种库的类型:静态库和动态库(共享库)1. Linux静态库和动态库的命名规则:静态函数库:libxxx.a动态函数库:libxxx.so2. Gcc/g++的编译链接:通常,对函数的链接是在编译期的时候完成的,所有相关的对象文件与相关联的library被链接成一个可执行文件,这就是使用静态库的编译过程,而动态库技术:对一些库函数的
函数调用&栈 链原文接 http://blog.csdn.net/zdl1016/article/details/4139839?reload 理解调用栈最重要的两点是:栈的结构,EBP寄存器的作用。右侧的红色部分,写出了引发栈结构变化的对应的指令+| (栈底方向,高位地址) || ....................|| ...................
Linux下静态库的创建----ar命令的使用详解 点击打开链接ar命令简介: ar命令可以用来创建、修改库,也可以从库中提出单个模块。 1、如何查看一个静态库中包含那些.o文件: ar -t lib_libname.a2、ar命令的使用格式: ar 参数
make &make install 时出现错误和警告的修正 Aspseek1.4更新日志一、make && make install时出现的警告、错误及其修正错误及警告:charsets.cpp:475:1: warning: deprecated conversion from string constant to 'char*'/usr/include/c++/4.5/backward/backward_warning.h:28:2:
VIM命令模式与输入模式切换 vi编辑器vi是UNIX和类UNIX环境下的可用于创建文件的屏幕编辑器。vi有两种工作模式:命令模式和文本输入模式。启动vi需要输入vi,按[Spacebar]键并输入文件名后回车。切换模式键vi从命令模式切换到文本输入模式。每个键以不同方式使vi进入文本输入模式。按[ESC]键使vi从文本输入模式回到命令模式。表1列出了vi从命令模式切换到文本输入模式的命令键及其功能。表1
unix系统接口(一) unix操作系统通过一系列的系统调用提供服务,这些系统调用实际上是操作系统内的函数,可以被用户程序调用。借助系统调用获得最高小效率,或者是访问标准库中没有的功能。一、文件描述在unix操作系统中,所有的外围设备都被看做是文件系统中的文件,所有的输入输出都要经过文件读写来完成。就是说,通过一个单一的接口机能处理外围设备和程序之间的所有通信。通常,在读写文件之前,必须先将这个意图通知系统,
截图软件scrot 在写笔记的时候遇到的一个小问题,怎么把程序窗口截下来.在网上找的scrot截图软件的使用整理如下: 1.安装:Fedora下 yum install scrot , Ubuntu下apt-get install scrot . 2. 抓取桌面:scrot desktop.png,该命令将当前的整个桌面抓取下来,并保存为 desktop.png 文件。可以在当
c++简单程序设计(一) 借考试的机会整理一下c++, 重点是整理一下 c++中和c语言中不同的知识点,着重学习嵌入式学习中涉及到的面向对象的思想,运算符重载,模板和异常处理.(一) 基础知识1. c++中只有字符串常量,没有字符串变量.2. 符号常量的使用声明形式const float PI=3.14(声明是必须赋值)3.关系运算符的优先级(,>=)相同高于(==,!=)逻辑运算符的优先级