
linux
文章平均质量分 53
bdc995
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux ACL 学习笔记
一、 为什么要使用ACL先让我们来简单地复习一下Linux的文件权限。在 linux下,对一个文件(或者资源)可以进行操作的对象被分为三类: file owner(文件的拥有者),group(组,注意不一定是文件拥有者所在的组), other (其他)而对于每一类别又分别定义了read, write and execute/search 权限 (这里不讨论SUID,转载 2015-01-26 13:55:50 · 649 阅读 · 0 评论 -
浅析shell中source命令和.逗号命令对当前父shell的影响
lu1() { echo 'aaaaaaaaa'}lu2() { echo 'bbbbbbbbb'}上面就是,run.sh的源码了,可以看到只有2个函数定义没有任何地方来调用这两个函数,那么我们如果这样执行:luther@gliethttp:~$ ./run.sh luther@gliethttp:~$ 可以看到什么都没有,因为没有地方调用这2个转载 2011-12-02 11:27:07 · 712 阅读 · 0 评论 -
ELF文件加载过程代码分析
fs/binfmt_elf.c代码如下:static int load_elf_binary(struct linux_binprm *bprm, struct pt_regs *regs){struct file *interpreter = NULL; /* to转载 2011-10-13 17:32:27 · 2519 阅读 · 0 评论 -
ARM开发步步深入之MMU初窥
实验目的:启用MMU,映射SDRAM的地址空间,操作虚拟地址实现“点灯大法”,借此掌握MMU的使用。实验环境及说明:恒颐S3C2410开发板H2410。H2410核心板扩展有64MB的K4S561632 SDRAM(4M*16bit*4BANK),地址范围是0x30000原创 2011-08-18 10:58:16 · 1044 阅读 · 0 评论 -
宏定义中使用do{}while(0)的好处
#define MACRO_NAME(para) do{macro content}while(0)的格式,总结了以下几个原因:1,空的宏定义避免warning:#define foo() do{}while(0)2,存在一个独立的block,可以用来进行变量原创 2011-08-03 22:26:20 · 569 阅读 · 0 评论 -
动态电压与频率调节在降低功耗中的作用
动态电压与频率调节在降低功耗中的作用 摘要 目前,为了降低功耗,越来越多的芯片支持动态电压与频率调节DVFS(Dynamic Voltage and Frequency Scaling)。本文列举了基于软件和硬件的DVFS实现,验证了DVFS在降低功耗方面的巨大潜力,并分析了影响转载 2011-07-11 16:48:39 · 2618 阅读 · 0 评论 -
为什么linux将中断向量拷贝到0xffff0000?
<br />ARM supports two exception address: 0x0000_0000(normal address) and 0xffff_0000(high vector address), up to CP setting.<br /> After MMU is enabled, 0x0000_0000 locates in user sapce, so we should set it to 0xffff_0000 which is in kernel space原创 2011-05-27 17:48:00 · 1741 阅读 · 0 评论 -
Linux ext2/ext3文件系统详解
<br />Linux ext2/ext3文件系统使用索引节点来记录文件信息,作用像windows的文件分配表。索引节点是一个结构,它包含了一个文件的长度、创建及修改时间、权限、所属关系、磁盘中的位置等信息。一个文件系统维护了一个索引节点的数组,每个文件或目录都与索引节点数组中的唯一一个元素对应。系统给每个索引节点分配了一个号码,也就是该节点在数组中的索引号,称为索引节点号。 linux文件系统将文件索引节点号和文件名同时保存在目录中。所以,目录只是将文件的名称和它的索引节点号结合在一起的一张表,目录中每一转载 2011-05-17 19:38:00 · 863 阅读 · 0 评论 -
tar 压缩与解压
解压:tar -xf env.tar压缩:[root@vmmywang env]# tar -cf all.tar *.*[root@vmmywang env]# lsall.tar 有了上面的知识,你应该可以解开多种压缩文件了,下面对于tar系列的压缩文件作一个小结: 1)对于.tar结尾的文件 tar -xf all.tar 2)对于.gz结尾的文转载 2009-11-13 17:17:00 · 1156 阅读 · 0 评论 -
c++ makefile
假设我们有下面这样的一个程序,源代码如下:********illustrate:********** there ere three files class.h class.c++ main1.c++//*********list class.h**********class tdate{private:int month;int day;int year;public://you must de转载 2009-11-13 15:22:00 · 924 阅读 · 0 评论 -
嵌入式系统BootLoader技术内幕
本文详细地介绍了基于嵌入式系统中的 OS 启动加载程序 ―― Boot Loader 的概念、软件设计的主要任务以及结构框架等内容。 1. 引言在专用的嵌入式板子运行 GNU/Linux 系统已经变得越来越流行。一个嵌入式 Linux 系统从软件的角度看通常可以分为四个层次: 1. 引导加载程序。包括固化在固件(firmware)中的 boot 代码(可选),和 Boot Loade转载 2009-11-12 16:04:00 · 441 阅读 · 0 评论 -
自动挂载U盘
目前一些主流桌面系统(如Gnome,KDE,Xfce)的较新版本都支持自动挂载(mount)U盘了. 一个流传很广的说法是 HAL(硬件抽象层) 起了自动挂载的作用, 其实这是误解. 对于2.6内核而言, udev 才是直接从内核接收设备连接或断开信息的主体. udev 从内核得到信息后,根据一些简单规则(注意,是简单规则), 在 /dev 目录下创建相应的设备节点, 并进行转载 2012-07-05 14:42:04 · 1495 阅读 · 0 评论 -
Android 内核修改了标准Linux内核的那些内容
ARCH -- 这是Android修改了arch/arm下面的一些文件:arch/arm: Chg: arch/arm/kernel/entry-armv.S Chg: arch/arm/kernel/module.c Chg: arch/arm/kernel/process.c Chg: arch/arm/kernel/ptrace.c Chg: arch/arm/ker转载 2012-07-06 09:56:30 · 1173 阅读 · 0 评论 -
Android命令行启动程序正确使用技巧解析
Android程序启动的方式除了使用界面方式进行启动之外,还能通过命令行启动。那么就让我们大家一起来看看Android命令行启动程序的具体操作方法。Android应用程序的启动方法有许多种,大家可以通过我们以前介绍的快速启动方法来启动,同时还能通过本文介绍的Android命令行启动程序的具体方法来启动程序。在Android中,除了从界面上启动程序之外,还可以从命令行启动程序,使用的是命转载 2013-07-04 18:13:31 · 853 阅读 · 0 评论 -
http://www.linux-usb.org/usb.ids
USB vid pidhttp://www.linux-usb.org/usb.ids原创 2013-07-02 16:04:50 · 2893 阅读 · 0 评论 -
alsa config
#title:box:HDMI Audio#author:wangsijie#:0,1------------------------------------------------------------------------------硬件环境Nvidia(290)----------------------------------------------------转载 2012-12-13 16:12:26 · 5088 阅读 · 0 评论 -
ubuntu12.04 make menuconfig error
ubuntu 12.04 ,error:$make menuconfig HOSTLD scripts/kconfig/mconfscripts/kconfig/mconf.o: In function `show_help':mconf.c:(.text+0x744): undefined reference to `stdscr'scripts/kconfig/m原创 2012-11-28 17:15:21 · 5246 阅读 · 2 评论 -
DebugFS
DebugFS,顾名思义,是一种用于内核调试的虚拟文件系统,内核开发者通过debugfs和用户空间交换数据。类似的虚拟文件系统还有procfs和sysfs等,这几种虚拟文件系统都并不实际存储在硬盘上,而是Linux内核运行起来后才建立起来。通常情况下,最常用的内核调试手段是printk。但printk并不是所有情况都好用,比如打印的数据可能过多,我们真正关心的数据在大量的输出里不是那么一目了然转载 2012-11-06 10:50:57 · 1061 阅读 · 0 评论 -
Linux tty driver
tty的架构其实分为三层:第一层:tty_core所有tty类型的驱动的顶层构架,向应用曾提供了统一的接口,应用层的read/write等调用首先会到达这里。此层由内核实现,代码主要分布在drivers/char目录下的n_tty.c,tty_io.c等文件中static const struct file_operations tty_fops = { .llsee转载 2012-08-19 21:55:51 · 1072 阅读 · 0 评论 -
input system
本文简单介绍一下linux的input system,并通过一个实际的案例介绍一下在具体的项目中如何实现自己的inputsystem。1. 系统结构钻研技术的总是喜欢了解细节以及系统的整个框架,那首先就从linux的input system的结构开始说起,如下图所示:Input system 有三大块组成:Drivers:相当于输入设备的驱动程序,负责接收来自硬件的输入中转载 2012-08-02 09:56:22 · 1418 阅读 · 0 评论 -
Usage of uvent,bind and unbind interface in /sys
In /sys, there are many kobject which have the attribute of uevent. Mainly thay are used as the interface for communication between kenel and udev. To udev and the netlink protocol, they doesn’t have转载 2012-07-31 17:11:19 · 1659 阅读 · 0 评论 -
Manual driver binding and unbinding
One new feature in the 2.6.13-rc3 kernel release, is the ability to bind and unbind drivers from devices manually from user space. Previously, the only way to disconnect a driver from a device was us转载 2012-07-31 17:34:00 · 1381 阅读 · 0 评论 -
ARM Linux启动过程分析
摘 要: 嵌入式 Linux 的可移植性使得我们可以在各种电子产品上看到它的身影。对于不 同体系结构的处理器来说Linux的启动过程也有所不同。本文以S3C2410 ARM处理器为例, 详细分析了系统上电后 bootloader的执行流程及 ARM Linux的启动过程。 关键词:ARM Linux bootloader 启动过程 中图分类号:TP316 1. 引 言 Linux 最初是由瑞转载 2009-11-09 15:27:00 · 595 阅读 · 0 评论 -
Linux下的段错误产生的原因及调试方法
简而言之,产生段错误就是访问了错误的内存段,一般是你没有权限,或者根本就不存在对应的物理内存,尤其常见的是访问0地址.一般来说,段错误就是指访问的内存超出了系统所给这个程序的内存空间,通常这个值是由gdtr来保存的,他是一个48位的寄存器,其中的32位是保存由它指向的gdt表,后13位保存相应于gdt的下标,最后3位包括了程序是否在内存中以及程序的在cpu中的运行级别,指向的g转载 2009-10-29 11:08:00 · 530 阅读 · 0 评论 -
linux 实时分析
http://www.ibm.com/developerworks/cn/linux/l-lrt/part1/转载 2009-11-06 16:10:00 · 528 阅读 · 0 评论 -
ldd3 驱动--测试scull
scull驱动模拟设备。编写读写设备的控制文件testscull.c向scull发送和接收数据。1 安装scull.ko 在ldd3驱动源码文件夹中,进入scull文件夹,make,生成scull.ko,运行其中的shell文件:scull_load,完成scull.ko的安装。 # cd /sys/module/scull/parameters/ #cat scull_ma原创 2008-12-23 20:18:00 · 2813 阅读 · 4 评论 -
ubuntu8.04 开发环境创建
ubuntu安装成功后,运行./configure等编译命令出错,发现并没有完全安装gnu的编译环境(虽然gcc -v可以看到配置信息). sudo apt-get install build-essential仅此一条命令即可将编译开发环境构建出来,在其依赖包中完成编译连接工具,与内核相关的头文件等的安装。 由于要做图形开发,构建X11开发环境,运行命令sudo a原创 2008-11-22 20:23:00 · 682 阅读 · 0 评论 -
ubuntu8.04 安装中文 输入法
ubuntu 8.04 安装 完成以后 默认已经安装了 输入法scim,不过里面 没有中文,要安装中文的支持包sudo apt-get install scim-chinese安装完成后要将其加入scimsudo gedit /etc/X11/Xsession.d /95xinput这个步骤是新建一个95xinput的文件,该文件的具体内容如下: /usr/bin/scim -d原创 2008-11-22 20:11:00 · 858 阅读 · 0 评论 -
ubuntu 3D desktop
研究了好久3D桌面效果,终于找到这个好方法了。CompizConfig设置管理器的功能实在是太强大了。在Ubuntu 8.04下测试通过。首先安装CompizConfig设置管理器(3D驱动必须装好)sudo apt-get install compizconfig-settings-manager运行 系统->首选项->Advanced Desktop EffectsSett转载 2008-11-22 13:35:00 · 962 阅读 · 2 评论 -
The Linux Kernel HOWTO
This is a detailed guide to kernel configuration, compilation, upgrades, and troubleshooting for ix86-based systemshttp://www.linuxdocs.org/HOWTOs/Kernel-HOWTO.htmlhttp://www.faqs.org/docs/Linux-H原创 2008-11-18 21:48:00 · 778 阅读 · 0 评论 -
Linux 2.6内核的编译步骤及模块动态加载
本文是基于2.6的内核,也建议各位可以先看一下《Linux内核设计与实现(第二版)》作为一个基础知识的铺垫。当然,从实践角度来看,只要按着以下的步骤去做也应该可以实现成功编译内核及加载模块。个人用的Linux版本为:Debian GNU/Linux,内核版本为:2.6.20-1-686.◆第一步,下载Linux内核的源代码,即构建LDD3(Linux Device Drivers 3rd)转载 2008-11-18 10:27:00 · 789 阅读 · 0 评论 -
编译链接和动静态库
http://blog.youkuaiyun.com/dansen_xu/archive/2007/08/29/1764618.aspx转载 2008-11-18 09:59:00 · 654 阅读 · 0 评论 -
Linux下动态加载库的实例
Linux下动态加载库的实例 //say.c#include stdio.h>int say(char **str){ printf("%s/n",str);}将say.c 生成共享库的编译:gcc -o dlopen.so -shared say.c//使用dlopen函数动态加载库的源代码/*** Fil转载 2008-11-11 10:48:00 · 966 阅读 · 0 评论 -
POSINX线程
http://www-128.ibm.com/developerworks/cn/linux/thread/posix_thread1/转载 2008-11-11 11:56:00 · 573 阅读 · 0 评论 -
gcc-4.1.0与gdb6.5安装
一 安装gcc-4.1.0 在redhat 9.0下,用gcc-3.2.2编译库libusb-0.9.3时出现错误,对gcc扩展: -Wno-pointer-sign 和-fvisibility=hidden不支持,换用交叉编译器arm-linux-gcc3.4.1可编译通过。为彻底解决问题,决定升级gcc。 1 下载gcc4.1.0.tar.bz2原创 2008-12-25 16:47:00 · 2132 阅读 · 0 评论 -
GDB调试精粹及使用实例
一:列文件清单 1. List (gdb) list line1,line2 二:执行程序 要想运行准备调试的程序,可使用run命令,在它后面可以跟随发给该程序的任何参数,包括标准输入和标准输出说明符()和外壳通配符(*、?、[、])在内。 如果你使用不带参数的run命令,gdb就再次使用你给予前一条run命令的参数,这是很有用的。 利用set args 命令就可以修改发送给程序的参数,而使用sh转载 2008-12-26 21:50:00 · 936 阅读 · 0 评论 -
RTOS实时分析
中断潜伏期(Interrupt Latency)或者说中断延迟,这个指从中断产生到CPU开始响应中断的时间段,也就是图中从t2至t3的时间段。中断潜伏期是由于内核在进入临界区前关闭CPU的中断响应所引起的,在这个时间段内,虽然外部设备使CPU的中断请求线有效,但CPU并不立刻响应中断,而是继续执行临界区的内核代码,直至退出临界区、使能中断请求,才开始进行中断的响应。当然,还需要注意的一点转载 2009-11-06 15:47:00 · 1366 阅读 · 0 评论 -
linux设备驱动之USB数据传输分析
三:传输过程的实现说到传输过程,我们必须要从URB开始说起,这个结构的就好比是网络子系统中的skb,好比是I/O中的bio.USB系统的信息传输就是打成URB结构,然后再过行传送的.URB的全称叫USB request block.下面从它的接口说起.3.1:URB的相关接口1:URB的创建URB的创建是由usb_alloc_urb()完成的.这个函数会完成URB内存的分配和基转载 2009-10-09 17:56:00 · 2382 阅读 · 0 评论 -
select函数实现原理分析
select需要驱动程序的支持,驱动程序实现fops内的poll函数。select通过每个设备文件对应的poll函数提供的信息判断当前是否有资源可用(如可读或写),如果有的话则返回可用资源的文件描述符个数,没有的话则睡眠,等待有资源变为可用时再被唤醒继续执行。 下面我们分两个过程来分析select:转载 2009-09-27 10:17:00 · 553 阅读 · 0 评论 -
组播
组播技术被认为是WWW技术推广之后出现的最激动人心的网络技术之一。1992年出现支持IP组播的Mbone(组播主干网)和Mbone桌面工具;1993-1996年IP Multicast成为业界关注的焦点,然而因发展条件不成熟使得IP组播只为业界所关注;进入1999年以来,IP组播具备了发展的三个关键条件:支持组播的路由协议;基于开放标准的可测试管理协议;因商业发展机遇而进入高速发展阶段。又一次掀起转载 2009-09-05 21:19:00 · 2062 阅读 · 0 评论