原创 关于多重调用的问题

2007-3-1 21:15 3359 6 6 分类: 软件与OS

                  关于多重调用的问题


  今天编译程序时出现了多重调用的警告:


  *** WARNING L15: MULTIPLE CALL TO SEGMENT


  研究其原因是由于有个子函数同时在中断和其它地方被调用了, 由于可能存在当该子函数在被调用其间同时产生外部中断,而使得该子函数发生了重入;


所以编译器就产生了以上的WARNING了。


记得可以用reentrant使函数重入的;下面是一些关于reentrant的说明:


1,在用reentrant修饰的函数中不能使用bit类型的参数和变量;


2,重入函数不使用一般函数位于存储模式默认空间的可覆盖式堆栈,而是在同一空间从顶端另行分配一个非覆盖式的重入堆栈。


     small   默认空间是 data;


     compact  默认空间是 pdata;


     largr   默认空间是 xdata;


3,由于要保存参数和局部变量,所以会消耗很大的栈空间;尽量少用这种模式;


我所用的是large模式 ,所以对函数加上reentrant 修饰之外,还要将函数内的局部变量的存储模式改为xdata;


也好在我的重入函数不多,也就应负过无能为去了,如果多了,那又要改程序了!


 Thu Mar 1 2007


21:13:54 UTC+0800<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
6
关闭 站长推荐上一条 /3 下一条