可重入就是异步信号安全。可重入的要求比多线程安全更严格。
crt的io函数和malloc、free函数都不是可重入的。但是有的字符串处理函数可重入。
满足下列条件的函数是不可重入的:
1) 函数体内使用了静态的数据结构;
2) 函数体内调用了malloc() 或者free() 函数;
3) 函数体内调用了标准I/O 函数。
如何编写可重入的函数:
1) 不要使用全局变量。因为别的代码很可能覆盖这些变量值。
2) 不能调用其它任何不可重入的函数。
3) 在和硬件发生交互的时候,切记执行类似disinterrupt() 之类的操作,就是关闭硬件中断。完成交互记得打开中断,在有些系列上,这叫做“ 进入/ 退出核心” 。
4) 谨慎使用堆栈。最好先在使用前先OS_ENTER_KERNAL 。
记录一下异步信号安全(可重入)的系统调用:
_Exit()
_exit()
abort()
accept()
access()
aio_error()
aio_return()
aio_suspend()
alarm()
bind()
cfgetispeed()
cfgetospeed()
cfsetispeed()
cfsetospeed()
chdir()
chmod()
chown()
clock_gettime()
close()
connect()
creat()
dup()
dup2()
execle()
execve()
fchmod()
fchown()
fcntl()
fdatasync()
fork()
fpathconf()
fstat()
fsync()
ftruncate()
getegid()
geteuid()
getgid()
getgroups()
getpeername()
getpgrp()
getpid()
getppid()
getsockname()
getsockopt()
getuid()
kill()
link()
listen()
lseek()
lstat()
mkdir()
mkfifo()
open()
pathconf()
pause()
pipe()
poll()
posix_trace_event()
pselect()
raise()
read()
readlink()
recv()
recvfrom()
recvmsg()
rename()
rmdir()
select()
sem_post()
send()
sendmsg()
sendto()
setgid()
setpgid()
setsid()
setsockopt()
setuid()
shutdown()
sigaction()
sigaddset()
sigdelset()
sigemptyset()
sigfillset()
sigismember()
sleep()
signal()
sigpause()
sigpending()
sigprocmask()
sigqueue()
sigset()
sigsuspend()
sockatmark()
socket()
socketpair()
stat()
symlink()
sysconf()
tcdrain()
tcflow()
tcflush()
tcgetattr()
tcgetpgrp()
tcsendbreak()
tcsetattr()
tcsetpgrp()
time()
timer_getoverrun()
timer_gettime()
timer_settime()
times()
umask()
uname()
unlink()
utime()
wait()
waitpid()
write()
分享到:
相关推荐
FPGA 中 关于 异步信号的同步处理是比较复杂的, 所以这篇文档还是具有一定的指导意义。
跨越鸿沟:同步世界中的异步信号 只有最初级的逻辑电路才使用单一的时钟。大多数与数据传输相关的应用都有与生俱来的挑战,即跨越多个时钟域的数据移动,例如磁盘控制器、CDROM/DVD 控制器、调制解调器、网卡以及...
同时提供了一个 get_http_data函数,用来异步下载网络数据。 简单介绍请看下面的BLOG连接。 http://blog.csdn.net/fanxiushu/article/details/46829177 时间仓促,外加本人接触iOS开发不超过3个月,有何错误,谢谢...
当信号从一个时钟域传送到另一个时钟域时,出现在新时钟域的信号是异步信号。 在现代 IC、 ASIC 以及 FPGA 设计中,许多软件程序可以帮助工程师建立几百万门的电路,但这些程序都无法解决信号同步问题。设计者...
matlab 异步电机s函数源代码,包括model文件和m文件,建立了异步电机直接启动模型
异步信号 下降沿 检测
AsyncCalls(异步调用函数),Delphi异步调用函数的单元和例子
关于处理异步时钟域非常经典的文章~~对 IC、ASIC 以及 FPGA 的 设计开发非常有帮助~
Simulink中用S函数写的异步电机dq坐标系模型,s函数是一个.m文件,这里还附带SVPWM的矢量控制模型(.slx文件),运行的时候请将两个文件放在同一个文件夹中,并且matlab的路径选择为这个文件夹。
有点介绍SAP 函数调用的方法,包含同步调用,异步调用
图解异步信号与其生命周期 视频教程 其余视频教程后续会继续上传
异步串口函数原理,举例,API函数指导并有例子
一个使用C语言写的回调函数 包括函数的调用,函数的取消等操作。
异步调用后台函数,.net前台调用后台函数
逻辑设计中对异步信号处理方法的一个小资料
GLIBC中Linux异步I_O函数的实现.pdf
thunks 是一个虽小但却很有用的软件,它可用来封装所有异步函数。概述:thunk 是一个被封装了同步或异步任务的函数;thunk 有唯一一个参数 callback,是 CPS 函数;thunk 运行后返回新的 thunk 函数,形成链式调用;...
用于Windows网络编程的API同步函数API异步函数WinPcap Documentation 3.1
对FPGA外部异步信号进行采集,采用简单的计时滤波,当维持一定时间周期后才认为信号有效并更新
本文为大家讲解下js异步操作时回调函数如何控制执行顺序,感兴趣的朋友可以参考下