Lines Matching refs:wl

41 	struct wakelock *wl;  in pm_show_wakelocks()  local
48 wl = rb_entry(node, struct wakelock, node); in pm_show_wakelocks()
49 if (wl->ws->active == show_active) in pm_show_wakelocks()
50 str += scnprintf(str, end - str, "%s ", wl->name); in pm_show_wakelocks()
93 static inline void wakelocks_lru_add(struct wakelock *wl) in wakelocks_lru_add() argument
95 list_add(&wl->lru, &wakelocks_lru_list); in wakelocks_lru_add()
98 static inline void wakelocks_lru_most_recent(struct wakelock *wl) in wakelocks_lru_most_recent() argument
100 list_move(&wl->lru, &wakelocks_lru_list); in wakelocks_lru_most_recent()
105 struct wakelock *wl, *aux; in __wakelocks_gc() local
111 list_for_each_entry_safe_reverse(wl, aux, &wakelocks_lru_list, lru) { in __wakelocks_gc()
115 spin_lock_irq(&wl->ws->lock); in __wakelocks_gc()
116 idle_time_ns = ktime_to_ns(ktime_sub(now, wl->ws->last_time)); in __wakelocks_gc()
117 active = wl->ws->active; in __wakelocks_gc()
118 spin_unlock_irq(&wl->ws->lock); in __wakelocks_gc()
124 wakeup_source_unregister(wl->ws); in __wakelocks_gc()
125 rb_erase(&wl->node, &wakelocks_tree); in __wakelocks_gc()
126 list_del(&wl->lru); in __wakelocks_gc()
127 kfree(wl->name); in __wakelocks_gc()
128 kfree(wl); in __wakelocks_gc()
145 static inline void wakelocks_lru_add(struct wakelock *wl) {} in wakelocks_lru_add() argument
146 static inline void wakelocks_lru_most_recent(struct wakelock *wl) {} in wakelocks_lru_most_recent() argument
155 struct wakelock *wl; in wakelock_lookup_add() local
161 wl = rb_entry(*node, struct wakelock, node); in wakelock_lookup_add()
162 diff = strncmp(name, wl->name, len); in wakelock_lookup_add()
164 if (wl->name[len]) in wakelock_lookup_add()
167 return wl; in wakelock_lookup_add()
181 wl = kzalloc(sizeof(*wl), GFP_KERNEL); in wakelock_lookup_add()
182 if (!wl) in wakelock_lookup_add()
185 wl->name = kstrndup(name, len, GFP_KERNEL); in wakelock_lookup_add()
186 if (!wl->name) { in wakelock_lookup_add()
187 kfree(wl); in wakelock_lookup_add()
191 wl->ws = wakeup_source_register(NULL, wl->name); in wakelock_lookup_add()
192 if (!wl->ws) { in wakelock_lookup_add()
193 kfree(wl->name); in wakelock_lookup_add()
194 kfree(wl); in wakelock_lookup_add()
197 wl->ws->last_time = ktime_get(); in wakelock_lookup_add()
199 rb_link_node(&wl->node, parent, node); in wakelock_lookup_add()
200 rb_insert_color(&wl->node, &wakelocks_tree); in wakelock_lookup_add()
201 wakelocks_lru_add(wl); in wakelock_lookup_add()
203 return wl; in wakelock_lookup_add()
209 struct wakelock *wl; in pm_wake_lock() local
233 wl = wakelock_lookup_add(buf, len, true); in pm_wake_lock()
234 if (IS_ERR(wl)) { in pm_wake_lock()
235 ret = PTR_ERR(wl); in pm_wake_lock()
242 __pm_wakeup_event(wl->ws, timeout_ms); in pm_wake_lock()
244 __pm_stay_awake(wl->ws); in pm_wake_lock()
247 wakelocks_lru_most_recent(wl); in pm_wake_lock()
256 struct wakelock *wl; in pm_wake_unlock() local
275 wl = wakelock_lookup_add(buf, len, false); in pm_wake_unlock()
276 if (IS_ERR(wl)) { in pm_wake_unlock()
277 ret = PTR_ERR(wl); in pm_wake_unlock()
280 __pm_relax(wl->ws); in pm_wake_unlock()
282 wakelocks_lru_most_recent(wl); in pm_wake_unlock()