DSP

uclinux-2008R1.5-RC3(bf561)到VDSP5的移植(63):_NSIG_WOR

2019-07-13 16:42发布

快乐虾 http://blog.csdn.net/lights_joy/ lights@hb165.com    本文适用于 ADI bf561 DSP 优视BF561EVB开发板 uclinux-2008r1.5-rc3(smp patch) Visual DSP++ 5.0(update 5)    欢迎转载,但请保留作者信息         include/linux/signal.h中使用了一个函数_NSIG_WORDS_is_unsupported_size,其使用过程大致如下所示: static inline int sigisemptyset(sigset_t *set) {      extern void _NSIG_WORDS_is_unsupported_size(void);      switch (_NSIG_WORDS) {      case 4:          return (set->sig[3] | set->sig[2] |               set->sig[1] | set->sig[0]) == 0;      case 2:          return (set->sig[1] | set->sig[0]) == 0;      case 1:          return set->sig[0] == 0;      default:          _NSIG_WORDS_is_unsupported_size();          return 0;      } } 在这里,_NSIG_WORDS的定义为: #define _NSIG      64 #define _NSIG_BPW  32 #define _NSIG_WORDS    (_NSIG / _NSIG_BPW) 也就是编译时常数,这样在优化时并不会并产生代码,也就没有链接错误。但是在VDSP下调试编译时会产生_NSIG_WORDS_is_unsupported_size符号未找到的链接错误。 为此,直接将之定义为: inline void _NSIG_WORDS_is_unsupported_size() {panic("_NSIG_WORDS_is_unsupported_size()");} 与此相似的还有一个叫__you_cannot_kmalloc_that_much的函数。