摘要:
到http://git-scm.com/ 下载git安装程序。 直接双击进行安装。 安装完成后启动Git Bash 进入命令行界面: 执行git clone命令拷贝linux源代码,git版本库地址是: git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git http://git.kernel.org/pub/sc... 阅读全文
摘要:
A master boot record (MBR) is a type of boot sector popularized by the IBM Personal Computer.[1] It consists of a sequence of 512 bytes located at the first sector of a data storage device such as a h... 阅读全文
摘要:
在一个c文件中定义一个变量,在另外的c文件中引用该文件中的变量,变量默认是extern的,也就是对外部可见的,如果使用了static声明,那么这个变量就是对这个文件可见,其他模块是不可见的: 如下例: 阅读全文
摘要:
对二维指针进行sizeof运算是什么意思呢?(c08:Quoter.cpp)屏幕剪辑的捕获时间: 2011-07-17 10:19得到的结果如下所示:Sizeof quotes = 36,正好是指针的大小×一维指针的个数,sizeof *quotes是计算一维指针的大小,所以对二维指针进行sizeof 运算,得到的结果是二维指针中包含的一维指针的个数×一位指针的长度。 阅读全文
摘要:
一、定义 1.原码 正数的符号位为0,负数的符号位为1,其它位按照一般的方法来表示数的绝对值。用这样的表示方法得到的就是数的原码。 【例2.13】当机器字长为8位二进制数时: X=+1011011 [X]原码=01011011 Y=+1011011 [Y]原码=11011011 [+1]原码=00000001 [-1]原码=10000001 [+127]原码=01111111 [-127]原码=1... 阅读全文
摘要:
有如下代码: 1: #include <stdio.h> 2: 3: #include <string.h> 4: 5: #include <malloc.h> 6: 7: #include <stdlib.h> 8: 9: typedef struct AA 10: 11: { 12: 13: int b1:5; 14: 15: int b2:2; 16: 17: }AA; 18: 19: in... 阅读全文
摘要:
1. /kernel/irq.c softirq_init 2.6.32.25 1.1 for_each_possible_cpu for ( ( ( cpu ) ) = - 1 ; ( ( cpu ) ) = cpumask_next ( ( ( cpu ) ) , ( cpu_possible_mask ) ) , ( ( cpu ) ) < nr_cpu_ids ; ) 1.2 per_cp... 阅读全文
摘要:
调用spin_lock_irqsave(&chip->lock,flags); 的下层实现是什么?#define spin_lock_irqsave(lock, flags) \do { \typecheck(unsigned long, flags); \flags = _spin_lock_irqsave(lock); \} while (0) 1: /* 2: 3: * Check at c... 阅读全文
摘要:
/* * 2011年4月8日22:49:50 * 作者:张超 * email:uestczhangchao@gmail.com * Linux2.6.32.25中如何获得当前进程的指针? */ //Thread_info.h //申明per_cpu_kernel_stack变量,它在其它位置定义,见下文内容. 1: DECLARE_PER_CPU(unsigned long, kernel_st... 阅读全文
摘要:
问:请教各位大侠:《深入理解linux内核》中,内核同步章节有这样一段话保护可延迟函数(软中断)所访问的数据结构应采取的措施:单处理器上:在单处理器上不存在竞争条件,这是因为可延迟函数(软中断)的执行总是在一个CPU上串行执行--也就是说,一个可延迟函数不会被另一个可延迟函数中断。因此,根本不需要同步原语。 我觉得不太对啊,一个软中断虽然不会被另一个软中断“中断”,但是可能被硬中断“中断”,而硬中... 阅读全文
摘要:
符号链接和硬链接的区别(1)创建一个硬链接可以使用命令ln或者函数link()为文件创建一个链接。#include <unistd.h>int link( const char *path1, const char *path2 );硬链接本身就是一个目录项,(比如文件名+索引节点号),可以将文件名与文件的位置关联起来;符号 链接也称软链接,是指存储了一个字符串的文件。这个字符串可以在路径名解析的过程中,用于修改路径名。目录项对应于单个链接,但是一个索引节点可能有几个链接的目标(对应几个目录项),因此索引节点中包含一个对链接到索引节点的链接数的计数。当用open()创建一个新的文件 阅读全文
摘要:
闲来无事,又开始学习linux设备驱动程序,以前本来就有一颗内核树,但是是2.6.31的,我下载了最新的2.6.39.1内核,进行了编译,建立了内核树,同时将默认启动的内核改成了最新的内核,通过uname -r命令可以查看,如下图所示:现在把主要的过程记录如下,1、首先到www.kernel.org 下载最新版的内核,将内核解压到/usr/src目录下,使用命令tar jvxf linux-2.6.39.1.tar.bz2,如下图所示:2、切换到linux-2.6.39.1目录中,执行sudo make menuconfig,对内核进行配置:如果没有menuconfig,执行下面的命令,下载相 阅读全文
摘要:
一、在安装模块是出现如下错误: 查看模块信息的命令,如下所示: 而系统的内核版本是: 屏幕剪辑的捕获时间: 2011-07-04 16:20 所以编译模块用的版本号和系统的内核版本不统一,这样内核就会报错,这个功能是用配置选项CONFIG_MODVERSIONS 决定的,如下图: 其中一种解决办法,http://apps.hi.baidu.com/share/detail/14755964 ,当然... 阅读全文
摘要:
最近,用2.6.39.1重新编译了内核,重新跑了hello world驱动,建立好了驱动的开发环境,看了一些文档,但是还没有熟练的掌握驱动开发的技术,在这里记录一些心得,备忘。以前在看ldd3的时候,觉得十分的茫然,连内核树是什么都不知道,然后在不知道的某一天,编译了一个内核,虽然建立起了一棵内核树,但是并没有用自己编译的内核来替换现有的内核,对于驱动的链接过程和源代码的目录结构也不熟悉,这里总结如下:源代码目录:/usr/src/linux-2.6.39.1内核的initrd目录:/boot/initrd-img-2.6.39.1grub配置文件目录:/boot/grub/grub.cfg 阅读全文
摘要:
查看当前shell的类型,echo $SHELL $?表示上次命令退出时的状态,使用echo $? 执行前一条命令,!!(fc 命令不可用) 执行第n条命令!n 按住ctrl+r,可以先前搜索执行过的命令,会给出提示: History -c清除历史记录: alias创建命令的别名,alias ll='ls -l' ubuntu 最常用和终端快捷键 源文档 <http://blogold.china... 阅读全文