linux
文章平均质量分 72
linchuanzhi_886
这个作者很懒,什么都没留下…
展开
-
代码质量优化之静态代码扫描
质量是保证产品和服务满足顾客需求的关键,真正的好产品,是能以用户为中心,和用户做朋友的。作为开发人员,除了保证产品基础功能正常外,还要保证高标准的代码质量。代码质量可以从代码的严谨性、可读性、可维护性、健壮性、性能和效率、代码覆盖度、易测性、可移植性几个方面的评价。严谨性:指的是逻辑严谨,代码逻辑要符合运行预期。在这一环节,要避免内存泄漏、句柄泄漏、使用恰到的同步\异步机制等。好的代码质量,在某段代码指令执行后,会产生什么样的动作、内存功耗占用多少都是要符合预期的。原创 2024-04-20 00:01:15 · 1313 阅读 · 0 评论 -
Linux 内核启动过程分析----zImage自解压
要想移植内核,肯定是要知道内核的启动过程的,包括协处理器的操作。这对我们理解ARM工作方式、MMU配置,中断是很有帮助的。最近写代码太少,有时间研究内核了。下面是我个人主观对内核启动过程的分析,如有不同,请提出探讨,共同进步! 上一篇分析过了,uboot引导的uImage,最先执行的函数的是由arch/arm/boot/compressed下的vmlinx.lds文件决定的。它就是_sta原创 2015-04-04 12:01:52 · 1899 阅读 · 1 评论 -
Linux 内核启动过程--head.S(arch/xxx/kernel下的)
由上篇的分析可以知道,uImage是zImage加上64字节的头信息得到的,而zImage又是compressed下的vmlinux经过objcopy得到的,compressed下的vmlinux是由vmlinux.lds、 head.S 和 piggy.gzip.S misc.c编译而成的,其实就是在piggy.gzip中添加了解压代码。piggy.gzip是Image经过gzip -n -f -原创 2015-04-04 18:33:40 · 3142 阅读 · 1 评论 -
内核网络数据发送流程
为了了解TOE,以TCP协议为例子。以arm平台为例.首先看一下系统调用过程。 系统调用的时候会触发软中断,通过swi指令跳转到指定的入口函数。软中断属于arm异常模式的一种。在linux-.3.4 中,异常向量表的定义在entry-armv.S:include “calls.S” .globl __vectors_start__vectors_start: ARM( swi SY原创 2015-05-05 18:15:44 · 832 阅读 · 0 评论 -
Linux中pthread_detach()线程注意
一、创建分离线程有两种方式创建分离线程:(1)在线程创建时将其属性设为分离状态(detached);(2)在线程创建后将其属性设为分离的(detached)。二、分离线程的作用由系统来回收线程所占用资源。三、实例#include <stdlib.h>#include <string.h>#include <unistd.h>#include <semaph...原创 2018-05-23 10:02:18 · 13632 阅读 · 1 评论 -
利用awk命令统计code size
awk命令是一个强大的文本处理工具,用于在Unix和Linux系统中对文本进行模式扫描和处理。它逐行读取文本,默认以空格或制表符为分隔符进行字段分割,并将分隔后的字段保存到内建变量中,可以根据模式或条件执行编辑命令,使得用户可以进行复杂和强大的文本操作。利用nm命令和cat、grep、awk命令组合来实现一个code size统计的脚本。awk [参数] [处理内容] [操作对象]以下内容来自awk的man手册。原创 2017-05-23 16:24:49 · 244 阅读 · 0 评论 -
iperf命令使用
摘自 http://man.linuxde.net/iperf iperf命令 网络测试 iperf命令是一个网络性能测试工具。iperf可以测试TCP和UDP带宽质量。iperf可以测量最大TCP带宽,具有多种参数和UDP特性。iperf可以报告带宽,延迟抖动和数据包丢失。利用iperf这一特性,可以用来测试一些网络设备如路由器,防火墙,交换机等的性能。 iperf分为两种版本,Unix/Lin转载 2017-05-23 16:17:54 · 1186 阅读 · 0 评论 -
memcpy的速度测试
想把一组char a[4096]的数组拷贝到short b[6][256]中,尝试过用循环移位的方式,还用中间变量short c[2048]的方式。得出的结论: 1. 移位方式效率最低 2. 借用中间变量,变量如果是局部栈中,那么速度比全局的中间变量速度快,缺点是怕栈溢出。 验证代码如下://file name testcpyspeed.c#include<stdio.h>#inclu原创 2017-07-27 10:51:56 · 6736 阅读 · 0 评论 -
linux tty系统分析
tty_driver_register 注册字符设备,内核提供fops=tty_fops。 tty_fops–>线路规程的方法—>驱动定义的fops,如果是虚拟串口,则直接定义,如果是物理串口则使用内核提供的uart_fops。 如果是物理串口,内核提供是uart_fops会调用uart_start,继而调用port的port->ops->start_tx,这个start_tx是由驱动层提供。原创 2017-05-25 10:55:18 · 438 阅读 · 1 评论 -
内核软中断处理流程
软中断守护进程static __init int spawn_ksoftirqd(void){ void *cpu = (void *)(long)smp_processor_id(); int err = cpu_callback(&cpu_nfb, CPU_UP_PREPARE, cpu);//创建守护进程 BUG_ON(err != NOTIFY_OK); cp原创 2015-05-06 18:54:20 · 1704 阅读 · 1 评论 -
Linux内核I2C总线架构
总线是将设备与驱动联系在一起的纽带。 如果一个设备与驱动彼此绑在了一起,通过sys目录下的文件信息能看出其绑定的驱动/设备对象。 如:~# ls /sys/bus/i2c/drivers/ad-7441/ -llrwxrwxrwx 1 root root 0 Jan 1 00:07 2-0070 -> ../../../../devices/platfo原创 2015-03-24 18:33:11 · 2370 阅读 · 1 评论