Linux Kernel
文章平均质量分 74
如小丧
这个作者很懒,什么都没留下…
展开
-
__asm__ __volatile__("": : :"memory")含义
__asm__ __volatile__("": : :"memory")含义 首先看看__set_current_state()和set_current_state()函数的区别#define __set_current_state(state_value) \do { current->state = (state_value); } while转载 2014-10-09 01:59:56 · 2265 阅读 · 0 评论 -
关于Linux系统调用,内核函数
转自:http://blog.csdn.net/ubuntulover/article/details/5988220早上听人说到某个程序的一部分是内核态,另一部分是用户态,需要怎么怎么。当时突然想知道,用户的程序可以直接调用内核函数吗?(现在突然发觉这问题有点可笑,若是可以随便调,那系统岂不是乱套了)从网上找到下面这篇文章,讲的还算透彻。现在自己的理解是,用户程序不可用直接调用内核函数,转载 2015-07-02 01:12:13 · 767 阅读 · 0 评论 -
Linux中的task_struct和内核栈
在内核2.4中堆栈是这么定义的: union task_union { struct task_struct task; unsigned long stack[INIT_TASK_SIZE/sizeof(long)]; }; 而INIT_TASK_SIZE只能是8K。 内核为每个进程分配一个task_struc转载 2015-07-02 02:00:55 · 1448 阅读 · 0 评论 -
linux2.6下的GNU C __attribute__ 机制简介
摘要:在学习linux内核代码及一些开源软件的源码(如:DirectFB),经常可以看到有关__attribute__的相关使用。本文结合自己的学习经历,较为详细的介绍了__attribute__相关语法及其使用。GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量属性(Va转载 2015-07-02 22:44:00 · 551 阅读 · 0 评论 -
从一道面试题谈linux下fork的运行机制
今天一位朋友去一个不错的外企面试linux开发职位,面试官出了一个如下的题目: 给出如下C程序,在linux下使用gcc编译:1234567891011121314#include "stdio.h"#includ转载 2015-07-02 01:44:39 · 418 阅读 · 0 评论 -
linux下的系统调用函数到内核函数的追踪
转自:http://blog.chinaunix.net/uid-28458801-id-3468966.html使用的 glibc : glibc-2.17使用的 linux kernel :linux-3.2.07 系统调用是内核向用户进程提供服务的唯一方法,应用程序调用操作系统提供的功能模块(函数)。用户程序通过系统调用从用户态(user mode)切换到转载 2015-07-02 02:16:47 · 751 阅读 · 0 评论 -
向Linux内核添加系统调用函数
实验环境: 虚拟机VMware 6.0 操作系统Ubuntu9.10(内核版本2.6.31-14-generic) 修改内核版本2.6.31.12 实验步骤: 1.下载Linux内核:在终端中输入命令sudo apt-get install linux-source,下载的文件在/usr/src目录下。(注:如果源没有更新的,在下载之前请先更新源。) 2.将内核代码解压缩:例如下载转载 2015-07-02 02:22:18 · 1272 阅读 · 0 评论 -
linux内核 asmlinkage宏
asmlinkage是个宏,使用它是为了保持参数在stack中。看一下/usr/include/asm/linkage.h里面的定义:#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))其中 __attribute__是关键字,是gcc的C语言扩展。__attribute__机制是GNU C的一大转载 2015-07-02 10:08:30 · 487 阅读 · 0 评论 -
【整理】Linux内核中的atoi,itoa等函数
对于普通应用程序,可以通过包含头文件stdlib.h和stdio.h,string.h等,然后调用需要的itoa(),atoi()等函数,但是对于Linux内核来说,无法使用那些C库中的函数。对此Linux内核里有了相应的实现:对于atoi()用simple_strtol() ,simple_strtoul()等函数替代;对于itoa(),用snprintf()。转载 2015-07-11 10:46:42 · 799 阅读 · 0 评论 -
Linux内核导出符号宏定义EXPORT_SYMBOL的源码分析
源代码:…….#ifndef MODULE_SYMBOL_PREFIX#define MODULE_SYMBOL_PREFIX ""#endif…….struct kernel_symbol //内核符号结构{ unsignedlong value; //该符号在内存地址中的地址转载 2015-07-11 10:43:22 · 412 阅读 · 0 评论 -
driver: linux2.6 内核模块导出函数实例(EXPORT_SYMBOL)
内核版本:2.6.38-11-generic 内核自己都大量利用内核符号表导出函数,那么应该导出呢,ldd3上面说只需要EXPORT_SYMBOL一类的宏导出即可,结果试了很久都不行,最后查看文档,算是明白一点了。 对于导出符号表,内核文档给出了三种解决方案,见尾部,现在忽略。 现在有两个模块,a模块导出函数myprint,b模块使用该函数,想象一下如果a转载 2015-07-11 10:44:46 · 452 阅读 · 0 评论 -
Linux进程管理之task_struct结构体
内核源码:linux-2.6.38.8.tar.bz2 目标平台:ARM体系结构 进程是处于执行期的程序以及它所管理的资源(如打开的文件、挂起的信号、进程状态、地址空间等等)的总称。注意,程序并不是进程,实际上两个或多个进程不仅有可能执行同一程序,而且还有可能共享地址空间等资源。 Linux内核通过一个被称为进程描述符的task_struct结构转载 2015-07-02 02:07:10 · 670 阅读 · 0 评论 -
在结构体最后定义一个长度为0的字符数组(技巧)
最近看tty驱动源码,发现了一个以前老板上课时讲过的一个c语言技巧,不是很理解,上网学习了一下,总结如下: 在linux源码里struct tty_buffer { struct tty_buffer *next; char *char_buf_ptr; unsigned char *flag_buf_ptr; int used; int size;转载 2015-07-02 02:19:08 · 3225 阅读 · 0 评论 -
linux内核之关于内存屏障
文章一:前言之前读了关于顺序一致性和缓存一致性讨论的文章,感觉豁然开朗。对linux内核中出现的种种同步和屏障,想做一点总结。缓存一致性之前一直认为linux中很多东西是用来保证缓存一致性的,其实不是。缓存一致性绝大部分是靠硬件机制实现的,只有在带lock前缀的指令执行时才与cache有一点关系。(这话说得绝对,但我目前看来就是这样)我们更多的时候是为了转载 2015-06-29 21:42:50 · 622 阅读 · 0 评论 -
Buildroot自动化交叉编译工具
转自 :http://blog.csdn.net/youyudehexie/article/details/7583657Buildroot简介Buildroot就是一个自动化生成交叉编译工具的工具,记得当年我搭建自己的ARM交叉编译器的时候,花了很大力气和时间,最好因为各种错误而无奈放弃了,最后还是用别人的交叉编译器,不曾想到有这么有个好用的工具出现,它大大缩减了生成转载 2015-01-31 15:22:50 · 1220 阅读 · 0 评论 -
linux C程序中获取shell脚本输出(如获取system命令输出)
1. 前言Unix 界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个 ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令。但是,system函数仅返回命令是否执行成功,而我们转载 2015-02-28 17:43:18 · 613 阅读 · 0 评论 -
解决Ubuntu编译内核uImage出现问题“mkimage” command not found - U-Boot images will not be built问题
解决Ubuntu编译内核uImage出现问题"mkimage" command not found - U-Boot images will not be built问题问题:"mkimage" command not found - U-Boot images will not be built解决方法:如果使用的是Ubuntu 9.10及以上版本,可以使用下面的命令安装mkim转载 2015-01-25 22:09:16 · 1801 阅读 · 0 评论 -
make Image uImage与zImage的区别
内核编译(make)之后会生成两个文件,一个Image,一个zImage,其中Image为内核映像文件,而zImage为内核的一种映像压缩文件,Image大约为4M,而zImage不到2M。 那么uImage又是什么的?它是uboot专用的映像文件,它是在zImage之前加上一个长度为64字节的“头”,说明这个内核的版本、加载位置、生成时间、大小等信息;其0x40之后与zImage没转载 2015-01-25 22:10:04 · 383 阅读 · 0 评论 -
linux驱动头文件位置的说明
在不同版本的内核源码上,头文件所在的位置是不同的,比如说在#include#include同样是regs-gpio.h,是在比较低的版本(比如2.6.25)上位于arch/arm/include/asm中,而mach/regs-gpio.h则是位于arch/arm/mach-s3c2410/include/mach中,2.6.30版本的内核是这种结构,所以,要根据所采用的不转载 2015-03-01 21:51:49 · 609 阅读 · 0 评论 -
根据configure.in和Makefile.am产生Makefile (
如果拿到的工程文件中,没有Makefile文件,而只有configure.in和Makefile.am文件,我们是不能够直接进行编译的,必须根据configure.in和Makefile.am文件生成编译所需的Makefile文件。具体操作步骤如下: 1、执行aclocal,产生aclocal.m4文件 aclocal是一个perl 脚本程序,它的定义是:“acloca转载 2015-03-19 15:46:46 · 797 阅读 · 0 评论 -
内核符号表问题
问题描述 有两个模块,mod1和mod2。在mod1中定义了func()函数,并且经EXPORT_SYMBOL()导出。在mod2中extern func(),调用func()。 编译模块mod2,成功。加载mod2时,输出:insmod: error inserting 'mod2.ko': -1 Invalid parameter转载 2015-03-04 15:25:06 · 520 阅读 · 0 评论 -
inod file 结构体
*索引节点对象由inode结构体表示,定义文件在linux/fs.h中*/struct inode { struct hlist_node i_hash; /* 哈希表 */ struct list_head i_list; /* 索引节点链表 */ stru转载 2015-03-04 16:28:39 · 493 阅读 · 0 评论 -
class_create(),device_create自动创建设备文件结点
creclass_create(),device_create自动创建设备文件结点从linux 内核2.6的某个版本之后,devfs不复存在,udev成为devfs的替代。相比devfs,udev有很多优势,在此就不罗嗦了,提醒一 点,udev是应用层的东东,不要试图在内核的配置选项里找到它;加入对udev的支持很简单,以作者所写的一个字符设备驱动为例,在驱动初始化转载 2015-03-21 19:41:36 · 521 阅读 · 0 评论 -
open/read/write和fopen/fread/fwrite的区别
open/read/write和fopen/fread/fwrite的区别 open:系统调用,返回的是文件描述符,即文件句柄,是文件在文件描述副表里的索引。fopen:C语言库函数,返回的是一个指向文件结构的指针。fopen是ANSI C标准中的C语言库函数,在不同的操作系统中应该调用不同的内核API,UNIX环境下,fopen是对open的封装。文件描述符是UNIX/Linux转载 2015-04-01 20:34:00 · 728 阅读 · 0 评论 -
gcc __attribute__ ((weak, alias (#name)))
本系列文章,着重讲__attribute__的用途 此属性,可以借助uClibc里面的弱符号来对库里符号进行一些更改,可以用于调试,我最近就用这个功能来调试system,很好用,类似可以实现hook函数的还有LD_PRELOAD,参见 http://blog.csdn.net/green369258/article/details/7314298转载 2015-09-30 12:13:57 · 1800 阅读 · 0 评论