
linux
文章平均质量分 72
yarsen
这个作者很懒,什么都没留下…
展开
-
强大的vim配置文件,让编程更随意
http://www.cnblogs.com/ma6174/archive/2011/12/10/2283393.html花了很长时间整理的,感觉用起来很方便,共享一下。我的vim配置主要有以下优点:1.按F5可以直接编译并执行C、C++、java代码以及执行shell脚本,按“F8”可进行C、C++代码的调试2.自动插入文件头 ,新建C、C++源文件时自动插入转载 2014-03-14 16:49:36 · 696 阅读 · 0 评论 -
coredump简介
通常情况下core dump包含了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息等。可以理解为把程序工作的当前状态存储成一个文件。许多程序和操作系统出错时会自动生成一个core文件。 core dump又叫核心转储,当程序运行过程中发生异常,程序异常退出时,由操作系统把程序当前的内存状况存储在一个core文件中。 如何使用core文件? Linux代码转载 2012-04-09 14:17:54 · 1032 阅读 · 0 评论 -
DMA_ZONE、dma_mask、coherent_dma_mask和dma bounce相关问题的澄清
本文针对ARM体系结构,参考的内核版本是2.6.32。1. 为什么存在DMA ZONE?原因是某些硬件的DMA引擎不能访问到所有的内存区域,因此,加上一个DMA ZONE,当使用GFP_DMA方式申请内存时,获得的内存限制在DMA_ZONE的范围内,这些特定的硬件需要使用GFP_DMA方式获得可以做DMA的内存;如果系统中所有的设备都可选址所有的内存,那么DMA ZONE覆转载 2012-04-01 11:07:21 · 3340 阅读 · 0 评论 -
Managing Projects with GNU make 学习笔记
1. 简介makefile定义了一种语言来描述源代码、中间文件及可执行文件之间的关系。如果命令行指定了目标,则更新指定的目标,如果没有,则取第一个目标,也即默认目标。1.1 目标与依赖makefile包含构造程序的一组规则,规则包含三个部分:目标、依赖及执行命令。 target: prereq1 prereq2 commandstarget是需要构造的东西,依赖则是转载 2012-03-31 14:31:23 · 2059 阅读 · 2 评论 -
GDB调试从基础到提高(自我总结)
1.认识GDB调试在linux搞程序的时候我们往往要用到GDB调试在这期间我们会涉及到对多线程,宏,源文件等得调试,这时候我们会感到在linux中使用GDB的强大。首先我们开始调试之前,必须用程序中的调试信息编译要调试的程序。这样,gdb 才能够调试所使用的变量、代码行和函数。如果要进行编译,请在 gcc(或 g++)下使用额外的 '-g' 选项来编译程序:gcc -g main.c -转载 2012-03-14 09:24:35 · 861 阅读 · 0 评论 -
Ubuntu中没有/etc/inittab文件!
http://www.linuxdiyf.com/viewarticle.php?id=92001因为debian 系衍生出来的linux 一向是没有使用/etc/inittab 作为登入状态文档来使用的。但是虽然没有系统默认没有这个文件,但是你可以自己建一个inittab文件。因为从/etc/event.d/中的rc-default文件中代码可以看出:scriptru转载 2012-03-08 11:00:37 · 1441 阅读 · 0 评论 -
Linux kernel的 Makefile和Kconfig以及Make menuconfig的关系
熟悉内核的Makefile对开发设备驱动、理解内核代码结构都是非常重要的linux2.6内核Makefile的许多特性和2.4内核差别很大,在内核目录的documention/kbuild/makefiles.txt中有详细的说明。=== 1、内核Makefile概述Linux内核的Makefile分为5个部分: Makefile转载 2012-02-26 15:44:46 · 1733 阅读 · 1 评论 -
LILO是什么
从普通的桌面用户到 Linux? 系统管理员,大部分 Linux 用户都使用过一种名为引导加载程序的工具。此类工具的不同变种会提供不同层次的支持和功能。在很多情况下,Linux 发行版默认安装的引导加载程序并不总是适合需要;每个引导加载程序的默认设置也是如此。在本文中,Laurence Bonney 讨论了两个流行的引导加载程序 —— LILO 和 GRUB —— 的优点和缺点,并建议了很多配置,转载 2012-02-22 15:24:33 · 1093 阅读 · 0 评论 -
linux framebuffer study
/let's try to get the fb myers framebuffer的学习过程观察linux内核中的 /drivers/video/查找包含fb的文件;会发现framebuffer的实现需要三个关键文件:1 /linux/include/linux/fb.h2/linux/drivers/video/fbmem.c3/linux/drivers/video/转载 2012-02-07 19:41:03 · 1060 阅读 · 1 评论 -
framebuffer 简介
简介FrameBuffer 是出现在 2.2.xx 内核当中的一种驱动程序接口。Linux工作在保护模式下,所以用户态进程是无法象 DOS 那样使用显卡 BIOS 里提供的中断调用来实现直接写屏,Linux 抽象出FrameBuffer 这个设备来供用户态进程实现直接写屏。Framebuffer 机制模仿显卡的功能,将显卡硬件结构抽象掉,可以通过Framebuffer 的读写直接对显存进行操作转载 2012-02-07 18:31:58 · 807 阅读 · 1 评论 -
Linux 内核初始化的宏实现简析
在分析Linux网络栈的时候,分析网络子系统的初始化是一件很重要的事情。有一些子系统并不能以模块的形式出现,因为它们是必须存在于内核当中,随内核启动而加载。不过,与普通应用程序初始化不同的是,它们的初始化工作,并没有使用显示的函数调用,而是透过一些巧秒的宏来实现。例如:/* Initialize the DEV module. */static int __init net_d转载 2012-01-09 10:18:49 · 975 阅读 · 1 评论 -
如何实现程序的计时
最简单的 #include #include #include int main(void) { time_t first, second; first = time( NULL ); delay( 2000 ); second转载 2011-11-14 08:55:26 · 918 阅读 · 1 评论 -
Linux Kernel and Android 休眠与唤醒
简介休眠/唤醒在嵌入式Linux中是非常重要的部分,嵌入式设备尽可能的进入休眠状 态来延长电池的续航时间.这篇文章就详细介绍一下Linux中休眠/唤醒是如何工作 的, 还有Android中如何把这部分和Linux的机制联系起来的.国际化English Version: link中文版: link 作者: zhangjiejing Date: 2010-04-0转载 2011-12-01 14:53:18 · 1213 阅读 · 1 评论 -
Linux内核启动过程分析
1、Linux内核启动协议 阅读文档\linux-2.6.35\Documentation\x86\boot.txt 传统支持Image和zImage内核的启动装载内存布局(2.4以前的内核装载就是这样的布局): | |0A0000 +------------------------+ | Reserved for BIO转载 2011-11-25 14:30:01 · 3809 阅读 · 2 评论 -
Linux程序崩溃(segment fault)原因的调试
主要有两种方法:一是用gdb,二是用valgrind 1.先用 ulimit -c unlimited 设置环境 2.重新运行程序,等待 segment fault,应该会生成 core 文件 3.gdb core*以下是gdb ./UserStatsControl core.12345的输出#0 0x00000000 in ?? () (gdb) bt转载 2012-04-09 14:16:43 · 2112 阅读 · 0 评论 -
Ubuntu 下配置Tomcat 6.0.28
第一步:将下载的 apache-tomcat-6.0.28.tar.gz 使用命令tar -zvxf 解压,得到 apache-tomcat-6.0.28 文件夹; 命令:(终端定位到/home/oem/software/目录下) cd /home/oem/software tar -zvxf apache-tomcat-6.0.28.t转载 2012-04-10 15:04:39 · 716 阅读 · 0 评论 -
vim配置指南
http://edyfox.codecarver.org/html/_vimrc_for_beginners.htmlVIM 中可供用户定制的选项非常非常多,作为初学者,我们没有必要了解这么多东西。下面,滇狐简单列出了一些最常用的配置项,大家可以根据自己的需要将这些内容添加到自己的 .vimrc 中。1 基本设置set nocp 该命令指定让 VIM 工作在不兼转载 2014-01-02 16:51:17 · 769 阅读 · 0 评论 -
remap_pfn_range()详解
remap_pfn_range()函数的原型:int remap_pfn_range(struct vm_area_struct *vma, unsigned long virt_addr, unsigned long pfn, unsigned long size, pgprot_t prot); 该函数的功能是创建页表。其中参数vma是内核根据用户的请求自己填写的,而参数addr表转载 2013-04-09 20:49:53 · 5052 阅读 · 1 评论 -
龙芯2Fcpu内部物理地址的转换
在经过TLB或者特有机制之后,虚拟地址被转化成物理地址。这个物理地址是不能被外设直接使用的,要经过一些转化。 对于龙芯,32位的地址使用现在只残存于bios中。内核都是使用64bit的地址。在经过cpu的cache和tlb转换后,cpu-core出来的地址(就是我们常说的物理地址)还要经过一层转化。 cpu的地址转换靠的是4个cpu窗口。其中win0,win2是给DDR2映射转载 2013-04-08 16:33:55 · 1473 阅读 · 1 评论 -
缺页异常处理
两种缺页异常的情况:错误编程和属于地址空间但是还没有分配页框的所引起的do_page_fault第一步操作时读取引起缺页的线性地址,这个地址保存在address局部变量中:首先判断是否在内核空间(即检查缺页的线性地址是否属于第4G,是的话goto vmalloc_fault,处理因在内核态访问一个非连续内存而引起的错误)然后看cpu是否在执行中断或者执行内核进程如果转载 2012-10-30 16:10:59 · 2629 阅读 · 1 评论 -
linux虚拟文件系统浅析
http://hi.baidu.com/_kouu/item/6bfca5cc5d9778d4964452d0虚拟文件系统(VFS)在我看来, "虚拟"二字主要有两层含义:1, 在同一个目录结构中, 可以挂载着若干种不同的文件系统. VFS隐藏了它们的实现细节, 为使用者提供统一的接口;2, 目录结构本身并不是绝对的, 每个进程可能会看到不一样的目录结构. 目录结构转载 2012-09-26 11:03:56 · 663 阅读 · 0 评论 -
Linux Cache 机制探究
经过研究了下Linux相关代码,把对Linux Cache实现的方式做一些总结。相关源码主要在:./fs/fscache/cache.c Cache实现的代码./mm/slab.c SLAB管理器代码./mm/swap.c 缓存替换算法代码./mm/mmap.c 内存管理器代码.转载 2012-09-23 20:30:08 · 869 阅读 · 1 评论 -
ubuntu 下安装flash player
突然看到自己在1月14号写的一篇关于安装浏览器flash player插件的日志在草稿箱里面,今天就把它补充完整吧。 昨天晚上一时兴起,在自己的win7下安装了一个ubuntu系统。我是个赤裸裸的菜鸟,于是,便找遍了网上的教程,照着教程一步一步的完成了安装。今早一大早就起床了,想看个NBA什么的,但是发现自己的浏览器并没有安装flash player插件,所以并不能看到学校的网络电视转载 2012-07-03 09:35:19 · 715 阅读 · 0 评论 -
2.6.22.6 版本的主目录下的Makefile 语法分析
VERSION = 2# 给变量VERSION赋值PATCHLEVEL = 6# 给变量PATCHLEVEL赋值SUBLEVEL = 22# 给变量SUBLEVEL赋值EXTRAVERSION = .6# 给变量EXTRAVERSION赋值NAME = Holy Dancing Manatees, Batman!# 给变量NAME赋值# *DOCUMENTA转载 2012-05-22 10:21:37 · 3145 阅读 · 2 评论 -
linux图形界面基本知识(X、X11、Xfree86、Xorg、GNOME、KDE之间的关系)
LINUX初学者经常分不清楚linux和X之间,X和Xfree86之间,X和KDE,GNOME等之间是什么关系。常常混淆概念,本文以比较易于理解的方式来解释X,X11,XFREE,WM,KDE,GNOME等之间的关系。一、linux本身没有图形界面,linux现在的图形界面的实现只是linux下的应用程序实现的。图形界面并不是linux的一部分,linux只是一个基于命令行的操作系统,转载 2012-04-23 09:12:27 · 907 阅读 · 1 评论 -
转载 本机运行x程序出现:Can't open display 原因及其解决方法
在Linux/Unix类操作系统上, DISPLAY用来设置将图形显示到何处. 直接登陆图形界面或者登陆命令行界面后使用startx启动图形,DISPLAY环境变量将自动设置为:0:0, 此时可以打开终端, 输出图形程序的名称(比如xclock)来启动程序, 图形将显示在本地窗口上,在终端上输入printenv查看当前环境变量, 输出结果中有如下内容:DISPLAY=:0.0转载 2012-04-17 14:59:11 · 2721 阅读 · 0 评论 -
__asm__ __volatile__ GCC的内嵌汇编语法 AT&T汇编语言语法(一)
开 发一个OS,尽管绝大部分代码只需要用C/C++等高级语言就可以了,但至少和硬件相关部分的代码需要使用汇编语言,另外,由于启动部分的代码有大小限 制,使用精练的汇编可以缩小目标代码的Size。另外,对于某些需要被经常调用的代码,使用汇编来写可以提高性能。所以我们必须了解汇编语言,即使你有可 能并不喜欢它。如果你是计算机专业的话,在大学里你应该学习过Intel格式的8086/803转载 2012-04-12 10:20:33 · 1003 阅读 · 0 评论 -
__asm__ __volatile__ GCC的内嵌汇编语法 AT&T汇编语言语法(二)
3、立即数约束如果一个Input/Output操作表达式的C/C++表达式是一个数字常数,不想借助于任何寄存器,则可以使用立即数约束。由于立即数在C/C++中只能作为右值,所以对于使用立即数约束的表达式而言,只能放在Input域。比如:__asm__ __volatile__("movl %0, %%eax" : : "i" (100) ); 立即数约束很简单,也很转载 2012-04-12 10:21:11 · 832 阅读 · 0 评论 -
理解 chroot
什么是 chrootchroot,即 change root directory (更改 root 目录)。在 linux 系统中,系统默认的目录结构都是以 `/`,即是以根 (root) 开始的。而在使用 chroot 之后,系统的目录结构将以指定的位置作为 `/` 位置。图 1. Linux 系统的目录结构回页首为何使用 chroot在经过 chro转载 2012-04-11 14:46:25 · 2266 阅读 · 1 评论 -
Linux多线程编程
1 引言 线程(thread)技术早在60年代就被提出,但真正应用多线程到操作系统中去,是在80年代中期,solaris是这方面的佼佼者。传统的Unix也支持线程的概念,但是在一个进程(process)中只允许有一个线程,这样多线程就意味着多进程。现在,多线程技术已经被许多操作系统所支持,包括Windows/NT,当然,也包括Linux。 为什么有了进程的概念后,还要再引入线程呢?使用转载 2011-11-22 16:31:07 · 577 阅读 · 0 评论 -
makefile中几个语法
1. 变量赋值 '=' 和 ':=' 的区别保存此makefile#examplea = orginal_valueb = $(a) a = later_value all: @echo$(b)运行make#makelater_value#example a = orginal_valueb := $(a)转载 2011-11-21 10:08:27 · 1017 阅读 · 1 评论 -
linux SMP 启动过程学习笔记
1. SMP硬件体系结构:对于SMP最简单可以理解为系统存在多个完全相同的CPU,所有CPU共享总线,拥有自己的寄存器。对于内存和外部设备访问,由于共享总线,所以是共享的。Linux操作系统多个CPU共享在系统空间上映射相同,是完全对等的。 由于系统中存在原创 2011-10-04 18:52:25 · 1877 阅读 · 0 评论 -
Freezing of tasks [Kernel Documents]
Freezingof tasks(C)2007 Rafael J. Wysocki , GPL翻译: Arethe Qin I. 什么是任务冷冻?任务冷冻是一种在系统休眠或者系统挂起期间控制用户空间进程和一些转载 2011-10-03 21:44:45 · 1130 阅读 · 0 评论 -
up()&down()
Linux中针对信号量的两个基本操作是down()和up()。down()用来申请一个信号量,如果没有更多的任务可以获取此信号量,申请任务便会睡眠,直到此信号量被释放。up()用来释放一个信号量,与mutex不同,up()可以在任何上下文中调用,也可以被从来没有调用过down转载 2011-10-03 14:38:34 · 864 阅读 · 0 评论 -
might_sleep()
might_sleep():指示当前函数可以睡眠。如果它所在的函数处于原子上下文(atomic context)中(如,spinlock, irq-handler…),将打印出堆栈的回溯信息。这个函数主要用来做调试工作,在你不确定不期望睡眠的地方是否真的不会睡眠时,就把这个宏加进转载 2011-10-03 14:37:05 · 772 阅读 · 0 评论 -
Linux是如何获知处理器数量的
Linux是如何获知处理器数量的 Linux对SMP的支持已经相当成熟了。在配置SMP时,需要MP Spec的支持,本文简略的描述下,Linux是如何通过MP Spec获知CPU数量的。setup_arch()->get_smp_config()->转载 2011-10-03 14:36:32 · 736 阅读 · 0 评论 -
linux内核从start_kernel到init
在init/main.c文件中有个函数叫start_kernel,它是用来启动内核的主函数,我想大家都知道这个函数啦,而在该函数的最后将调用一个函数叫rest_init(),它执行完,内核就起来了,asmlinkage void __init start_kernel(voi转载 2011-10-03 14:30:26 · 957 阅读 · 0 评论 -
linux内核启动过程
执行体系结构相关的设置代码:如果需要,解压缩并移动内核代码本身初始化硬件这可能包括底层内存管理的设置将控制权转交给函数 start_kernel()start_kernel() 去执行以下事情(以及其他事情):打印内核版本和命令行启动控制台输出转载 2011-10-03 14:29:35 · 597 阅读 · 0 评论 -
Linux内核对CPU热插拔的支持
CPU hotplug Supportin Linux(tm) Kernel Maintainers: CPUHotplug Core:转载 2011-10-03 14:35:36 · 4784 阅读 · 0 评论 -
CPL, 门DPL, 描述符DPL 的关系
1. CPL要通过门(中断门,陷阱门,任务门,调用门)访问一个GDT中的描述符,必须有如下关系:CPL CPL >= DPL (描述符):门只能是用于保持或提升运行级别,因此GDT的描述符中的DPL均为0。如果有提升,则需要进行堆栈切换,如下: 运行级别不变的堆转载 2011-09-29 14:06:08 · 2365 阅读 · 0 评论