linux设备驱动要求驱动程序是可重入的,首先意味着这个函数可以被中断,其次意味着它除了使用自己栈上的变量以外不依赖于任何环境(包括static),这样的函数就是purecode(纯代码)可重入,可以允许有该函数的多个副本在运行,由于它们使用的是分离的栈,所以不会互相干扰。如果确实需要访问全局变量(包括static),一定要注意实施互斥手段。可重入函数在并行运行环境中非常重要,但是一般要为访问全局变量付出一些性能代价。
所以不可重入函数主要有几种性质:
1,使用了static变量,静态变量存储在内存的全局变量区(也有叫静态区的说法),所以不能重入;
2,涉及到浮点数,不可重入;
3,malloc()或者free()的操作对象是内存中的堆,所以不可重入;
4,函数体内调用了标准I/O函数,因为这个已经涉及到外存的操作,中断后回不到原来的状态,现场保护也没用,例如 :
◆ 打开与关闭文件:fopen,fclose。
◆ 读写文件:fread,fwrite。
◆ 读写文本行:fgets,fputs。
◆ 格式化读写:fscanf,fprintf。
◆ 标准输入输出:printf,scanf。
◆ 读写字符:fgetc,getc,getchar,fputc,putc,putchar
相关推荐
主要介绍了Linux 中可重入函数与不可重入函数详解的相关资料,需要的朋友可以参考下
主要用于多任务环境中,一个可重入的函数简单来说就是可以被...而不可重入的函数由于使用了一些系统资源,比如全局变量区,中断向量表等,所以它如果被中断的话,可能会出现问题,这类函数是不能运行在多任务环境下的。
若一个程序或子程序可以安全的被并行执行,则称其为可重入(reentrant或re-entrant)的;即,当该子程序正在运行时,可以再次进入并执行它。若一个函数是可重入的,则该函数: ...不能调用不可重入的函数。
主要给大家介绍了关于Golang教程之不可重入函数的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
关于不可微函数的局部分数阶多重积分,杨小军,,根据分形理论的特点,在分形空间上考虑的函数具有不可微的性质。局部分数阶微积分学是解决不可微函数的理论。本文是在局部分数阶
经常为四舍五入的方法烦恼,新的思路重写四舍五入,并可以根据小数位数自动格式化,适合于数值型表格显示,该思路可适用于任何系统或数据库,代码比较乱,欢迎指正。
多任务系统中的不可重函数使用注意事项
处处连续处处不可导函数的构造 曾经轰动一时的发现
官方库延时函数误差太大,近2倍,在此基于嘀嗒...2、例程中“time.c" 创建了 系统节拍模型,可用来实现 某些函数 每间隔一定时间运行1次 的功能。可实现 【时间片轮】模型的 单片机系统结构,执行效率高,避免阻塞延时
但是,函数在一点处解析与在一点处可导是不等价的概念. 即函数在一点处可导, 不一定在该点处解析. 但是,函数在一点处解析与在一点处可导是不等价的概念. 即函数在一点处可导, 不一定在该点处解析. 但是,函数在一点处...
PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例 PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例 curl获取远程文件内容 GD显示中文 PHP GIF动画生成类 PHP HTML转UBB函数 ...
线程安全 VS 可重入什么是线程安全和可重入常见的线程不安全的情况(重点)常见的线程安全的情况(重点)常见的可重入情况常见不可重入的情况可重入与线程安全联系可重入与线程安全区别(重点) 什么是线程安全和可重入 ...
由特定微分方程的解定义的特殊函数有正交多项式(如Chebyshev、Laguerre和Hermite多项式),Gamma函数,Legendre函数类,Bessel函数(如球Bessel、变型Bessel、Ricatti-Bessel函数等),Kelvin函数,Airy函数,...
Excel用得好不好,函数用得溜不溜,是重要的判断标准之一。从简单的加减乘除四则运算,再到复杂的财务税收计算、工程计算或是数学计算,都用得到函数。Excel中,内置了财务、逻辑、文本、日期、时间、查找、引用、...
强物理不可克隆函数的侧信道混合攻击_刘威强物理不可克隆函数的侧信道混合攻击_刘威强物理不可克隆函数的侧信道混合攻击_刘威强物理不可克隆函数的侧信道混合攻击_刘威
在写《用Matlab演示Parzen窗法》的时候,我还不知道怎样在m中设计可变参数函数。 后来阅读一些m自带函数源码时发现了它的秘密,只要将最后一个参数设置为
本说明的主要目的是估计点集Tμλ的大小,在这些点上Cantor函数是不可微的,我们发现Tμλ的Hausdorff维数为[log2 / log3] 2。 另外,Tμλ的包装尺寸为log2 / log3。 log2 = loge2是,如果ax = N(a> 0,且a≠1),...
问题背景这是在阿的机器学习岗的时候问的个问题,最开始的问题是“为什么机器学习中解决回归问题的时候般使平损失(即均误差)?当时我的回答是损失函数是是模型预测值与真