copy_engine: only calculate task size once
Track the maximum copy task size as modules are registered rather than recalculating it every time spdk_copy_task_size() is called. Change-Id: I141aca61e7075402dac41915080d1b43faee32ce Signed-off-by: Daniel Verkamp <daniel.verkamp@intel.com>
This commit is contained in:
parent
5b63b8a448
commit
fb08791096
@ -44,6 +44,8 @@
|
||||
#include "spdk/event.h"
|
||||
#include "spdk/io_channel.h"
|
||||
|
||||
static size_t g_max_copy_module_size = 0;
|
||||
|
||||
static struct spdk_copy_engine *hw_copy_engine = NULL;
|
||||
/* Memcpy engine always exist */
|
||||
static struct spdk_copy_engine *mem_copy_engine = NULL;
|
||||
@ -163,20 +165,15 @@ copy_engine_mem_get_ctx_size(void)
|
||||
size_t
|
||||
spdk_copy_task_size(void)
|
||||
{
|
||||
struct spdk_copy_module_if *copy_engine;
|
||||
size_t max_copy_module_size = 0;
|
||||
|
||||
TAILQ_FOREACH(copy_engine, &spdk_copy_module_list, tailq) {
|
||||
if (copy_engine->get_ctx_size && copy_engine->get_ctx_size() > max_copy_module_size) {
|
||||
max_copy_module_size = copy_engine->get_ctx_size();
|
||||
}
|
||||
}
|
||||
return max_copy_module_size;
|
||||
return g_max_copy_module_size;
|
||||
}
|
||||
|
||||
void spdk_copy_module_list_add(struct spdk_copy_module_if *copy_module)
|
||||
{
|
||||
TAILQ_INSERT_TAIL(&spdk_copy_module_list, copy_module, tailq);
|
||||
if (copy_module->get_ctx_size && copy_module->get_ctx_size() > g_max_copy_module_size) {
|
||||
g_max_copy_module_size = copy_module->get_ctx_size();
|
||||
}
|
||||
}
|
||||
|
||||
static int
|
||||
|
Loading…
Reference in New Issue
Block a user