DAOS API (v2.1 - dev)
Loading...
Searching...
No Matches
tse.h
Go to the documentation of this file.
1/*
2 * (C) Copyright 2015-2024 Intel Corporation.
3 * (C) Copyright 2026 Hewlett Packard Enterprise Development LP
4 *
5 * SPDX-License-Identifier: BSD-2-Clause-Patent
6 */
13
14#ifndef __TSE_SCHEDULE_H__
15#define __TSE_SCHEDULE_H__
16
17#include <gurt/list.h>
18
19#include <pthread.h>
20#include <inttypes.h>
21#include <stdbool.h>
22
24#define TSE_TASK_ARG_LEN (840 + sizeof(pthread_mutex_t))
26#define TSE_PRIV_SIZE (TSE_TASK_ARG_LEN + 136)
28#define TSE_TASK_SIZE (TSE_PRIV_SIZE + 8)
29
31typedef struct tse_task {
37 struct {
38 char dt_space[TSE_PRIV_SIZE];
39 } dt_private;
41
43typedef struct {
46
48 void *ds_udata;
49
51 struct {
52 uint64_t ds_space[48];
53 } ds_private;
55
57typedef int (*tse_sched_comp_cb_t)(void *args, int rc);
59typedef int (*tse_task_func_t)(tse_task_t *);
60
62typedef int (*tse_task_cb_t)(tse_task_t *, void *arg);
63
65void *
67
71
86int
88 void *udata);
89
95void
97
103void
105
111void
113
122void
123tse_sched_complete(tse_sched_t *sched, int ret, bool cancel);
124
135int
137
148void
150
158bool
160
182int
183tse_task_create(tse_task_func_t task_func, tse_sched_t *sched, void *priv,
184 tse_task_t **taskp);
185
197int
198tse_task_schedule(tse_task_t *task, bool instant);
199
210int
211tse_task_schedule_with_delay(tse_task_t *task, bool instant, uint64_t delay);
212
224int
226 void *arg, size_t arg_size);
227
242int
244 size_t arg_size, uint64_t delay);
245
252void
254
267void *
269
274void *
276
281void *
282tse_task_set_priv(tse_task_t *task, void *priv);
283
296int
298 tse_task_t *dep_tasks[]);
299
315int
317 void *prep_data, size_t prep_data_size,
318 tse_task_cb_t comp_cb, void *comp_data,
319 size_t comp_data_size);
320
334int
336
347int
349
363int
364tse_task_reset(tse_task_t *task, tse_task_func_t task_func, void *priv);
365
367void
369
371void
373
378int
379tse_task_list_add(tse_task_t *task, d_list_t *head);
380
384void
386
392tse_task_list_first(d_list_t *head);
393
397void
398tse_task_list_sched(d_list_t *head, bool instant);
399
403void
404tse_task_list_abort(d_list_t *head, int rc);
405
409int
410tse_task_list_depend(d_list_t *head, tse_task_t *task);
411
415int
416tse_task_depend_list(tse_task_t *task, d_list_t *head);
417
423int
424tse_task_list_traverse(d_list_t *head, tse_task_cb_t cb, void *arg);
425
430int
431tse_task_list_traverse_adv(d_list_t *head, tse_task_cb_t cb, void *arg);
432
436void
438
439#endif /* __TSE_SCHEDULE_H__ */
void * ds_udata
Definition tse.h:48
int ds_result
Definition tse.h:45
Definition tse.h:31
int dt_result
Definition tse.h:33
int dt_pad32
Definition tse.h:35
int(*) tse_task_cb_t(tse_task_t *, void *arg)
Definition tse.h:62
tse_sched_t * tse_task2sched(tse_task_t *task)
int tse_task_list_traverse_adv(d_list_t *head, tse_task_cb_t cb, void *arg)
int tse_task_register_comp_cb_and_reinit(tse_task_t *task, tse_task_cb_t comp_cb, void *arg, size_t arg_size, uint64_t delay)
int tse_task_register_deps(tse_task_t *task, int num_deps, tse_task_t *dep_tasks[])
#define TSE_PRIV_SIZE
Definition tse.h:26
struct tse_task tse_task_t
void tse_sched_complete(tse_sched_t *sched, int ret, bool cancel)
void tse_task_list_sched(d_list_t *head, bool instant)
int tse_task_list_depend(d_list_t *head, tse_task_t *task)
void tse_sched_addref(tse_sched_t *sched)
void tse_task_addref(tse_task_t *task)
void * tse_task_buf_embedded(tse_task_t *task, int size)
void * tse_task_set_priv(tse_task_t *task, void *priv)
int tse_task_reinit(tse_task_t *task)
int(*) tse_sched_comp_cb_t(void *args, int rc)
Definition tse.h:57
int tse_task_register_cbs(tse_task_t *task, tse_task_cb_t prep_cb, void *prep_data, size_t prep_data_size, tse_task_cb_t comp_cb, void *comp_data, size_t comp_data_size)
void tse_sched_decref(tse_sched_t *sched)
int tse_task_register_comp_cb(tse_task_t *task, tse_task_cb_t comp_cb, void *arg, size_t arg_size)
int(*) tse_task_func_t(tse_task_t *)
Definition tse.h:59
int tse_task_schedule_with_delay(tse_task_t *task, bool instant, uint64_t delay)
void tse_task_list_abort(d_list_t *head, int rc)
void tse_task_complete(tse_task_t *task, int ret)
void * tse_task2arg(tse_task_t *task)
void tse_sched_progress(tse_sched_t *sched)
int tse_task_schedule(tse_task_t *task, bool instant)
void * tse_task_get_priv(tse_task_t *task)
int tse_task_reinit_with_delay(tse_task_t *task, uint64_t delay)
int tse_task_depend_list(tse_task_t *task, d_list_t *head)
int tse_sched_register_comp_cb(tse_sched_t *sched, tse_sched_comp_cb_t comp_cb, void *arg)
int tse_sched_init(tse_sched_t *sched, tse_sched_comp_cb_t comp_cb, void *udata)
void tse_task_decref(tse_task_t *task)
bool tse_sched_check_complete(tse_sched_t *sched)
tse_task_t * tse_task_list_first(d_list_t *head)
int tse_task_create(tse_task_func_t task_func, tse_sched_t *sched, void *priv, tse_task_t **taskp)
int tse_task_list_add(tse_task_t *task, d_list_t *head)
void tse_disable_propagate(tse_task_t *task)
int tse_task_list_traverse(d_list_t *head, tse_task_cb_t cb, void *arg)
int tse_task_reset(tse_task_t *task, tse_task_func_t task_func, void *priv)
void tse_sched_fini(tse_sched_t *sched)
void tse_task_list_del(tse_task_t *task)