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?
+
+ return ret;
+}