Prepare v2023.10
[platform/kernel/u-boot.git] / include / cyclic.h
index 7601636..44ad3cb 100644 (file)
 #include <asm/types.h>
 
 /**
- * struct cyclic_drv - Cyclic driver internal data
- *
- * @cyclic_list: Cylic list node
- * @cyclic_ready: Flag if cyclic infrastructure is ready
- * @cyclic_running: Flag if cyclic infrastructure is running
- */
-struct cyclic_drv {
-       struct list_head cyclic_list;
-       bool cyclic_ready;
-       bool cyclic_running;
-};
-
-/**
  * struct cyclic_info - Information about cyclic execution function
  *
  * @func: Function to call periodically
@@ -39,6 +26,7 @@ struct cyclic_drv {
  * @run_cnt: Counter of executions occurances
  * @next_call: Next time in us, when the function shall be executed again
  * @list: List node
+ * @already_warned: Flag that we've warned about exceeding CPU time usage
  */
 struct cyclic_info {
        void (*func)(void *ctx);
@@ -49,7 +37,8 @@ struct cyclic_info {
        uint64_t cpu_time_us;
        uint64_t run_cnt;
        uint64_t next_call;
-       struct list_head list;
+       struct hlist_node list;
+       bool already_warned;
 };
 
 /** Function type for cyclic functions */
@@ -77,18 +66,11 @@ struct cyclic_info *cyclic_register(cyclic_func_t func, uint64_t delay_us,
 int cyclic_unregister(struct cyclic_info *cyclic);
 
 /**
- * cyclic_init() - Set up cyclic functions
- *
- * Init a list of cyclic functions, so that these can be added as needed
- */
-int cyclic_init(void);
-
-/**
- * cyclic_uninit() - Clean up cyclic functions
+ * cyclic_unregister_all() - Clean up cyclic functions
  *
  * This removes all cyclic functions
  */
-int cyclic_uninit(void);
+int cyclic_unregister_all(void);
 
 /**
  * cyclic_get_list() - Get cyclic list pointer
@@ -97,7 +79,7 @@ int cyclic_uninit(void);
  *
  * @return: pointer to cyclic_list
  */
-struct list_head *cyclic_get_list(void);
+struct hlist_head *cyclic_get_list(void);
 
 /**
  * cyclic_run() - Interate over all registered cyclic functions
@@ -136,12 +118,7 @@ static inline void schedule(void)
 {
 }
 
-static inline int cyclic_init(void)
-{
-       return 0;
-}
-
-static inline int cyclic_uninit(void)
+static inline int cyclic_unregister_all(void)
 {
        return 0;
 }