__builtin_constant_p】的更多相关文章

int __builtin_constant_p (exp); You can use the built-in function __builtin_constant_p to determine if a value is known to be constant at compile-time and hence that GCC can perform constant-folding on expressions involving that value. The argument o…
本文转载自:http://blog.chinaunix.net/uid-29254195-id-3977753.html gcc的内建函数,当x为常数时返回1, x为变量时返回0. 不过这并不完全准确. linux kernel的代码中经常有这样的代码: if (__builtin_constant_p(x)) { do1; } else { do2; } 可以认为这个函数的求值在编译时就完成了.从而外面的条件跳转语句的两个分支,只有其中一个会出现在目标代码中. 准确的定义应该是:如果x的值在编…
Linux 高精確的時序(sleep, usleep,nanosleep) (2010-04-14 17:18:26) 转载▼ 标签: 杂谈 分类: linux 首先, 我会说不保证你在使用者模式 (user-mode) 中执行的行程 (process) 能够精确地控制时序因为Linux 是个多工的作业环境. 你在执行中的行程 (process) 随时会因为各种原因被暂停大约 10 毫秒到数秒 (在系统负荷非常高的时候). 然而, 对於大多数使用 I/O 埠的应用而言, 这个延迟时间实际上算不了…
暂时在用MPC8309,不太清楚大小端内核是什么时候给转的. 今天看了关于readl和writel具体实现的文章 今天就主要来分析下readl/writel如何实现高效的数据swap和寄存器读写.我们就以readl为例,针对big-endian处理器,如何来对寄存器数据进行处理. kernel下readl定义如下,在include/asm-generic/io.h #define readw(addr) __le32_to_cpu(__raw_readw(addr)) __raw_readl是最…
在ffmpeg中,这个文件被很多其他的文件所包含.该文件中定义了一些gcc中支持的语言扩展的宏, 例如强制内联,外部内联,pure函数等.并根据是否使用了GCC,以及GCC的版本,把宏转换为 相应的编译器扩展 选项.某些选项也支持msvc. 关键点: 1.__GNUC__:是GCC编译器预定义的标志,值是GCC的主版本. 2.__GNUC_MINOR__:是GCC编译器预定义的标志,值是GCC的小版本 3.AV_GCC_VERSION_AT_LEAST(x,y):当编译器是GCC,且版本大于x.…
就是贴上来: ev.c: /* * libev event processing core, watcher management */ /* this big block deduces configuration from config.h */ #ifndef EV_STANDALONE # ifdef EV_CONFIG_H # include EV_CONFIG_H # else # include "config.h" # endif #if HAVE_FLOOR # if…
目录 . 引言 . 页表 . 结构化内存管理 . 物理内存的管理 . SLAB分配器 . 处理器高速缓存和TLB控制 . 内存管理的概念 . 内存覆盖与内存交换 . 内存连续分配管理方式 . 内存非连续分配管理方式 . 虚拟内存的概念.特征及其实现 . 请求分页管理方式实现虚拟内存 . 页面置换算法 . 页面分配策略 . 页面抖动和工作集 . 缺页异常的处理 . 堆与内存管理 0. 引言 有两种类型的计算机,分别以不同的方法管理物理内存 . UMA计算机(一致内存访问 uniform memor…
目录 . 引言 . open() syscall . close() syscall 0. 引言 在linux的哲学中,所有的磁盘文件.目录.外设设备.驱动设备全部被抽象为了"文件"这个概念,所以本文提到的"File IO"适用于linux下所有的IO操作,需要明白的的,本文分析的是linux下的IO系统调用对应的内核源代码,linux下每一个系统调用都有对应的内核源代码,而我们在ring3常用的glib c的编程所有的c库API,它们只是对系统调用的一个封装,最终…
1.warning: passing argument 2 of 'request_irq' from incompatible pointer type http://blog.sina.com.cn/s/blog_7321be1101012gek.html 今天在些key的driver的时候...写完了编译出现一个warmming如下:warning: passing argument 2 of 'request_irq' from incompatible pointer type 我的r…
GNU CC 是一个功能非常强大的跨平台 C 编译器,它对 C 语言提供了很多扩展,这些扩展对优化.目标代码布局.更安全的检查等方面提供了很强的支持.这里对支持支持 GNU 扩展的 C 语言成为 GNU C. 在 Linux 内核中使用了大量的 GNU C 扩展,以致 GNU C 成为了内核唯一的编译器. 1.语句表达式 GNU C 把包含在括号中的复合语句看做是一个表达式,称为语句表达式,它可以出现在任何允许表达式的地方,你可以在语句表达式中使用循环.局部变量等,原本只能在复合语句中使用.例如…