00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef CUFLOW_TSTATE_H
00019 #define CUFLOW_TSTATE_H
00020
00021 #include <cuflow/fwd.h>
00022 #include <cu/conf.h>
00023 #include <cu/inherit.h>
00024 #include <cu/dlink.h>
00025 #include <cu/threadlocal.h>
00026 #include <cuflow/sched_types.h>
00027 #include <pthread.h>
00028
00029 CU_BEGIN_DECLARATIONS
00030
00031
00032
00033 struct cuflow_tstate
00034 {
00035 cu_inherit (cu_dlink);
00036 struct cuflow_exeq exeq[cuflow_exeqpri_end];
00037 cuflow_exeqpri_t exeqpri;
00038 };
00039
00040 CU_THREADLOCAL_DECL(cuflow_tstate, cuflowP_tstate);
00041
00042 CU_SINLINE cuflow_tstate_t
00043 cuflow_tstate_next(cuflow_tstate_t ts)
00044 {
00045 return cu_from(cuflow_tstate, cu_dlink, cu_to(cu_dlink, ts)->next);
00046 }
00047
00048
00049 CU_SINLINE cuflow_exeq_t
00050 cuflow_tstate_exeq(cuflow_tstate_t tstate)
00051 {
00052 return &tstate->exeq[tstate->exeqpri];
00053 }
00054
00055
00056 CU_END_DECLARATIONS
00057
00058 #endif