
Linux
Alone_悟空
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
ioctl---操作设备的接口
ioctl接口存在的意义:**********因为对于大部分的驱动来说,除了需要有读写设备的能力,而且还要有通过设备驱动来对硬件进行各种控制的能力.1. 对于用户空间,ioctl函数的原型是int ioctl(int fd, unsigned long cmd, ...);参数说明:**********fd--------->文件描述符**********cmd------>原创 2014-01-22 16:41:48 · 1374 阅读 · 0 评论 -
I/O阻塞
概要:**********当一个驱动无法立刻满足用户空间的应用程序的请求时,驱动程序该如何处理?例如在用户空间应用程序调用read函数读取数据,但是数据还没有到来,没有数据可读,或者调用write函数写数据时,但是缓冲区已经满了,没空间可写,出现这种情况该怎么办呢?**********解决的办法是:驱动先让用户空间的进程进入睡眠状态,然后等条件满足了再将该进程唤醒,例如有数据来时唤醒读进程原创 2014-01-22 18:16:04 · 982 阅读 · 0 评论 -
jiffies计数器
概述:**********jiffies在英语中是"瞬间,一会儿"的意思**********jiffies是一个计数器,记录了系统从刚开始启动到关闭系统时所运行的秒数,系统初始化时jiffies是0**********内核是通过定时器中断来使jiffies计数器的值增加的,每次产生一个时钟中断,jiffies就会+1**********产生中断的频率是由HZ(中断间隔,时钟滴答数)原创 2014-01-23 18:06:14 · 1522 阅读 · 0 评论 -
Tasklet机制
概述:**********tasklet是关于中断管理的,说白了,也就是当中断发生时,执行中断处理函数**********tasklet是一个数据结构----------------->在头文件中struct tasklet_struct{ struct tasklet_struct *next; unsigned long state; atomic_t count;原创 2014-01-24 14:18:55 · 1357 阅读 · 0 评论 -
timer-----内核定时器
概述:**********定时器的作用是:当在一个给定的时间到达时,可以来调用一个函数来执行你想完成的任务,优点是,定时器不会阻塞当前进程.**********定时器是基于时钟滴答的,可以用来完成各种你想要去完成的任务.**********一个内核定时器,其实是一个数据结构,在该结构内有定时器执行函数,时间一到该函数就会被执行.(在头文件中)定时器结构(主要关注三个成员)str原创 2014-01-24 11:50:06 · 897 阅读 · 0 评论 -
__attribute__机制介绍
__attribute__机制介绍分类: C/C++/C# 2011-06-24 23:10 16967人阅读 评论(9) 收藏 举报profiling编译器structfunctiondeprecated1. __attribute__GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function At转载 2014-02-10 10:38:21 · 692 阅读 · 0 评论 -
控制调试信息的打印(printk,printf)
对于一个很大的工程来说,在产品测试阶段是需要通过printk或printf打印语句来打印信息,以便于调试的,但是等到产品正式发布的时候,就得需要去将这些打印消息的print语句关闭掉的,这是因为很多打印语句的执行也是需要花时间的,会影响程序运行的性能,所以需要关闭,那么,怎样很自如的开关打印语句呢?下面是一个例子(debug.h)#ifndef _DEBUG_H_#define _D原创 2014-02-26 11:23:54 · 1584 阅读 · 0 评论 -
Linux源代码目录结构介绍
1.arch目录:存放不同平台的相关代码,原创 2014-05-10 17:53:29 · 1591 阅读 · 0 评论 -
Linux的根文件系统(一)
根文件系统:包含了使Linux系统运行的主要程序和数据,当内核启动后就会到存储设备上寻找根文件系统,根文件系统会被挂载在”/“上。 根文件系统存放的位置:******根文件系统被存储在Flash存储器中。******Flash存储器被分为多个分区,第一分区,第二分区,第三分区等。******第一分区:用来存储Linux内核映像文件(存放在单独的分区)。******第二分区:原创 2014-05-12 13:59:04 · 1049 阅读 · 0 评论 -
Linux的文件系统
1.JFFS文件系统(Journal)原创 2014-05-12 10:52:55 · 636 阅读 · 0 评论 -
Linux设备驱动程序(第三版)学习之内核的调试技术(三)_2_查询调试
先说一说printk函数给系统带来的一些缺点******大量使用printk能够显著拖慢系统,因为syslogd进程会不停滴同步系统的输出文件,也就是说,printkh函数每打印一行就会引发一次向磁盘的写操作******解决这个问题的办法是对于在/etc/syslog.conf中的日志文件在其前面加一个连字符或者一个减号“-”来阻止syslogd进程将每个消息刷新文件到磁盘.例如:原创 2014-01-10 14:17:05 · 739 阅读 · 0 评论 -
Linux设备驱动程序(第三版)学习之内核的调试技术(三)_1
先说明几点:**对于内核编程,内核有它自己独特的调试技术**内核代码无法轻易地在一个调试器下运行,也无法轻易地被跟踪,原因在于在内核中许多进程的运行不存在一定的关联性,往往是独立的.**内核代码错误特别难以重现,这些错误会牵连整个系统与它们一起失效(也就是系统奔溃)1. 使用printk()函数将调试信息打印出来a. printk()函数相当于C语言库的printf()函数,但原创 2014-01-09 17:41:06 · 1007 阅读 · 0 评论 -
Linux下gdb调试工具的使用方法
说明: gdb主要调试的是C/C++程序首先,先编译程序,用-g选项把调试信息加入到可执行文件中# gcc -g test.c -o exe接下来,使用gdb调试exe可执行文件启动gdb# gdb exe(gdb)list //从第一行列出源码(gdb)break 16 //在第16行设置断点(gdb)break func //在函数fu原创 2013-12-16 10:54:15 · 649 阅读 · 0 评论 -
mkfs.jffs2制作jffs2镜像(image)文件
实例: # mkfs.jffs2 -e 0x10000 -p 0x480000 -r PLUM_app_image -o app.img -nmkfs.jffs2选项的含义 -p 或 --pad[=SIZE]------------>用16进制来表示所要输出的镜像文件app.imag的大小 -r 或 -d 或原创 2013-12-31 15:11:48 · 1153 阅读 · 0 评论 -
动态库和静态库
1.什么是库? 从本质上来说,库是一种可执行代码的二进制格式,可以被嵌入到内存中执行,库分为 动态库 和 静态库2.静态函数库: a).一般以libxxx.a格式命名 b).利用静态函数库编译成的文件比较大 c).因为整个函数库的所有数据都会被整合进目标代码中 d).编译后的可执行程序不需要外部的函数库支持 e).静态库改变了,那么程原创 2014-01-02 16:47:32 · 608 阅读 · 0 评论 -
shell scripts的学习(五)
shell scripts 的追踪与debug[root@linux ~]# sh [-nvx] scripts.sh-n-------------->不要执行scripts.sh,仅查询语法的问题,若没问题将什么也不显示-v-------------->先将scripts的内容输出到屏幕,然后再执行scripts-x-------------->将要执行的scripts内容显示到原创 2014-01-06 15:00:58 · 536 阅读 · 0 评论 -
shell scripts学习(三)
1. netstat命令可查询当前主机所有开启的网络服务端口.[root@linux ~]# netstat -tulnActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address Foreign Address State tcp原创 2014-01-06 14:03:32 · 732 阅读 · 0 评论 -
shell scripts学习(四)
循环(loop)1. while......do.....done循环语法格式:while [ condition ]#continue为真的时候开始循环,假的时候停止循环do程序段doneex[root@linux ~]# vim sh12.sh#!/bin/bashPATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/l原创 2014-01-06 14:50:37 · 778 阅读 · 0 评论 -
Linux设备驱动程序(第三版)的学习(一)
为自己编写的模块配置并构造好内核树1. 应用程序和内核模块的区别应用程序:1. 应用程序从头到尾执行单个任务2. 应用程序在退出时,可以不管资源的释放或者其他的清除工作3. 应用程序可以调用它并未定义的函数,这是因为在链接过程能够解析外部引用从而使用适当的函数库.4. 应用程序开发过程中的段错误是无害的,并且总是可以使用调试器跟踪到源代码中的问题所在5. 应用程序运行在原创 2014-01-07 14:03:24 · 1201 阅读 · 0 评论 -
Linux设备驱动程序(第三版)学习之字符驱动(二)
1. scull(Simple Character Utility for Loading Localities)1). scull是一个字符驱动,操作一块内存区域好像它是一个设备.2). scull不依赖于硬件,scull只是操作一些从内核分配的内存.2. scull的设计1). 编写驱动的第一步是定义驱动将要提供给用户程序的功能(机制)3. 主次设备号1).原创 2014-01-08 17:22:20 · 1079 阅读 · 0 评论 -
shell scripts学习(二)
1. 利用判断符号[]来进行数据的判断(ex:[ -z "$HOME" ], 判断$HOME变量是否为空),常用在if ...... then ......fi 中需要注意的是: 1. [ ]中的每个组件之间都有空格键来分隔2. [ ]中的变量,最好都用双引号来设定3. [ ]中的常数,最好都以单引号或双引号来设定ex1:[ "$HOME" == "$MAILE"原创 2014-01-06 11:10:13 · 635 阅读 · 0 评论 -
shell scripts学习(一)
1. 什么是shell 脚本?shell scripts 是将一些指令汇整起来一起执行,说白了就是若干个命令的集合,执行一个脚本,就可以执行多个命令,很方便,不需要编译,只要将脚本的权限改为可执行就可以.1.1. 第一个shell scripts[root@linux ~]# vim sh01.sh#! /bin/bash------------------------原创 2014-01-06 09:42:30 · 811 阅读 · 0 评论 -
samba源码编译步骤
版本 samba-3.0.37.tar.gz一,解压源码包 # tar xzvf samba-3.0.37.tar.gz二,进入source #cd source/ 三, 执行脚本 #./autogen.sh && 四,执行配置并制定配置文件路径 # ./configure --prefix=/usr/local/samba原创 2013-12-24 14:32:03 · 1848 阅读 · 0 评论 -
top命令
Linux Top 命令解析 TOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。TOP是一个动态显示过程,即可以通过用户按键来不断刷新当前状态.如果在前台执行该命令,它将独占前台,直到用户终止该程序为止.比较准确的说,top命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进转载 2013-12-30 16:25:05 · 716 阅读 · 0 评论