Welcome 微信登录

首页 / 操作系统 / Linux

Linux内核中无名管道pipe和有名管道fifo的分析

Linux内核中无名管道pipe和有名管道fifo的分析

1、管道(pipe)管道是进程间通信的主要手段之一。一个管道实际上就是个只存在于内存中的文件,对这个文件的操作要通过两个已经打开文件进行,它们分别代表管道的两端。管道是一种特殊的文件,它不属于某一种文件系统,而是一种独立的文件系统,有其自己的数据结构。根据管道的适用范围将其分为:无名管道和命名管道。● 无名管道主要用于父进程与子进程之间,或者两个兄弟进程之间。在linux系统中可以通过系统调用建立起一个单向的通信管道,且这种关系只能由父进程来建立。因此,每...
Mg701 Android中背光系统架构

Mg701 Android中背光系统架构

最主要的莫过于是了解了Android中jni编程,游荡整个Android源码,可以看到很多直接操作底层驱动接口,封装成so库,供Java调用的例子哦。这次学习,也正是出于这样的想法,没想到这个设想高手们早就实现了哦,菜鸟现在也只能算是验证了。诶,菜鸟就是菜鸟,有虫子吃,就兴奋的不得了。驱动架构略,这里只讨论jni接口的实现。一、我的设想 其实设想很简单,找到背光驱动提供给上层的API接口,人家Android还不是一样需要一层一层的抽象(HAL、Framew...
POSIX的pthread_join

POSIX的pthread_join

joinjoin是三种同步线程的方式之一。另外两种分别是互斥锁(mutex)和条件变量(condition variable)。调用pthread_join()将阻塞自己,一直到要等待加入的线程运行结束。可以用pthread_join()获取线程的返回值。一个线程对应一个pthread_join()调用,对同一个线程进行多次pthread_join()调用是逻辑错误。join or detach线程分两种:一种可以join,另一种不可以。该属性在创建线程的...
POSIX线程的栈管理

POSIX线程的栈管理

POSIX标准没有为线程的栈规定默认的大小,所以该值是根据实现而变化的;栈的最大容量也是由实现去定义。一旦超过栈的容量限制,程序会崩溃,或者数据损坏。可靠而又保证移植性的作法,是显式地设置栈的大小,不使用默认值。有些实现要求线程的栈放在内存的特殊的地方,此时要使用pthread_attr_setstackaddr()函数。#include<stdlib.h> #include<pthread.h> //通过调节三个参数,了解当前计算...
POSIX线程的私有数据

POSIX线程的私有数据

多线程环境下,数据空间由所有线程共享。所以,一般意义上的全局变量也为所有的线程所共享。有时需要提供线程私有的全局变量:- 可以跨多个函数访问(全局);- 仅在某个线程有效(私有)。比如程序可能需要每个线程都维护一个链表,维护手段相同,链表内的数据却不同。这样的数据结构可由POSIX线程库维护,称为Thread Specific Data,简称TSD。#ifdefWIN32 #include<windows.h> #defineSLEEP(ms)...
在mini2440上移植使用FFmpeg录像

在mini2440上移植使用FFmpeg录像

最近想在板子上插个摄像头,录个像,搞了两三天,算是能用人家的ffmpeg程序在自己的板子上摄像,然后将文件.avi格式保存到PC机上了。过程有些曲折,但是也算乱撞了。推荐阅读:ARM-Linux开机自启动设置-mini2440开发板 http://www.linuxidc.com/Linux/2011-05/36109.htm(1)编译x264官网上下了个最新的x264,地址在这里。解压之后,参考【1】用了个./configure --disable-as...
x264编码的ARM移植

x264编码的ARM移植

写一下最近移植x264的过程。最新的版本(我最开始用的是20090715这个)已经有cross-compile的支持了,移植应该还是很顺利的。但是这个版本的win下编译不通过,问题在网上找了一下,没有解决。后来退而求其次,选择了一个20060805的版本,这个版本在网上找到了win下vc6可以编译通过的版本,同时也可以在x264的官方ftp上找到linux下可以编译的版本。最后决定使用这个版本。这样可以方便一些在win下的交互调试。注意,这里要提醒一下,几...
arm_linux移植手记:交叉工具链编译

arm_linux移植手记:交叉工具链编译

一直做的是应用项目,不知道怎么的,突然想把整个arm-linux移植流程跑一遍,如今就有了这一记录,希望对初学和有兴趣了解的人做些参考,同时还望行家们手下留情我,并多多指教。闲话少说,进入正题:第一步交叉工具链的制作。 先说明我这里仅是对binutils、gcc、glibc的交叉编译,缺少gdb等以及对整个制作完成的打包整理,可能有些混乱。编译环境是Debian 6.0,使用的头文件内核linux2.6.32,编译是带EABI的,在交叉工具链编译(上...
交叉工具链制作至尊宝典

交叉工具链制作至尊宝典

一些必须知道的基础知识Debian 操作系统 以及 aptitude命令 autoconf and automake 什么是交叉编译,configure 的几个参数 build host targetbuild:编译代码的机器,的CPU指令集host:编译生成的东西,的CPU指令集(目标板上的CPU的指令集)target:编译生成的东西,他编译生成的的东西,的指令集(所以此选项一般不用,大多只有在做交叉工具链时使用) 0、以Expert mode 安装De...
如何为嵌入式开发建立交叉编译环境

如何为嵌入式开发建立交叉编译环境

简介:在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。文章通过一个具体的例子说明了这些嵌入式交叉编译开发工具的制作过程。随着消费类电子产品的大量开发和应用和Linux操作系统的不断健壮和强大,嵌入式系统越来越多的进入人们的生活之中,应用范围越来越广。在裁减和定制Linux,运用于你的嵌入式系统之前,由于一般嵌入式开发系统存储大小有限,通常你都要在你的强大的pc机上建立一个用于目标机的交叉编译环境。这是一...
<< 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 >>