All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jeff Guo <jia.guo@intel.com>
To: stephen@networkplumber.org, bruce.richardson@intel.com,
	ferruh.yigit@intel.com, gaetan.rivet@6wind.com
Cc: konstantin.ananyev@intel.com, jblunck@infradead.org,
	shreyansh.jain@nxp.com, jingjing.wu@intel.com, dev@dpdk.org,
	jia.guo@intel.com, thomas@monjalon.net, helin.zhang@intel.com,
	motih@mellanox.com
Subject: [PATCH V9 1/5] eal: add uevent monitor api and callback func
Date: Wed, 10 Jan 2018 17:12:20 +0800	[thread overview]
Message-ID: <1515575544-2141-2-git-send-email-jia.guo@intel.com> (raw)
In-Reply-To: <1515575544-2141-1-git-send-email-jia.guo@intel.com>

This patch aim to add a general uevent mechanism in eal device layer,
to enable all linux kernel object uevent monitoring, user could use these
APIs to monitor and read out the device status info that sent from the
kernel side, then corresponding to handle it, such as when detect hotplug
uevent type, user could detach or attach the device, and more it benefit
to use to do smoothly fail safe work.

About uevent monitoring:
a: add one epolling to poll the netlink socket, to monitor the uevent of
   the device.
b: add enum of rte_eal_dev_event_type and struct of rte_eal_uevent.
c: add below APIs in rte eal device layer.
   rte_dev_callback_register
   rte_dev_callback_unregister
   _rte_dev_callback_process
   rte_dev_monitor_start
   rte_dev_monitor_stop

Signed-off-by: Jeff Guo <jia.guo@intel.com>
---
v9->v8:
split the patch set into small and explicit patch
---
 lib/librte_eal/bsdapp/eal/eal_dev.c                |  36 ++++
 .../bsdapp/eal/include/exec-env/rte_dev.h          |  39 ++++
 lib/librte_eal/common/eal_common_dev.c             | 150 ++++++++++++++
 lib/librte_eal/common/include/rte_dev.h            |  98 +++++++++
 lib/librte_eal/linuxapp/eal/Makefile               |   3 +-
 lib/librte_eal/linuxapp/eal/eal_dev.c              | 223 +++++++++++++++++++++
 .../linuxapp/eal/include/exec-env/rte_dev.h        |  39 ++++
 7 files changed, 587 insertions(+), 1 deletion(-)
 create mode 100644 lib/librte_eal/bsdapp/eal/eal_dev.c
 create mode 100644 lib/librte_eal/bsdapp/eal/include/exec-env/rte_dev.h
 create mode 100644 lib/librte_eal/linuxapp/eal/eal_dev.c
 create mode 100644 lib/librte_eal/linuxapp/eal/include/exec-env/rte_dev.h

diff --git a/lib/librte_eal/bsdapp/eal/eal_dev.c b/lib/librte_eal/bsdapp/eal/eal_dev.c
new file mode 100644
index 0000000..7fdc2c0
--- /dev/null
+++ b/lib/librte_eal/bsdapp/eal/eal_dev.c
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018 Intel Corporation
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <inttypes.h>
+#include <sys/queue.h>
+#include <sys/signalfd.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+#include <sys/epoll.h>
+#include <unistd.h>
+#include <signal.h>
+#include <stdbool.h>
+
+#include <rte_malloc.h>
+#include <rte_bus.h>
+#include <rte_dev.h>
+#include <rte_devargs.h>
+#include <rte_debug.h>
+#include <rte_log.h>
+
+#include "eal_thread.h"
+
+int
+rte_dev_monitor_start(void)
+{
+	return -1;
+}
+
+int
+rte_dev_monitor_stop(void)
+{
+	return -1;
+}
diff --git a/lib/librte_eal/bsdapp/eal/include/exec-env/rte_dev.h b/lib/librte_eal/bsdapp/eal/include/exec-env/rte_dev.h
new file mode 100644
index 0000000..70413b3
--- /dev/null
+++ b/lib/librte_eal/bsdapp/eal/include/exec-env/rte_dev.h
@@ -0,0 +1,39 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018 Intel Corporation
+ */
+
+#ifndef _RTE_DEV_H_
+#error "don't include this file directly, please include generic <rte_dev.h>"
+#endif
+
+#ifndef _RTE_LINUXAPP_DEV_H_
+#define _RTE_LINUXAPP_DEV_H_
+
+#include <stdio.h>
+
+#include <rte_dev.h>
+
+/**
+ * Start the device uevent monitoring.
+ *
+ * @param none
+ * @return
+ *   - On success, zero.
+ *   - On failure, a negative value.
+ */
+int
+rte_dev_monitor_start(void);
+
+/**
+ * Stop the device uevent monitoring .
+ *
+ * @param none
+ * @return
+ *   - On success, zero.
+ *   - On failure, a negative value.
+ */
+
+int
+rte_dev_monitor_stop(void);
+
+#endif /* _RTE_LINUXAPP_DEV_H_ */
diff --git a/lib/librte_eal/common/eal_common_dev.c b/lib/librte_eal/common/eal_common_dev.c
index dda8f58..24c410e 100644
--- a/lib/librte_eal/common/eal_common_dev.c
+++ b/lib/librte_eal/common/eal_common_dev.c
@@ -42,9 +42,32 @@
 #include <rte_devargs.h>
 #include <rte_debug.h>
 #include <rte_log.h>
+#include <rte_spinlock.h>
+#include <rte_malloc.h>
 
 #include "eal_private.h"
 
+/* spinlock for device callbacks */
+static rte_spinlock_t rte_dev_cb_lock = RTE_SPINLOCK_INITIALIZER;
+
+/**
+ * The user application callback description.
+ *
+ * It contains callback address to be registered by user application,
+ * the pointer to the parameters for callback, and the event type.
+ */
+struct rte_eal_dev_callback {
+	TAILQ_ENTRY(rte_eal_dev_callback) next; /**< Callbacks list */
+	rte_eal_dev_cb_fn cb_fn;                /**< Callback address */
+	void *cb_arg;                           /**< Parameter for callback */
+	void *ret_param;                        /**< Return parameter */
+	enum rte_dev_event_type event;      /**< device event type */
+	uint32_t active;                        /**< Callback is executing */
+};
+
+/* A genaral callback for all new devices be added onto the bus */
+static struct rte_eal_dev_callback *dev_add_cb;
+
 static int cmp_detached_dev_name(const struct rte_device *dev,
 	const void *_name)
 {
@@ -234,3 +257,130 @@ int rte_eal_hotplug_remove(const char *busname, const char *devname)
 	rte_eal_devargs_remove(busname, devname);
 	return ret;
 }
+
+int
+rte_dev_callback_register(struct rte_device *device,
+			enum rte_dev_event_type event,
+			rte_eal_dev_cb_fn cb_fn, void *cb_arg)
+{
+	struct rte_eal_dev_callback *user_cb;
+
+	if (!cb_fn || device == NULL)
+		return -EINVAL;
+
+	rte_spinlock_lock(&rte_dev_cb_lock);
+
+	if (TAILQ_EMPTY(&(device->uev_cbs)))
+		TAILQ_INIT(&(device->uev_cbs));
+
+	if (event == RTE_DEV_EVENT_ADD) {
+		user_cb = NULL;
+	} else {
+		TAILQ_FOREACH(user_cb, &(device->uev_cbs), next) {
+			if (user_cb->cb_fn == cb_fn &&
+				user_cb->cb_arg == cb_arg &&
+				user_cb->event == event) {
+				break;
+			}
+		}
+	}
+
+	/* create a new callback. */
+	if (user_cb == NULL) {
+		/* allocate a new interrupt callback entity */
+		user_cb = rte_zmalloc("eal device event",
+					sizeof(*user_cb), 0);
+		if (user_cb == NULL) {
+			RTE_LOG(ERR, EAL, "Can not allocate memory\n");
+			rte_spinlock_unlock(&rte_dev_cb_lock);
+			return -ENOMEM;
+		}
+		user_cb->cb_fn = cb_fn;
+		user_cb->cb_arg = cb_arg;
+		user_cb->event = event;
+		if (event == RTE_DEV_EVENT_ADD)
+			dev_add_cb = user_cb;
+		else
+			TAILQ_INSERT_TAIL(&(device->uev_cbs), user_cb, next);
+	}
+
+	rte_spinlock_unlock(&rte_dev_cb_lock);
+	return 0;
+}
+
+int
+rte_dev_callback_unregister(struct rte_device *device,
+			enum rte_dev_event_type event,
+			rte_eal_dev_cb_fn cb_fn, void *cb_arg)
+{
+	int ret;
+	struct rte_eal_dev_callback *cb, *next;
+
+	if (!cb_fn || device == NULL)
+		return -EINVAL;
+
+	rte_spinlock_lock(&rte_dev_cb_lock);
+
+	ret = 0;
+	if (event == RTE_DEV_EVENT_ADD) {
+		rte_free(dev_add_cb);
+		dev_add_cb = NULL;
+	} else {
+		for (cb = TAILQ_FIRST(&(device->uev_cbs)); cb != NULL;
+		      cb = next) {
+
+			next = TAILQ_NEXT(cb, next);
+
+			if (cb->cb_fn != cb_fn || cb->event != event ||
+					(cb->cb_arg != (void *)-1 &&
+					cb->cb_arg != cb_arg))
+				continue;
+
+			/*
+			 * if this callback is not executing right now,
+			 * then remove it.
+			 */
+			if (cb->active == 0) {
+				TAILQ_REMOVE(&(device->uev_cbs), cb, next);
+				rte_free(cb);
+			} else {
+				ret = -EAGAIN;
+			}
+		}
+	}
+	rte_spinlock_unlock(&rte_dev_cb_lock);
+	return ret;
+}
+
+int
+_rte_dev_callback_process(struct rte_device *device,
+			enum rte_dev_event_type event,
+			void *ret_param)
+{
+	struct rte_eal_dev_callback dev_cb;
+	struct rte_eal_dev_callback *cb_lst;
+	int rc = 0;
+
+	rte_spinlock_lock(&rte_dev_cb_lock);
+	if (event == RTE_DEV_EVENT_ADD) {
+		if (ret_param != NULL)
+			dev_add_cb->ret_param = ret_param;
+
+		rc = dev_add_cb->cb_fn(dev_add_cb->event,
+				dev_add_cb->cb_arg, dev_add_cb->ret_param);
+	} else {
+		TAILQ_FOREACH(cb_lst, &(device->uev_cbs), next) {
+			if (cb_lst->cb_fn == NULL || cb_lst->event != event)
+				continue;
+			dev_cb = *cb_lst;
+			cb_lst->active = 1;
+			if (ret_param != NULL)
+				dev_cb.ret_param = ret_param;
+			rc = dev_cb.cb_fn(dev_cb.event,
+					dev_cb.cb_arg, dev_cb.ret_param);
+			cb_lst->active = 0;
+		}
+	}
+	rte_spinlock_unlock(&rte_dev_cb_lock);
+	return rc;
+}
diff --git a/lib/librte_eal/common/include/rte_dev.h b/lib/librte_eal/common/include/rte_dev.h
index 9342e0c..ab12862 100644
--- a/lib/librte_eal/common/include/rte_dev.h
+++ b/lib/librte_eal/common/include/rte_dev.h
@@ -51,6 +51,44 @@ extern "C" {
 
 #include <rte_log.h>
 
+#include <exec-env/rte_dev.h>
+
+enum uev_monitor_netlink_group {
+	UEV_MONITOR_KERNEL,
+	UEV_MONITOR_UDEV,
+};
+/**
+ * The device event type.
+ */
+enum rte_dev_event_type {
+	RTE_DEV_EVENT_UNKNOWN,	/**< unknown event type */
+	RTE_DEV_EVENT_ADD,	/**< device being added */
+	RTE_DEV_EVENT_REMOVE,
+				/**< device being removed */
+	RTE_DEV_EVENT_CHANGE,
+				/**< device status being changed,
+				 * etc charger percent
+				 */
+	RTE_DEV_EVENT_MOVE,	/**< device sysfs path being moved */
+	RTE_DEV_EVENT_ONLINE,	/**< device being enable */
+	RTE_DEV_EVENT_OFFLINE,	/**< device being disable */
+	RTE_DEV_EVENT_MAX	/**< max value of this enum */
+};
+
+struct rte_eal_uevent {
+	enum rte_dev_event_type type;	/**< device event type */
+	int subsystem;				/**< subsystem id */
+	char *devname;				/**< device name */
+	enum uev_monitor_netlink_group group;	/**< device netlink group */
+};
+
+typedef int (*rte_eal_dev_cb_fn)(enum rte_dev_event_type event,
+					void *cb_arg, void *ret_param);
+
+struct rte_eal_dev_callback;
+/** @internal Structure to keep track of registered callbacks */
+TAILQ_HEAD(rte_eal_dev_cb_list, rte_eal_dev_callback);
+
 __attribute__((format(printf, 2, 0)))
 static inline void
 rte_pmd_debug_trace(const char *func_name, const char *fmt, ...)
@@ -166,6 +204,8 @@ struct rte_device {
 	const struct rte_driver *driver;/**< Associated driver */
 	int numa_node;                /**< NUMA node connection */
 	struct rte_devargs *devargs;  /**< Device user arguments */
+	/** User application callbacks for device event */
+	struct rte_eal_dev_cb_list uev_cbs;
 };
 
 /**
@@ -293,4 +333,62 @@ __attribute__((used)) = str
 }
 #endif
 
+/**
+ * It registers the callback for the specific event. Multiple
+ * callbacks cal be registered at the same time.
+ * @param event
+ *  The device event type.
+ * @param cb_fn
+ *  callback address.
+ * @param cb_arg
+ *  address of parameter for callback.
+ *
+ * @return
+ *  - On success, zero.
+ *  - On failure, a negative value.
+ */
+int rte_dev_callback_register(struct rte_device *device,
+			enum rte_dev_event_type event,
+			rte_eal_dev_cb_fn cb_fn, void *cb_arg);
+
+/**
+ * It unregisters the callback according to the specified event.
+ *
+ * @param event
+ *  The event type which corresponding to the callback.
+ * @param cb_fn
+ *  callback address.
+ *  address of parameter for callback, (void *)-1 means to remove all
+ *  registered which has the same callback address.
+ *
+ * @return
+ *  - On success, return the number of callback entities removed.
+ *  - On failure, a negative value.
+ */
+int rte_dev_callback_unregister(struct rte_device *device,
+			enum rte_dev_event_type event,
+			rte_eal_dev_cb_fn cb_fn, void *cb_arg);
+
+/**
+ * @internal Executes all the user application registered callbacks for
+ * the specific device. It is for DPDK internal user only. User
+ * application should not call it directly.
+ *
+ * @param event
+ *  The device event type.
+ * @param cb_arg
+ *  callback parameter.
+ * @param ret_param
+ *  To pass data back to user application.
+ *  This allows the user application to decide if a particular function
+ *  is permitted or not.
+ *
+ * @return
+ *  - On success, return zero.
+ *  - On failure, a negative value.
+ */
+int
+_rte_dev_callback_process(struct rte_device *device,
+			enum rte_dev_event_type event,
+			void *ret_param);
 #endif /* _RTE_DEV_H_ */
diff --git a/lib/librte_eal/linuxapp/eal/Makefile b/lib/librte_eal/linuxapp/eal/Makefile
index 588c0bd..b9f5d31 100644
--- a/lib/librte_eal/linuxapp/eal/Makefile
+++ b/lib/librte_eal/linuxapp/eal/Makefile
@@ -39,6 +39,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += eal_lcore.c
 SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += eal_timer.c
 SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += eal_interrupts.c
 SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += eal_alarm.c
+SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += eal_dev.c
 
 # from common dir
 SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += eal_common_lcore.c
@@ -92,7 +93,7 @@ ifeq ($(CONFIG_RTE_TOOLCHAIN_GCC),y)
 CFLAGS_eal_thread.o += -Wno-return-type
 endif
 
-INC := rte_kni_common.h
+INC := rte_kni_common.h rte_dev.h
 
 SYMLINK-$(CONFIG_RTE_EXEC_ENV_LINUXAPP)-include/exec-env := \
 	$(addprefix include/exec-env/,$(INC))
diff --git a/lib/librte_eal/linuxapp/eal/eal_dev.c b/lib/librte_eal/linuxapp/eal/eal_dev.c
new file mode 100644
index 0000000..4812dbc
--- /dev/null
+++ b/lib/librte_eal/linuxapp/eal/eal_dev.c
@@ -0,0 +1,223 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018 Intel Corporation
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <inttypes.h>
+#include <sys/queue.h>
+#include <sys/signalfd.h>
+#include <sys/ioctl.h>
+#include <sys/socket.h>
+#include <linux/netlink.h>
+#include <sys/epoll.h>
+#include <unistd.h>
+#include <signal.h>
+#include <stdbool.h>
+
+#include <rte_malloc.h>
+#include <rte_bus.h>
+#include <rte_dev.h>
+#include <rte_devargs.h>
+#include <rte_debug.h>
+#include <rte_log.h>
+#include <rte_service.h>
+#include <rte_service_component.h>
+
+#include "eal_thread.h"
+
+bool service_exit = true;
+
+bool service_no_init = true;
+
+#define DEV_EV_MNT_SERVICE_NAME "device_event_monitor_service"
+
+static int
+dev_monitor_fd_new(void)
+{
+
+	int uevent_fd;
+
+	uevent_fd = socket(PF_NETLINK, SOCK_RAW | SOCK_CLOEXEC |
+			SOCK_NONBLOCK,
+			NETLINK_KOBJECT_UEVENT);
+	if (uevent_fd < 0) {
+		RTE_LOG(ERR, EAL, "create uevent fd failed\n");
+		return -1;
+	}
+	return uevent_fd;
+}
+
+static int
+dev_monitor_enable(int netlink_fd)
+{
+	struct sockaddr_nl addr;
+	int ret;
+	int size = 64 * 1024;
+	int nonblock = 1;
+
+	memset(&addr, 0, sizeof(addr));
+	addr.nl_family = AF_NETLINK;
+	addr.nl_pid = 0;
+	addr.nl_groups = 0xffffffff;
+
+	if (bind(netlink_fd, (struct sockaddr *) &addr, sizeof(addr)) < 0) {
+		RTE_LOG(ERR, EAL, "bind failed\n");
+		goto err;
+	}
+
+	setsockopt(netlink_fd, SOL_SOCKET, SO_PASSCRED, &size, sizeof(size));
+
+	ret = ioctl(netlink_fd, FIONBIO, &nonblock);
+	if (ret != 0) {
+		RTE_LOG(ERR, EAL, "ioctl(FIONBIO) failed\n");
+		goto err;
+	}
+	return 0;
+err:
+	close(netlink_fd);
+	return -1;
+}
+
+static int
+dev_uev_process(__rte_unused struct epoll_event *events, __rte_unused int nfds)
+{
+	/* TODO: device uevent processing */
+	return 0;
+}
+
+/**
+ * It builds/rebuilds up the epoll file descriptor with all the
+ * file descriptors being waited on. Then handles the interrupts.
+ *
+ * @param arg
+ *  pointer. (unused)
+ *
+ * @return
+ *   - On success, zero.
+ *   - On failure, a negative value.
+ */
+static int32_t dev_uev_monitoring(__rte_unused void *arg)
+{
+	int netlink_fd = -1;
+	struct epoll_event ep_kernel;
+	int fd_ep = -1;
+
+	service_exit = false;
+
+	fd_ep = epoll_create1(EPOLL_CLOEXEC);
+	if (fd_ep < 0) {
+		RTE_LOG(ERR, EAL, "error creating epoll fd: %m\n");
+		goto out;
+	}
+
+	netlink_fd = dev_monitor_fd_new();
+
+	if (dev_monitor_enable(netlink_fd) < 0) {
+		RTE_LOG(ERR, EAL, "error subscribing to kernel events\n");
+		goto out;
+	}
+
+	memset(&ep_kernel, 0, sizeof(struct epoll_event));
+	ep_kernel.events = EPOLLIN | EPOLLPRI | EPOLLRDHUP | EPOLLHUP;
+	ep_kernel.data.fd = netlink_fd;
+	if (epoll_ctl(fd_ep, EPOLL_CTL_ADD, netlink_fd,
+		&ep_kernel) < 0) {
+		RTE_LOG(ERR, EAL, "error addding fd to epoll: %m\n");
+		goto out;
+	}
+
+	while (!service_exit) {
+		int fdcount;
+		struct epoll_event ev[1];
+
+		fdcount = epoll_wait(fd_ep, ev, 1, -1);
+		if (fdcount < 0) {
+			if (errno != EINTR)
+				RTE_LOG(ERR, EAL, "error receiving uevent "
+					"message: %m\n");
+				continue;
+			}
+
+		/* epoll_wait has at least one fd ready to read */
+		if (dev_uev_process(ev, fdcount) < 0) {
+			if (errno != EINTR)
+				RTE_LOG(ERR, EAL, "error processing uevent "
+					"message: %m\n");
+		}
+	}
+	return 0;
+out:
+	if (fd_ep >= 0)
+		close(fd_ep);
+	if (netlink_fd >= 0)
+		close(netlink_fd);
+	rte_panic("uev monitoring fail\n");
+	return -1;
+}
+
+int
+rte_dev_monitor_start(void)
+{
+	int ret;
+	struct rte_service_spec service;
+	uint32_t id;
+	const uint32_t sid = 0;
+
+	if (!service_no_init)
+		return 0;
+
+	uint32_t slcore_1 = rte_get_next_lcore(/* start core */ -1,
+					       /* skip master */ 1,
+					       /* wrap */ 0);
+
+	ret = rte_service_lcore_add(slcore_1);
+	if (ret) {
+		RTE_LOG(ERR, EAL, "dev event monitor lcore add fail");
+		return ret;
+	}
+
+	memset(&service, 0, sizeof(service));
+	snprintf(service.name, sizeof(service.name), DEV_EV_MNT_SERVICE_NAME);
+
+	service.socket_id = rte_socket_id();
+	service.callback = dev_uev_monitoring;
+	service.callback_userdata = NULL;
+	service.capabilities = 0;
+	ret = rte_service_component_register(&service, &id);
+	if (ret) {
+		RTE_LOG(ERR, EAL, "Failed to register service %s "
+			"err = %" PRId32,
+			service.name, ret);
+		return ret;
+	}
+	ret = rte_service_runstate_set(sid, 1);
+	if (ret) {
+		RTE_LOG(ERR, EAL, "Failed to set the runstate of "
+			"the service");
+		return ret;
+	}
+	ret = rte_service_component_runstate_set(id, 1);
+	if (ret) {
+		RTE_LOG(ERR, EAL, "Failed to set the backend runstate"
+			" of a component");
+		return ret;
+	}
+	ret = rte_service_map_lcore_set(sid, slcore_1, 1);
+	if (ret) {
+		RTE_LOG(ERR, EAL, "Failed to enable lcore 1 on "
+			"dev event monitor service");
+		return ret;
+	}
+	rte_service_lcore_start(slcore_1);
+	service_no_init = false;
+	return 0;
+}
+
+int
+rte_dev_monitor_stop(void)
+{
+	service_exit = true;
+	service_no_init = true;
+	return 0;
+}
diff --git a/lib/librte_eal/linuxapp/eal/include/exec-env/rte_dev.h b/lib/librte_eal/linuxapp/eal/include/exec-env/rte_dev.h
new file mode 100644
index 0000000..70413b3
--- /dev/null
+++ b/lib/librte_eal/linuxapp/eal/include/exec-env/rte_dev.h
@@ -0,0 +1,39 @@
+/* SPDX-License-Identifier: BSD-3-Clause
+ * Copyright(c) 2018 Intel Corporation
+ */
+
+#ifndef _RTE_DEV_H_
+#error "don't include this file directly, please include generic <rte_dev.h>"
+#endif
+
+#ifndef _RTE_LINUXAPP_DEV_H_
+#define _RTE_LINUXAPP_DEV_H_
+
+#include <stdio.h>
+
+#include <rte_dev.h>
+
+/**
+ * Start the device uevent monitoring.
+ *
+ * @param none
+ * @return
+ *   - On success, zero.
+ *   - On failure, a negative value.
+ */
+int
+rte_dev_monitor_start(void);
+
+/**
+ * Stop the device uevent monitoring .
+ *
+ * @param none
+ * @return
+ *   - On success, zero.
+ *   - On failure, a negative value.
+ */
+
+int
+rte_dev_monitor_stop(void);
+
+#endif /* _RTE_LINUXAPP_DEV_H_ */
-- 
2.7.4

  reply	other threads:[~2018-01-10  9:13 UTC|newest]

Thread overview: 494+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-05-28 15:44 [RFC] Add hot plug event in rte eal interrupt and inplement it in i40e driver Jeff Guo
2017-05-30  7:14 ` Gaëtan Rivet
2017-06-07  7:40   ` Wu, Jingjing
2017-06-15 21:22     ` Gaëtan Rivet
2017-06-21  2:50       ` Guo, Jia
2017-06-29 17:27     ` Stephen Hemminger
2017-06-30  3:36       ` Wu, Jingjing
2017-06-07  7:27 ` Wu, Jingjing
2017-06-28 11:07 ` [PATCH v2 1/2] eal: add uevent api for hot plug Jeff Guo
2017-06-28 11:07   ` [PATCH v2 2/2] net/i40e: add hot plug monitor in i40e Jeff Guo
2017-06-29  1:41     ` Wu, Jingjing
2017-06-29  4:31       ` Guo, Jia
2017-06-29  3:34     ` Stephen Hemminger
2017-06-29  4:48       ` Wu, Jingjing
2017-06-29  7:47         ` Guo, Jia
2017-06-29  4:37     ` [PATCH v3 0/2] add uevent api for hot plug Jeff Guo
2017-06-29  4:37       ` [PATCH v3 1/2] eal: " Jeff Guo
2017-06-30  3:38         ` Wu, Jingjing
2017-06-29  4:37       ` [PATCH v3 2/2] net/i40e: add hot plug monitor in i40e Jeff Guo
2017-06-30  3:38         ` Wu, Jingjing
2018-04-13  8:30       ` [PATCH V22 0/4] add device event monitor framework Jeff Guo
2018-04-13  8:30         ` [PATCH V22 1/4] eal: add device event handle in interrupt thread Jeff Guo
2018-04-13  8:30         ` [PATCH V22 2/4] eal: add device event monitor framework Jeff Guo
2018-04-13  8:30         ` [PATCH V22 3/4] eal/linux: uevent parse and process Jeff Guo
2018-04-13  8:30         ` [PATCH V22 4/4] app/testpmd: enable device hotplug monitoring Jeff Guo
2018-04-13 10:03         ` [PATCH V22 0/4] add device event monitor framework Thomas Monjalon
2018-04-18 13:38       ` [PATCH V20 0/4] add hot plug recovery mechanism Jeff Guo
2018-04-18 13:38         ` [PATCH V20 1/4] bus/pci: introduce device hot unplug handle Jeff Guo
2018-04-20 10:32           ` Ananyev, Konstantin
2018-05-03  3:05             ` Guo, Jia
2018-04-18 13:38         ` [PATCH V20 2/4] eal: add failure handler mechanism for hot plug Jeff Guo
2018-04-19  1:30           ` Zhang, Qi Z
2018-04-20 11:14           ` Ananyev, Konstantin
2018-05-03  3:13             ` Guo, Jia
2018-04-20 16:16           ` Ananyev, Konstantin
2018-05-03  3:17             ` Guo, Jia
2018-04-18 13:38         ` [PATCH V20 3/4] igb_uio: fix uio release issue when hot unplug Jeff Guo
2018-04-18 13:38         ` [PATCH V20 4/4] app/testpmd: show example to handler " Jeff Guo
2018-05-03  7:25           ` Matan Azrad
2018-05-03  9:35             ` Guo, Jia
2018-05-03 11:27               ` Matan Azrad
2018-05-03  8:57       ` [PATCH V21 0/4] hot plug recovery mechanism Jeff Guo
2018-05-03  8:57         ` [PATCH V21 1/4] bus/pci: handle device hot unplug Jeff Guo
2018-05-03  8:57         ` [PATCH V21 2/4] eal: add failure handle mechanism for hot plug Jeff Guo
2018-05-03  8:57         ` [PATCH V21 3/4] igb_uio: fix uio release issue when hot unplug Jeff Guo
2018-05-03  8:57         ` [PATCH V21 4/4] app/testpmd: show example to handle " Jeff Guo
2018-05-16 14:30           ` Iremonger, Bernard
2018-05-03 10:48       ` [PATCH V21 0/4] hot plug recovery mechanism Jeff Guo
2018-05-03 10:48         ` [PATCH V21 1/4] bus/pci: handle device hot unplug Jeff Guo
2018-05-03 10:48         ` [PATCH V21 2/4] eal: add failure handle mechanism for hot plug Jeff Guo
2018-05-04 15:56           ` Ananyev, Konstantin
2018-05-08 14:57             ` Guo, Jia
2018-05-08 15:19               ` Ananyev, Konstantin
2018-05-03 10:48         ` [PATCH V21 3/4] igb_uio: fix uio release issue when hot unplug Jeff Guo
2018-05-03 10:48         ` [PATCH V21 4/4] app/testpmd: show example to handle " Jeff Guo
2018-06-14 12:59           ` Iremonger, Bernard
2018-06-15  8:32             ` Guo, Jia
2018-06-22 11:51       ` [PATCH v2 0/4] hot plug failure handle mechanism Jeff Guo
2018-06-22 11:51         ` [PATCH v2 1/4] bus/pci: handle device hot unplug Jeff Guo
2018-06-22 12:59           ` Gaëtan Rivet
2018-06-26 15:30             ` Guo, Jia
2018-06-22 11:51         ` [PATCH v2 2/4] eal: add failure handle mechanism for hot plug Jeff Guo
2018-06-22 11:51         ` [PATCH v2 3/4] igb_uio: fix uio release issue when hot unplug Jeff Guo
2018-06-22 11:51         ` [PATCH v2 4/4] app/testpmd: show example to handle " Jeff Guo
2018-06-26 10:06           ` Iremonger, Bernard
2018-06-26 11:58           ` Matan Azrad
2018-06-26 15:33             ` Guo, Jia
2018-06-26 15:36       ` [PATCH V3 1/4] bus/pci: handle device " Jeff Guo
2018-06-26 15:36         ` [PATCH V3 2/4] eal: add failure handle mechanism for hot plug Jeff Guo
2018-06-26 15:36         ` [PATCH V3 3/4] igb_uio: fix uio release issue when hot unplug Jeff Guo
2018-06-26 15:36         ` [PATCH V3 4/4] app/testpmd: show example to handle " Jeff Guo
2018-06-26 17:07           ` Matan Azrad
2018-06-27  3:56             ` Guo, Jia
2018-06-27  6:05               ` Matan Azrad
2018-06-29 10:26                 ` Guo, Jia
2018-06-29 10:30       ` [PATCH V4 0/9] hot plug failure handle mechanism Jeff Guo
2018-06-29 10:30         ` [PATCH V4 1/9] bus: introduce hotplug failure handler Jeff Guo
2018-07-03 22:21           ` Thomas Monjalon
2018-07-04  7:16             ` Guo, Jia
2018-07-04  7:55               ` Thomas Monjalon
2018-07-05  6:23                 ` Guo, Jia
2018-07-05  8:30                   ` Thomas Monjalon
2018-06-29 10:30         ` [PATCH V4 2/9] bus/pci: implement hotplug handler operation Jeff Guo
2018-06-29 10:30         ` [PATCH V4 3/9] bus: introduce sigbus handler Jeff Guo
2018-07-10 21:55           ` Stephen Hemminger
2018-07-11  2:15             ` Jeff Guo
2018-06-29 10:30         ` [PATCH V4 4/9] bus/pci: implement sigbus handler operation Jeff Guo
2018-06-29 10:30         ` [PATCH V4 5/9] bus: add helper to handle sigbus Jeff Guo
2018-06-29 10:51           ` Ananyev, Konstantin
2018-06-29 11:23             ` Guo, Jia
2018-06-29 12:21               ` Ananyev, Konstantin
2018-06-29 12:52                 ` Gaëtan Rivet
2018-07-03 11:24                   ` Guo, Jia
2018-06-29 10:30         ` [PATCH V4 6/9] eal: add failure handle mechanism for hot plug Jeff Guo
2018-06-29 10:49           ` Ananyev, Konstantin
2018-06-29 11:15             ` Guo, Jia
2018-06-29 12:06               ` Ananyev, Konstantin
2018-06-29 10:30         ` [PATCH V4 7/9] igb_uio: fix uio release issue when hot unplug Jeff Guo
2018-07-03 12:12           ` Ferruh Yigit
2018-06-29 10:30         ` [PATCH V4 8/9] app/testpmd: show example to handle " Jeff Guo
2018-07-01  7:46           ` Matan Azrad
2018-07-03  9:35             ` Guo, Jia
2018-07-03 22:44               ` Thomas Monjalon
2018-07-04  3:48                 ` Guo, Jia
2018-07-04  7:06                 ` Matan Azrad
2018-07-05  7:54                   ` Guo, Jia
2018-06-29 10:30         ` [PATCH V4 9/9] app/testpmd: enable device hotplug monitoring Jeff Guo
2018-07-05  7:38       ` [PATCH V5 0/7] hot plug failure handle mechanism Jeff Guo
2018-07-05  7:38         ` [PATCH V5 1/7] bus: add hotplug failure handler Jeff Guo
2018-07-06 15:17           ` He, Shaopeng
2018-07-05  7:38         ` [PATCH V5 2/7] bus/pci: implement hotplug failure handler ops Jeff Guo
2018-07-06 15:17           ` He, Shaopeng
2018-07-09  5:29             ` Jeff Guo
2018-07-05  7:38         ` [PATCH V5 3/7] bus: add sigbus handler Jeff Guo
2018-07-06 15:17           ` He, Shaopeng
2018-07-05  7:38         ` [PATCH V5 4/7] bus/pci: implement sigbus handler operation Jeff Guo
2018-07-06 15:18           ` He, Shaopeng
2018-07-05  7:38         ` [PATCH V5 5/7] bus: add helper to handle sigbus Jeff Guo
2018-07-06 15:22           ` He, Shaopeng
2018-07-09  5:31             ` Jeff Guo
2018-07-08 13:30           ` Andrew Rybchenko
2018-07-09  5:33             ` Jeff Guo
2018-07-05  7:38         ` [PATCH V5 6/7] eal: add failure handle mechanism for hotplug Jeff Guo
2018-07-06 15:22           ` He, Shaopeng
2018-07-08 13:46           ` Andrew Rybchenko
2018-07-09  5:40             ` Jeff Guo
2018-07-05  8:21       ` [PATCH V5 0/7] hot plug failure handle mechanism Jeff Guo
2018-07-05  8:21         ` [PATCH V5 7/7] igb_uio: fix uio release issue when hot unplug Jeff Guo
2018-07-09  6:51       ` [PATCH v6 0/7] hotplug failure handle mechanism Jeff Guo
2018-07-09  6:51         ` [PATCH v6 1/7] bus: add hotplug failure handler Jeff Guo
2018-07-09  6:51         ` [PATCH v6 2/7] bus/pci: implement hotplug failure handler ops Jeff Guo
2018-07-09  6:51         ` [PATCH v6 3/7] bus: add sigbus handler Jeff Guo
2018-07-09  6:51         ` [PATCH v6 4/7] bus/pci: implement sigbus handler operation Jeff Guo
2018-07-09  6:51         ` [PATCH v6 5/7] bus: add helper to handle sigbus Jeff Guo
2018-07-09  6:51         ` [PATCH v6 6/7] eal: add failure handle mechanism for hotplug Jeff Guo
2018-07-09  7:42           ` Gaëtan Rivet
2018-07-09  8:12             ` Jeff Guo
2018-07-09  6:51         ` [PATCH v6 7/7] igb_uio: fix uio release issue when hot unplug Jeff Guo
2018-07-09 11:56       ` [PATCH v7 0/7] hotplug failure handle mechanism Jeff Guo
2018-07-09 11:56         ` [PATCH v7 1/7] bus: add hotplug failure handler Jeff Guo
2018-07-09 11:56         ` [PATCH v7 2/7] bus/pci: implement hotplug failure handler ops Jeff Guo
2018-07-09 11:56         ` [PATCH v7 3/7] bus: add sigbus handler Jeff Guo
2018-07-09 11:56         ` [PATCH v7 4/7] bus/pci: implement sigbus handler operation Jeff Guo
2018-07-09 11:56         ` [PATCH v7 5/7] bus: add helper to handle sigbus Jeff Guo
2018-07-09 11:56         ` [PATCH v7 6/7] eal: add failure handle mechanism for hotplug Jeff Guo
2018-07-09 11:56         ` [PATCH v7 7/7] igb_uio: fix uio release issue when hot unplug Jeff Guo
2018-07-09 12:00       ` [PATCH v7 0/7] hotplug failure handle mechanism Jeff Guo
2018-07-09 12:01         ` [PATCH v7 1/7] bus: add hotplug failure handler Jeff Guo
2018-07-09 12:01         ` [PATCH v7 2/7] bus/pci: implement hotplug failure handler ops Jeff Guo
2018-07-09 12:01         ` [PATCH v7 3/7] bus: add sigbus handler Jeff Guo
2018-07-09 12:01         ` [PATCH v7 4/7] bus/pci: implement sigbus handler operation Jeff Guo
2018-07-09 12:01         ` [PATCH v7 5/7] bus: add helper to handle sigbus Jeff Guo
2018-07-09 13:48           ` Andrew Rybchenko
2018-07-10  8:22             ` Jeff Guo
2018-07-10  8:40               ` Gaëtan Rivet
2018-07-10 10:07                 ` Jeff Guo
2018-07-09 12:01         ` [PATCH v7 6/7] eal: add failure handle mechanism for hotplug Jeff Guo
2018-07-09 13:50           ` Andrew Rybchenko
2018-07-10  8:23             ` Jeff Guo
2018-07-09 12:01         ` [PATCH v7 7/7] igb_uio: fix uio release issue when hot unplug Jeff Guo
2018-07-09 22:44           ` Stephen Hemminger
2018-07-10  8:28             ` Jeff Guo
2018-07-10 11:03       ` [PATCH v8 0/7] hotplug failure handle mechanism Jeff Guo
2018-07-10 11:03         ` [PATCH v8 1/7] bus: add hotplug failure handler Jeff Guo
2018-07-10 11:03         ` [PATCH v8 2/7] bus/pci: implement hotplug failure handler ops Jeff Guo
2018-07-10 11:03         ` [PATCH v8 3/7] bus: add sigbus handler Jeff Guo
2018-07-10 11:03         ` [PATCH v8 4/7] bus/pci: implement sigbus handler operation Jeff Guo
2018-07-10 11:03         ` [PATCH v8 5/7] bus: add helper to handle sigbus Jeff Guo
2018-07-10 11:03         ` [PATCH v8 6/7] eal: add failure handle mechanism for hotplug Jeff Guo
2018-07-10 11:03         ` [PATCH v8 7/7] igb_uio: fix uio release issue " Jeff Guo
2018-07-10 21:48           ` Stephen Hemminger
2018-07-11  3:10             ` Jeff Guo
2018-07-10 21:52           ` Stephen Hemminger
2018-07-11  2:46             ` Jeff Guo
2018-07-11 10:01               ` Jeff Guo
2018-07-11 10:41       ` [PATCH v9 0/7] hotplug failure handle mechanism Jeff Guo
2018-07-11 10:41         ` [PATCH v9 1/7] bus: add hotplug failure handler Jeff Guo
2018-07-11 10:41         ` [PATCH v9 2/7] bus/pci: implement hotplug failure handler ops Jeff Guo
2018-07-11 10:41         ` [PATCH v9 3/7] bus: add sigbus handler Jeff Guo
2018-07-11 10:41         ` [PATCH v9 4/7] bus/pci: implement sigbus handler operation Jeff Guo
2018-07-11 10:41         ` [PATCH v9 5/7] bus: add helper to handle sigbus Jeff Guo
2018-07-11 10:41         ` [PATCH v9 6/7] eal: add failure handle mechanism for hotplug Jeff Guo
2018-07-11 10:41         ` [PATCH v9 7/7] igb_uio: fix unexpected remove issue " Jeff Guo
2018-07-12  1:57           ` He, Shaopeng
2018-07-11 15:46         ` [PATCH v9 0/7] hotplug failure handle mechanism Stephen Hemminger
2018-07-12  3:14           ` Jeff Guo
2018-08-17 10:48       ` [PATCH v10 0/8] " Jeff Guo
2018-08-17 10:48         ` [PATCH v10 1/8] bus: add memory failure handler Jeff Guo
2018-08-17 10:48         ` [PATCH v10 2/8] bus/pci: implement memory failure handler ops Jeff Guo
2018-08-17 10:48         ` [PATCH v10 3/8] bus: add sigbus handler Jeff Guo
2018-08-17 10:48         ` [PATCH v10 4/8] bus/pci: implement sigbus handler ops Jeff Guo
2018-08-17 10:48         ` [PATCH v10 5/8] bus: add helper to handle sigbus Jeff Guo
2018-08-17 10:48         ` Jeff Guo
2018-08-17 10:48         ` [PATCH v10 6/8] eal: add failure handle mechanism for hotplug Jeff Guo
2018-08-17 10:48         ` [PATCH v10 7/8] igb_uio: fix unexpected remove issue " Jeff Guo
2018-09-27 15:07           ` Ferruh Yigit
2018-10-18  5:51             ` Jeff Guo
2018-10-18  6:27           ` [PATCH v1] igb_uio: fix unexpected removal for hot-unplug Jeff Guo
2018-10-18 16:06             ` Ferruh Yigit
2018-10-19  8:35               ` Jeff Guo
2018-10-22 11:13                 ` Ferruh Yigit
2018-10-24 23:14                   ` Thomas Monjalon
2018-08-17 10:48         ` [PATCH v10 8/8] testpmd: use hotplug failure handle mechanism Jeff Guo
2018-09-30 10:24       ` [PATCH v11 0/7] hot-unplug " Jeff Guo
2018-09-30 10:24         ` [PATCH v11 1/7] bus: add hot-unplug handler Jeff Guo
2018-09-30 10:24         ` [PATCH v11 2/7] bus/pci: implement hot-unplug handler ops Jeff Guo
2018-09-30 10:24         ` [PATCH v11 3/7] bus: add sigbus handler Jeff Guo
2018-09-30 10:24         ` [PATCH v11 4/7] bus/pci: implement sigbus handler ops Jeff Guo
2018-09-30 10:24         ` [PATCH v11 5/7] bus: add helper to handle sigbus Jeff Guo
2018-09-30 10:24         ` [PATCH v11 6/7] eal: add failure handle mechanism for hot-unplug Jeff Guo
2018-09-30 10:24         ` [PATCH v11 7/7] testpmd: use hot-unplug failure handle mechanism Jeff Guo
2018-09-30 11:29       ` [PATCH v11 0/7] " Jeff Guo
2018-09-30 11:29         ` [PATCH v11 1/7] bus: add hot-unplug handler Jeff Guo
2018-09-30 11:29         ` [PATCH v11 2/7] bus/pci: implement hot-unplug handler ops Jeff Guo
2018-09-30 11:29         ` [PATCH v11 3/7] bus: add sigbus handler Jeff Guo
2018-09-30 11:30         ` [PATCH v11 4/7] bus/pci: implement sigbus handler ops Jeff Guo
2018-09-30 11:30         ` [PATCH v11 5/7] bus: add helper to handle sigbus Jeff Guo
2018-09-30 11:30         ` [PATCH v11 6/7] eal: add failure handle mechanism for hot-unplug Jeff Guo
2018-09-30 19:46           ` Ananyev, Konstantin
2018-10-02  4:01             ` Jeff Guo
2018-09-30 11:30         ` [PATCH v11 7/7] testpmd: use hot-unplug failure handle mechanism Jeff Guo
2018-10-01  9:00         ` [PATCH v11 0/7] " Stephen Hemminger
2018-10-01  9:55           ` Jerin Jacob
2018-10-02 10:08             ` Jeff Guo
2018-10-02  9:57           ` Jeff Guo
2018-10-02 12:32       ` [PATCH v12 " Jeff Guo
2018-10-02 12:32         ` [PATCH v12 1/7] bus: add hot-unplug handler Jeff Guo
2018-10-02 12:32         ` [PATCH v12 2/7] bus/pci: implement hot-unplug handler ops Jeff Guo
2018-10-02 12:32         ` [PATCH v12 3/7] bus: add sigbus handler Jeff Guo
2018-10-02 12:32         ` [PATCH v12 4/7] bus/pci: implement sigbus handler ops Jeff Guo
2018-10-02 12:32         ` [PATCH v12 5/7] bus: add helper to handle sigbus Jeff Guo
2018-10-02 12:32         ` [PATCH v11 6/7] eal: add failure handle mechanism for hot-unplug Jeff Guo
2018-10-02 12:32         ` [PATCH v11 7/7] testpmd: use hot-unplug failure handle mechanism Jeff Guo
2018-10-02 12:35       ` [PATCH v12 0/7] " Jeff Guo
2018-10-02 12:35         ` [PATCH v12 1/7] bus: add hot-unplug handler Jeff Guo
2018-10-02 12:35         ` [PATCH v12 2/7] bus/pci: implement hot-unplug handler ops Jeff Guo
2018-10-02 12:35         ` [PATCH v12 3/7] bus: add sigbus handler Jeff Guo
2018-10-02 14:32           ` Burakov, Anatoly
2018-10-04  3:14             ` Jeff Guo
2018-10-02 12:35         ` [PATCH v12 4/7] bus/pci: implement sigbus handler ops Jeff Guo
2018-10-02 14:39           ` Burakov, Anatoly
2018-10-04  3:58             ` Jeff Guo
2018-10-02 12:35         ` [PATCH v12 5/7] bus: add helper to handle sigbus Jeff Guo
2018-10-02 12:35         ` [PATCH v12 6/7] eal: add failure handle mechanism for hot-unplug Jeff Guo
2018-10-02 13:34           ` Ananyev, Konstantin
2018-10-04  2:31             ` Jeff Guo
2018-10-02 15:53           ` Burakov, Anatoly
2018-10-02 16:00             ` Ananyev, Konstantin
2018-10-04  3:12             ` Jeff Guo
2018-10-02 12:35         ` [PATCH v12 7/7] testpmd: use hot-unplug failure handle mechanism Jeff Guo
2018-10-02 15:21           ` Iremonger, Bernard
2018-10-04  2:56             ` Jeff Guo
2018-10-04  6:30       ` [PATCH v13 0/7] " Jeff Guo
2018-10-04  6:30         ` [PATCH v13 1/7] bus: add hot-unplug handler Jeff Guo
2018-10-04  6:30         ` [PATCH v13 2/7] bus/pci: implement hot-unplug handler ops Jeff Guo
2018-10-04  6:30         ` [PATCH v13 3/7] bus: add sigbus handler Jeff Guo
2018-10-04  6:30         ` [PATCH v13 4/7] bus/pci: implement sigbus handler ops Jeff Guo
2018-10-04  6:30         ` [PATCH v13 5/7] bus: add helper to handle sigbus Jeff Guo
2018-10-04  6:30         ` [PATCH v13 6/7] eal: add failure handle mechanism for hot-unplug Jeff Guo
2018-10-04  6:30         ` [PATCH v13 7/7] app/testpmd: use hotplug failure handler Jeff Guo
2018-10-04 10:31           ` Iremonger, Bernard
2018-10-04 13:53             ` Jeff Guo
2018-10-04 12:02         ` [PATCH v13 0/7] hot-unplug failure handle mechanism Ananyev, Konstantin
2018-10-04 14:46       ` [PATCH v14 " Jeff Guo
2018-10-04 14:46         ` [PATCH v14 1/7] bus: add hot-unplug handler Jeff Guo
2018-10-04 14:46         ` [PATCH v14 2/7] bus/pci: implement hot-unplug handler ops Jeff Guo
2018-10-04 14:46         ` [PATCH v14 3/7] bus: add sigbus handler Jeff Guo
2018-10-04 14:46         ` [PATCH v14 4/7] bus/pci: implement sigbus handler ops Jeff Guo
2018-10-04 14:46         ` [PATCH v14 5/7] bus: add helper to handle sigbus Jeff Guo
2018-10-04 14:46         ` [PATCH v14 6/7] eal: add failure handle mechanism for hot-unplug Jeff Guo
2018-10-15 10:43           ` Thomas Monjalon
2018-10-04 14:46         ` [PATCH v14 7/7] app/testpmd: use hotplug failure handler Jeff Guo
2018-10-05 12:26           ` Iremonger, Bernard
2018-10-15 11:27       ` [PATCH v15 0/7] hot-unplug failure handle mechanism Jeff Guo
2018-10-15 11:27         ` [PATCH v15 1/7] bus: add hot-unplug handler Jeff Guo
2018-10-15 11:27         ` [PATCH v15 2/7] bus/pci: implement hot-unplug handler ops Jeff Guo
2018-10-15 11:27         ` [PATCH v15 3/7] bus: add sigbus handler Jeff Guo
2018-10-15 11:27         ` [PATCH v15 4/7] bus/pci: implement sigbus handler ops Jeff Guo
2018-10-15 13:41           ` Thomas Monjalon
2018-10-15 14:16             ` Thomas Monjalon
2018-10-15 11:27         ` [PATCH v15 5/7] bus: add helper to handle sigbus Jeff Guo
2018-10-15 11:27         ` [PATCH v15 6/7] eal: add failure handle mechanism for hot-unplug Jeff Guo
2018-10-15 11:27         ` [PATCH v15 7/7] app/testpmd: use hotplug failure handler Jeff Guo
2018-10-15 20:19         ` [PATCH v15 0/7] hot-unplug failure handle mechanism Thomas Monjalon
2017-06-29  5:01     ` [PATCH v3 0/2] add uevent api for hot plug Jeff Guo
2017-06-29  5:01       ` [PATCH v3 1/2] eal: " Jeff Guo
2017-07-04  7:15         ` Wu, Jingjing
2017-09-03 15:49         ` [PATCH v4 0/2] add uevent monitor " Jeff Guo
2017-09-03 15:49           ` [PATCH v4 1/2] eal: " Jeff Guo
2017-09-03 16:10             ` Stephen Hemminger
2017-09-03 16:12             ` Stephen Hemminger
2017-09-05  5:28               ` Guo, Jia
2017-09-03 16:14             ` Stephen Hemminger
2017-09-03 16:16             ` Stephen Hemminger
2017-09-03 15:49           ` [PATCH v4 2/2] app/testpmd: use uevent to monitor hot removal Jeff Guo
2017-09-20  4:12             ` [PATCH v5 0/2] add uevent monitor for hot plug Jeff Guo
2017-09-19 18:44               ` Jan Blunck
2017-09-20  6:51                 ` Guo, Jia
2017-09-20  4:12               ` [PATCH v5 1/2] eal: " Jeff Guo
2017-09-20  4:12               ` [PATCH v5 2/2] app/testpmd: use uevent to monitor hot removal Jeff Guo
2017-11-01 20:16                 ` [PATCH v6 0/2] add uevent monitor for hot plug Jeff Guo
2017-11-01 20:16                   ` [PATCH v6 1/2] eal: " Jeff Guo
2017-11-01 21:36                     ` Stephen Hemminger
2017-11-01 21:41                     ` Stephen Hemminger
2017-11-08  5:39                       ` Guo, Jia
2017-12-25  8:30                       ` Guo, Jia
2017-12-25 18:06                     ` Stephen Hemminger
2018-01-02  9:40                       ` Guo, Jia
2017-11-01 20:16                   ` [PATCH v6 2/2] app/testpmd: use uevent to monitor hotplug Jeff Guo
2018-01-03  1:42                     ` [PATCH v7 0/2] add uevent monitor for hot plug Jeff Guo
2018-01-03  1:42                       ` [PATCH v7 1/2] eal: " Jeff Guo
2018-01-02 17:02                         ` Matan Azrad
2018-01-08  5:26                           ` Guo, Jia
2018-01-08  8:14                             ` Matan Azrad
2018-01-08  6:05                           ` Guo, Jia
2018-01-09  0:39                         ` Thomas Monjalon
2018-01-09  8:25                           ` Guo, Jia
2018-01-09 10:31                             ` Mordechay Haimovsky
2018-01-09 10:47                               ` Thomas Monjalon
2018-01-09 11:39                                 ` Guo, Jia
2018-01-09 11:44                                   ` Thomas Monjalon
2018-01-09 12:08                                     ` Guo, Jia
2018-01-09 12:42                                       ` Gaëtan Rivet
2018-01-10  9:29                                         ` Guo, Jia
2018-01-09 13:44                                       ` Thomas Monjalon
2018-01-10  9:32                                         ` Guo, Jia
2018-01-09 11:45                               ` Guo, Jia
2018-01-09 11:38                             ` Thomas Monjalon
2018-01-09 11:58                               ` Guo, Jia
2018-01-09 13:40                                 ` Thomas Monjalon
2018-01-03  1:42                       ` [PATCH v7 2/2] app/testpmd: use uevent to monitor hotplug Jeff Guo
2018-01-10  3:30                         ` [PATCH V8 0/3] add uevent mechanism in eal framework Jeff Guo
2018-01-10  3:30                           ` [PATCH V8 1/3] eal: add uevent monitor for hot plug Jeff Guo
2018-01-10  3:30                           ` [PATCH V8 2/3] igb_uio: fix device removal issuse for hotplug Jeff Guo
2018-01-10  3:30                           ` [PATCH V8 3/3] app/testpmd: use uevent to monitor hotplug Jeff Guo
2018-01-10  9:12                             ` [PATCH V9 0/5] add uevent mechanism in eal framework Jeff Guo
2018-01-10  9:12                               ` Jeff Guo [this message]
2018-01-10 16:34                                 ` [PATCH V9 1/5] eal: add uevent monitor api and callback func Stephen Hemminger
2018-01-11  1:43                                 ` Thomas Monjalon
2018-01-11 14:24                                   ` Guo, Jia
2018-01-10  9:12                               ` [PATCH V9 2/5] eal: add uevent pass and process function Jeff Guo
2018-01-11 14:05                                 ` [PATCH V10 1/2] eal: add uevent monitor api and callback func Jeff Guo
2018-01-11 14:05                                   ` [PATCH V10 2/2] eal: add uevent pass and process function Jeff Guo
2018-01-14 23:24                                     ` Thomas Monjalon
2018-01-15 10:52                                       ` Guo, Jia
2018-01-15 11:29                                         ` Thomas Monjalon
2018-01-15 15:33                                           ` Guo, Jia
2018-01-15 10:48                                     ` [PATCH V11 1/3] eal: add uevent monitor api and callback func Jeff Guo
2018-01-15 10:48                                       ` [PATCH V11 2/3] eal: add uevent pass and process function Jeff Guo
2018-01-17 22:00                                         ` Thomas Monjalon
2018-01-18  4:17                                           ` Guo, Jia
2018-01-15 10:48                                       ` [PATCH V11 3/3] app/testpmd: use uevent to monitor hotplug Jeff Guo
2018-01-18  4:12                                         ` [PATCH V12 1/3] eal: add uevent monitor api and callback func Jeff Guo
2018-01-18  4:12                                           ` [PATCH V12 2/3] eal: add uevent pass and process function Jeff Guo
2018-01-24 15:00                                             ` Wu, Jingjing
2018-01-18  4:12                                           ` [PATCH V12 3/3] app/testpmd: use uevent to monitor hotplug Jeff Guo
2018-01-24 15:21                                             ` Wu, Jingjing
2018-01-25 14:58                                               ` Guo, Jia
2018-01-25 14:46                                             ` [PATCH V13 1/3] eal: add uevent monitor api and callback func Jeff Guo
2018-01-25 14:46                                               ` [PATCH V13 2/3] eal: add uevent pass and process function Jeff Guo
2018-01-25 14:46                                               ` [PATCH V13 3/3] app/testpmd: use uevent to monitor hotplug Jeff Guo
2018-01-26  3:49                                             ` [PATCH V13 1/3] eal: add uevent monitor api and callback func Jeff Guo
2018-01-26  3:49                                               ` [PATCH V13 2/3] eal: add uevent pass and process function Jeff Guo
2018-01-26  3:49                                               ` [PATCH V13 3/3] app/testpmd: use uevent to monitor hotplug Jeff Guo
2018-01-30 12:20                                                 ` [PATCH V14 1/3] eal: add uevent monitor api and callback func Jeff Guo
2018-01-30 12:20                                                   ` [PATCH V14 2/3] eal: add uevent pass and process function Jeff Guo
2018-01-30 12:21                                                   ` [PATCH V14 3/3] app/testpmd: use uevent to monitor hotplug Jeff Guo
2018-01-31  5:21                                                     ` Wu, Jingjing
2018-03-21  5:27                                                     ` [PATCH V15 1/5] eal: add uevent monitor api and callback func Jeff Guo
2018-03-21  5:27                                                       ` [PATCH V15 2/5] eal: add uevent pass and process function Jeff Guo
2018-03-21 14:20                                                         ` Tan, Jianfeng
2018-03-22  8:20                                                           ` Guo, Jia
2018-03-21  5:27                                                       ` [PATCH V15 3/5] app/testpmd: use uevent to monitor hotplug Jeff Guo
2018-03-26 10:55                                                         ` [PATCH V16 0/3] add device event monitor framework Jeff Guo
2018-03-26 10:55                                                           ` [PATCH V16 1/3] eal: add device event handle in interrupt thread Jeff Guo
2018-03-26 10:55                                                           ` [PATCH V16 2/3] eal: add device event monitor framework Jeff Guo
2018-03-26 10:55                                                           ` [PATCH V16 3/3] app/testpmd: enable device hotplug monitoring Jeff Guo
2018-03-26 11:20                                                         ` [PATCH V16 0/4] add device event monitor framework Jeff Guo
2018-03-26 11:20                                                           ` [PATCH V16 1/4] eal: add device event handle in interrupt thread Jeff Guo
2018-03-27  9:26                                                             ` Tan, Jianfeng
2018-03-28  8:14                                                               ` Guo, Jia
2018-03-26 11:20                                                           ` [PATCH V16 2/4] eal: add device event monitor framework Jeff Guo
2018-03-28  3:39                                                             ` Tan, Jianfeng
2018-03-28  8:12                                                               ` Guo, Jia
2018-03-26 11:20                                                           ` [PATCH V16 3/4] eal/linux: uevent parse and process Jeff Guo
2018-03-28 16:15                                                             ` Tan, Jianfeng
2018-03-29 13:32                                                               ` Van Haaren, Harry
2018-03-29 15:03                                                                 ` Guo, Jia
2018-03-29 15:08                                                               ` Guo, Jia
2018-03-26 11:20                                                           ` [PATCH V16 4/4] app/testpmd: enable device hotplug monitoring Jeff Guo
2018-03-28 16:41                                                             ` Tan, Jianfeng
2018-03-29 16:00                                                             ` [PATCH V17 0/4] add device event monitor framework Jeff Guo
2018-03-29 16:00                                                               ` [PATCH V17 1/4] eal: add device event handle in interrupt thread Jeff Guo
2018-03-29 16:00                                                               ` [PATCH V17 2/4] eal: add device event monitor framework Jeff Guo
2018-03-29 16:00                                                               ` [PATCH V17 3/4] eal/linux: uevent parse and process Jeff Guo
2018-03-29 16:59                                                                 ` Stephen Hemminger
2018-04-02  4:20                                                                   ` Guo, Jia
2018-03-29 17:00                                                                 ` Stephen Hemminger
2018-04-02  4:19                                                                   ` Guo, Jia
2018-03-29 16:00                                                               ` [PATCH V17 4/4] app/testpmd: enable device hotplug monitoring Jeff Guo
2018-03-29 17:00                                                                 ` Stephen Hemminger
2018-04-02  4:18                                                                   ` Guo, Jia
2018-04-02  5:49                                                                 ` Wu, Jingjing
2018-04-02 11:31                                                                   ` Guo, Jia
2018-04-03 10:33                                                                 ` [PATCH V18 0/4] add device event monitor framework Jeff Guo
2018-04-03 10:33                                                                   ` [PATCH V18 1/4] eal: add device event handle in interrupt thread Jeff Guo
2018-04-04  1:47                                                                     ` Tan, Jianfeng
2018-04-04  4:00                                                                       ` Guo, Jia
2018-04-03 10:33                                                                   ` [PATCH V18 2/4] eal: add device event monitor framework Jeff Guo
2018-04-04  2:53                                                                     ` Tan, Jianfeng
2018-04-05  3:44                                                                       ` Guo, Jia
2018-04-03 10:33                                                                   ` [PATCH V18 3/4] eal/linux: uevent parse and process Jeff Guo
2018-04-04  3:15                                                                     ` Tan, Jianfeng
2018-04-05  6:09                                                                       ` Guo, Jia
2018-04-03 10:33                                                                   ` [PATCH V18 4/4] app/testpmd: enable device hotplug monitoring Jeff Guo
2018-04-04  3:22                                                                     ` Tan, Jianfeng
2018-04-04 16:31                                                                       ` Matan Azrad
2018-04-05  8:40                                                                         ` Guo, Jia
2018-04-05  9:03                                                                         ` Tan, Jianfeng
2018-04-05  8:32                                                                     ` [PATCH V19 0/4] add device event monitor framework Jeff Guo
2018-04-05  8:32                                                                       ` [PATCH V19 1/4] eal: add device event handle in interrupt thread Jeff Guo
2018-04-05  8:32                                                                       ` [PATCH V19 2/4] eal: add device event monitor framework Jeff Guo
2018-04-05 10:15                                                                         ` Tan, Jianfeng
2018-04-05  8:32                                                                       ` [PATCH V19 3/4] eal/linux: uevent parse and process Jeff Guo
2018-04-05  8:32                                                                       ` [PATCH V19 4/4] app/testpmd: enable device hotplug monitoring Jeff Guo
2018-04-05  9:02                                                                     ` [PATCH V19 0/4] add device event monitor framework Jeff Guo
2018-04-05  9:02                                                                       ` [PATCH V19 1/4] eal: add device event handle in interrupt thread Jeff Guo
2018-04-05  9:02                                                                       ` [PATCH V19 2/4] eal: add device event monitor framework Jeff Guo
2018-04-05  9:02                                                                       ` [PATCH V19 3/4] eal/linux: uevent parse and process Jeff Guo
2018-04-05 11:05                                                                         ` Tan, Jianfeng
2018-04-11 11:40                                                                           ` Guo, Jia
2018-04-05  9:02                                                                       ` [PATCH V19 4/4] app/testpmd: enable device hotplug monitoring Jeff Guo
2018-04-05 16:10                                                                         ` [PATCH V20 0/4] add device event monitor framework Jeff Guo
2018-04-05 16:10                                                                           ` [PATCH V20 1/4] eal: add device event handle in interrupt thread Jeff Guo
2018-04-05 16:10                                                                           ` [PATCH V20 2/4] eal: add device event monitor framework Jeff Guo
2018-04-05 21:54                                                                             ` Thomas Monjalon
2018-04-06  3:51                                                                               ` Guo, Jia
2018-04-05 16:10                                                                           ` [PATCH V20 3/4] eal/linux: uevent parse and process Jeff Guo
2018-04-05 16:22                                                                             ` Tan, Jianfeng
2018-04-06  3:47                                                                               ` Guo, Jia
2018-04-05 21:58                                                                             ` Thomas Monjalon
2018-04-06  3:52                                                                               ` Guo, Jia
2018-04-05 16:10                                                                           ` [PATCH V20 4/4] app/testpmd: enable device hotplug monitoring Jeff Guo
2018-04-05 21:48                                                                             ` Thomas Monjalon
2018-04-06  3:51                                                                               ` Guo, Jia
2018-04-06  3:54                                                                             ` [PATCH V21 0/4] add device event monitor framework Jeff Guo
2018-04-06  3:54                                                                               ` [PATCH V21 1/4] eal: add device event handle in interrupt thread Jeff Guo
2018-04-06  3:55                                                                               ` [PATCH V21 2/4] eal: add device event monitor framework Jeff Guo
2018-04-12  8:36                                                                                 ` Thomas Monjalon
2018-04-06  3:55                                                                               ` [PATCH V21 3/4] eal/linux: uevent parse and process Jeff Guo
2018-04-06  3:55                                                                               ` [PATCH V21 4/4] app/testpmd: enable device hotplug monitoring Jeff Guo
2018-01-31  0:44                                                   ` [PATCH V14 1/3] eal: add uevent monitor api and callback func Stephen Hemminger
2018-02-02 10:45                                                     ` Guo, Jia
2018-01-26 16:53                                               ` [PATCH V13 " Bruce Richardson
2018-01-27  3:48                                                 ` Guo, Jia
2018-01-30  0:14                                                   ` Thomas Monjalon
2018-01-30 12:20                                                     ` Guo, Jia
2018-01-19  1:13                                           ` [PATCH V12 " Thomas Monjalon
2018-01-19  2:51                                             ` Guo, Jia
2018-01-24 14:52                                           ` Wu, Jingjing
2018-01-25 14:57                                             ` Guo, Jia
2018-01-17 21:59                                       ` [PATCH V11 " Thomas Monjalon
2018-01-18  4:23                                         ` Guo, Jia
2018-01-19  1:10                                           ` Thomas Monjalon
2018-01-14 23:16                                   ` [PATCH V10 1/2] " Thomas Monjalon
2018-01-15 10:55                                     ` Guo, Jia
2018-01-15 11:32                                       ` Thomas Monjalon
2018-01-15 15:29                                         ` Guo, Jia
2018-01-10  9:12                               ` [PATCH V9 3/5] app/testpmd: use uevent to monitor hotplug Jeff Guo
2018-01-10  9:12                               ` [PATCH V9 4/5] pci_uio: add uevent hotplug failure handler in pci Jeff Guo
2018-01-10  9:12                               ` [PATCH V9 5/5] pci: add driver auto bind for hot insertion Jeff Guo
2018-03-21  6:11                                 ` [PATCH V15 1/2] pci_uio: add uevent hotplug failure handler in uio Jeff Guo
2018-03-21  6:11                                   ` [PATCH V15 2/2] pci: add driver auto bind for hot insertion Jeff Guo
2018-03-30  3:35                                   ` [PATCH V15 1/2] pci_uio: add uevent hotplug failure handler in uio Tan, Jianfeng
2017-12-14  9:48                   ` [PATCH v6 0/2] add uevent monitor for hot plug Mordechay Haimovsky
2017-12-14 10:21                     ` Gaëtan Rivet
2017-12-22  0:16                       ` Guo, Jia
2017-12-24 15:12                         ` Mordechay Haimovsky
2018-01-02  9:43                           ` Guo, Jia
2017-06-29  5:01       ` [PATCH v3 2/2] net/i40e: add hot plug monitor in i40e Jeff Guo
2017-07-04  7:15         ` Wu, Jingjing
2017-07-07  7:56         ` Thomas Monjalon
2017-07-07 10:17           ` Thomas Monjalon
2017-07-07 14:08             ` Guo, Jia
2017-07-09 22:35               ` Thomas Monjalon
2017-07-12  7:36                 ` Guo, Jia
2017-06-29  2:25   ` [PATCH v2 1/2] eal: add uevent api for hot plug Wu, Jingjing
2017-06-29  4:29     ` Guo, Jia
2017-07-04 23:45   ` Thomas Monjalon
2017-07-05  3:02     ` Guo, Jia
2017-07-05  7:32       ` Thomas Monjalon
2017-07-05  9:04         ` Guo, Jia
2017-08-22 14:56           ` Guo, Jia
2017-08-28 15:50             ` Gaëtan Rivet

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1515575544-2141-2-git-send-email-jia.guo@intel.com \
    --to=jia.guo@intel.com \
    --cc=bruce.richardson@intel.com \
    --cc=dev@dpdk.org \
    --cc=ferruh.yigit@intel.com \
    --cc=gaetan.rivet@6wind.com \
    --cc=helin.zhang@intel.com \
    --cc=jblunck@infradead.org \
    --cc=jingjing.wu@intel.com \
    --cc=konstantin.ananyev@intel.com \
    --cc=motih@mellanox.com \
    --cc=shreyansh.jain@nxp.com \
    --cc=stephen@networkplumber.org \
    --cc=thomas@monjalon.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.