
Linux
new_abc
这个作者很懒,什么都没留下…
展开
-
玩转ptrace (一)
你是否曾经想过怎样才能拦截系统调用?你是否曾经想过通过修改一下系统调用的参数来耍一把内核?你是否想过调试器是怎样把一个进程停下来,然后把控制权转移给你的?如果你以为这些都是通过复杂的内核编程来实现的,那你就错了,事实上,Linux 提供了一种很优雅的方式来实现上述所有行为:ptrace 系统调用。ptrace 提供了一种机制使得父进程可以观察和控制子进程的执行过程,ptrace 还可以检查和修改该转载 2016-08-12 09:50:24 · 783 阅读 · 0 评论 -
Linux ls命令解析
ls 指令可以说是Linux下最常用的指令之一。它有许多的选项,其中有许多是很有用的,你能否了解呢?下面列出了 ls 指令的绝大多数选项。 一运用举例: 1.列出具体文件 #ls -al //这个最常用,可是往往又不彻底符合要求, 2.列出一切子目录的文件:#ls -R //上个指令仅仅列出了本目录下的一切目录和文件,可是目录下的文件不会循环的列出。 3.若是文件过多一屏原创 2013-10-14 18:21:01 · 10729 阅读 · 0 评论 -
Linux adduser命令解析
Linux的命令大部分都是busybox中实现的,addUser也是,用来添加一个用户主要参数-c:加上备注文字,备注文字保存在passwd的备注栏中。-d:指定用户登入时的启始目录。-D:变更预设值。-e:指定账号的有效期限,缺省表示永久有效。-f:指定在密码过期后多少天即关闭该账号。-g:指定用户所属的群组。-G:指定用户所属的附加群组。-m:自动建立用户的原创 2013-10-14 18:13:51 · 1309 阅读 · 0 评论 -
linux有关uid权限的使用
Linuxs中与uid相关的命令或者函数主要是setuid和chown,chown用来改变一个文件的所属,setuid用来改变当前的有效uid,这样以后当我们调用open等函数打开或者读写文件是,就可以进行相应的权限判断了。首先看下chownChown命令也是busybox实现的,他会把用户名替换成相应的uid,最终调用chown稍微看下chown跟uid相关的实现可以原创 2013-10-14 18:11:13 · 4713 阅读 · 0 评论 -
Linux adduser命令解析
Linux的命令大部分都是busybox中实现的,addUser也是,用来添加一个用户主要参数-c:加上备注文字,备注文字保存在passwd的备注栏中。-d:指定用户登入时的启始目录。-D:变更预设值。-e:指定账号的有效期限,缺省表示永久有效。-f:指定在密码过期后多少天即关闭该账号。-g:指定用户所属的群组。-G:指定用户所属的附加群组。-m:自动建立用户的原创 2013-09-30 17:46:38 · 6896 阅读 · 0 评论 -
文本 字符编码
字符编码是计算机技术的基石,想要熟练使用计算机,就必须懂得一点字符编码的知识。1. ASCII码我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出 256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从 0000000转载 2013-06-28 14:24:45 · 1050 阅读 · 0 评论 -
linux设备驱动模型一三基础结构之Kset
有时候,某个设备的可能具有多个kobject的子类对象,或者某些设备具有相同的特性,为了便于管理,应该把这些对象统一放入一个容器中。这里要用到的容器就是kset。kset只是kobject的一个集合。对应到linux文件系统中,一个kset就是/sys下的一个文件夹。Kset本身也是一个kobject,所以它在sysfs里同样表现为一个目录,但它和kobject的不同之处在于kset可以看原创 2012-05-12 13:06:37 · 3053 阅读 · 4 评论 -
linux内存管理浅析
转载:http://hi.baidu.com/_kouu/item/4c73532902a05299b73263d0[地址映射](图:左中)linux内核使用页式内存管理,应用程序给出的内存地址是虚拟地址,它需要经过若干级页表一级一级的变换,才变成真正的物理地址。想一下,地址映射还是一件很恐怖的事情。当访问一个由虚拟地址表示的内存空间时,需要先经过若干次的内存访问,得到每一转载 2013-05-27 16:11:08 · 1376 阅读 · 0 评论 -
内存管理FAQ(freshground )
Q:什么是mm?A:指的是内存管理(memory management)。是内核中的一套软件机制,用于有效管理内存的使用。Q:内存管理的软件实现了什么功能?A:1) 进程的保护,即进程向内存管理请求的物理页,由内存管理系统负责,不会将同一物理页(共享页面除外)映射到不同进程的虚地址空间。 2) 虚存的实现,允许所有进程使用的内存总量大于实际物理内存总量。 Q:MMU与T转载 2013-05-27 16:06:59 · 1175 阅读 · 0 评论 -
linux i2c驱动
Linux下面有很多设备都使用到了i2c,所以看了一下i2c的驱动,虽然现在理解的也可能还是人力物力的,但至少还是有了一些基本的概念参考:http://blog.youkuaiyun.com/ylyuanlu/article/details/6705942http://blog.youkuaiyun.com/hongjiujing/article/details/4098547看下i2c初始化原创 2013-05-24 17:06:51 · 3499 阅读 · 8 评论 -
Cache line
一个L1 DATA CACHE相当于一块小的内存,我们假设它为16K大,它会与一般物理内存交互。 它和内存交互一般一次传输16个字节(32个字节),也就是: CACHE 字节0-15一次写到/读取物理内存 ,字节16-31一次写到/读取物理内存.32-47 ... ... 这些一次被传输的字节被称为cache line。 ------------------------------转载 2013-05-23 21:35:44 · 1307 阅读 · 0 评论 -
linux视频设备操作流程
因为工作中需要用到摄像头,了解了下视频设备的使用流程。#include #include //#include //#include #include #include #include #include #include #include #include int main(){ //1. 打开设备文件。 int cameraFd; cameraFd =原创 2013-05-17 09:41:11 · 2851 阅读 · 0 评论 -
linux设备驱动模型一上层容器之bus概述
声明:以下内容均是从网上摘录过来这里先摘取下百科的介绍:总线(Bus)是计算机各种功能部件之间传送信息的公共通信干线,它是由导线组成的传输线束, 按照计算机所传输的信息种类,计算机的总线可以划分为数据总线、地址总线和控制总线,分别用来传输数据、数据地址和控制信号。总线是一种内部结构,它是cpu、内存、输入、输出设备传递信息的公用通道,主机的各个部件通过总线相连接,外部设备通过相应的接口电路原创 2012-05-16 22:07:53 · 2568 阅读 · 0 评论 -
linux设备驱动模型一上层容器之关系
linux的上层容器主要有bus,device,driver,这三者是个什么关系呢:bus: 总线作为主机和外设的连接通道,有些总线是比较规范的,形成了很多协议。如PCI,USB,1394,IIC等。任何设备都可以选择合适的总线连接到主机。当然主机也可能就是CPU本身。内存也是通过BUS连接到主机的,可内存使用的总线不是外设总线,因此和内存使用相同类型的总线的设备,谈及BUS比较含糊。原创 2012-05-17 21:40:19 · 2044 阅读 · 0 评论 -
linux设备驱动模型一三基础结构之示例
前面我们了解了设备驱动模型的三个基本结构,以及它们的相关操作函数,这里我们以实例来看一下它们的用法。首先定义一个内嵌的kobject结构:struct test_container { int member; struct kobject kobj;};定义了一个kobject和一个member成员,主要就是嵌套了kobject结构。struct test_cont原创 2012-05-14 10:07:22 · 2825 阅读 · 16 评论 -
/proc/[pid]/stat 文件解释
[root@localhost ~]# cat /proc/6873/stat6873 (a.out) R 6723 6873 6723 34819 6873 8388608 77 0 0 0 41958 31 0 0 25 0 3 0 5882654 1409024 56 4294967295 134512640 134513720 3215579040 0 2097798 0 0 0 0转载 2013-10-22 09:56:18 · 1751 阅读 · 0 评论 -
/proc/stat 详解
参考文档 http://www.linuxhowtos.org/System/procstat.htm在Linux系统中,可以用/proc/stat文件来计算cpu的利用率。这个文件包含了所有CPU活动的信息,该文件中的所有值都是从系统启动开始累计到当前时刻。cat /proc/statcpu 65376847 362756 2405159 10834971593 3765180 933转载 2013-10-22 09:25:01 · 14256 阅读 · 1 评论 -
/proc/loadavg
该文件中的所有值都是从系统启动开始累计到当前时刻。该文件只给出了所有CPU的集合信息,不能该出每个CPU的信息。[root@localhost ~]# cat /proc/loadavg 4.61 4.36 4.15 9/84 5662每个值的含义为:参数 解释lavg_1 (4.61) 1-分钟平均负载lavg_5 (4.36) 5-分钟平均负载lav转载 2013-10-22 09:42:08 · 2057 阅读 · 0 评论 -
Ubuntu中的解压缩文件的方式
记录Ubuntu下各种压缩和解压方式:.tar解包:tar xvf FileName.tar打包:tar cvf FileName.tar DirName(注:tar是打包,不是压缩!)———————————————.gz解压1:gunzip FileName.gz解压2:gzip -d FileName.gz压缩:gzip FileName.tar.g转载 2016-08-09 10:25:11 · 415 阅读 · 0 评论 -
修改 crontab默认编辑器nano为Vi
update-alternatives --config editor 选择/usr/bin/vim.tiny 然后通过crontab -u root -e添加cron命令 如*/1 * * * * ls >> /tmp/ls.txt直接通过编辑/etc/crontab不行,不知道这个原因是什么。原创 2016-07-26 10:51:31 · 6419 阅读 · 1 评论 -
利用wmctrl控制窗口
前两天我谈了窗口匹配工具Devil’s Pie的使用,和DP一样,wmctrl同样可以控制窗口的行为。不同的是,DP是一个规则匹配工具,通过检查既有的窗口规则配置文件在DP启动时或窗口打开时应用规则到窗口;而wmctrl是一个命令行工具,它完全通过命令行命令来控制窗口行为。一个使用wmctrl操纵窗口行为的实际命令如下:wmctrl -r firefox -b add,shad转载 2014-11-06 11:51:21 · 4146 阅读 · 0 评论 -
Linux把窗口快捷切换到最前的方法
在Linux使用的时候,可能需要来回切换窗口,需要把某个窗口提到最前来,也就是激活,如果没有打开此程序,就先打开。例如经常需要把字典调出来。在Windows下的有道字典就有这个功能。在Linux可以更加方便的对任何程序实现此功能。这里需要用到wmctrl工具。在Ubuntu下,首先安装:sudo apt-get install wmctrlwmctrl的用法有很多转载 2014-11-04 22:09:18 · 2835 阅读 · 0 评论 -
ubuntu minicom使用
先安装:在终端中输入sudo apt-get install minicom在原创 2014-11-03 11:36:09 · 896 阅读 · 0 评论 -
ubuntu11.04的启动流程
现行的Linux 系统的启动方式主要有两种i:一种是广为流传的System V initialization,另一种是近几年提出的Upstart方式,基于事件机制,系统的所有服务,任务都是由事件驱动的。采用后一种方式的目前 主要Ubuntu(6.10 and later),Fedora(9.10 and later),Debian(optional)。Ubuntu11.04上是没有这个init转载 2014-11-14 13:49:59 · 1002 阅读 · 0 评论 -
linux启动流程
参考网上资料,以一张流程图来概括启动的流程:原创 2014-11-14 13:49:01 · 750 阅读 · 0 评论 -
linux awk命令详解
简介转载 2014-10-11 15:30:17 · 888 阅读 · 0 评论 -
Linux inotify功能及实现原理
1. inotify主要功能它是一个内核用于通知用户空间程序文件系统变化的机制。众所周知,Linux 桌面系统与 MAC 或 Windows 相比有许多不如人意的地方,为了改善这种状况,开源社区提出用户态需要内核提供一些机制,以便用户态能够及时地得知内核或底层硬件设备发生了什么,从而能够更好地管理设备,给用户提供更好的服务,如 hotplug、udev 和 inotify 就是转载 2014-07-29 19:08:23 · 1602 阅读 · 0 评论 -
LEB128格式简介(CN)
LEB128即"Little-Endian Base 128",基于128的小印第安序编码格式,是对任意有符号或者无符号整型数的可变长度的编码。也即,用LEB128编码的正数,会根据数字的大小改变所占字节数。在android的.dex文件中,他只用来编码32bits的整型数。格式:转载 2014-07-02 13:27:55 · 6427 阅读 · 0 评论 -
android usb挂载分析---解析NTFS底层结构
一、NTFS系统结构 NTFS是Windows NT引入的新型文件系统,如果您是一位熟悉FAT磁盘格式的专业人士,您可能会觉得NTFS系统的思想蹩脚而晦涩,如果您对FAT格式一无所知,那么恭喜您,您会更快的了解这种更有效率的磁盘格式。 NTFS的结构复杂,内容繁多,笔者仅对NTFS卷上的底层结构做分析,并提供卷上数据删除的特征状态供大家参考。 现在,我们首先来建立了解NTFS需要的基本转载 2012-03-30 23:48:58 · 4033 阅读 · 0 评论 -
android usb挂载分析---Mount 使用方法
NAMEmount - 挂载文件系统 SYNOPSIS 总览mount [-lhV] mount -a [-fFnrsvw] [-t vfstype] [-O optlist] mount [-fnrsvw] [-o options [,...]] device | dir mount [-fnrsvw] [-t vfstype] [-o options] d转载 2012-03-29 09:27:25 · 14726 阅读 · 0 评论 -
TTY termios 结构体
该结构体一般包括如下的成员:tcflag_t c_iflag;tcflag_t c_oflag;tcflag_t c_cflag;tcflag_t c_lflag;cc_t c_cc[NCCS];其具体意义如下。c_iflag:输入模式标志,控制终端输入方式,具体参数如表1所示。表1 c_iflag参数表键 值转载 2014-01-27 15:23:08 · 1162 阅读 · 0 评论 -
Android串口调试
前面有一个客户需要系统支持PL2303的USB转串口线,通过OTG线连接了PAD,但是PAD可以识别到设备后,一直无法收发数据,开始的时候,再Android上无法正常打开设备,权限不够,后面Root后修改权限,可以正常打开了(其实可以通过修改ueventd.*.rc,这个文件,修改挂载设备的权限,这样就不需要Root)。打开后,无法收发数据,驱动工程师通过检查串口线接出来的引脚发现没有信号,通过串原创 2013-12-19 14:16:16 · 6132 阅读 · 4 评论 -
linux设备驱动模型一三基础结构之Ktype
不同的结构包含kobject后,kobject的属性会不同,kobject销毁时所做的操作会不同,kobject所表现出的类型也会不同。所以,kobject中包含了一个叫作kobj_type的结构。kobj_type的目标就是为不同类型的kobject提供不同的属性以及销毁方法。kobj_type与kobject的关系比较简单,是一种明显的依存关系,正如价值因为人的存在而产生意义并发挥作用原创 2012-05-13 17:45:16 · 3699 阅读 · 0 评论 -
linux设备驱动模型一三基础结构之Kobject
在linux的驱动表示中,主要有三个基本的结构,分别是kobject,kset,ktype.Kobject,kset,kypte这三个结构是设备模型中的下层架构。模型中的每一个元素都对应一个kobject.kset和ktype可以看成是kobject在层次结构与属性结构方面的扩充。将三者之间的关系用图的方示描述如下:如上图所示:我们知道。在sysfs中每一个目录都对应一个kobje原创 2012-05-11 23:13:28 · 8227 阅读 · 5 评论 -
字符串转浮点数
直接上代码:#includedouble my_atof(char *str){ char *p = NULL; double result1 = 0, result2 = 0, result = 0; int flag = 0; double temp = 10; p = str; if(NULL == str) return -1; if('-' == *p)原创 2013-03-12 16:17:38 · 1210 阅读 · 0 评论 -
Mongoose源码分析
Mongoose是一个简易的web服务器,所谓web服务器,简单的说就是把服务断的数据返回给客户端。的源码很简单,主要就是Mongoose.c文件,里面包含了大部分的处理。Mongoose里面有几个比较重要点的数据结构:1、mg_context详解mg_context结构体——表示Mongoose的上下文,也称为一个实例句柄。它的成员如下:struct mg_conte原创 2012-06-20 15:22:03 · 10828 阅读 · 2 评论 -
linux设备驱动模型一字符设备 驱动简析
字符设备不需要复杂的缓冲策略,也不涉及磁盘高速缓存,处理起来比较容易字符设备驱动程序由一个cdev结构描述:struct cdev {struct kobject kobj; // 每个 cdev 都是一个 kobjectstruct module *owner; // 指向实现驱动的模块const struct file_operations *o原创 2012-05-26 12:10:14 · 1944 阅读 · 0 评论 -
linux设备驱动模型一字符设备 驱动实例
前面分析了驱动中的一些基本结构,下面结合实例分析一下驱动的编写及实现下面这个例子来处网上:#include //模块所需的大量符号和函数定义#include //指定初始化和清楚函数#include //文件系统相关的函数和头文件#include //cdev结构的头文件#include //在内核和用户空间中移动数据的函数#inc原创 2012-05-25 22:53:12 · 1601 阅读 · 0 评论 -
使用指针做参数
在写代码的时候 ,我们经常会使用指针来做参数,修改参数的值,但如果使用不当会出现很多问题,下面来看两个例子1、#includeusing namespace std;void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num);}int main(){ char *str = NULL;原创 2012-05-25 22:14:13 · 1212 阅读 · 0 评论 -
linux设备驱动模型一上层容器之class
class,是设备类,完全是抽象出来的概念,没有对应的实体。所谓设备类,是指提供的用户接口相似的一类设备的集合,常见的设备类的有block、tty、input、usb等等。 类是一个设备的高层视图,它抽象出了底层的实现细节,从而允许用户空间使用设备所提供的功能,而不用关心设备是如何连接和工作的。类成员通常由上层代码所控制,而无需驱动的明确支持。但有些情况下驱动也需要直接处理类。在驱动开发中原创 2012-05-23 23:10:57 · 3391 阅读 · 2 评论