Merge pull request #76 from robertbaldyga/utils-pipeline-arg
Parametrize pipeline steps
This commit is contained in:
commit
f81a7e9d23
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;
|
||||
}
|
||||
|
||||
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);
|
||||
|
||||
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__ */
|
||||
|
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_io.h"
|
||||
#include "../utils/utils_cache_line.h"
|
||||
#include "../utils/utils_pipeline.h"
|
||||
#include "../ocf_utils.h"
|
||||
#include "../concurrency/ocf_concurrency.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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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_io.h"
|
||||
#include "../utils/utils_cache_line.h"
|
||||
#include "../utils/utils_pipeline.h"
|
||||
#include "../ocf_utils.h"
|
||||
#include "../concurrency/ocf_concurrency.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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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(
|
||||
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