<div>I used rtems4.11 irqserver.c  replace rtems4.12 irqserver.c , now it can work, because rtems4.11 irqserver.c did not support irq server share, so I change libbsd irq back to RTEMS_INTERRUPT_UNIQUE</div><div><br></div><div>test for 4G wireless net card , still can not let gethostbyname work,the error is same as rtems4.11 and libbsd 4.11,</div><div><br></div><div>in freebsd/lib/libc line 674 function _nsdispatch  </div><div><br></div><div><div>int</div><div>_nsdispatch(void *retval, const ns_dtab disp_tab[], const char *database,</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>    const char *method_name, const ns_src defaults[], ...)</div><div>{</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>va_list<span class="Apple-tab-span" style="white-space:pre">             </span> ap;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>const ns_dbt<span class="Apple-tab-span" style="white-space:pre">        </span>*dbt;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>const ns_src<span class="Apple-tab-span" style="white-space:pre">        </span>*srclist;</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>nss_method<span class="Apple-tab-span" style="white-space:pre">  </span> method, fb_method;</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>void<span class="Apple-tab-span" style="white-space:pre">                </span>*mdata;</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>int<span class="Apple-tab-span" style="white-space:pre">         </span> isthreaded, serrno, i, result, srclistsize;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>struct fb_state<span class="Apple-tab-span" style="white-space:pre">     </span>*st;</div><div><br></div><div>#ifdef NS_CACHING</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>nss_cache_data<span class="Apple-tab-span" style="white-space:pre">      </span> cache_data;</div><div><span class="Apple-tab-span" style="white-space:pre"> </span>nss_cache_data<span class="Apple-tab-span" style="white-space:pre">      </span>*cache_data_p;</div><div><span class="Apple-tab-span" style="white-space:pre">       </span>int<span class="Apple-tab-span" style="white-space:pre">         </span> cache_flag;</div><div>#endif</div><div><span class="Apple-tab-span" style="white-space:pre">    </span></div><div><span class="Apple-tab-span" style="white-space:pre">     </span>dbt = NULL;</div><div><span class="Apple-tab-span" style="white-space:pre">  </span>fb_method = NULL;</div><div><br></div><div><span class="Apple-tab-span" style="white-space:pre">   </span>isthreaded = __isthreaded;</div><div><span class="Apple-tab-span" style="white-space:pre">   </span>serrno = errno;</div><div><span class="Apple-tab-span" style="white-space:pre">      </span>if (isthreaded) {</div><div><span class="Apple-tab-span" style="white-space:pre">            </span>result = _pthread_rwlock_rdlock(&nss_lock);</div><div><span class="Apple-tab-span" style="white-space:pre">              </span>if (result != 0) {</div><div><span class="Apple-tab-span" style="white-space:pre">                   </span>printf("_pthread_rwlock_rdlock failure %d\n",result);</div><div><span class="Apple-tab-span" style="white-space:pre">                      </span>result = NS_UNAVAIL;</div><div><span class="Apple-tab-span" style="white-space:pre">                 </span>goto fin;</div><div><span class="Apple-tab-span" style="white-space:pre">            </span>}</div><div><span class="Apple-tab-span" style="white-space:pre">    </span>}</div></div><div><br></div><div><br></div><div>output is still 22 ,error code for invalid</div><div><br></div><div><div>+ZGIPDNS: 1,1,"IP","10.115.225.252","0.0.0.0","112.4.1.36","112.4.12.200"</div><div><br></div><div>AT+ZGACT=1,1</div><div>:</div><div>OK</div><div><br></div><div>+ZCONSTAT: 1,1</div><div><br></div><div><br></div><div>[/] # </div><div>[/] # </div><div>[/] # </div><div>[/] # ls /etc </div><div>dhcpcd.conf  group        issue.net    resolv.conf</div><div>dhcpcd.duid  issue        passwd</div><div>[/] # </div><div>[/] # ping www.baidu.com</div><div>_pthread_rwlock_rdlock failure 22</div><div>ping: cannot resolve www.baidu.com: Unknown host</div></div><div><br></div><div>now my rtems version is head verion from rtems git, libbsd version is head version from <span style="line-height: 1.5;"> </span><span style="line-height: 1.5;">rtems git,tools is compile use rsb</span></div><div><div>arm-rtems4.12-gcc --version</div><div>arm-rtems4.12-gcc (GCC) 6.1.1 20160609 (RTEMS 4.12, RSB c476de6150f39afdf142c6f4420c59ba2f1aa2fe-modified, Newlib 2.4.0.20160527)</div><div>Copyright (C) 2016 Free Software Foundation, Inc.</div><div>This is free software; see the source for copying conditions.  There is NO</div><div>warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.</div><div style="line-height: 1.5;"><br></div></div><div><div><br></div><div><br></div><div style="font-size: 12px;font-family: Arial Narrow;padding:2px 0 2px 0;">------------------ 原始邮件 ------------------</div><div style="font-size: 12px;background:#efefef;padding:8px;"><div><b>发件人:</b> "葡萄";<29171383@qq.com>;</div><div><b>发送时间:</b> 2016年7月3日(星期天) 晚上7:11</div><div><b>收件人:</b> "users"<users@rtems.org>; <wbr></div><div></div><div><b>主题:</b> irqserver  in rtems master version and libbsd</div></div><div><br></div><div><span style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;">I migrate from rtems 4.11 and libbsd 4.11 to rtems git head and libbsd git head, I find when I start up my application ,system crashed,  the crash point when use rtems irq services, I track code, find when libbsd use rtems irq service ,the system crash, in rtems/c/src/lib/libbsp/shared/src/irq_service.c</span><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><br></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><div>static rtems_status_code bsp_interrupt_server_call_helper(</div><div>  rtems_vector_number vector,</div><div>  rtems_option options,</div><div>  rtems_interrupt_handler handler,</div><div>  void *arg,</div><div>  void (*helper)(void *)</div><div>)</div><div>{</div><div>  bsp_interrupt_server_helper_data hd = {</div><div>    .vector = vector,</div><div>    .options = options,</div><div>    .handler = handler,</div><div>    .arg = arg,</div><div>    .task = rtems_task_self()</div><div>  };</div><div>  bsp_interrupt_server_action a = {</div><div>    .handler = helper,</div><div>    .arg = &hd</div><div>  };</div><div>  bsp_interrupt_server_entry e = {</div><div>    .vector = BSP_INTERRUPT_VECTOR_MAX + 1,</div><div>    .actions = &a</div><div>  };</div><div> /* this line confuse me*/</div><div>  bsp_interrupt_server_trigger(&e);</div><div>  rtems_event_transient_receive(RTEMS_WAIT, RTEMS_NO_TIMEOUT);</div><div><br></div><div>  return hd.sc;</div><div>}</div></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><br></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><div>static void bsp_interrupt_server_trigger(void *arg)</div><div>{</div><div>  rtems_interrupt_lock_context lock_context;</div><div>  bsp_interrupt_server_entry *e = arg;</div><div><br></div><div>  bsp_interrupt_vector_disable(e->vector);</div><div><br></div><div>  rtems_interrupt_lock_acquire(&bsp_interrupt_server_lock, &lock_context);</div><div><br></div><div>  if (rtems_chain_is_node_off_chain(&e->node)) {</div><div>    rtems_chain_append_unprotected(&bsp_interrupt_server_chain, &e->node);</div><div>  } else {</div><div>    ++bsp_interrupt_server_errors;</div><div>  }</div><div><br></div><div>  rtems_interrupt_lock_release(&bsp_interrupt_server_lock, &lock_context);</div><div><br></div><div>  rtems_event_system_send(bsp_interrupt_server_id, RTEMS_EVENT_SYSTEM_SERVER);</div><div>}</div></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><br></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><br></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;">in <span style="line-height: 1.5;"> /*</span><span style="line-height: 1.5;">this line confuse me*/</span></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><span style="line-height: 1.5;">1. in </span><span style="line-height: 1.5;">bsp_interrupt_server_trigger functon , </span><span style="line-height: 1.5;">bsp_interrupt_vector_disable(e->vector) often provided by bsp,in many bsp code,operation hardware register direct,the but the </span><span style="line-height: 1.5;">e->vector num is </span><span style="line-height: 1.5;">BSP_INTERRUPT_VECTOR_MAX + 1,not vertor in parmeter</span></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><span style="line-height: 1.5;">2. e is store in stack, but </span><span style="line-height: 1.5;">rtems_chain_is_node_off_chain(&e->node)  used??</span></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><span style="line-height: 1.5;"><br></span></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><span style="line-height: 1.5;">another question, I find the head version of libbsd and head version of rtems will crash when use bsd command  ,just bsd commond to list all bsd thread and irq, ifconfig  netstate ping work fine</span></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><span style="line-height: 1.5;"><br></span></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><span style="line-height: 1.5;"><br></span></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><span style="line-height: 1.5;">regards</span></div><div style="font-family: 'lucida Grande', Verdana, 'Microsoft YaHei'; line-height: 23.8px;"><span style="line-height: 1.5;">yao0718</span></div></div></div>