> -----Original Message-----
> From: Guo, Jia
> Sent: Friday, June 29, 2018 12:23 PM
> To: Ananyev, Konstantin <konstantin.anan...@intel.com>; 
> step...@networkplumber.org; Richardson, Bruce
> <bruce.richard...@intel.com>; Yigit, Ferruh <ferruh.yi...@intel.com>; 
> gaetan.ri...@6wind.com; Wu, Jingjing
> <jingjing...@intel.com>; tho...@monjalon.net; mo...@mellanox.com; 
> ma...@mellanox.com; Van Haaren, Harry
> <harry.van.haa...@intel.com>; Zhang, Qi Z <qi.z.zh...@intel.com>; He, 
> Shaopeng <shaopeng...@intel.com>; Iremonger, Bernard
> <bernard.iremon...@intel.com>
> Cc: jblu...@infradead.org; shreyansh.j...@nxp.com; dev@dpdk.org; Zhang, Helin 
> <helin.zh...@intel.com>
> Subject: Re: [PATCH V4 5/9] bus: add helper to handle sigbus
> 
> hi, konstantin
> 
> 
> On 6/29/2018 6:51 PM, Ananyev, Konstantin wrote:
> >> +int
> >> +rte_bus_sigbus_handler(const void *failure_addr)
> >> +{
> >> +  struct rte_bus *bus;
> >> +  int old_errno = rte_errno;
> >> +  int ret = 0;
> >> +
> >> +  rte_errno = 0;
> >> +
> >> +  bus = rte_bus_find(NULL, bus_handle_sigbus, failure_addr);
> >> +  if (bus == NULL) {
> >> +          RTE_LOG(ERR, EAL, "No bus can handle the sigbus error!");
> >> +          ret = -1;
> >> +  } else if (rte_errno != 0) {
> >> +          RTE_LOG(ERR, EAL, "Failed to handle the sigbus error!");
> >> +          ret = -1;
> >> +  }
> >> +
> >> +  /* if sigbus not be handled, return back old errno. */
> >> +  if (ret)
> >> +          rte_errno = old_errno;
> > Hmm, not sure why we need to set/restore rte_errno here?
> 
> restore old_errno just use to let caller know that the generic sigbus
> still not handler by bus hotplug handler,  that involve find a bus
> handle but failed and can not find a hander,  and can corresponding use
> the previous sigbus handler to process it.
> that is also unwser your question in other patch. do you think that make
> sense?

Sorry, still don't understand the intention.
Suppose rte_bus_find() will return NULL, in that case you'll setup rte_errno
to what it was before calling that function.
If the returned bus is not NULL, but bus_find() set's an rte_errno,
you still would restore rte_ernno?
What is the prupose?
Why do you need to touch rte_errno at all in that function?
Konstantin

> 
> >> +
> >> +  return ret;
> >> +}

Reply via email to