34 #define M0_TRACE_SUBSYSTEM M0_TRACE_SUBSYS_UT 121 pos %=
test->st_io_nr;
122 test->st_io_ready[pos] = bio;
123 test->st_op_ready[pos] =
op;
137 "implementation or I/O on be_ut_io_sched_stob " 145 pos %=
test->st_io_nr;
146 *bio =
test->st_io_ready[pos];
147 *
op =
test->st_op_ready[pos];
158 test->st_states[pos] = *state;
212 for (
i = 0;
i <
test->st_io_nr; ++
i) {
213 bio = &
test->st_io[
i];
227 for (
i = 0;
i <
test->st_sched_add_nr; ++
i) {
234 sizeof(
test->st_data));
244 for (
i = 0;
i <
test->st_io_nr; ++
i) {
317 .st_states_nr = states_nr,
318 .st_states_pos = &states_pos,
319 .st_ext_index = &ext_index,
338 #undef M0_TRACE_SUBSYSTEM
static void be_ut_io_sched_states_check(struct be_ut_io_sched_io_state *states, int states_nr, struct m0_atomic64 *states_pos)
static void be_ut_io_sched_io_completion_cb(struct m0_be_op *op, void *param)
#define M0_ALLOC_ARR(arr, nr)
m0_bcount_t bisc_pos_start
struct m0_atomic64 * st_states_pos
static void be_ut_io_sched_io_start_cb(struct m0_be_op *op, void *param)
M0_INTERNAL bool m0_semaphore_timeddown(struct m0_semaphore *semaphore, const m0_time_t abs_timeout)
struct m0_atomic64 st_io_ready_pos_del
M0_UT_THREADS_DEFINE(be_ut_io_sched, &be_ut_io_sched_thread)
M0_INTERNAL void m0_be_op_callback_set(struct m0_be_op *op, m0_be_op_cb_t cb, void *param, enum m0_be_op_state state)
struct m0_atomic64 * st_ext_index
M0_INTERNAL void m0_be_io_configure(struct m0_be_io *bio, enum m0_stob_io_opcode opcode)
M0_INTERNAL struct m0_stob * m0_ut_stob_linux_get(void)
M0_INTERNAL void m0_be_io_fini(struct m0_be_io *bio)
struct be_ut_io_sched_io_state * st_states
M0_INTERNAL int m0_be_io_sched_init(struct m0_be_io_sched *sched, struct m0_be_io_sched_cfg *cfg)
static void be_ut_io_sched_io_ready_get(struct be_ut_io_sched_test *test, struct m0_be_io **bio, struct m0_be_op **op)
M0_INTERNAL void * m0_be_io_user_data(struct m0_be_io *bio)
static void be_ut_io_sched_io_ready_add(struct be_ut_io_sched_test *test, struct m0_be_io *bio, struct m0_be_op *op)
struct m0_atomic64 st_io_ready_pos_add
static struct m0_stob * stob
m0_time_t m0_time_now(void)
M0_INTERNAL int m0_be_io_init(struct m0_be_io *bio)
static void be_ut_io_sched_thread(void *param)
M0_INTERNAL void m0_be_io_sched_lock(struct m0_be_io_sched *sched)
M0_INTERNAL int m0_semaphore_init(struct m0_semaphore *semaphore, unsigned value)
M0_INTERNAL void m0_be_io_sched_fini(struct m0_be_io_sched *sched)
struct m0_semaphore st_io_ready_sem
static m0_bindex_t offset
static void be_ut_io_sched_io_state_add(struct be_ut_io_sched_test *test, struct be_ut_io_sched_io_state *state)
#define M0_BE_IO_CREDIT(reg_nr, reg_size, part_nr)
M0_INTERNAL void m0_ut_stob_put(struct m0_stob *stob, bool destroy)
M0_INTERNAL void m0_be_io_user_data_set(struct m0_be_io *bio, void *data)
static int64_t m0_atomic64_get(const struct m0_atomic64 *a)
M0_INTERNAL void m0_be_op_reset(struct m0_be_op *op)
enum be_ut_io_sched_io_op sis_op
M0_INTERNAL void m0_be_io_sched_unlock(struct m0_be_io_sched *sched)
M0_INTERNAL uint64_t m0_rnd64(uint64_t *seed)
void m0_be_ut_io_sched(void)
M0_INTERNAL int m0_be_io_allocate(struct m0_be_io *bio, struct m0_be_io_credit *iocred)
M0_INTERNAL void m0_semaphore_fini(struct m0_semaphore *semaphore)
struct m0_be_io ** st_io_ready
M0_INTERNAL void m0_be_io_deallocate(struct m0_be_io *bio)
m0_time_t m0_time_from_now(uint64_t secs, long ns)
M0_INTERNAL void m0_be_op_fini(struct m0_be_op *op)
M0_INTERNAL void m0_be_io_sched_add(struct m0_be_io_sched *sched, struct m0_be_io *io, struct m0_ext *ext, struct m0_be_op *op)
#define M0_UT_THREADS_STOP(name)
#define M0_ASSERT_INFO(cond, fmt,...)
#define M0_UT_THREADS_START(name, thread_nr, param_array)
M0_INTERNAL void m0_semaphore_up(struct m0_semaphore *semaphore)
M0_INTERNAL void m0_be_op_init(struct m0_be_op *op)
M0_INTERNAL void m0_be_io_add(struct m0_be_io *bio, struct m0_stob *stob, void *ptr_user, m0_bindex_t offset_stob, m0_bcount_t size)
M0_INTERNAL void m0_be_io_reset(struct m0_be_io *bio)
static struct m0_sm_state_descr states[C_NR]
static struct m0_be_io_sched be_ut_io_sched_scheduler
static int64_t m0_atomic64_add_return(struct m0_atomic64 *a, int64_t d)
static void m0_atomic64_set(struct m0_atomic64 *a, int64_t num)
struct m0_be_op ** st_op_ready