@@ -35,6 +35,9 @@ RTE_TRACE_POINT_DEFINE(rte_trace_lib_eal_memzone_reserve);
RTE_TRACE_POINT_DEFINE(rte_trace_lib_eal_memzone_lookup);
RTE_TRACE_POINT_DEFINE(rte_trace_lib_eal_memzone_free);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_eal_thread_remote_launch);
+RTE_TRACE_POINT_DEFINE(rte_trace_lib_eal_thread_lcore_ready);
+
RTE_INIT(eal_trace_init)
{
RTE_TRACE_POINT_REGISTER(rte_trace_lib_eal_generic_void,
@@ -90,4 +93,9 @@ RTE_INIT(eal_trace_init)
lib.eal.memzone.lookup);
RTE_TRACE_POINT_REGISTER(rte_trace_lib_eal_memzone_free,
lib.eal.memzone.free);
+
+ RTE_TRACE_POINT_REGISTER(rte_trace_lib_eal_thread_remote_launch,
+ lib.eal.thread.remote.launch);
+ RTE_TRACE_POINT_REGISTER(rte_trace_lib_eal_thread_lcore_ready,
+ lib.eal.thread.lcore.ready);
}
@@ -85,7 +85,7 @@ rte_intr_callback_register(const struct rte_intr_handle *intr_handle,
{
struct rte_intr_callback *callback;
struct rte_intr_source *src;
- int ret, add_event = 0;
+ int ret = 0, add_event = 0;
/* first do parameter checking */
if (intr_handle == NULL || intr_handle->fd < 0 || cb == NULL) {
@@ -20,8 +20,7 @@
#include <rte_per_lcore.h>
#include <rte_eal.h>
#include <rte_lcore.h>
-#include <rte_trace.h>
-#include <rte_trace_point.h>
+#include <rte_trace_eal.h>
#include "eal_private.h"
#include "eal_thread.h"
@@ -42,9 +41,10 @@ rte_eal_remote_launch(int (*f)(void *), void *arg, unsigned slave_id)
char c = 0;
int m2s = lcore_config[slave_id].pipe_master2slave[1];
int s2m = lcore_config[slave_id].pipe_slave2master[0];
+ int rc = -EBUSY;
if (lcore_config[slave_id].state != WAIT)
- return -EBUSY;
+ goto finish;
lcore_config[slave_id].f = f;
lcore_config[slave_id].arg = arg;
@@ -64,7 +64,10 @@ rte_eal_remote_launch(int (*f)(void *), void *arg, unsigned slave_id)
if (n <= 0)
rte_panic("cannot read on configuration pipe\n");
- return 0;
+ rc = 0;
+finish:
+ rte_trace_lib_eal_thread_remote_launch(f, arg, slave_id, rc);
+ return rc;
}
/* set affinity for current thread */
@@ -127,6 +130,7 @@ eal_thread_loop(__rte_unused void *arg)
lcore_id, thread_id, cpuset, ret == 0 ? "" : "...");
__rte_trace_mem_per_thread_alloc();
+ rte_trace_lib_eal_thread_lcore_ready(lcore_id, cpuset);
/* read on our pipe to get commands */
while (1) {
@@ -205,6 +205,23 @@ RTE_TRACE_POINT(
rte_trace_point_emit_int(rc);
)
+/* Thread */
+RTE_TRACE_POINT(
+ rte_trace_lib_eal_thread_remote_launch,
+ RTE_TRACE_POINT_ARGS(int (*f)(void *), void *arg,
+ unsigned int slave_id, int rc),
+ rte_trace_point_emit_ptr(f);
+ rte_trace_point_emit_ptr(arg);
+ rte_trace_point_emit_u32(slave_id);
+ rte_trace_point_emit_int(rc);
+)
+RTE_TRACE_POINT(
+ rte_trace_lib_eal_thread_lcore_ready,
+ RTE_TRACE_POINT_ARGS(unsigned int lcore_id, const char *cpuset),
+ rte_trace_point_emit_u32(lcore_id);
+ rte_trace_point_emit_string(cpuset);
+)
+
#ifdef __cplusplus
}
@@ -20,8 +20,7 @@
#include <rte_per_lcore.h>
#include <rte_eal.h>
#include <rte_lcore.h>
-#include <rte_trace.h>
-#include <rte_trace_point.h>
+#include <rte_trace_eal.h>
#include "eal_private.h"
#include "eal_thread.h"
@@ -42,9 +41,10 @@ rte_eal_remote_launch(int (*f)(void *), void *arg, unsigned slave_id)
char c = 0;
int m2s = lcore_config[slave_id].pipe_master2slave[1];
int s2m = lcore_config[slave_id].pipe_slave2master[0];
+ int rc = -EBUSY;
if (lcore_config[slave_id].state != WAIT)
- return -EBUSY;
+ goto finish;
lcore_config[slave_id].f = f;
lcore_config[slave_id].arg = arg;
@@ -64,7 +64,10 @@ rte_eal_remote_launch(int (*f)(void *), void *arg, unsigned slave_id)
if (n <= 0)
rte_panic("cannot read on configuration pipe\n");
- return 0;
+ rc = 0;
+finish:
+ rte_trace_lib_eal_thread_remote_launch(f, arg, slave_id, rc);
+ return rc;
}
/* set affinity for current EAL thread */
@@ -127,6 +130,7 @@ eal_thread_loop(__rte_unused void *arg)
lcore_id, (uintptr_t)thread_id, cpuset, ret == 0 ? "" : "...");
__rte_trace_mem_per_thread_alloc();
+ rte_trace_lib_eal_thread_lcore_ready(lcore_id, cpuset);
/* read on our pipe to get commands */
while (1) {
@@ -382,4 +382,6 @@ EXPERIMENTAL {
__rte_trace_lib_eal_memzone_free;
__rte_trace_lib_eal_memzone_lookup;
__rte_trace_lib_eal_memzone_reserve;
+ __rte_trace_lib_eal_thread_lcore_ready;
+ __rte_trace_lib_eal_thread_remote_launch;
};