1 #ifndef EVE_CLK_H_INCLUDED 2 #define EVE_CLK_H_INCLUDED 66 #define CLK_PERSISTENT(x) ((enum clk_level_t) ((x) | 0x80)) 172 #define CLK_LOCK_INIT(l, clk) \ 174 .dbg_link = DLIST_INIT(clk.dbg_link), \ 175 .dbg_file = __FILE__, \ 176 .dbg_line = __LINE__, \ 177 .link = DLIST_INIT(clk.link), \ 181 #define CLK_LOCK(pm) clk_lock_dbg(&pm, __FILE__, __LINE__) 182 #define CLK_UNLOCK(pm) clk_unlock_dbg(&pm, __FILE__, __LINE__) 183 #define CLK_AUTO_LOCK(l) \ 184 inline void clk_unlock_dbg_adapter(struct clk_lock_t *clk) { clk_unlock_dbg(clk, __FILE__, __LINE__); } \ 185 struct clk_lock_t EveClkAutoLock __attribute__((cleanup(clk_unlock_dbg_adapter))); \ 186 do { EveClkAutoLock = (struct clk_lock_t) CLK_LOCK_INIT(l, EveClkAutoLock); } while (0) 188 #define CLK_LOCK_INIT(l, clk) \ 190 .link = DLIST_INIT(clk.link), \ 194 #define CLK_LOCK(clk) clk_lock(&clk) 195 #define CLK_UNLOCK(clk) clk_unlock(&clk) 196 #define CLK_AUTO_LOCK(l) \ 197 struct clk_lock_t EveClkAutoLock __attribute__((cleanup(clk_unlock))); \ 198 do { EveClkAutoLock = (struct clk_lock_t) CLK_LOCK_INIT(l, EveClkAutoLock); } while (0) 215 #define DECLARE_CLK_LOCK(l, clk)\ 216 static struct clk_lock_t clk = CLK_LOCK_INIT(l, clk) 262 void clk_lock_dbg(
struct clk_lock_t *clk,
const char *file,
int line);
272 void clk_unlock_dbg(
struct clk_lock_t *clk,
const char *file,
int line);
void clk_lock(struct clk_lock_t *clk)
The code implements Dummy Headed Doubly Linked Circularlist (DHDLC) primitive.
void clk_unlock(struct clk_lock_t *clk)