可重入函数和不可重入函数的概念 在函数中如果我们使用静态变量了,导致产生中断调用别的函数的 过程中可能还会调用这个函数,于是原来的 静态变量被在这里改变了,然后返回主体函数,用着的那个静态变量就被改变了,导致错误。这类函数我们称为不可重入函数。 如果是在函数体内 动态申请内存的话 ...
C语言函数重入 可重入函数:可以被中断的函数,即这个函数执行时,可以中断其执行,可以由一个或多个任务并发使用,而不比担心数据错误。 不可重入函数 不安全函数 不能运行在多任务环境下,除非能保证互斥 使用信号量 代码的关键部分禁用中断 是由于使用了未受保护的系统资源,如全局变量区,中断向量表等。 可重入函数: 没有静态数据结构 不返回指向静态数据的指针 所有函数数据由函数的调用者提供 使用auto变 ...
2016-05-09 22:02 0 2342 推荐指数:
可重入函数和不可重入函数的概念 在函数中如果我们使用静态变量了,导致产生中断调用别的函数的 过程中可能还会调用这个函数,于是原来的 静态变量被在这里改变了,然后返回主体函数,用着的那个静态变量就被改变了,导致错误。这类函数我们称为不可重入函数。 如果是在函数体内 动态申请内存的话 ...
【1】什么是可重入函数和不可重入函数呢? 可重入的函数:一般是保存在栈里面的,是可以被编译器随机的分配内存并且释放的函数称为可重入函数 不可重入函数:一般是指函数返回值是static 型的或者是函数内部定义了static变量或者使用了全局变量等称为不可重入函数 ...
可重入函数 在 实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果这个函数不幸被设计成为不可重入的函数的话,那么不同任务调用这个函数时可能修改其他任 务调用这个函数的数据,从而导致不可预料的后果。那么什么是可重入函数呢?所谓可重入是指一个可以被多个任务调用的过程,任务在调用 ...
这种情况出现在多任务系统当中,在任务执行期间捕捉到信号并对其进行处理时,进程正在执行的指令序列就被信号处理程序临时中断。如果从信号处理程序返回,则继续执行进程断点处的正常指令序列,从重新恢复到断点重新执行的过程中,函数所依赖的环境没有发生改变,就说这个函数是可重入的,反之就是不可重入的。众所周知 ...
可重入函数可以做这样的基本定义:重入意味着这个函数可以重复进入,可以被并行调用,可以被中断,它只使用自身栈上的数据变量,它不依赖于任务环境,在多任务调度过程中,它是安全的,不必担心数据出错。 不可重入函数基本上与可重入函数有相反的定义了:不可重入,意味着不可被并行调度,否则会产生不可预料 ...
一、可重入函数1)什么是可重入性?可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据错误。相反, 不可重入(non-reentrant)函数不能由超过一个任务所共享,除非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可重入函数可以在任意时刻被中断,稍后再 ...
同一个函数的情况。如果有一个函数不幸被设计成为这样:那么不同任务调用这个函数时可能修改其他任务调用这个 ...
可重入与不可重入,reentrant关键字 Keil中帮助文档对此又详细的介绍 这一段的意思是,在Keil中,正常情况下函数调用是通过固定寄存器传递参数。因此当出现递归和类似的情况时,寄存器中参数可能会被覆盖。 如果想要通过堆栈来传递参数则需要使用reentrant参数。这个用来传递参数 ...