54 lines
1.2 KiB
C
54 lines
1.2 KiB
C
/*
|
|
* Copyright(c) 2020-2021 Intel Corporation
|
|
* SPDX-License-Identifier: BSD-3-Clause-Clear
|
|
*/
|
|
|
|
#ifndef __OCF_SEQ_CUTOFF_H__
|
|
#define __OCF_SEQ_CUTOFF_H__
|
|
|
|
#include "ocf/ocf.h"
|
|
#include "ocf_request.h"
|
|
#include "utils/utils_rbtree.h"
|
|
|
|
struct ocf_seq_cutoff_stream {
|
|
uint64_t last;
|
|
uint64_t bytes;
|
|
uint32_t rw : 1;
|
|
uint32_t valid : 1;
|
|
uint32_t req_count : 16;
|
|
struct ocf_rb_node node;
|
|
struct list_head list;
|
|
};
|
|
|
|
struct ocf_seq_cutoff {
|
|
ocf_core_t core;
|
|
env_rwlock lock;
|
|
struct ocf_rb_tree tree;
|
|
struct list_head lru;
|
|
struct ocf_seq_cutoff_stream streams[];
|
|
};
|
|
|
|
struct ocf_seq_cutoff_percore {
|
|
struct ocf_seq_cutoff base;
|
|
struct ocf_seq_cutoff_stream streams[OCF_SEQ_CUTOFF_PERCORE_STREAMS];
|
|
};
|
|
|
|
struct ocf_seq_cutoff_perqueue {
|
|
struct ocf_seq_cutoff base;
|
|
struct ocf_seq_cutoff_stream streams[OCF_SEQ_CUTOFF_PERQUEUE_STREAMS];
|
|
};
|
|
|
|
int ocf_core_seq_cutoff_init(ocf_core_t core);
|
|
|
|
void ocf_core_seq_cutoff_deinit(ocf_core_t core);
|
|
|
|
int ocf_queue_seq_cutoff_init(ocf_queue_t queue);
|
|
|
|
void ocf_queue_seq_cutoff_deinit(ocf_queue_t queue);
|
|
|
|
bool ocf_core_seq_cutoff_check(ocf_core_t core, struct ocf_request *req);
|
|
|
|
void ocf_core_seq_cutoff_update(ocf_core_t core, struct ocf_request *req);
|
|
|
|
#endif /* __OCF_SEQ_CUTOFF_H__ */
|