taskDelay()滥用的结果~

STATUS netDevInit(void)
{
char opt = 0;
int optval = 0;
int tempAddrLen = 0;
struct in_addr ifAddr;

//--- 主网卡(fei0)初始化
if (ipAttach(0, "fei") == ERROR)...
if (ifAddrSet("fei0", LOCAL_IP_ADDR) == ERROR)...
if (ifMaskSet("fei0", LOCAL_MASK_CODE) == ERROR)...

//--- 从网卡(fei1)初始化
if (ipAttach(1, "fei") == ERROR)...
if (ifAddrSet("fei1", LOCAL_IP_ADDR_TEMP) == ERROR)...
if (ifMaskSet("fei1", LOCAL_MASK_CODE_TEMP) == ERROR)...
taskDelay(sysClkRateGet());

//--- 双网切换的主网卡(fei0)和从网卡(fei1)设置
if (InitNetSwitch(0, 1, 0) != 0)...

//--- 
if ((sockFd = socket (AF_INET, SOCK_DGRAM, 0)) == ERROR)...
taskDelay(10);
if ((bind(sockFd, (struct sockaddr *)&localSockAddr, tempAddrLen)) == ERROR)...
taskDelay(10);

ifAddr.s_addr = inet_addr(LOCAL_IP_ADDR);
if(setsockopt(sockFd, IPPROTO_IP, IP_MULTICAST_IF, (char *)&ifAddr, sizeof(struct in_addr)) == ERROR)... 
taskDelay(10);

ipmr.imr_multiaddr.s_addr = inet_addr(REMOTE_IP_ADDR);  
ipmr.imr_interface.s_addr = inet_addr(LOCAL_IP_ADDR);   
if(setsockopt(sockFd, IPPROTO_IP, IP_ADD_MEMBERSHIP, (char *)&ipmr, sizeof(struct ip_mreq)) == ERROR)...
taskDelay(10);

if (AddMulticast(0, sockFd, &ipmr) != 0)...  // errno=0x31                                                                                   
taskDelay(10);

return OK;

}

测试采用某型号PC104板卡和对应的双冗余网卡库文件,厂家的demo运行没有问题,自己的程序总报错,后找到原因是因为taskDelay()的使用导致,未能够深入究其原因~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值