4 wll1228

尚未进行身份认证

我要认证

爱好linux,喜欢嵌入式

等级
TA的排名 22w+

linux内核数据结构之链表

1.概述链表是一种常用的组织有序数据的数据结构,它通过指针将一系列数据节点连接成一条数据链,是线性表的一种重要实现方式。相对于数组,链表具有更好的动态性,建立链表时无需预先知道数据总量,可以随机分配空间,可以高效地在链表中的任意位置实时插入或删除数据。链表的开销主要是访问的顺序性和组织链的空间损失。通常链表数据结构至少应包含两个域:数据域和指针域,数据域用于存储数据,指针域用于建立与下一个节点的联系。按照指针域的组织以及各个节点之间的联系形式,链表又可以分为单链表、双链表、循环链表等多种类型,下面分别给

2020-07-05 17:35:27

一图看懂开源许可协议:GPL、BSD、MIT、Mozilla、Apache、LGPL

以下是上述协议的简单介绍(单击图片可看大图):BSD开源协议BSD开源协议是一个给于使用者很大自由的协议。基本上使用者可以”为所欲为”,可以自由的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。但”为所欲为”的前提当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:1、如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。2、如果再发布的只是二进制类库/软件,则需要在类...

2020-06-29 19:54:01

我工作的这四年总结的经验

不知不觉已经工作了四周年,本来打算三周年的时候发下感慨的,结果忘了,囧!概述这四年我没有换过公司,没有换个部门,一直呆在一家大型通信设备公司。在此期间,我经历了三次关系比较好的同事的离职,其中包括我的师傅,因此关于离职和跳槽还是有自己的想法的。职业生涯也可以看做是同事的离职生涯,看着亲近的同事一个个的离开,心里还是很不好受的。在工作到一个半年头的时候,师傅辞职去读博,当时的感受就是没有人在前面给我遮风挡雨,要自己独挡一面了,有点恐慌,有点伤心,也有点期待。当然事实证明,之后的一年半,是到目前为止,我最

2020-06-17 07:47:13

Linux内核数据结构-BITMAP

Linux内核-实用知识点-BITMAP概述在驱动中,有时候我们会使用位图的方式去管理资源,这种方式比较简单易懂。在对效率没有特别要求的情况下,采用位图不失为一种好的选择。其实在内核源码中也是有很多地方使用位图的,比如cpumask就是其中之一:typedef struct cpumask { DECLARE_BITMAP(bits, NR_CPUS); } cpumask_t;简单点...

2020-06-09 07:19:54

typeof关键字

typeof关键字概述typeof() 是GNU C提供的一种特性,可参考C-Extensions,它可以取得变量的类型,或者表达式的类型。本文总结了typeof()关键字的常见用法,并给出了相应的例子,以加深理解 。常见用法typeof()关键字常见用法一共有以下几种1.不用知道函数返回什么类型,可以使用typeof()定义一个用于接收该函数返回值的变量#include <stdio.h>#include <stdlib.h>#include <string

2020-06-04 20:11:42

IEEE 1588原理及实现

1 IEEE 1588是什么1588全称是网络测量和控制系统的精密时钟同步协议标准,基本功能是是分布式网络中所有时钟都与最精确的时钟保持同步,它定义了一种精确的时间协议PTP(precision Time Protocol),用于对标准以太网或其他支持多播技术的终端设备中的时钟进行亚微妙级别的同步,IEEE 1588用于需要时钟精度比NTP高的局域分布系统2 IEEE 1588如何实现PTP协议通过最佳主时钟算法建立主从时钟结构后,使用UDP通信协议,每个从时钟通过与主时钟交换同步报文而与主时钟达到同

2020-06-04 19:51:21

尾部丢弃与RED

尾部丢弃与RED一.尾部丢弃队列满时路由器进行尾丢弃,即新到的所有数据包都全部丢弃,丢弃的结果造成高延迟、高抖动、丧失服务保证、TCP全局同步、TCP饿死等问题,从而导致应用超时、数据重传和实时业务不可用等一系列问题TCP全局同步:没有差别的丢弃会造成所有TCP流的报文几乎在同一时刻丢弃,TCP又几乎在同一时刻重传。TCP窗口会在几乎同一时刻缩小,然后又几乎同一时刻增大,这将造成所有TCP连接的流量以相同的“频率”持续震荡。TCP全局同步的结果是TCP传输效率急剧下降,并且带宽的平均利用率大大降低。

2020-05-30 16:15:05

令牌桶算法及其应用

一.令牌桶算法简介在网络中传输数据时,为了防止网络拥塞,需限制流出网络的流量,使流量以比较均匀的速度向外发送。令牌桶算法就实现了这个功能,可控制发送到网络上数据的数目,并允许突发数据的发送。[1] 令牌桶算法是网络流量整形(Traffic Shaping)和速率限制(Rate Limiting)中最常使用的一种算法。典型情况下,令牌桶算法用来控制发送到网络上的数据的数目,并允许突发数据的发送。大小固定的令牌桶可自行以恒定的速率源源不断地产生令牌。如果令牌不被消耗,或者被消耗的...

2020-05-29 07:47:44

不同数据类型混合运算及类型转换

隐式转化若参与运算的成员类型不同,则先转换成同一类型,然后进行运算转换按数据长度增加的方向进行,以保证精度不降低。如int型和long型运算时,先把int量转成long型后再进行运算 1. **若两种类型的字节数不同,转换成字节数高的类型** 2. **若两种类型的字节数相同,且一种有符号,一种无符号,则转换成无符号类型**所有的浮点运算都是以双精度进行的,即使是两个float单精度量运算的表达式,也要先转换成double型,再作运算.char型和short型

2020-05-27 07:27:44

EEE-节能以太网

1. eee基本含义Enery-Efficient-Ethernet(EEE):高效节能以太网,相关标准在IEEE 802.3az EEE在2010年9月制定完成。基本思路是在没有数据传输的过程中通过MAC发送LPI(Low Power Idle),使PHY进入低功耗模式。2.EEE的实现2.1能力协商EEE能力通报在链路两端设备的自协商过程中进行,在此过程中,两端设备分别向对方告知本地的各项能力信息,通过协商确定各功能的使能和最佳参数,EEE功能,两端设备PHY必须同时支持EEE功能,如果一方不

2020-05-26 22:39:33

Ubuntu Samba安装使用教程

Linux samba安装使用教程Samba是在Linux系统上实现的SMB(Server Messages Block,信息服务块)协议的一款免费软件。它实...

2020-05-23 07:45:41

内存字节对齐

内存字节对齐1. 什么是内存字节对齐计算机中内存空间都是按字节划分的,从理论上讲对任何类型的变量的访问可以从任何地址开始,但是在程序实际编译过程中,编译器会对数据类型在编译过程中进行优化对齐,编译器会将各种类型数据按照一定的规则在空间上排列,而不是顺序的排放,这就是内存字节对齐。2. 为什么要内存字节对齐不同硬件平台对存储空间的处理是不同的。一些平台对某些特定类型的数据只能从某些特定地址开始存取。比如某些架构的CPU在访问一个没有进行对齐的变量的时候会发生错误,那么在这种架构下编程必须保证字节对齐。

2020-05-21 07:42:03

linux内核机制之设备树

1. 设备树(Device  Tree)基本概念及作用在内核源码中,存在大量对板级细节信息描述的代码。这些代码充斥在/arch/arm/plat-xxx和/arch/arm/mach-xxx目录,对内核而言这些platform设备、resource、i2c_board_info、spi_board_info以及各种硬件的platform_data绝大多数纯属垃圾冗余代码。为了解决这一问题,ARM内核版本3.x之后引入了原先在Power PC等其他体系架构已经使用的Flatte

2020-05-16 08:03:12

格式转换说明符scanf,printf

格式转换说明符scanf,printfprint...

2020-05-07 11:54:39

MAC、PHY以及MII

在通信设备中,通常离不开网络接口,本文将重点说明下网络接口中的MAC、PHY、MII以及MII的各种衍生版本。MAC和PHY的结构上图中DMA集成在CPU中,但是CPU、MAC、PHY并不是在同一个芯片内,由于PHY包含大量模拟器件,而MAC是典型的数字电路,考虑到芯片面积以及模拟/数字混合架构的原因,将MAC集成到SOC而将PHY留在片外,这种结构最常见MAC**MAC(Media A...

2020-01-16 23:21:20

学习 uboot 之六环境变量的使用

这一篇我们来讲一下uboot中环境变量的使用。 按照代码的流程依次来讲,首先执行的跟环境变量相关的函数是env_init---board.cint env_init(void){ gd->env_addr = (ulong)&default_environment[0]; gd->env_valid = 1; return (0);}可以看到环

2018-01-23 22:32:34

学习 uboot 之五CMD命令机制解析

本篇我们来学习uboot CMD 命令的原理,其实在上一篇中我们跳转执行内核入口函数时,就是使用如下的CMD的命令 bootm 0x30007FC0"下面我们就以bootm命令来说明CMD的原理1.首先bootm的定义如下 U_BOOT_CMD( bootm, CFG_MAXARGS, 1, do_bootm, "boo

2018-01-18 19:28:25

学习 uboot 之四主流程main_loop分析

接着上一篇内容,本篇我们来分析main_loop的主要内容: main_loop主要功能有两点:1.没有进入调试模式的话,初始化一些参数,直接跳转到内核入口处执行 2.进入调试模式,执行串口输入的命令 s = getenv ("bootcmd"); if (bootdelay >= 0 && s && !abortboot (bootdelay)) { {

2018-01-16 21:25:20

学习linux内核之一Makefile分析

转自:http://www.cnblogs.com/amanlikethis/p/3675486.html感谢作者的辛勤付出linux源码Makefile的详细分析目录一、概述  1、本文的意义  2、Linux内核Makefile文件组成二、Linux内核Makefile的“make解析”过程  1 顶层Makefile阶段    1、从总目标uIma

2018-01-11 11:52:01

学习uboot之三start_armboot分析

在上一篇中我们介绍了uboot启动过程中最先执行的代码start.S。 经过start.S的,uboot的代码已经从NAND FLASH中拷贝到RAM0x33f80000处 然后 ldr pc, _start_armboot _start_armboot: .word start_armboot接着,分析start_armboot。 如果你曾经接触过

2018-01-09 22:12:45

查看更多

勋章 我的勋章
  • 阅读者勋章Lv1
    阅读者勋章Lv1
    授予在CSDN APP累计阅读博文达到3天的你,是你的坚持与努力,使你超越了昨天的自己。
  • 勤写标兵Lv1
    勤写标兵Lv1
    授予每个自然周发布1篇到3篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。