自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

华的专栏

讨论与进步

  • 博客(31)
  • 资源 (2)
  • 收藏
  • 关注

转载 Linux系统中cgroup功能介绍

1  Cgroups简介1.1 What are cgroups ?Cgroups(控制组)是Linux内核的一个功能,用来限制、统计和分离一个进程组的资源(CPU、内存、磁盘输入输出等)。换句话说就是,如果一个进程加入了某一个控制组,该控制组对Linux的系统资源都有严格的限制,进程在使用这些资源时,不能超过其最大的限制数,例如:memory资源,如果加入控制组的进程使用的mem

2016-09-30 14:57:19 12857

转载 把块存放在页高速缓存中

VFS(映射层)和各种文件系统以叫做“块”的逻辑单位组织磁盘数据。在Linux内核的旧版本中,主要有两种不同的磁盘高速缓存:页高速缓存和缓冲区高速缓存,前者用来存放访问磁盘文件内容时生成的磁盘数据页,后者把通过VFS(管理磁盘文件系统)访问的块的内容保留在内存中。 从2.4.10的稳定版本开始,缓冲区高速缓存其实就不存在了。事实上,由于效率的原因,不再单独分配块缓冲区;相反,把它们

2016-09-27 09:56:00 483

原创 Linux kernel中 __bitmap_weight函数的理解

对Linux kernel中 __bitmap_weight函数的理解 int __bitmap_weight(const unsigned long *bitmap, int bits){ int k, w = 0, lim = bits/BITS_PER_LONG; for (k = 0; k < lim; k++) w += hweight_long(bitmap[k])

2016-09-22 08:00:33 3147

转载 Linux Scheduling Domains

Scheduling Domains 引入的背景Scheduling Domains 是现代硬件技术尤其是多 CPU 多核技术发展的产物。现在,一个复杂的高端系统由上到下可以这样构成:它是一个 NUMA 架构的系统,系统中的每个 Node 访问系统中不同区域的内存有不同的速度。同时它又是一个 SMP 系统。由多个物理 CPU(Physical Package) 构成。这些物

2016-09-20 09:11:50 544

转载 linux多CPU进程负载均衡解析

在linux中,支持对称smp的处理器模型,在多处理器的情况下,每个处理器都有自己的一个运行队列,这样就存在着分配不均的情况,有的cpu运行队列很多进程,导致一直很忙,有的cpu运行队列可能很少的进程甚至没有任何运行进程,导致cpu经常处于空转的状态,因此我们需要一种机制,来均衡各个cpu上运行队列的进程数。1数据结构为了支持多种多处理器模型,linux提出了调用域及组的概念,一个调用域可

2016-09-20 07:33:26 5412

转载 linux内存管理之DMA

说起DMA我们并不陌生,但是实际编程中去用的人不多吧,最多就是网卡驱动里的环形buffer,再有就是设备的dma,下面我们就分析分析.   DMA用来在设备内存和内存之间直接数据交互。而无需cpu干预  内核为了方便驱动的开发,已经提供了几个dma 函数接口。dma跟硬件架构相关,所以linux关于硬件部分已经给屏蔽了,有兴趣的可以深入跟踪学习.按照linux内核对dma层

2016-09-18 08:00:16 7434

转载 DMA技术

5.1  DMA概述  DMA是指外部设备不通过CPU而直接与系统内存交换数据的接口技术。  要把外设的数据读入内存或把内存的数据传送到外设,一般都要通过CPU控制完成,如CPU程序查询或中断方式。利用中断进行数据传送,可以大大提高CPU的利用率。    但是采用中断传送有它的缺点,对于一个高速I/O设备,以及批量交换数据的情况,只能采用DMA方式,才能解决效率和速度问题。

2016-09-18 07:58:22 1288

原创 DMA的demo

DMA的demostatic void fsl_dma_test_callback(void *dma_async_param){ struct completion *cmp = dma_async_param; printk( KERN_ERR "dma transfer done, end=%lu\n", jiffies ); complete(cmp);}st

2016-09-16 22:15:04 1386 1

原创 __xchg 函数的用法

CPU X86 32位文件:arch\x86\include\asm\cmpxchg_32.h#define __xchg(x, ptr, size) \({ \__typeof(*(ptr)) __x = (x);\switch (size) {\case 1: \{ \volatile u8 *__ptr = (volatile u8 *)(ptr)

2016-09-16 21:15:47 4607

转载 Linux内核DMA机制

目录[隐藏]12 DMA控制器硬件结构2.1 DMA通道使用的地址2.2 DMA操作函数2.3 DMA映射2.3.1 (1)建立一致 DMA 映射2.3.2 (2)建立流式 DMA 映射2.3.3 (3)分散/集中映射2.4 DMA池2.5 一个简单的使用DMA 例子

2016-09-16 20:47:50 1859

转载 ffmpeg代码实现自定义decoder

1、概述本文主要讲述如何用ffmpeg代码实现自己的decoder。2、代码[cpp] view plain copy/*  *本程序主要实现一个自己的decoder并加入到decoder链中去,供api调用 *作者:缪国凯(MK)  *821486004@qq.com  *2015-6-4  */     #

2016-09-14 17:24:02 1424

转载 把自定义的demuxer加入ffmpeg源码

简介:把上一篇文章中的demuxer加入ffmpeg源码中去,使可以用命令行方式调用自定义的demuxer第一步:在libavformat目录下新建mkdemuxer.c和mkdemuxer.h,代码如下:mkdemuxer.c:[cpp] view plain copy/*  *实现一个自己的demuxer并加入

2016-09-14 17:21:48 876

转载 ffmpeg代码实现自定义encoder

1、概述本文主要讲述如何用ffmpeg代码实现自己的encoder。2、代码[cpp] view plain copy/*  *本程序主要实现一个自己的encoder并加入到encoder链中去,供api调用 *作者:缪国凯(MK)  *821486004@qq.com  *2015-6-4  */     #

2016-09-14 17:20:25 1112

转载 把自定义encoder加入ffmpeg源码

第一步:在libavcodec目录下新建mkencoder.c并加入代码:[cpp] view plain copy/*  *实现一个自己的encoder,编码工作其实就是把frame的数据拷贝到pkt *作者:缪国凯(MK)  *821486004@qq.com  *2015-6-4  */       #i

2016-09-14 17:19:26 1231

转载 ffmpeg 自定义数据来源

ffmpeg 自定义数据来源, 可以是文件,可以是内存,可以是网络// ffmpeg_custom_context.cpp : Defines the entry point for the console application.//#include "stdafx.h"extern "C"{#include };

2016-09-14 16:24:34 832

转载 linux kernel 工作队列

朋友,你相信,一只蝴蝶在北京拍拍翅膀,将使得纽约几个月后出现比狂风还厉害的龙卷风吗?看过那部经典的影片蝴蝶效应的朋友们一定会说,这不就是蝴蝶效应吗.没错.蝴蝶效应其实是混沌学理论中的一个概念.它是指对初始条件敏感性的一种依赖现象.蝴蝶效应的原因在于蝴蝶翅膀的运动,导致其身边的空气系统发生变化,并引起微弱气流的产生,而微弱气流的产生又会引起它四周空气或其它系统产生相应的变化,由此引起连锁反应,最终导

2016-09-14 07:58:09 405

转载 Linux工作队列实现机制

工作项、工作队列和工作者线程把推后执行的任务叫做工作(work),描述它的数据结构为work_struct ,这些工作以队列结构组织成工作队列(workqueue),其数据结构为workqueue_struct ,而工作线程就是负责执行工作队列中的工作。系统默认的工作者线程为events。工作队列(work queue)是另外一种将工作推后执行的形式。工作队列可以把工作推后,交由一

2016-09-14 07:56:30 497

转载 Linux中的工作队列

工作队列(work queue)是Linux kernel中将工作推后执行的一种机制。这种机制和BH或Tasklets不同之处在于工作队列是把推后的工作交由一个内核线程去执行,因此工作队列的优势就在于它允许重新调度甚至睡眠。工作队列是2.6内核开始引入的机制,在2.6.20之后,工作队列的数据结构发生了一些变化,因此本文分成两个部分对2.6.20之前和之后的版本分别做介绍。

2016-09-14 07:55:01 332

转载 内核抢占与中断返回

1、上下文一般来说,CPU在任何时刻都处于以下三种情况之一:(1)运行于用户空间,执行用户进程;(2)运行于内核空间,处于进程上下文;(3)运行于内核空间,处于中断上下文。应用程序通过系统调用陷入内核,此时处于进程上下文。现代几乎所有的CPU体系结构都支持中断。当外部设备产生中断,向CPU发送一个异步信号,CPU调用相应的中断处理程序来处理该中断,此时CPU处于中断上下文。

2016-09-14 07:17:45 746

转载 同步(1)

1、概述同步问题是操作系统中的经典问题,它伴随着并发处理而自诞生。现代体系结构中常见的并发处理情况可以分为如下三种情况:(1)多个线程在单处理器上执行——多线程编程(2)多个线程在多处理器上执行——并行计算(3)多个线程在分布的多个处理上执行——分布式计算相应的编程也分成三种情况:共享变量编程、分布式(基于消息)编程和并行编程。1.1、并发程序设计的本质并发程序通常

2016-09-14 07:16:28 295

转载 同步(2)

2.2、睡眠与唤醒在操作系统中,睡眠和唤醒原语实际上是操作系统的基本原语,也是实现同步的一种方式,而且它还是实现信号量的基础。当进程请求的资源(如内存、文件等)不能得到满足时,就会主动放弃CPU,进入等待状态(可中断等待或者不可中断等待)。当资源满足时,就会由别的进程唤醒,从而投入运行。2.2.1、等待队列等待队列表示一组睡眠的进程,这些进程正在等待特定的事件发生(或者说条件为真),比

2016-09-14 07:15:39 243

转载 Linux电源管理

PM notifier机制:应用场景:There are some operations that subsystems or drivers may want to carry out before hibernation/suspend or after restore/resume, but they require the system to be fully functi

2016-09-13 14:12:58 368

转载 Linux 设备驱动--- 并发 与 竞态 --- atomic_t --- atomic_dec_and_test --- 原子操作

并发:          多个执行单元同时被执行.竞态:          并发的执行单元对资源 ( 硬件资源和软件上的全局变量等 ) 的访问导致的竞争状态.          并发的处理:          处理并发的常用技术是加锁或者互斥,即保证在任何时间只有一个执行单元可以操作共享资源.          在

2016-09-10 10:00:29 688

转载 linux内存源码分析 - SLAB分配器概述

之前说了管理区页框分配器,这里我们简称为页框分配器,在页框分配器中主要是管理物理内存,将物理内存的页框分配给申请者,而且我们知道也可页框大小为4K(也可设置为4M),这时候就会有个问题,如果我只需要1KB大小的内存,页框分配器也不得不分配一个4KB的页框给申请者,这样就会有3KB被白白浪费掉了。为了应对这种情况,在页框分配器上一层又做了一层SLAB层,SLAB分配器的作用就是从页框分配器中拿出一些

2016-09-08 09:10:47 448

转载 automake 安装及使用

http://blog.csdn.net/lusehu/article/details/6415213autotools是个系列工具,首先确认你的Ubuntu系统是否安装了以下工具(可以通过which命令查看):    aclocal    autoscan    autoconf    autoheader    automake

2016-09-07 21:53:22 8760

转载 linux 下 ffmpeg 库怎么才可以调试

我们configure时, 加入一下选项:--enable-debug=3 \        --disable-optimizations \        --disable-asm  \        --disable-stripping \--enable-debug  就是gcc 中添加-g选项, 3是-g的级别--disable-optimiz

2016-09-06 15:50:05 563

转载 linux下编译安装

1,关于FreeSwitchFreeSWITCH 是一个电话的软交换解决方案,包括一个软电话和软交换机用以提供语音和聊天的产品驱动。FreeSWITCH 可以用作交换机引擎、PBX、多媒体网关以及多媒体服务器等。FreeSWITCH 支持多种通讯技术标准,包括 SIP, H.323, IAX2 以及 GoogleTalk ,可以方便的与其他开源的PBX系统进行对接,例如 sipX,

2016-09-05 21:51:12 3867

转载 FreeSWITCH 初步

第二章 FreeSWITCH 初步什么是 FreeSWITCH ?FreeSWITCH 是一个开源的电话交换平台,它具有很强的可伸缩性--从一个简单的软电话客户端到运营商级的软交换设备几乎无所不能。能原生地运行于Windows、 Max OS X、Linux、BSD 及 solaris 等诸多32/64位平台。可以用作一个简单的交换引擎、一个PBX,一个媒体网关或媒体支持IVR的服

2016-09-05 21:32:23 7492 1

转载 如何从wireshark 抓包中的RTP导出 H.264 PAYLOAD,变成可用暴风直接播放的H264 裸码流文件

在wireshark里面透过 stream analysis,导出来的H264影像没法直接播放,是因为我们需要安装一个插件,Lua脚本如下:抓取一个包含H.264 Payload RTP包的SIP会话或RTSP会话后,用Wireshark的Play功能只能播放声音,不能播放视频。把RTP payload直接导出成文件后也是不能直接播放的,因为H.264 over RTP封包是符合RFC39

2016-09-03 11:10:01 2227

转载 wireshark基本用法及过虑规则

Wireshark 基本语法,基本使用方法,及包过虑规则:1.过滤IP,如来源IP或者目标IP等于某个IP例子:ip.src eq 192.168.1.107 or ip.dst eq 192.168.1.107或者ip.addr eq 192.168.1.107 // 都能显示来源IP和目标IPlinux上运行的wireshark图形窗口截图示

2016-09-03 10:57:56 1120

转载 linux内存源码分析 - 伙伴系统(初始化和申请页框)

之前的文章已经介绍了伙伴系统,这篇我们主要看看源码中是如何初始化伙伴系统、从伙伴系统中分配页框,返回页框于伙伴系统中的。  我们知道,每个管理区都有自己的伙伴系统管理属于这个管理区的页框,这也说明了,在伙伴系统初始化时,管理区必须要已经存在(初始化完成)了。在管理区描述符(struct zone)中,struct free_area就专门用于描述伙伴系统的。在一个管理区中,伙伴系统一共维护

2016-09-01 10:43:34 1228

ps解封包处理

PS视频流的解封包处理过程,详细请看源码!

2015-08-18

空空如也

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

TA关注的人

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