这段时间,领导一直要我做一个linux下性能分析工具的培训。说实话,我也没用过性能分析工具来分析程序的性能瓶颈问题。现实是,在LTE项目中,遇到了程序性能瓶颈问题。所以培训的目的:一是为部门的业绩考核,二是看是否可以应用这些工具来解决LTE项目中程序性能瓶颈问题。

linux下有两个主要的性能分析工具:oprofile和gprof 。gprof 是GNU工具之一,但了解后,很多文章说它不支持多线程。相比较而言,oprofile的功能更加强大。

阅读全文 »

 


统计函数或某一段代码的运行时间在软件开发中常常遇到。透过运行时间可分析出函数或程序段的运行效率和性能,从而有针对性的对代码进行优化。

在unix环境中,常常用binutils(GNU二进制工具集)中的gprof工具来查看函数运行时间。但本文的重点是自己编写代码实现函数或程序段运行时间的统计。下面进行详细描述。

阅读全文 »

 


2012年,第一次看到树莓派(Raspberry Pi)这个名词,是在一个群里。是时,它早以其高性价比流行于全球。最重要的是,它带来了一股开源硬件的设计热潮。

树莓派是一块信用卡大小的板子。载有一颗700MHz的ARM11 CPU,功能相当于一台微型电脑。可接电视,播高清视频…。所以一直期待拥有她。今天这个心愿终于如愿以偿(激动啊)。下面让我来揭开它神秘的面纱。

阅读全文 »

 


近日,阅读著名通讯半导体公司——博通公司(broadcom)的资料时,发现他们提供的linux系统中使用了一种名为ubi的文件系统。怀着好奇心,在网上搜索下ubi文件系统的资料。

网上关于ubi文件系统的介绍,大多数是华清远见刘洪涛老师所写的文章。该文章主要介绍了ubi文件系统产生的背景和用法。不过,本文将从一个认识的角度来了解ubi文件系统。

阅读全文 »

 


在网络编程中,UDP运用非常广泛。很多网络协议是基于UDP来实现的,如SNMP等。大家常常用到的局域网文件传输软件飞鸽传书也是基于UDP实现的。

本篇文章跟大家分享linux下UDP的使用和实现,主要介绍下sendto()和recvfrom()两个函数的使用,以及INADDR_ANY的说明,并在最后展示了一个经过自己测试可用的UDP Server和UDP Client的代码示例。

阅读全文 »

 


Linux最强大的一个特征就是它有大量的各种小命令工具,这也可称作是它最有趣的一个地方。在这些大量的有用的命令和脚本中,你会发现有少部分命令工具不那么有用的——如果你不愿意说是完全没用处的话。

你要知道,Linux命令终端并不总是干一些严肃的事情。这里列举的几个没有实际用处、但很有趣的命令,它们的有趣并不是因为无用,而是真的有趣,接下来就让我们看看它们是如何搞怪的吧。

阅读全文 »

 


container_of,是linux内核中一个精妙绝伦的宏。上年在南京开发新产品应用程序时,一个同事借用linux的实现,在应用程序中实现了该宏。之前,曾经弄懂过它,许久未接触linux了,对它有点陌生了。只清楚记得它的作用就是:根据结构体成员得到该结构体指针。

在网上看了多篇关于container_of的解释,觉得还是华清远见程姚根讲得简单透彻。

阅读全文 »

 


等待队列在linux内核中有着举足轻重的作用,很多linux驱动都或多或少涉及到了等待队列。因此,对于linux内核及驱动开发者来说,掌握等待队列是必须课之一。 Linux内核的等待队列是以双循环链表为基础数据结构,与进程调度机制紧密结合,能够用于实现核心的异步事件通知机制。它有两种数据结构:等待队列头(wait_queue_head_t)和等待队列项(wait_queue_t)。 阅读全文 »

 


最近,想在eCos中实现SDIO接口的wifi功能。看了下网上流传的stm32 sdio wifi驱动,却是从linux中移植过来的,所以也打算把linux SD接口wifi驱动移植到eCos中。

花了几天时间阅读了下linux SD/MMC和wifi驱动代码,整个驱动体系已大概了解,但影响移植的一些细节却令人头痛,这些细节在eCos中没办法移植过来,所以必须弄懂,然后用替代方法实现或者干脆不实现。比如这里要说的struct scatterlist。

阅读全文 »

 


本文讲的likely()和unlikely()两个宏,在linux内核代码和一些应用中可常见到它们的身影。实质上,这两个宏是关于GCC编译器内置宏__builtin_expect的使用。

顾名思义,likely()指“很有可能”之意,而unlikely()指“不太可能”之意。那么,在实际应用中,它们代表什么?又是怎么使用的呢?下面是一篇外文翻译(加上了本人的一些理解),给出了详细答案。

阅读全文 »

© 2012 velep.com | reille blog | 管理| 粤ICP备12094833号-2| 谷歌地图| 百度地图| Suffusion theme|Sayontan Sinha

无觅相关文章插件,快速提升流量