Parametrize pipeline steps
This allows to reuse same step functions giving them different parameters on each step. Additionally move pipeline to utils, to make it accessible to other subsystems of OCF (e.g. metadata). Signed-off-by: Robert Baldyga <robert.baldyga@intel.com>
This commit is contained in:
parent
7a3b3fd84f
commit
23b0a32aec
File diff suppressed because it is too large
Load Diff
@ -458,83 +458,3 @@ int ocf_mngt_cache_visit_reverse(ocf_ctx_t ocf_ctx,
|
|||||||
|
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct ocf_mngt_pipeline {
|
|
||||||
ocf_mngt_pipeline_step_t *steps;
|
|
||||||
int next_step;
|
|
||||||
ocf_mngt_pipeline_end_t cmpl;
|
|
||||||
struct ocf_request *req;
|
|
||||||
bool finish;
|
|
||||||
int error;
|
|
||||||
|
|
||||||
void *priv;
|
|
||||||
};
|
|
||||||
|
|
||||||
static int _ocf_mngt_pipeline_run_step(struct ocf_request *req)
|
|
||||||
{
|
|
||||||
ocf_mngt_pipeline_t pipeline = req->priv;
|
|
||||||
|
|
||||||
if (pipeline->steps[pipeline->next_step] && !pipeline->finish)
|
|
||||||
pipeline->steps[pipeline->next_step++](pipeline, pipeline->priv);
|
|
||||||
else
|
|
||||||
pipeline->cmpl(pipeline, pipeline->priv, pipeline->error);
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
static const struct ocf_io_if _io_if_pipeline = {
|
|
||||||
.read = _ocf_mngt_pipeline_run_step,
|
|
||||||
.write = _ocf_mngt_pipeline_run_step,
|
|
||||||
};
|
|
||||||
|
|
||||||
int ocf_mngt_pipeline_create(ocf_mngt_pipeline_t *pipeline, ocf_cache_t cache,
|
|
||||||
ocf_mngt_pipeline_step_t *steps, ocf_mngt_pipeline_end_t cmpl,
|
|
||||||
void *priv)
|
|
||||||
{
|
|
||||||
ocf_mngt_pipeline_t tmp_pipeline;
|
|
||||||
struct ocf_request *req;
|
|
||||||
|
|
||||||
tmp_pipeline = env_vzalloc(sizeof(struct ocf_mngt_pipeline));
|
|
||||||
if (!tmp_pipeline)
|
|
||||||
return -OCF_ERR_NO_MEM;
|
|
||||||
|
|
||||||
req = ocf_req_new(cache->mngt_queue, NULL, 0, 0, 0);
|
|
||||||
if (!req) {
|
|
||||||
env_vfree(tmp_pipeline);
|
|
||||||
return -OCF_ERR_NO_MEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
tmp_pipeline->steps = steps;
|
|
||||||
tmp_pipeline->next_step = 0;
|
|
||||||
tmp_pipeline->cmpl = cmpl;
|
|
||||||
tmp_pipeline->req = req;
|
|
||||||
tmp_pipeline->finish = false;
|
|
||||||
tmp_pipeline->error = 0;
|
|
||||||
tmp_pipeline->priv = priv;
|
|
||||||
|
|
||||||
req->info.internal = true;
|
|
||||||
req->io_if = &_io_if_pipeline;
|
|
||||||
req->priv = tmp_pipeline;
|
|
||||||
|
|
||||||
*pipeline = tmp_pipeline;
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void ocf_mngt_pipeline_destroy(ocf_mngt_pipeline_t pipeline)
|
|
||||||
{
|
|
||||||
ocf_req_put(pipeline->req);
|
|
||||||
env_vfree(pipeline);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ocf_mngt_pipeline_next(ocf_mngt_pipeline_t pipeline)
|
|
||||||
{
|
|
||||||
ocf_engine_push_req_front(pipeline->req, true);
|
|
||||||
}
|
|
||||||
|
|
||||||
void ocf_mngt_pipeline_finish(ocf_mngt_pipeline_t pipeline, int error)
|
|
||||||
{
|
|
||||||
pipeline->finish = true;
|
|
||||||
pipeline->error = error;
|
|
||||||
ocf_engine_push_req_front(pipeline->req, true);
|
|
||||||
}
|
|
||||||
|
@ -30,22 +30,4 @@ int ocf_mngt_add_partition_to_cache(struct ocf_cache *cache,
|
|||||||
|
|
||||||
bool ocf_mngt_is_cache_locked(ocf_cache_t cache);
|
bool ocf_mngt_is_cache_locked(ocf_cache_t cache);
|
||||||
|
|
||||||
typedef struct ocf_mngt_pipeline *ocf_mngt_pipeline_t;
|
|
||||||
|
|
||||||
typedef void (*ocf_mngt_pipeline_step_t)(ocf_mngt_pipeline_t pipeline,
|
|
||||||
void *priv);
|
|
||||||
|
|
||||||
typedef void (*ocf_mngt_pipeline_end_t)(ocf_mngt_pipeline_t pipeline,
|
|
||||||
void *priv, int error);
|
|
||||||
|
|
||||||
int ocf_mngt_pipeline_create(ocf_mngt_pipeline_t *pipeline, ocf_cache_t cache,
|
|
||||||
ocf_mngt_pipeline_step_t *steps, ocf_mngt_pipeline_end_t cmpl,
|
|
||||||
void *priv);
|
|
||||||
|
|
||||||
void ocf_mngt_pipeline_destroy(ocf_mngt_pipeline_t pipeline);
|
|
||||||
|
|
||||||
void ocf_mngt_pipeline_next(ocf_mngt_pipeline_t pipeline);
|
|
||||||
|
|
||||||
void ocf_mngt_pipeline_finish(ocf_mngt_pipeline_t pipeline, int error);
|
|
||||||
|
|
||||||
#endif /* __OCF_MNGT_COMMON_H__ */
|
#endif /* __OCF_MNGT_COMMON_H__ */
|
||||||
|
126
src/utils/utils_pipeline.c
Normal file
126
src/utils/utils_pipeline.c
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
#include "ocf/ocf.h"
|
||||||
|
#include "../engine/cache_engine.h"
|
||||||
|
#include "../engine/engine_common.h"
|
||||||
|
#include "utils_pipeline.h"
|
||||||
|
#include "utils_req.h"
|
||||||
|
|
||||||
|
struct ocf_pipeline {
|
||||||
|
struct ocf_pipeline_properties *properties;
|
||||||
|
struct ocf_request *req;
|
||||||
|
int next_step;
|
||||||
|
int next_arg;
|
||||||
|
bool finish;
|
||||||
|
int error;
|
||||||
|
|
||||||
|
void *priv;
|
||||||
|
};
|
||||||
|
|
||||||
|
static int _ocf_pipeline_run_step(struct ocf_request *req)
|
||||||
|
{
|
||||||
|
ocf_pipeline_t pipeline = req->priv;
|
||||||
|
struct ocf_pipeline_step *step;
|
||||||
|
ocf_pipeline_arg_t arg;
|
||||||
|
|
||||||
|
if (pipeline->finish) {
|
||||||
|
pipeline->properties->finish(pipeline, pipeline->priv,
|
||||||
|
pipeline->error);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (true) {
|
||||||
|
step = &pipeline->properties->steps[pipeline->next_step];
|
||||||
|
switch (step->type) {
|
||||||
|
case ocf_pipeline_step_single:
|
||||||
|
pipeline->next_step++;
|
||||||
|
step->hndl(pipeline, pipeline->priv, &step->arg);
|
||||||
|
return 0;
|
||||||
|
case ocf_pipeline_step_foreach:
|
||||||
|
arg = &step->args[pipeline->next_arg++];
|
||||||
|
if (arg->type == ocf_pipeline_arg_terminator) {
|
||||||
|
pipeline->next_arg = 0;
|
||||||
|
pipeline->next_step++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
step->hndl(pipeline, pipeline->priv, arg);
|
||||||
|
return 0;
|
||||||
|
case ocf_pipeline_step_terminator:
|
||||||
|
pipeline->properties->finish(pipeline, pipeline->priv,
|
||||||
|
pipeline->error);
|
||||||
|
return 0;
|
||||||
|
default:
|
||||||
|
ENV_BUG();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const struct ocf_io_if _io_if_pipeline = {
|
||||||
|
.read = _ocf_pipeline_run_step,
|
||||||
|
.write = _ocf_pipeline_run_step,
|
||||||
|
};
|
||||||
|
|
||||||
|
int ocf_pipeline_create(ocf_pipeline_t *pipeline, ocf_cache_t cache,
|
||||||
|
struct ocf_pipeline_properties *properties)
|
||||||
|
{
|
||||||
|
ocf_pipeline_t tmp_pipeline;
|
||||||
|
struct ocf_request *req;
|
||||||
|
|
||||||
|
tmp_pipeline = env_vzalloc(sizeof(*tmp_pipeline) +
|
||||||
|
properties->priv_size);
|
||||||
|
if (!tmp_pipeline)
|
||||||
|
return -OCF_ERR_NO_MEM;
|
||||||
|
|
||||||
|
if (properties->priv_size > 0) {
|
||||||
|
tmp_pipeline->priv = (void *)tmp_pipeline +
|
||||||
|
sizeof(*tmp_pipeline);
|
||||||
|
}
|
||||||
|
|
||||||
|
req = ocf_req_new(cache->mngt_queue, NULL, 0, 0, 0);
|
||||||
|
if (!req) {
|
||||||
|
env_vfree(tmp_pipeline);
|
||||||
|
return -OCF_ERR_NO_MEM;
|
||||||
|
}
|
||||||
|
|
||||||
|
tmp_pipeline->properties = properties;
|
||||||
|
tmp_pipeline->req = req;
|
||||||
|
tmp_pipeline->next_step = 0;
|
||||||
|
tmp_pipeline->finish = false;
|
||||||
|
tmp_pipeline->error = 0;
|
||||||
|
|
||||||
|
req->info.internal = true;
|
||||||
|
req->io_if = &_io_if_pipeline;
|
||||||
|
req->priv = tmp_pipeline;
|
||||||
|
|
||||||
|
*pipeline = tmp_pipeline;
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ocf_pipeline_destroy(ocf_pipeline_t pipeline)
|
||||||
|
{
|
||||||
|
ocf_req_put(pipeline->req);
|
||||||
|
env_vfree(pipeline);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ocf_pipeline_set_priv(ocf_pipeline_t pipeline, void *priv)
|
||||||
|
{
|
||||||
|
pipeline->priv = priv;
|
||||||
|
}
|
||||||
|
|
||||||
|
void *ocf_pipeline_get_priv(ocf_pipeline_t pipeline)
|
||||||
|
{
|
||||||
|
return pipeline->priv;
|
||||||
|
}
|
||||||
|
|
||||||
|
void ocf_pipeline_next(ocf_pipeline_t pipeline)
|
||||||
|
{
|
||||||
|
ocf_engine_push_req_front(pipeline->req, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ocf_pipeline_finish(ocf_pipeline_t pipeline, int error)
|
||||||
|
{
|
||||||
|
pipeline->finish = true;
|
||||||
|
pipeline->error = error;
|
||||||
|
ocf_engine_push_req_front(pipeline->req, true);
|
||||||
|
}
|
134
src/utils/utils_pipeline.h
Normal file
134
src/utils/utils_pipeline.h
Normal file
@ -0,0 +1,134 @@
|
|||||||
|
/*
|
||||||
|
* Copyright(c) 2019 Intel Corporation
|
||||||
|
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef __UTILS_PIPELINE_H__
|
||||||
|
#define __UTILS_PIPELINE_H__
|
||||||
|
|
||||||
|
#include "../ocf_cache_priv.h"
|
||||||
|
|
||||||
|
enum ocf_pipeline_step_type {
|
||||||
|
ocf_pipeline_step_single,
|
||||||
|
ocf_pipeline_step_foreach,
|
||||||
|
ocf_pipeline_step_terminator,
|
||||||
|
};
|
||||||
|
|
||||||
|
enum ocf_pipeline_arg_type {
|
||||||
|
ocf_pipeline_arg_none,
|
||||||
|
ocf_pipeline_arg_int,
|
||||||
|
ocf_pipeline_arg_ptr,
|
||||||
|
ocf_pipeline_arg_terminator,
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ocf_pipeline_arg {
|
||||||
|
enum ocf_pipeline_arg_type type;
|
||||||
|
union {
|
||||||
|
int i;
|
||||||
|
void *p;
|
||||||
|
} val;
|
||||||
|
};
|
||||||
|
|
||||||
|
typedef struct ocf_pipeline_arg *ocf_pipeline_arg_t;
|
||||||
|
|
||||||
|
#define OCF_PL_ARG_NONE() \
|
||||||
|
{ .type = ocf_pipeline_arg_none, }
|
||||||
|
|
||||||
|
#define OCF_PL_ARG_INT(_int) \
|
||||||
|
{ .type = ocf_pipeline_arg_int, .val.i = _int }
|
||||||
|
|
||||||
|
#define OCF_PL_ARG_PTR(_ptr) \
|
||||||
|
{ .type = ocf_pipeline_arg_ptr, .val.p = _ptr }
|
||||||
|
|
||||||
|
#define OCF_PL_ARG_TERMINATOR() \
|
||||||
|
{ .type = ocf_pipeline_arg_terminator, }
|
||||||
|
|
||||||
|
static inline int ocf_pipeline_arg_get_int(ocf_pipeline_arg_t arg)
|
||||||
|
{
|
||||||
|
ENV_BUG_ON(arg->type != ocf_pipeline_arg_int);
|
||||||
|
|
||||||
|
return arg->val.i;
|
||||||
|
}
|
||||||
|
|
||||||
|
static inline void *ocf_pipeline_arg_get_ptr(ocf_pipeline_arg_t arg)
|
||||||
|
{
|
||||||
|
ENV_BUG_ON(arg->type != ocf_pipeline_arg_ptr);
|
||||||
|
|
||||||
|
return arg->val.p;
|
||||||
|
}
|
||||||
|
|
||||||
|
typedef struct ocf_pipeline *ocf_pipeline_t;
|
||||||
|
|
||||||
|
typedef void (*ocf_pipeline_step_hndl_t)(ocf_pipeline_t pipeline,
|
||||||
|
void *priv, ocf_pipeline_arg_t arg);
|
||||||
|
|
||||||
|
typedef void (*ocf_pipeline_finish_t)(ocf_pipeline_t pipeline,
|
||||||
|
void *priv, int error);
|
||||||
|
|
||||||
|
struct ocf_pipeline_step {
|
||||||
|
enum ocf_pipeline_step_type type;
|
||||||
|
ocf_pipeline_step_hndl_t hndl;
|
||||||
|
union {
|
||||||
|
struct ocf_pipeline_arg arg;
|
||||||
|
struct ocf_pipeline_arg *args;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
#define OCF_PL_STEP(_hndl) \
|
||||||
|
{ \
|
||||||
|
.type = ocf_pipeline_step_single, \
|
||||||
|
.hndl = _hndl, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define OCF_PL_STEP_ARG_INT(_hndl, _int) \
|
||||||
|
{ \
|
||||||
|
.type = ocf_pipeline_step_single, \
|
||||||
|
.hndl = _hndl, \
|
||||||
|
.arg = { \
|
||||||
|
.type = ocf_pipeline_arg_int, \
|
||||||
|
.val.i = _int, \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define OCF_PL_STEP_ARG_PTR(_hndl, _ptr) \
|
||||||
|
{ \
|
||||||
|
.type = ocf_pipeline_step_single, \
|
||||||
|
.hndl = _hndl, \
|
||||||
|
.arg = { \
|
||||||
|
.type = ocf_pipeline_arg_ptr, \
|
||||||
|
.val.p = _ptr, \
|
||||||
|
} \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define OCF_PL_STEP_FOREACH(_hndl, _args) \
|
||||||
|
{ \
|
||||||
|
.type = ocf_pipeline_step_foreach, \
|
||||||
|
.hndl = _hndl, \
|
||||||
|
.args = _args, \
|
||||||
|
}
|
||||||
|
|
||||||
|
#define OCF_PL_STEP_TERMINATOR() \
|
||||||
|
{ \
|
||||||
|
.type = ocf_pipeline_step_terminator, \
|
||||||
|
}
|
||||||
|
|
||||||
|
struct ocf_pipeline_properties {
|
||||||
|
uint32_t priv_size;
|
||||||
|
ocf_pipeline_finish_t finish;
|
||||||
|
struct ocf_pipeline_step steps[];
|
||||||
|
};
|
||||||
|
|
||||||
|
int ocf_pipeline_create(ocf_pipeline_t *pipeline, ocf_cache_t cache,
|
||||||
|
struct ocf_pipeline_properties *properties);
|
||||||
|
|
||||||
|
void ocf_pipeline_set_priv(ocf_pipeline_t pipeline, void *priv);
|
||||||
|
|
||||||
|
void *ocf_pipeline_get_priv(ocf_pipeline_t pipeline);
|
||||||
|
|
||||||
|
void ocf_pipeline_destroy(ocf_pipeline_t pipeline);
|
||||||
|
|
||||||
|
void ocf_pipeline_next(ocf_pipeline_t pipeline);
|
||||||
|
|
||||||
|
void ocf_pipeline_finish(ocf_pipeline_t pipeline, int error);
|
||||||
|
|
||||||
|
#endif /* __UTILS_PIPELINE_H__ */
|
@ -34,6 +34,7 @@
|
|||||||
#include "../utils/utils_device.h"
|
#include "../utils/utils_device.h"
|
||||||
#include "../utils/utils_io.h"
|
#include "../utils/utils_io.h"
|
||||||
#include "../utils/utils_cache_line.h"
|
#include "../utils/utils_cache_line.h"
|
||||||
|
#include "../utils/utils_pipeline.h"
|
||||||
#include "../ocf_utils.h"
|
#include "../ocf_utils.h"
|
||||||
#include "../concurrency/ocf_concurrency.h"
|
#include "../concurrency/ocf_concurrency.h"
|
||||||
#include "../eviction/ops.h"
|
#include "../eviction/ops.h"
|
||||||
@ -103,132 +104,152 @@ char *__wrap_ocf_cache_get_name(ocf_cache_t cache)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_test_volume_initial_write(
|
void __wrap__ocf_mngt_test_volume_initial_write(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_test_volume_first_read(
|
void __wrap_ocf_mngt_test_volume_first_read(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_test_volume_discard(
|
void __wrap__ocf_mngt_test_volume_discard(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_test_volume_second_read(
|
void __wrap__ocf_mngt_test_volume_second_read(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_cache_device(
|
void __wrap__ocf_mngt_attach_cache_device(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_check_ram(
|
void __wrap__ocf_mngt_attach_check_ram(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_load_properties(
|
void __wrap__ocf_mngt_attach_load_properties(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_prepare_metadata(
|
void __wrap__ocf_mngt_attach_prepare_metadata(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_test_volume(
|
void __wrap__ocf_mngt_test_volume(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_load_superblock(
|
void __wrap__ocf_mngt_attach_load_superblock(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_init_instance(
|
void __wrap__ocf_mngt_attach_init_instance(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_clean_pol(
|
void __wrap__ocf_mngt_attach_clean_pol(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_flush_metadata(
|
void __wrap__ocf_mngt_attach_flush_metadata(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_discard(
|
void __wrap__ocf_mngt_attach_discard(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_flush(
|
void __wrap__ocf_mngt_attach_flush(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_shutdown_status(
|
void __wrap__ocf_mngt_attach_shutdown_status(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_post_init(
|
void __wrap__ocf_mngt_attach_post_init(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_stop_wait_io(
|
void __wrap_ocf_mngt_cache_stop_wait_io(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_stop_remove_cores(
|
void __wrap_ocf_mngt_cache_stop_remove_cores(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_stop_unplug(
|
void __wrap_ocf_mngt_cache_stop_unplug(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_stop_put_io_queues(
|
void __wrap_ocf_mngt_cache_stop_put_io_queues(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_detach_flush(
|
void __wrap_ocf_mngt_cache_detach_flush(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_detach_wait_pending(
|
void __wrap_ocf_mngt_cache_detach_wait_pending(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_detach_update_metadata(
|
void __wrap_ocf_mngt_cache_detach_update_metadata(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_detach_unplug(
|
void __wrap_ocf_mngt_cache_detach_unplug(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_test_volume_first_read(
|
void __wrap__ocf_mngt_test_volume_first_read(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void __wrap__ocf_mngt_test_volume_finish(
|
||||||
|
ocf_pipeline_t pipeline, void *priv, int error)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void __wrap__ocf_mngt_cache_attach_finish(
|
||||||
|
ocf_pipeline_t pipeline, void *priv, int error)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void __wrap_ocf_mngt_cache_stop_finish(
|
||||||
|
ocf_pipeline_t pipeline, void *priv, int error)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void __wrap_ocf_mngt_cache_detach_finish(
|
||||||
|
ocf_pipeline_t pipeline, void *priv, int error)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include "../utils/utils_device.h"
|
#include "../utils/utils_device.h"
|
||||||
#include "../utils/utils_io.h"
|
#include "../utils/utils_io.h"
|
||||||
#include "../utils/utils_cache_line.h"
|
#include "../utils/utils_cache_line.h"
|
||||||
|
#include "../utils/utils_pipeline.h"
|
||||||
#include "../ocf_utils.h"
|
#include "../ocf_utils.h"
|
||||||
#include "../concurrency/ocf_concurrency.h"
|
#include "../concurrency/ocf_concurrency.h"
|
||||||
#include "../eviction/ops.h"
|
#include "../eviction/ops.h"
|
||||||
@ -60,132 +61,152 @@ char *__wrap_ocf_cache_get_name(ocf_cache_t cache)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_test_volume_initial_write(
|
void __wrap__ocf_mngt_test_volume_initial_write(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_test_volume_first_read(
|
void __wrap_ocf_mngt_test_volume_first_read(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_test_volume_discard(
|
void __wrap__ocf_mngt_test_volume_discard(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_test_volume_second_read(
|
void __wrap__ocf_mngt_test_volume_second_read(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_cache_device(
|
void __wrap__ocf_mngt_attach_cache_device(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_check_ram(
|
void __wrap__ocf_mngt_attach_check_ram(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_load_properties(
|
void __wrap__ocf_mngt_attach_load_properties(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_prepare_metadata(
|
void __wrap__ocf_mngt_attach_prepare_metadata(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_test_volume(
|
void __wrap__ocf_mngt_test_volume(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_load_superblock(
|
void __wrap__ocf_mngt_attach_load_superblock(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_init_instance(
|
void __wrap__ocf_mngt_attach_init_instance(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_clean_pol(
|
void __wrap__ocf_mngt_attach_clean_pol(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_flush_metadata(
|
void __wrap__ocf_mngt_attach_flush_metadata(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_discard(
|
void __wrap__ocf_mngt_attach_discard(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_flush(
|
void __wrap__ocf_mngt_attach_flush(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_shutdown_status(
|
void __wrap__ocf_mngt_attach_shutdown_status(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_attach_post_init(
|
void __wrap__ocf_mngt_attach_post_init(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_stop_wait_io(
|
void __wrap_ocf_mngt_cache_stop_wait_io(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_stop_remove_cores(
|
void __wrap_ocf_mngt_cache_stop_remove_cores(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_stop_unplug(
|
void __wrap_ocf_mngt_cache_stop_unplug(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_stop_put_io_queues(
|
void __wrap_ocf_mngt_cache_stop_put_io_queues(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_detach_flush(
|
void __wrap_ocf_mngt_cache_detach_flush(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_detach_wait_pending(
|
void __wrap_ocf_mngt_cache_detach_wait_pending(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_detach_update_metadata(
|
void __wrap_ocf_mngt_cache_detach_update_metadata(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap_ocf_mngt_cache_detach_unplug(
|
void __wrap_ocf_mngt_cache_detach_unplug(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
void __wrap__ocf_mngt_test_volume_first_read(
|
void __wrap__ocf_mngt_test_volume_first_read(
|
||||||
ocf_mngt_pipeline_t test_pipeline, void *priv)
|
ocf_pipeline_t pipeline, void *priv, ocf_pipeline_arg_t arg)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void __wrap__ocf_mngt_test_volume_finish(
|
||||||
|
ocf_pipeline_t pipeline, void *priv, int error)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void __wrap__ocf_mngt_cache_attach_finish(
|
||||||
|
ocf_pipeline_t pipeline, void *priv, int error)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void __wrap_ocf_mngt_cache_stop_finish(
|
||||||
|
ocf_pipeline_t pipeline, void *priv, int error)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void __wrap_ocf_mngt_cache_detach_finish(
|
||||||
|
ocf_pipeline_t pipeline, void *priv, int error)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user