自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

  • 博客(18)
  • 资源 (1)
  • 收藏
  • 关注

原创 嵌入式Linux环境下线程CPU消耗跟踪

在比较大型的项目中,通常都会使用多线程技术,而且通常是多人合作开发,各方自测OK之后,整合在一起往往会出现一些问题,CPU使用率过高就是其中之一。如何在不熟悉所有模块代码的情况下,快速的定位到具体哪一个线程在消耗CPU,显得很有必要。在X86上,可以借助一些工具进行定位分析,但是在嵌入式系统中,工具就比较匮乏,各命令功能也比较简单,就不好定位。现介绍一种简单通用的办法:第一步:获取各个线程

2014-03-16 21:00:47 4210 2

转载 Tips of Linux C programming

文章转自 淘宝核心团队博客 http://rdc.taobao.com/blog/cs/?p=16751. 优雅地使用链表        链表是编程中经常要用到的数据结构,结构体描述时分为数据域和指针域,本没有什么好讲。但有没有想过教科书上的这种方式有什么问题?通过这种方式定义和使用链表,对于不同的链表类型,都要定义各自的链表结构,繁琐的很。linux kernel中链表的用法才应

2013-05-17 10:24:41 709

转载 DirectFB的接口详解 及在ubuntu下使用方法记录

文章转自:http://blog.csdn.net/yinjiabin/article/details/76740531. 概述   ================      本文主要研究DirectFB及其向上向下的接口,顺带讲一下QT搭配DirectFB使用的一些笔记。   其他,如DirectFB的内部结构、Qt的内部结构、及其他GUI系统如android不在本

2013-04-13 17:15:39 2129

转载 linux 下实现缓冲区溢出漏洞shellcode

文章转载自:http://blog.chinaunix.net/uid-20662820-id-3405539.html1. shellcode编写   所谓的shellcode,就是通过一段机器代码,获取到shell命令行。shellcode可以通过多种方式获得,比如裸写16进制代码(一般很少有人这么干。。。),   常见的还是写汇编代码,然后转换成机器代码。   这里分享一

2013-04-04 14:05:26 1495

转载 浮点型数据存储方式分析

文章转自:http://blog.chinaunix.net/uid-20937170-id-3396073.html============================================================================================================================       笔试

2013-03-31 18:19:26 1215

原创 Linux环境下代码阅读与编写的利器----vim+ctags+cscope

所谓工欲善其事,必先利其器。从事Linux程序开发,特别是Linux驱动程序的开发,不管是通过windows下虚拟一个Linux,还是通过samba访问Linux都是很郁闷的事情。原因就是程序本身需要Linux的编译和执行环境,但是又离不开windows下的IDE编码工具。Linux环境下编写代码和走读代码真的这么困难吗?其实不然,vim就是一个十分强大的文本编辑工具,习惯了图形界面和

2013-03-09 12:10:01 1954

原创 网络数据捕获之PF_RING

Linux环境下需要监听网络数据最简单的可以使用SOCK_RAW原始套接字或者直接调用专门进行网络抓包的库接口libpcap,但是是针对千兆网数据捕获就会有瓶颈,而且随着数据流量的增大捕获主机的CPU会有很大的负担,本人曾亲测使用原始套接字进行千兆网数据捕获评测,i7服务器主机,网络数据全是1400Byte大包,码率加到600Mbps左右就会出现间歇性丢包(丢包通过在发包端对数据打上连

2013-03-09 10:51:22 3055 2

原创 关于程序跟踪调试

说到Linux环境程序的调试,当然离不开gdb。但是程序编码阶段的调试大多人都首选printf,而非gdb,原因是gdb确实比较麻烦。但是关键时候gdb还是很有用的,比如下面几个情况:1.程序长时间运行会出现崩溃,走读代码bug难以定位。这样的问题通过打印定位问题可不是好办法,特别是程序代码量比较大的时候,这时候可以利用linux的程序崩溃跟踪机制,gdb派上用场。Linux环境下

2013-03-07 21:37:20 1972

原创 实现读写无加锁的不定长的数据环形缓冲

在很多情况下需要用到多线程编程,而多线程很多时候要用到生产者、消费者模型,比如处理网络数据,至少需要一个数据接收线程进行网络数据的接收,但一般不会也在该线程中进行数据的处理,因为这处理可能会比较耗时,而网络数据底层缓冲多比较小,处理不及时就会造成数据丢失,这就需要接收线程响应尽可能的快速,一般为接收数据然后将数据放入缓冲中,而数据处理线程则对数据缓冲进行读取数据然后再处理。这就是典型的生产者和消费

2013-03-03 14:54:22 1670

转载 线程池C++实现(转)

这个一个实现线程池的C++类,忘了从哪个网站上copy了,感觉挺好用ThreadPool.h/* Thread Pool implementation for unix / linux environments Copyright (C) 2008 Shobhit Gupta This program is free software: you can r

2013-02-28 17:25:52 768

原创 Linux环境下一些实用的技巧

1.文件传输:Linux环境下没有飞鸽,但是有比飞鸽好用的多的工具----netcat,无需安装,而且程序非常小,还能传输文件夹;接收端:netcat -l 5555 | tar xvf -发送端:tar cvf - ./test_dir | nc 192.168.15.100 55555555为接收端一个未占用的端口,test_dir为要传输的文件夹,192.168.15.100

2013-02-28 16:47:59 935

原创 Linux网络数据捕获之原始套接字

处于一些目的,有时需要对到达网口的所有网络数据进行捕获,系统也提供了这样的接口,稍微懂网络编程的都知道SOCK_DGRAM、SOCK_STREAM,差不多就UDP、TCP之类的吧。但是还有一个很少用的叫SOCK_RAW,原始套接字,使用它你可以捕获网卡上的所有网络数据,当然这需要超级用户权限。贴个列子吧,网上摘的,具体出处忘了#include #include #include #inc

2012-08-11 16:39:28 1496

原创 Linux基本网络设置(IP配置等,网卡驱动缓存,网卡中断)

都是一些很基本的设置,但是长时间不使用老是会忘,好记性不如烂笔头,在此记录一下吧1.简单配置a.修改IP地址和掩码ifconfig eth0 192.168.0.100 netmask 255.255.255.0b.修改网关,对于多网卡多网段的机器,需要配置一个默认网关route add default gw 192.168.0.1 dev eth0c.修改DNS,域名

2012-08-11 16:05:54 4339

原创 Linux环境下获取网卡连接状态

在嵌入式项目中,有时需要获取设备本身的一些运行信息,网口的连接状态就是其中之一,这还真不太好弄,网上查了一下资料,整理了一下,pIfName为网口名称,比如eth0,返回1为连接,0为断开。int getNetLinkStates(const char *pIfName){ int skfd; struct ifreq ifr; struct ethtool_value edata

2012-08-11 15:21:10 1270

原创 多线程编程中,将线程绑定到指定CPU

参考网络上的资料,具体出处忘了,亲测可以在多核处理上,处理大数据业务时,有时为了对线程资源有更好的控制,需要将一些核心处理线程绑定到指定的CPU核上,pthread库就提供这样的接口。大概封装了一下,在线程函数中调用就可以了int bind2cpu(int cpu_index){ cpu_set_t set; cpu_set_t get; int cpu_num = sys

2012-08-10 16:20:24 1980

原创 Linux系统非正常掉电后无法启动的处理办法

Linux系统在启动时会检查文件系统是否完好,如果之前是非正常掉电或者RTC时钟滞后于文件系统记录的最晚文件修改时间,系统都会认为文件系统出了问题,为了保证数据安全,系统一般会默认以只读方式挂载文件系统,这时可以输入root的密码登录,确认是文件系统出问题的原因或者完成数据备份后,可以用以下命令进行修复:mount -o remount,rw /fsck -y完成修复后断电重启,就

2012-01-04 23:33:40 5023 1

原创 Linux网卡编号混乱的解决办法

Linux在启动的时候会检查网卡的硬件信息,发现MAC地址等信息与配置文件不符时,会在配置文件中添加新的配置信息。在更换网卡或者系统拿到其他的机器上使用时,会出现网卡编号不是从eth0开始或者使用ifconfig -a 查看时出现一些没有用的网卡信息,网卡编号混乱会导致一些直接使用网卡编号的应用程序不能正常运行,修复该问题可以通过删除配置文件,让系统在启动时重新生成解决:rm /etc

2012-01-03 23:07:55 2486

原创 Linux环境下提高进程优先级

在嵌入式Linux系统中,大多都是跑一个核心的业务,在数据吞吐量大的时候,会大量占用CPU,导致数据处理不过来,常规办法是优化程序或者更换更高性能的平台来解决,但是如果程序已经优化到极限和平台无法更换的情况下,可以通过提高业务进程的优先级来提高业务数据的吞吐量,例如:nice -n -20 ./bin nice为Linux环境下的改变进程优先级的命令,-n为进程优先级级别参数,-20为

2012-01-02 23:17:54 3001

vim插件和配置文件压缩包

vim的常用插件和配置文件压缩包,解压到~/目录即可生效,可自动补齐,特别是文件路径自动补齐功能相当有用。配合ctags 和 cscope使用更是十分的强大。

2013-03-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除