Welcome 微信登录

首页 / 操作系统 / Linux

Linux基础: 解密module_init幕后的故事

Linux基础: 解密module_init幕后的故事

在Linux底下写过driver模块的对这个宏一定不会陌生。module_init宏在MODULE宏有没有定义的情况下展开的内容是不同的,如果这个宏没有定义,基本上表明阁下的模块是要编译进内核的(obj-y)。1.在MODULE没有定义这种情况下,module_init定义如下:#define module_init(x) __initcall(x);因为#define __initcall(fn) device_initcall(fn)#define d...
Linux 驱动相关文件系统

Linux 驱动相关文件系统

1. /dev 设备文件目录,存放所有系统中device(设备)的相关信息。 /dev/snd:声卡设备2. /etc 系统配置文件3. /opt 表示可选择,自定义软件安装的地方4. /proc 操作系统运行时,进程相关信息,由系统动态生成。 /proc/ioports:可以查看I/O端口使用情况。 /proc/modules:系统加载的模块。5. /sys Linux 2.6内核支持的sysfs文件系统被映射在此目录。Linux 设备驱动模型中的总线、...
Linux-0.11 GCC4.3下可编译运行的源码

Linux-0.11 GCC4.3下可编译运行的源码

刚修复了集成盘在gcc 4.3下无法工作的问题。启动是只是显示“Loading System ...”1. 原因gcc 4.3对内存拷贝优化时出错,当然,glibc里头的memcpy是没有问题的,因为glibc中的memcpy实现方式不一样,但是linux-0.11里头的memcpy有问题。类似的 *p1=*p2 操作在gcc 4.3中会自动优化,而在4.3之前的版本会自动调用memcpy,所以这里我们把类似的 *p1=*p2 操作修改为 memcpy,但...
GCC Inline ASM GCC内联汇编

GCC Inline ASM GCC内联汇编

GCC 支持在C/C++代码中嵌入汇编代码,这些汇编代码被称作GCC Inline ASM——GCC内联汇编。这是一个非常有用的功能,有利于我们将一些C/C++语法无法表达的指令直接潜入C/C++代码中,另外也允许我们直接写 C/C++代码中使用汇编编写简洁高效的代码。1.基本内联汇编GCC中基本的内联汇编非常易懂,我们先来看两个简单的例子:__asm__("movl %esp,%eax"); // 看起来很熟悉吧!或者是__asm__("movl $1,...
C/C++ 笔试总结

C/C++ 笔试总结

1.New delete 与malloc free 的联系与区别?答案:都是在堆(heap)上进行动态的内存操作。用malloc函数需要指定内存分配的字节数并且不能初始化对象,new 会自动调用对象的构造函数。delete 会调用对象的destructor,而free 不会调用对象的destructor.2.有哪几种情况只能用intialization list 而不能用assignment?答案:当类中含有const、reference 成员变量;基类的...
Linux 中断的上半部和下半部

Linux 中断的上半部和下半部

另外,与Linux中断息息相关的一个重要概念是Linux中断分为两个半部:上半部(tophalf)和下半部(bottom half)。上半部的功能是"登记中断",当一个中断发生时,它进行相应地硬件读写后就把中断例程的下半部挂到该设备的下半部执行队列中去。因此,上半部执行的速度就会很快,可以服务更多的中断请求。但是,仅有"登记中断"是远远不够的,因为中断的事件可能很复杂。因此,Linux引入了一个下半部,来完成中断事件的绝大多数使命。下半部和上半部最大的不同...
Ubuntu下Qt-4.7.1的静态编译

Ubuntu下Qt-4.7.1的静态编译

最近在学习Qt的静态编译,相比较来说windows的Qt静态编译比较容易,相反对于linux编译网上的文章实践下来都有这样那样的错误,这里简要小结一下自己的编译成果。一、实验环境1、Ubuntu 10.042、qt-x11-opensource-4.7.1.tar.gz二、前期准备在安装好Ubuntu 10.04后默认是没有安装程序编译软件包的,所以我们首先是要配置ubuntu。配置方法:(推荐全程root用户模式)1、首先调整网络设置使得机器可以上网(具...
Android的功能特性简介

Android的功能特性简介

学习Android开发貌似有大半年的日子了吧,一路走来,慢慢的觉得基础原来是那么的重要,在开发的过程中做着做着就会出现一些很低级的错误,经 过这一段时间的总结,找到了错误的原因,基础不牢,不扎实,因此现在重新制定计划,每天定量的复习java方面的知识,android的基础知识以及重要 的主要点,希望能以后少走弯路!何为android,我在看sdk的开发文档中看到的这个Google官方给出的简单介绍:相关阅读:Android将ScrollView移动到最底部...
Android系统架构

Android系统架构

这次开始了Android系统架构的学习,目的了解android的系统架构,我的开发路线,应用程序开发—-android底层开发,呵呵!回归正题:Android的系统架构和其操作系统一样,采用了分层的架构。从架构图看,我们可以得知android分为四层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。下面对Android系统架构的四层进行详细的介绍相关阅读:Android将ScrollView移动到最底部1.Android会同一...
Linux的Cache Memory(缓存内存)机制

Linux的Cache Memory(缓存内存)机制

当前一个项目中需要用到音频,用到的音频芯片是CS4344,驱动是从linux内核自带的AT73C213音频IC驱动移植过来的。在用自己写的应用程序播放音频文件的时候,发现随着播放不同的音频文件,内存的使用越来越多,甚至高达27或28M(总共内存是32M)。由于在这之前没有关注过linux的cache机制,判断内存是用top命令的used的值来判断的,因此将这个问题判断为内存问题。由于音频驱动是alsa架构,而播放音频的应用程序是直接用系统函数写的,开始判断...
Linux下vlc编绎过程记录

Linux下vlc编绎过程记录

这几天,刚好有时间(闲得蛋疼),于是想要去看看vlc的源码。出于本能的原因,下载了源码后,第一件想要做的事就是尝试着编绎此源码。网络上相关编绎资料也多, 但多数没法满足我的要求, 很多资料更多是作者随手记录的笔记,作者编绎的vlc版本与现在所下载的最新版本也有了一定的偏差。编绎环境linux版本:Fedora 9编绎器:gcc 4.3.0vlc源码版本:vlc-1.1.7 (已是此时的最新的版本)qt4源码库:qt-everywhere-opensourc...
在Fedora 10上编译vlc1.0.2全程笔记

在Fedora 10上编译vlc1.0.2全程笔记

在linux上编译vlc,花了很久才搞定 ,因此特地的记录下整个编译过程。本来先是想在windows上用cygwin,或者msys+mingw来进行编译,后来老大来了句真的linux都编译不过,假的linux更会遇到问题了,想想也是,自己的目的不在于做一个windows上面的vlc版本,而是想调试vlc,看一下它的执行过程,于是还是回到linux进行编译,在真实的linux物理机器上编译速度很快。linux的版本是Fedora10, vlc的版本是最新的v...
ARM+Linux驱动----点亮开发板的LED

ARM+Linux驱动----点亮开发板的LED

使用FS2440开发板2.6.4内核1)关于fs_operations的问题fs_operations数据结构是有文件系统(虚拟文件系统VFS)提供的,其主要作用是向上(应用层)提供统一的系统调用接口,比如open(),read(),write(),ioctl()等文件(Linux把所有的设备也当作文件)操作,向下屏蔽各种不同平台的差异。fs_operations内部是一个指针实现,链接了向上的接口和向下的具体实现。设备驱动的层次在文件系统之下,就是这个道...
<< 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 >>