cyclic: use a flag in gd->flags for recursion protection
As a preparation for future patches, use a flag in gd->flags rather than a separate member in (the singleton) struct cyclic_drv to keep track of whether we're already inside cyclic_run(). Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk> Reviewed-by: Stefan Roese <sr@denx.de> Tested-by: Stefan Roese <sr@denx.de> Tested-by: Tim Harvey <tharvey@gateworks.com> # imx8mm-venice-*
This commit is contained in:
parent
c8d9ff634f
commit
d7de5ef629
@ -66,10 +66,10 @@ void cyclic_run(void)
|
|||||||
uint64_t now, cpu_time;
|
uint64_t now, cpu_time;
|
||||||
|
|
||||||
/* Prevent recursion */
|
/* Prevent recursion */
|
||||||
if (gd->cyclic->cyclic_running)
|
if (gd->flags & GD_FLG_CYCLIC_RUNNING)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
gd->cyclic->cyclic_running = true;
|
gd->flags |= GD_FLG_CYCLIC_RUNNING;
|
||||||
list_for_each_entry_safe(cyclic, tmp, &gd->cyclic->cyclic_list, list) {
|
list_for_each_entry_safe(cyclic, tmp, &gd->cyclic->cyclic_list, list) {
|
||||||
/*
|
/*
|
||||||
* Check if this cyclic function needs to get called, e.g.
|
* Check if this cyclic function needs to get called, e.g.
|
||||||
@ -99,7 +99,7 @@ void cyclic_run(void)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
gd->cyclic->cyclic_running = false;
|
gd->flags &= ~GD_FLG_CYCLIC_RUNNING;
|
||||||
}
|
}
|
||||||
|
|
||||||
void schedule(void)
|
void schedule(void)
|
||||||
|
@ -650,6 +650,10 @@ enum gd_flags {
|
|||||||
* @GD_FLG_FDT_CHANGED: Device tree change has been detected by tests
|
* @GD_FLG_FDT_CHANGED: Device tree change has been detected by tests
|
||||||
*/
|
*/
|
||||||
GD_FLG_FDT_CHANGED = 0x100000,
|
GD_FLG_FDT_CHANGED = 0x100000,
|
||||||
|
/**
|
||||||
|
* GD_FLG_CYCLIC_RUNNING: cyclic_run is in progress
|
||||||
|
*/
|
||||||
|
GD_FLG_CYCLIC_RUNNING = 0x200000,
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* __ASSEMBLY__ */
|
#endif /* __ASSEMBLY__ */
|
||||||
|
@ -19,12 +19,10 @@
|
|||||||
*
|
*
|
||||||
* @cyclic_list: Cylic list node
|
* @cyclic_list: Cylic list node
|
||||||
* @cyclic_ready: Flag if cyclic infrastructure is ready
|
* @cyclic_ready: Flag if cyclic infrastructure is ready
|
||||||
* @cyclic_running: Flag if cyclic infrastructure is running
|
|
||||||
*/
|
*/
|
||||||
struct cyclic_drv {
|
struct cyclic_drv {
|
||||||
struct list_head cyclic_list;
|
struct list_head cyclic_list;
|
||||||
bool cyclic_ready;
|
bool cyclic_ready;
|
||||||
bool cyclic_running;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user