From: Marcin Kerlin <marcinx.kerlin@intel.com>
To: dev@dpdk.org
Subject: [dpdk-dev] [PATCH V1 1/1] jobstats: added function abort for job
Date: Tue, 26 Jan 2016 17:15:34 +0100 [thread overview]
Message-ID: <1453824934-10650-1-git-send-email-marcinx.kerlin@intel.com> (raw)
This patch adds new function rte_jobstats_abort. It marks *job* as finished
and time of this work will be add to management time instead of execution time.
This function should be used instead of rte_jobstats_finish if condition occure,
condition is defined by the application for example when receiving n>0 packets.
Signed-off-by: Marcin Kerlin <marcinx.kerlin@intel.com>
---
lib/librte_jobstats/rte_jobstats.c | 22 ++++++++++++++++++++++
lib/librte_jobstats/rte_jobstats.h | 17 +++++++++++++++++
lib/librte_jobstats/rte_jobstats_version.map | 7 +++++++
3 files changed, 46 insertions(+)
diff --git a/lib/librte_jobstats/rte_jobstats.c b/lib/librte_jobstats/rte_jobstats.c
index 2eaac0c..b603125 100644
--- a/lib/librte_jobstats/rte_jobstats.c
+++ b/lib/librte_jobstats/rte_jobstats.c
@@ -170,6 +170,26 @@ rte_jobstats_start(struct rte_jobstats_context *ctx, struct rte_jobstats *job)
}
int
+rte_jobstats_abort(struct rte_jobstats *job)
+{
+ struct rte_jobstats_context *ctx;
+ uint64_t now, exec_time;
+
+ /* Some sanity check. */
+ if (unlikely(job == NULL || job->context == NULL))
+ return -EINVAL;
+
+ ctx = job->context;
+ now = get_time();
+ exec_time = now - ctx->state_time;
+ ADD_TIME_MIN_MAX(ctx, management, exec_time);
+ ctx->state_time = now;
+ job->context = NULL;
+
+ return 0;
+}
+
+int
rte_jobstats_finish(struct rte_jobstats *job, int64_t job_value)
{
struct rte_jobstats_context *ctx;
@@ -191,6 +211,7 @@ rte_jobstats_finish(struct rte_jobstats *job, int64_t job_value)
* executed. */
now = get_time();
exec_time = now - ctx->state_time;
+ job->last_job_time = exec_time;
ADD_TIME_MIN_MAX(job, exec, exec_time);
ADD_TIME_MIN_MAX(ctx, exec, exec_time);
@@ -269,5 +290,6 @@ void
rte_jobstats_reset(struct rte_jobstats *job)
{
RESET_TIME_MIN_MAX(job, exec);
+ job->last_job_time = 0;
job->exec_cnt = 0;
}
diff --git a/lib/librte_jobstats/rte_jobstats.h b/lib/librte_jobstats/rte_jobstats.h
index de6a89a..9995319 100644
--- a/lib/librte_jobstats/rte_jobstats.h
+++ b/lib/librte_jobstats/rte_jobstats.h
@@ -90,6 +90,9 @@ struct rte_jobstats {
uint64_t exec_cnt;
/**< Execute count. */
+ uint64_t last_job_time;
+ /**< Last job time */
+
char name[RTE_JOBSTATS_NAMESIZE];
/**< Name of this job */
@@ -237,6 +240,20 @@ int
rte_jobstats_start(struct rte_jobstats_context *ctx, struct rte_jobstats *job);
/**
+ * Mark that *job* finished its execution, but time of this work will be skipped
+ * and added to management time.
+ *
+ * @param job
+ * Job object.
+ *
+ * @return
+ * 0 on success
+ * -EINVAL if job is NULL or job was not started (it have no context).
+ */
+int
+rte_jobstats_abort(struct rte_jobstats *job);
+
+/**
* Mark that *job* finished its execution. Context in which it was executing
* will receive stat update. After this function call *job* object is ready to
* be executed in other context.
diff --git a/lib/librte_jobstats/rte_jobstats_version.map b/lib/librte_jobstats/rte_jobstats_version.map
index cb01bfd..0ec0650 100644
--- a/lib/librte_jobstats/rte_jobstats_version.map
+++ b/lib/librte_jobstats/rte_jobstats_version.map
@@ -17,3 +17,10 @@ DPDK_2.0 {
local: *;
};
+
+DPDK_2.3 {
+ global:
+
+ rte_jobstats_abort;
+
+} DPDK_2.0;
\ No newline at end of file
-- 1
1.9.1
next reply other threads:[~2016-01-26 16:12 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-01-26 16:15 Marcin Kerlin [this message]
2016-01-27 13:37 ` Panu Matilainen
2016-01-27 15:57 ` Jastrzebski, MichalX K
2016-01-28 7:41 ` Panu Matilainen
2016-01-29 15:31 ` [dpdk-dev] [PATCH v2 " Marcin Kerlin
2016-02-12 16:04 ` [dpdk-dev] [PATCH v3 " Marcin Kerlin
2016-02-16 13:19 ` Zhang, Roy Fan
2016-02-29 10:21 ` Thomas Monjalon
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=1453824934-10650-1-git-send-email-marcinx.kerlin@intel.com \
--to=marcinx.kerlin@intel.com \
--cc=dev@dpdk.org \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).