- 博客(50)
- 资源 (3)
- 收藏
- 关注
原创 pragma
在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作。#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征。依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的。其格式一般为: #pragma Para。其中Para 为参数,下面来看一些常用的参数
2013-02-26 09:22:51 509
原创 mdev
如何使用busybox精简版本udev程序--mdev动态创建插入的u盘和鼠标等设备busybox的mdev是一个精简了的udev管理程序,它可以间接的以hotplug方式被内核调用,进而在arm平台上/dev目录下动态创建设备节点,因为hotplug会被内核发送uevent之前调用,所以如果动态可插拔设备很多,很频繁,那么每次内核都会调用elf格式的用户空间的hotplug,生成一个独立的h
2013-02-20 16:30:11 603
转载 sed
1. Sed简介 sed 是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出。Sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。以下
2013-01-07 14:22:08 419
原创 Linux tasklet 分析笔记
驱动程序在初始化时,通过函数task_init建立一个tasklet,然后调用函数tasklet_schedule将这个tasklet放在tasklet_vec链表的头部,并唤醒后台线程ksoftirqd。当后台线程ksoftirqd运行调用__do_softirq时,会执行在中断向量表softirq_vec里中断号TASKLET_SOFTIRQ对应的tasklet_action函数,然后task
2012-12-18 11:01:11 603
转载 UBUNTU安装PHP环境
1、环境: ubuntu8.10+apache2+mysql5+php52、步骤: 1)利 用新立得软件包管理器安装所需要的软件(apache2\mysql5\php5),在安装过程中,会 附带安装一些所需的配置。或者用下面的指令在命令行安装。 1. 升级现有软件包sudo apt-get upgdatesudo apt-get dist- upgra
2012-12-14 13:25:05 852
转载 lsof
卸载移动存储时经常提示device busy,也可能误删了一个正在打开的文件。。。。 这时候可以试试lsof lsof简介 lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系
2012-12-13 10:06:16 347
转载 Linux Memory Barrier 内核屏障
内核中定义的内存屏障原语有: #define barrier() __asm__ __volatile__("": : :"memory") #define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2) #define rmb() alternative("lock; addl $0
2012-12-11 11:29:16 680
转载 __attribute__机制介绍
1. __attribute__ GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)__attribute__前后都有两个下划线,并且后面会紧跟一对原括弧,括弧里面是相应的__
2012-12-10 10:28:59 325
转载 _attribute_((packed))
_attribute_((packed))1. __attribute__ ((packed)) 的作用就是告诉编译器取消结构在编译过程中的优化对齐,按照实际占用字节数进行对齐,是GCC特有的语法。这个功能是跟操作系统没关系,跟编译器有关,gcc编译器不是紧凑模式的,我在windows下,用vc的编译器也不是紧凑的,用tc的编译器就是紧凑的。例如:在TC下:struct my{ c
2012-12-10 09:55:24 500
转载 Ubuntu下安装和使用lrzsz,实现串口传输文件&&minicom
一、安装配置minicom1、安装minicom:sudo apt-get install minicom2、配置minicom:sudo minicom -s , A.进入Serial port setup 选择相应的端口和频率。 (将选项A的值设置为/dev/ttyS0 表示是串口1,将选项E的值设置为115200,将选项F设置为NO(请根据实际情况配置)
2012-12-05 11:12:59 5731 3
转载 typeof一些例子
typeof的参数可以是两种形式:表达式或类型。 下面是使用表达式的的例子: typeof(x[0](1) 这里假设x是一个函数指针数组,这样就可以得到这个函数返回值的类型了。 如果将typeof用于表达式,则该表达式不会执行。只会得到该表达式的类型。 以下示例声明了int类型的var变量,因为表达式foo()是int类型的。由于表达式不会被执行,所以不会调用foo函数
2012-11-22 14:46:19 473
转载 typeof
typeof 是C语言的新扩展的一个东东,只有部分编译器支持,不过这个特性在linux内核中应用非常广泛,对实现面向对象有非常重要的作用假设有typedef struct { char a; int member; long c; } type;container_of作用: container_of实现了根据一个结构体变量中的一个
2012-11-22 14:35:18 411
转载 js中自动清除ie缓存
js中自动清除ie缓存方法 — 常用 对于动态文件,比如 index.asp?id=... 或者 index.aspx?id=... 相信有经验的程序员都知道怎样禁止浏览器缓存数据了. 但是对于静态文件(css,jpg,gif等等), 在什么场合下面我们需要禁止浏览器缓存他们,怎么做? 方法一:Dojo中我们可以用简单的方法完成:在dojo.xhrGet(包括pos
2012-11-21 17:22:55 445
转载 backtrace
一.用途:主要用于程序异常退出时寻找错误原因二.功能:回溯堆栈,简单的说就是可以列出当前函数调用关系三.原理:1. 通过对当前堆栈的分析,找到其上层函数在栈中的帧地址,再分析上层函数的堆栈,再找再上层的帧地址……一直找到最顶层为止,帧地址指的是一块:在栈上存放局部变量,上层返回地址,及寄存器值的空间。2. 由于不同处理器堆栈方式不同,此功能的具体实现是编译器
2012-11-21 09:42:07 946
转载 linux定时器
一、 基础知识1、时间类型。Linux下常用的时间类型有4个:time_t,struct timeval,struct timespec,struct tm。(1)time_t是一个长整型,一般用来表示用1970年以来的秒数。(2)Struct timeval有两个成员,一个是秒,一个是微妙。struct timeval { long tv_sec;
2012-11-19 13:23:15 784
转载 循序渐进学习使用WINPCAP
(一)得到网络驱动列表用 PCAP 写应用程序的第一件事往往就是要获得本地的网卡列表。PCAP 提供了pcap_findalldevs()这个函数来实现此功能,这个API 返回一个pcap_if 结构的链表,表的每项内容含有全面的网卡信息:字段名字、含有名字的描述、有关驱动器的易读信息。得到网络驱动列表的程序如下:#include "pcap.h"main(){pc
2012-11-19 12:16:31 2398
转载 NFS服务器
一、NFS的概念 NFS (Network File System/网络文档系统): 1 、配置Linux 系统之间的文档共享(Linux 和Windows 间的文档共享需采用SAMBA 服务); 2 、NFS 只是一种文档系统,本身没有传输功能,是基于RPC 协议实现的,才能达到两个Linux 系统之间的文档目录共享; 3
2012-11-19 09:37:00 486
转载 AJAX和Form表单提交
AJAX提交数据: client: 使用POST方式 request.open("post",url,true|false); 提交参数时,中文参数要用userName = encodeURIComponent(userName)进行编码, 再用send("name="+userName)发送 ser
2012-11-16 09:59:38 408
转载 Linux驱动程序工作原理简介
Linux驱动程序工作原理简介一、linux驱动程序的数据结构 二、设备节点如何产生? 三、应用程序是如何访问设备驱动程序的? 四、为什么要有设备文件系统? 五、设备文件系统如何实现? 六、如何使用设备文件系统? 七、具体设备驱动程序分析 1、 驱动程序初始化时,要注册设备节点,创建子设备文件 2、
2012-11-14 14:38:41 1016
转载 git revert 和reset的区别
这里讲一下git revert和git reset的区别:git revert 是撤销某次操作,此次操作之前的commit都会被保留git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区具体一个例子,假设有三个commit, git st:commit3: add test3.ccommit2: add test2.ccommit1
2012-11-14 12:31:59 1145
转载 GIT基本概念和用法总结
在日常使用GIT过程中,经常会出错,比如无意间丢失了未提交的数据,回退版本时丢失了工作目录,等等。经过思考发现,所有这些错误都是因为对GIT中一些基本的概念模糊而导致,因为对一些基本概念不清晰,导致对GIT每一条命令将会产生的结果不符合预期。下面我就梳理以下我经常碰到的问题相关的基本概念。1. Working Directory(工作目录) Git的工作目录是保存当前正在工作的文件
2012-11-14 11:47:09 453
转载 valgrind
名字:valgrind是一个调试和剖析的程序工具集。概要用法:valgrind [[valgrind] [options]] [your-program] [[your-program-options]]概述:Valgrind是一个Linux下灵活的调试和剖析可执行工具。它由在软件层提供综合的CPU内核,和一系列调试、剖析的工具组成。架构是模块化的,所以可以在不破坏
2012-11-13 13:55:57 640
转载 tcpdump
简介用简单的话来定义tcpdump,就是:dump the traffic on a network,根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。实用命令实例默认启动tcpdump
2012-11-09 17:02:04 403
转载 git命令快速参考
安装和初始化配置全局用户名和电子邮件地址git config –global user.name “your name”git config –global user.email you@example.com为特定的版本库配置用户名和电子邮件地址,你可以为每个版本库设置用户名和版本号cd /path/to/repogit config user.n
2012-10-19 09:04:25 414
转载 Linux多线程同步的几种方式
线程的最大特点是资源的共享性,但资源共享中的同步问题是多线程编程的难点。linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。 1)互斥锁(mutex) 通过锁机制实现线程间的同步。同一时刻只允许一个线程执行一个关键部分的代码。 int pthread_mutex_init(pthread_mutex_t *mutex,const pth
2012-10-17 17:24:37 466
原创 linux打印级别控制原理
在一个公用的头文件里面放入#define RT_DEBUG_ERROR 1#define RT_DEBUG_WARN 2#define RT_DEBUG_TRACE 3#define RT_DEBUG_INFO 4unsigned long RTDebugLevel = RT_DEBUG_ERROR#ifdef
2012-10-12 23:24:35 1354
转载 shell脚本中比较
二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.整数比较-eq 等于,如:if [ "$a" -eq "$b" ]-ne 不等于,如:if [ "$a" -ne "$b" ]-gt 大于,如:if [ "$a" -gt "$b" ]-ge 大于等于,如:if [ "$a" -ge "$b" ]-lt 小于,如:if [ "$a" -lt "$b" ]
2012-10-11 16:30:24 725
转载 system.map
System.map是一个特定内核的内核符号表。它是你当前运行的内核的System.map的链接。内核符号表是怎么创建的呢? System.map是由“nm vmlinux”产生并且不相关的符号被滤出。对于本文中的例子,编译内核时,System.map创建在/usr/src/linux-2.4/System.map。像下面这样:nm /boot/vmlinux-2.4.7-10 >
2012-10-10 13:01:05 439
原创 嵌入式linux下3G上网卡移植
传统3G上网卡几乎都采用modem形式,支持usb插口。通过usb指令转串口指令发给modem实现modem初始化并实现上网. 由此可以考虑在linux下实现usb指令到串口指令转换的驱动以驱动modem实现上网,各个平台的linux内核中都有usbserial 模块,该模块是可以驱动modem上网的,因此可以考虑使用usbserial模块驱动3G网卡上网。 Usb_modesw
2012-09-25 08:49:40 3258 2
原创 errno
一个简单的测试小程序:#include #include #include #include main(){extern int errno;char *path = "/root/tmp11";if (rmdir(path) == 0){fprintf(stderr, "deleted the directory %s.\n", path);}
2012-09-23 20:34:07 1893 1
转载 javascript 刷新页面、返回上一页
1. Javascript 返回上一页 history.go(-1), 返回两个页面: history.go(-2);2. history.back().3. window.history.forward()返回下一页4. window.history.go(返回第几页,也可以使用访问过的URL) 例:向上一页response.Write(""
2012-09-23 09:29:21 464
转载 udev
第一、什么是udev? 这篇文章UDEV Primer给我们娓娓道来,花点时间预习一下是值得的。当然,不知道udev是什么也没关系,把它当个助记符好了,有了下面的上路指南,可以节省很多时间。我们只需要树立一个信念:udev很简单!嵌入式的udev应用尤其简单。 第二、为什么udev要取代devfs? 这是生产关系适应生产力的需要,udev好,devfs坏,用
2012-09-22 09:51:13 393
转载 uboot环境变量
u-boot的环境变量是使用u-boot的关键,它可以由你自己定义的,但是其中有一些也是大家经常使用,约定俗成的,有一些是u-boot自己定义的,更改这些名字会出现错误,下面的表中我们列出了一些常用的环境变量:环境变量 描述bootdelay 执行自动启动的等候秒数baudrate 串口控制台的波特率netmask 以太网接口的掩码eth
2012-09-22 09:49:04 282
转载 Linux下的管道编程技术
管道技术是Linux的一种基本的进程间通信技术。在本文中,我们将为读者介绍管道技术的模型,匿名管道和命名管道技术的定义和区别,以及这两种管道的创建方法。同时,阐述如何在应用程序和命令行中通过管道进行通信的详细方法。一、管道技术模型 管道技术是Linux操作系统中历来已久的一种进程间通信机制。所有的管道技术,无论是半双工的匿名管道,还是命名管道,它们都是利用FIFO排队模型来指挥
2012-09-22 09:46:50 481
转载 SQLite3 API编程手册
前序:... 1一、 版本... 1二、 基本编译... 2三、 SQLITE操作入门... 2(1) 基本流程... 2(2) SQL语句操作... 4(3) 操作二进制... 8(4) 事务处理... 10四、 给数据库加密... 10五、 后记... 25前序:Sqlite3 的确很好用。小巧、速度快。但是因为非微软的产品,帮助文档总觉得不够。
2012-09-21 23:32:36 769
转载 snmp trap
trap是某种入口,到达该入口会使SNMP被管设备主动通知SNMP管理器,而不是等待SNMP管理器的再次轮询。在网管系统中,被管设备中的代理可以在任何时候向网络管理工作站报告错误情况,例如预制定阈值越界程序等等。代理并不需要等到管理工作站为获得这些错误情况而轮询他的时候才会报告。trap语法定义规则包括以下几部分:1.TRAP-TYPE:标识下面定义的是一个trap。2.enter
2012-09-21 23:02:18 1587
转载 SNMP ASN.1 OID编码规则
SNMP ASN.1 OID编码规则 对象标识符(OBJECT IDENTIFIER, OID) 的编码规则对象标识符类型对象标识符(OBJECT IDENTIFIER, OID)类型用层次的形式来表示标准规范.标识符树通过一个点分的十进制符号来定义,这个符号以组织,子部分然后是标准的类型和各自的子标识符开始.例如:MD5的OID 是 1.2.840.113549.
2012-09-21 22:59:23 10274 3
转载 snmp报文
1 BRE编码(Basic Encoding Rule) 基本编码规则使用使用TLV 方式,即Type,Length,Value消息中所表达的信息都用一个Type 域标记一个Legnth 限定值然后是Value ,ASN.1是一种用来描述系统之间传递的信息格式的语言规范被广泛用在通信协议的规格定义中一句话理解ASN.1 和BER即是:“信息的描述基于ASN.1 语法”和“信息的编码基于BE
2012-09-21 22:58:30 1915
转载 VC++版 Unicode ANSI UTF-8 GB2312 相互转换代码
void AnsiToUnicode(char *szAnsi,WCHAR * szWs){//必须保证szWs有足够的空间int len = ::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(szAnsi), NULL, 0);::MultiByteToWideChar(CP_ACP, NULL, szAnsi, strlen(
2012-09-21 22:44:38 722
转载 四种以太网数据包详解
1 Ethernet II1.1 Ethernet II协议简介 以太网是当今现有局域网采用的最通用的通信协议标准。该标准定义了在局域网中采用的电缆类型和信号处理方法。EthernetII由DEC,Intel和Xerox在1982年公布其标准,Etherent II主要更改了EthernetI的电气特性和物理接口,在帧格式上并无变化。Etherent II采用CSMA/CD的媒体接入
2012-09-21 22:39:57 5457
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人