自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

山庄来客的专栏

Android, Linux Kernel Research Notes

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

原创 大块数据申请及DMA

在内核中有时需要申请一段大内存,方法之一是可以采取如下方法:示例: 如何将1M的物理内存作为私人使用(假设物理内存大小为256M):1. 在内核启动时,通过mem=255M参数,让内核只能使用255M的空间。2. 然后通过如下调用来使用这个1M的私人空间:   dmabuf= ioremap (0xFF00000 /* 255M */, 0x100000 /* 1M */)

2014-01-20 18:41:49 9385

原创 Direct I/O

通常情况下,大多数I/O操作在内核层次上都会进行数据缓冲,以提高性能。然后,有些情况下,直接对用户空间的缓冲区进行I/O读写操作可能更能提高性能和数据传输速率,特别针对大数据传递的情形,这样将省去了将数据从内核空间复制到用户空间的操作,从而节省了传输时间。当然,在使用Direct I/O之间,也有必要了解下它的一些开销,毕竟,天下没有免费的午餐。首先,启用Direct I/O,意味着将失去

2014-01-20 18:31:49 2880

原创 C/C++语言Notes

Item 1 in the C++ standard that says that non-const references cannot bind to temporary objects.A temporary object is an instance of an object that does not have avariable name. For example:

2013-10-21 14:16:44 765

原创 libsigc++库的使用

Libsigc++库的使用 概述通常在图形用户界面程序中,我们希望检测事件的代码与处理事件的代码能够分开独立出来。我们可以使用回调函数的机制,注册函数指针来注册相关的处理函数,不过,在C++中,我们可以使用类型安全的库libsigc++。 Libsigc++库中提出了槽的概念,熟悉Qt的朋友应该对槽的概念不陌生,它其实是指向一个可作为回调的函数的引用,以下三种类型的函数都可作为

2013-10-20 20:20:01 6785

原创 设计模式

设计模式分类图PurposeDesignPatternAspect(s)That Can VaryCreationalAbstractFactoryfamiliesof product objectsBuilderhowa composite object gets

2013-09-15 16:26:55 776

原创 问题集锦索引

Problem 1: when i run a program, it print out error message like”cannot open the shared library”Problem 2: How to use gcc link options to compile a program?Problem 3: when i install freeradius ser

2013-08-29 23:03:06 851

原创 DirectFB实例1--加载一幅图片

在DirectFB中加载一幅图片,并显示:1. 通过IDirectFBImageProvider加载一幅图片.2. 创建一个DirectFBSurface,并将图片数据放入其中.3. 将该Surface的内容Blit到主Surface, 以更进行显示.下面用代码解释上述三个步骤.在执行上述步骤前,首先得进行上下文初始化,对于DirectFB程序来说,这些初始

2013-08-21 00:01:26 4619

原创 利用CMake编译内核模块

最近在做LDD书上的一些例子, 为了统一管理代码的编译,使内核模块的编译跟应用程序的编译过程一致,决定使用CMake来做工程的编译,编译脚本如下:cmake_minimum_required(VERSION 2.8)project(ldd)set(KERNEL_DIR /usr/src/linux-headers-3.2.0-48-generic-pae)function(compi

2013-07-09 23:19:45 8481

原创 Qt5下OpenGL程序的新写法

在Qt5中,引入了QOpenGL*系列类,以取代Qt4时代的QGL*系列类。下面是从Qt5例子中抠出的两种OpenGL程序模板,方便参考。第一种写法:#ifndef TRIANGLEWINDOW_H#define TRIANGLEWINDOW_H#include #include class QPainter;class QOpenGLContext;c

2013-07-04 19:51:38 24832 6

转载 [内存管理] linux kernel内存映射实例分析

作者:JHJ(jianghuijun211@gmail.com)日期:2012/08/24欢迎转载,请注明出处 引子现在android智能手机市场异常火热,硬件升级非常迅猛,arm cortex A9 + 1GB DDR似乎已经跟不上主流配置了。虽说硬件是王道,可我们还是不禁还怀疑这么强大的硬件配置得到充分利用了吗?因此以后我都会正对ARM平台分析kernel的

2013-07-03 15:37:35 1593

原创 CMake设置交叉编译程序

SET(CMAKE_SYSTEM_NAME Linux)SET(TOOLCHAIN_DIR "/home/fuyajun/Public/toolchain/gnuarm/vfp_4.5.1_2.6.27_cortex-a9-rhel4/i686")set(CMAKE_CXX_COMPILER ${TOOLCHAIN_DIR}/bin/armv7a-mediatek451_0

2013-06-13 19:40:36 5199 2

原创 CMake命令之set_property和get_property

set_property:在指定域中设置一个命名属性set_property(                DIRECTORY [dir]                   |                TARGET    [target1 [target2 ...]] |                SOURCE    [src1 [src2 ...]]       |

2013-06-06 10:15:19 29398

原创 CMake命令之list

用途:提供一些列表操作list(LENGTH )  list(GET [ ...]       )  list(APPEND [ ...])  list(FIND )  list(INSERT [ ...])  list(REMOVE_ITEM [ ...])  list(REMOVE_AT [ ...])  list(REMOVE_DUPLIC

2013-06-06 10:14:53 25414

原创 CMake命令之execute_process

用途:执行一个或多个子进程   execute_process(COMMAND [args1...]]                  [COMMAND [args2...] [...]]                  [WORKING_DIRECTORY]                  [TIMEOUT]                  [RESULT_VAR

2013-06-06 10:14:18 18687 1

原创 CMake命令之function

定义一个可在CMake脚本其他位置调用的函数。function([arg1 [arg2 [arg3 ...]]])    COMMAND1(ARGS ...)    COMMAND2(ARGS ...)    ...endfunction() 定义一个函数名为,参数名为arg1 arg2 arg3(…)。 函数体内的命令直到函数被调用的时候才会去执行。其中ARGC变

2013-06-06 10:12:44 15307

原创 CMake编译Widget UI Qt程序

自从CMake被引入到KDE项目的编译系统中后,CMake的使用者日益增多,Qt也不例外,除了使用QMAKE编译Qt程序外,也可以使用CMake来编译Qt程序,并且CMake在使用上更灵活,特别是大型程序。CMake对于Qt4和Qt5都支持,不过使用上有点差异,这里主要看下Qt5下使用CMake编译Qt程序。官方文档链接: http://qt-project.org/doc/qt-

2013-05-29 09:29:37 7998

原创 DirectFB编译环境

DirectFB是用于嵌入式平台的一个2D图形库,主要面向嵌入式平台。不过,也支持在PC平台进行开发,测试相关功能,只要对应的Linux支持FrameBuffer设备。本文以DirectFB源码自带的例子的编译介绍编译环境的搭建,使用版本为1.2.9使用CMake作为编译工具。 由于CMake默认并没有定义查找DirectFB头文件以及库的module,所以我们必须首先定义查找

2013-05-21 19:28:39 1929

原创 EGLImage与纹理

EGLImage代表一种由EGL客户API(如OpenGL,OpenVG)创建的共享资源类型。它的本意是共享2D图像数据,但是并没有明确限定共享数据的格式以及共享的目的,所以理论上来讲,应用程序以及相关的客户API可以基于任意的目的创建任意类型的共享数据。          关于EGLImage的一种使用情景就是通过它来创建一个2D纹理。相关函数原型声明如下:EGLAPI EGLIma

2013-05-17 16:58:32 28298 2

原创 基于textureview编写opengl程序

与SurfaceView相比,TextureView并没有创建一个单独的Surface用来绘制,这使得它可以像一般的View一样执行一些变换操作,设置透明度等。另外,Textureview必须在硬件加速开启的窗口中。下面的例子演示了通过TextureView来创建一个opengl程序。基于TextureView的程序,我们需要实现TextureView.SurfaceTexture

2013-05-15 18:11:14 9802 1

转载 apt-get 使用详解

http://blog.csdn.net/wyabc1986/article/details/6989532[举例]目前常用的==========*更新本机中的数据库缓存:sudo apt-get update*查找包含部分关键字的软件包:sudo apt-cache search *安装指定的软件:

2013-05-13 14:52:58 731

原创 CMake变量

影响CMake行为的变量BUILD_SHARED_LIBS如果为ON,则add_library默认创建共享库CMAKE_ABSOLUTE_DESTINATION_FILES安装文件列表时使用ABSOLUTE DESTINATION 路径CMAKE_AUTOMOC_RELAXED_MODE在严格和宽松的a

2013-05-10 17:18:07 7350 2

原创 CMake命令之add_custom_comand 和 add_custom_target

add_custom_command: 增加客制化的构建规则到生成的构建系统中。对于add_custom_command,有两种使用形式。第一种形式是增加一个客制命令用来产生一个输出。 add_custom_command(OUTPUT output1 [output2 ...]                     COMMAND command1[ARGS] [args1...]

2013-05-09 19:34:37 57177 8

原创 CMake常见变量——Project和CMake相关信息

CMAKE_AR: 静态库的归档工具的名称。这个变量指定了用于创建档案或静态库的程序的名称。 CMAKE_ARGC: 在脚本模式下传给CMake的命令行参数的个数。当运行在-P脚本模式下,CMake设置该变量为命令行参数的个数。CMAKE_ARGV0: 在脚本模式下传给CMake的命令行的第一个参数。CMAKE_BINARY_DIR: 构建树的最外层路径,是当前CMake构建树的最外层的全

2013-05-06 18:03:54 8265

原创 CMakeFile命令之file

file:文件操作命令.file(WRITE filename "message towrite"... )WRITE 将一则信息写入文件’filename’中,如果该文件存在,它会覆盖它,如果不存在,它会创建该文件。file(APPEND filename "message to write"... )APPEND 如同WRITE,区别在于它将信息内容追加到文件末尾。

2013-05-03 14:38:23 23463

转载 CMake常见指令总结

PROJECT(工程名字)    这条指令会自动创建两个变量:_BINARY_DIR(二进制文件保存路径)    _SOURCE_DIR(源代码路径)cmake系统也帮助我们预定义了PROJECT_BINARY_DIR和PROJECT_SOURCE_DIR其值与上述对应相等 SET(变量名 变量值)    SET(VAR [VALUE] [CACHE T

2013-04-30 17:03:06 1238

转载 到底什么时候用指针或是引用

1.问题提出:当一个类的对象作为实参数传递时,使用值传递和引用传递有什么区别?   比如: DateType ExampleFun(CString &strFileName,...)与         DateType ExampleFun(CString strFileName,...)解答之前,我们先来看2个基本的概念:形参和实参。->通俗的讲:形参是形式上的参数,实参是实

2013-04-21 16:30:50 1428

转载 linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS)

#include linux/kernel.h>#include linux/module.h>#include linux/init.h>#include linux/fs.h>#include linux/string.h>#include linux/mm.h>#include linux/syscalls.h>#include asm/unistd.h>#i

2013-03-19 13:52:19 13453

原创 Android消息广播的使用

在Android中,一些设备通过广播的形式向应用程序传递一些状态信息,常见的如USB热挺拔广播信息。在Andoid应用程序中,使用消息广播机制非常简单,只要在Activity中注册感兴趣的广播信息,并添加相应的处理捕获的广播信息的代码即可。首先,我们新建一个广播消息接收器: private AlertDialog mAlertDialog = null; private Broadcas

2013-03-18 19:17:30 5163

转载 Placement new的用法及用途

什么是placement new?所谓placement new就是在用户指定的内存位置上构建新的对象,这个构建过程不需要额外分配内存,只需要调用对象的构造函数即可。举例来说:class foo{};foo* pfoo = new foo;pfoo指向的对象的地址你是不能决定的,因为new已经为你做了这些工作。第一步分配内存,第二步调用类的构造函数。而placement

2013-02-19 19:51:49 972

转载 YUV420转YUV444 , YUV420转RGB

我想大家应该知道了YUV的颜色表示原理即:  Y = 0.299R + 0.587G + 0.114B   U = -0.147R - 0.289G + 0.436B   V = 0.615R - 0.515G - 0.100B   R = Y + 1.14V   G = Y - 0.39U - 0.58V   B = Y + 2.03U如果通过上面的公式从RGB转

2013-01-21 17:45:02 1752

转载 The Android ION memory allocator(有删节)

ION is a generalized memory manager that Google introduced in the Android 4.0 ICS (Ice Cream Sandwich) release to address the issue of fragmented memory management interfaces across different Android

2013-01-04 15:12:52 1477

原创 Qt下使用Shader绘制三角形

在Qt下使用可编程管线编写OpenGL的流程是怎样的呢? 下面演示了Qt下使用可编程管线的基本代码:(绘制三个不同的三角形,并做些旋转变换)在Qt中,我们从QGLWidget继承,来实现OpenGL的一些绘制,主要实现其中的initializeGL(), paintGL()以及resizeGL()三个方法,基本声明如下:#ifndef MYGLWIDGET_H#define MYGLWI

2012-11-29 16:14:58 8970 7

原创 实现控制台上的进度条

通常,  控制台程序在执行一个漫长的任务时,需要实时显示当前进度信息, 本文演示了类似GUI进度条控件的实现.由于需要实时更新进度条信息,并且是要在同一行显示,所以需要用到回车转义字符'\r'.首先是进度条结构体的定义:#include #include #include #include #include #include #include #include

2012-09-04 21:59:57 2752

原创 Linux终端字符颜色设置

我们在编写程序的时候,通常需要终端对输出显示红色或者绿色等各种颜色,以便更加清楚的对用户做出提示。下面是Linux系统终端颜色的设置方式:终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关,shell,python,perl, C, C++等均可以调用。 转义序列是以 ESC 开头,可以用 \033 完成相同的工作(ESC 的 ASCII 码用十进制表示就是 2

2012-09-01 12:50:58 4269

原创 iotcl函数

Linux系统建议以如图方式定义ioctl()的命令码。设备类型(type)序列号(nr)方向数据尺寸(size)8bit8bit2bit13/14bit命令码的设备类型字段为一个“幻数”,可以是0~0xff之间的值,命令码的序列号也是8位宽,命令码的方向字段

2012-08-23 23:03:57 1799

原创 Miscellaneous Character Drivers

Sometimes people need to write “small” device drivers, to support custom hacks—either hardware or software ones. To this end, as well as to host some real drivers, the Linux kernel exports an interf

2012-08-23 23:02:31 688

原创 udev与devfs文件系统

devfs(设备文件系统)是由Linux2.4内核引入的,它的出现主要使得设备驱动程序能够自主管理自己的设备文件。具体来说,devfs具有如下优点:   可以通过程序在设备初始化时在/dev目录下创建设备文件,卸载设备时将它删除。   设备驱动程序可以指定设备名、所有者和权限位,用户空间程序仍可以修改所有者和权限位。   不再需要为设备驱动程序分配主设备号以及处理次设备号,

2012-08-23 23:01:11 3090

原创 Linux-2.6设备模型与sysfs文件系统

kobject对象:    它是设备模型的基本结构,对应于sysfs文件系统中的一个目录,它是一个结构体,不过在Linux中引入了面向对象的思想,从某些角度,也可以看成是一个类。kobject对象通常被嵌入到其他的结构中,从面向对象的观点看,kobject可以看成是基类,而其他类都是派生的产物。 一个kobject的例子/* * Sample

2012-08-23 22:58:04 1536

原创 字符设备驱动程序框架

1, 设备号的内部表示形式       类型:dev_t 32=12(主设备号) + 20(次设备号)相关宏:       MAJOR(dev_t dev)       MINOR(dev_t dev)       MKDEV(int major, int minor);2. 分配和释放设备号       相关函数:       //静态分配设备号

2012-08-08 23:31:15 752

原创 Linux内核模块

Linux内核的整体结构非常庞大,其包含的组件也非常多,我们需要包含所需的部分功能组件。有两种方法:一种是将所需的功能组件编译进内核。二是,将所需的功能组件编译成独立于内核的模块,需要时动态加载进内核。通常采用第二种方式,它的好处是:n 模块本身不被编译入内核映像,从而控制了内核的大小。n 模块一旦被加载,它就和内核中的其他部分完全一样。一个简单的内核模块的例子:

2012-08-08 23:19:14 1014

Beginning Visual C++ 2008(含源码)

Iror Horton的作品,涵盖了VC2008的常见知识。包含标准C++和托管的C++, MFC以及WFP,总页数1394, 英文版。

2010-01-11

空空如也

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

TA关注的人

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