23#if VSF_USE_KERNEL == ENABLED && defined(__EDA_GADGET__)
38#if VSF_KERNEL_CFG_SUPPORT_SYNC == ENABLED
47 eda = __vsf_eda_get_valid_eda(eda);
50#if VSF_KERNEL_CFG_EDA_SUPPORT_TIMER == ENABLED
51 eda->flag.state.is_limitted =
true;
52# ifdef __VSF_OS_CFG_EVTQ_LIST
57 eda->flag.state.is_to_set_due =
true;
63 #ifndef WEAK_VSF_KERNEL_ERR_REPORT
76 eda = __vsf_eda_get_valid_eda(eda);
84 __vsf_eda_sync_set_timeout(eda,
timeout);
99#if __IS_COMPILER_LLVM__ || __IS_COMPILER_ARM_COMPILER_6__
100# pragma clang diagnostic push
101# pragma clang diagnostic ignored "-Wcast-align"
104#if __IS_COMPILER_GCC__
105# pragma GCC diagnostic push
106# pragma GCC diagnostic ignored "-Wcast-align"
120#if VSF_KERNEL_CFG_EDA_SUPPORT_TIMER == ENABLED
123 if (eda->flag.state.is_sync_got) {
142 eda->flag.state.is_sync_got =
false;
149 eda->flag.state.is_limitted =
false;
153#if __IS_COMPILER_LLVM__ || __IS_COMPILER_ARM_COMPILER_6__
154# pragma clang diagnostic pop
156#if __IS_COMPILER_GCC__
157# pragma GCC diagnostic pop
165 pthis->cur_union.cur_value = cur;
166 pthis->max_union.max_value =
max;
168 if (pthis->cur_union.bits.has_owner) {
174#if VSF_SYNC_CFG_SUPPORT_ISR == ENABLED
192 if (pthis->cur_union.bits.cur >= pthis->max_union.bits.max) {
196 pthis->cur_union.bits.cur++;
197#if VSF_KERNEL_CFG_SUPPORT_DYNAMIC_PRIOTIRY == ENABLED
198 if (pthis->cur_union.bits.has_owner) {
199 eda = __vsf_eda_get_valid_eda(eda);
204 if (eda->cur_priority != eda->priority) {
206 }
else if (eda->flag.state.is_new_prio) {
210 eda->flag.state.is_new_prio =
false;
220 if (pthis->cur_union.bits.cur > 0) {
221 eda_pending = __vsf_eda_sync_get_eda_pending(pthis);
222 if (eda_pending !=
NULL) {
223 eda_pending->flag.state.is_sync_got =
true;
225 pthis->cur_union.bits.cur--;
227#if VSF_KERNEL_CFG_SUPPORT_DYNAMIC_PRIOTIRY == ENABLED
228 if (pthis->cur_union.bits.has_owner) {
235 if (eda_pending !=
NULL) {
268 pthis->cur_union.bits.cur = 0;
279 eda = __vsf_eda_get_valid_eda(eda);
284 pthis->cur_union.bits.cur--;
286#if VSF_KERNEL_CFG_SUPPORT_DYNAMIC_PRIOTIRY == ENABLED
287 if (pthis->cur_union.bits.has_owner) {
297#if VSF_KERNEL_CFG_SUPPORT_DYNAMIC_PRIOTIRY == ENABLED
298 if (pthis->cur_union.bits.has_owner) {
303 &pthis->pending_list,
305 _->cur_priority < cur_priority);
306 __vsf_eda_sync_set_timeout(eda,
timeout);
312#if VSF_KERNEL_CFG_SUPPORT_DYNAMIC_PRIOTIRY == ENABLED
313 if (pthis->cur_union.bits.has_owner) {
316 if (eda->cur_priority > eda_owner->cur_priority) {
348 eda = __vsf_eda_sync_get_eda_pending(pthis);
350 eda->flag.state.is_sync_got =
true;
356 }
while (eda !=
NULL);
362 return __vsf_eda_sync_get_reason(pthis, evt,
true);
#define VSF_CAL_SECTION(__SEC_STR)
Definition __compiler.h:186
#define VSF_UNUSED_PARAM(__VAL)
Definition __type.h:190
vsf_err_t
Definition __type.h:42
@ VSF_ERR_NONE
none error
Definition __type.h:44
@ VSF_ERR_NOT_READY
service not ready yet
Definition __type.h:43
@ VSF_ERR_OVERRUN
overrun
Definition __type.h:60
__le16 timeout
Definition ieee80211.h:94
#define NULL
Definition lvgl.h:26
#define max(x, y)
Definition minmax.h:12
unsigned short uint_fast16_t
Definition stdint.h:25
void sync(void)
Definition vsf_linux_fs.c:2150
uintalu_t vsf_protect_t
Definition vsf_arch_abstraction.h:53
vsf_eda_t * vsf_eda_get_cur(void)
Definition vsf_eda.c:416
vsf_err_t __vsf_os_evtq_set_priority(vsf_evtq_t *pthis, vsf_prio_t priority)
Definition vsf_os.c:339
vsf_err_t vsf_eda_post_msg(vsf_eda_t *pthis, void *msg)
Definition vsf_eda.c:955
vsf_err_t __vsf_eda_post_evt_ex(vsf_eda_t *pthis, vsf_evt_t evt, bool force)
Definition vsf_eda.c:947
void vsf_kernel_err_report(enum vsf_kernel_error_t err)
Definition vsf_eda.c:409
int16_t vsf_evt_t
Definition vsf_eda.h:654
vsf_err_t vsf_eda_sync_init(vsf_sync_t *pthis, uint_fast16_t cur_value, uint_fast16_t max_value)
vsf_sync_reason_t vsf_eda_sync_get_reason(vsf_sync_t *pthis, vsf_evt_t evt)
vsf_err_t vsf_eda_sync_increase(vsf_sync_t *pthis)
@ VSF_KERNEL_ERR_EDA_DOES_NOT_SUPPORT_TIMER
Definition vsf_eda.h:1090
vsf_err_t vsf_eda_sync_decrease(vsf_sync_t *pthis, vsf_timeout_tick_t timeout)
vsf_systimer_tick_t vsf_systimer_get_tick(void)
VSF_KERNEL_TIMEOUT_TICK_T vsf_timeout_tick_t
Definition vsf_eda.h:592
vsf_err_t vsf_teda_set_timer_ex(vsf_teda_t *pthis, vsf_systimer_tick_t tick)
vsf_err_t __vsf_eda_set_priority(vsf_eda_t *pthis, vsf_prio_t prio)
Definition vsf_evtq_list.c:84
vsf_prio_t __vsf_eda_get_cur_priority(vsf_eda_t *pthis)
Definition vsf_evtq_list.c:77
vsf_err_t __vsf_eda_sync_decrease_ex(vsf_sync_t *pthis, vsf_timeout_tick_t timeout, vsf_eda_t *eda, bool manual)
@ VSF_EVT_SYNC_CANCEL
Definition vsf_eda.h:616
@ VSF_EVT_SYNC
Definition vsf_eda.h:615
@ VSF_EVT_TIMER
Definition vsf_eda.h:612
void vsf_eda_sync_force_reset(vsf_sync_t *pthis)
vsf_err_t __vsf_eda_sync_increase_ex(vsf_sync_t *pthis, vsf_eda_t *eda, bool manual)
vsf_err_t vsf_eda_sync_increase_isr(vsf_sync_t *pthis)
vsf_err_t vsf_eda_sync_decrease_ex(vsf_sync_t *pthis, vsf_timeout_tick_t timeout, vsf_eda_t *eda)
vsf_err_t __vsf_teda_cancel_timer(vsf_teda_t *pthis)
vsf_sync_reason_t
Definition vsf_eda.h:1056
@ VSF_SYNC_GET
Definition vsf_eda.h:1060
@ VSF_SYNC_FAIL
Definition vsf_eda.h:1057
@ VSF_SYNC_CANCEL
Definition vsf_eda.h:1061
@ VSF_SYNC_TIMEOUT
Definition vsf_eda.h:1058
@ VSF_SYNC_PENDING
Definition vsf_eda.h:1059
vsf_err_t vsf_eda_sync_increase_ex(vsf_sync_t *pthis, vsf_eda_t *eda)
void vsf_eda_sync_cancel(vsf_sync_t *pthis)
#define VSF_KERNEL_ASSERT
Definition vsf_kernel_cfg.h:32
vsf_prio_t
Definition vsf_kernel_common.h:37
void __vsf_eda_sync_pend(vsf_sync_t *sync, vsf_eda_t *eda, vsf_timeout_tick_t timeout)
#define vsf_dlist_insert( __host_type, __member, __list_ptr, __item_ptr, __cond)
Definition vsf_list.h:769
#define vsf_dlist_queue_dequeue(__host_type, __member, __list_ptr, __item_ref_ptr)
Definition vsf_list.h:859
#define vsf_dlist_remove( __host_type, __member, __list_ptr, __item_ptr)
Definition vsf_list.h:810
#define vsf_dlist_is_empty(__list_ptr)
Definition vsf_list.h:705
#define vsf_dlist_init(__list_ptr)
Definition vsf_list.h:702
#define vsf_dlist_queue_enqueue(__host_type, __member, __list_ptr, __item_ptr)
Definition vsf_list.h:852
#define vsf_protect_sched()
Definition vsf_os.h:88
#define vsf_unprotect_sched(__prot)
Definition vsf_os.h:89
vsf_evtq_t * __vsf_os_evtq_get(vsf_prio_t priority)
Definition vsf_os.c:322