Lines Matching refs:wl
41 struct wakelock *wl; in pm_show_wakelocks() local
47 wl = rb_entry(node, struct wakelock, node); in pm_show_wakelocks()
48 if (wl->ws->active == show_active) in pm_show_wakelocks()
49 len += sysfs_emit_at(buf, len, "%s ", wl->name); in pm_show_wakelocks()
90 static inline void wakelocks_lru_add(struct wakelock *wl) in wakelocks_lru_add() argument
92 list_add(&wl->lru, &wakelocks_lru_list); in wakelocks_lru_add()
95 static inline void wakelocks_lru_most_recent(struct wakelock *wl) in wakelocks_lru_most_recent() argument
97 list_move(&wl->lru, &wakelocks_lru_list); in wakelocks_lru_most_recent()
102 struct wakelock *wl, *aux; in __wakelocks_gc() local
108 list_for_each_entry_safe_reverse(wl, aux, &wakelocks_lru_list, lru) { in __wakelocks_gc()
112 spin_lock_irq(&wl->ws->lock); in __wakelocks_gc()
113 idle_time_ns = ktime_to_ns(ktime_sub(now, wl->ws->last_time)); in __wakelocks_gc()
114 active = wl->ws->active; in __wakelocks_gc()
115 spin_unlock_irq(&wl->ws->lock); in __wakelocks_gc()
121 wakeup_source_unregister(wl->ws); in __wakelocks_gc()
122 rb_erase(&wl->node, &wakelocks_tree); in __wakelocks_gc()
123 list_del(&wl->lru); in __wakelocks_gc()
124 kfree(wl->name); in __wakelocks_gc()
125 kfree(wl); in __wakelocks_gc()
142 static inline void wakelocks_lru_add(struct wakelock *wl) {} in wakelocks_lru_add() argument
143 static inline void wakelocks_lru_most_recent(struct wakelock *wl) {} in wakelocks_lru_most_recent() argument
152 struct wakelock *wl; in wakelock_lookup_add() local
158 wl = rb_entry(*node, struct wakelock, node); in wakelock_lookup_add()
159 diff = strncmp(name, wl->name, len); in wakelock_lookup_add()
161 if (wl->name[len]) in wakelock_lookup_add()
164 return wl; in wakelock_lookup_add()
178 wl = kzalloc(sizeof(*wl), GFP_KERNEL); in wakelock_lookup_add()
179 if (!wl) in wakelock_lookup_add()
182 wl->name = kstrndup(name, len, GFP_KERNEL); in wakelock_lookup_add()
183 if (!wl->name) { in wakelock_lookup_add()
184 kfree(wl); in wakelock_lookup_add()
188 wl->ws = wakeup_source_register(NULL, wl->name); in wakelock_lookup_add()
189 if (!wl->ws) { in wakelock_lookup_add()
190 kfree(wl->name); in wakelock_lookup_add()
191 kfree(wl); in wakelock_lookup_add()
194 wl->ws->last_time = ktime_get(); in wakelock_lookup_add()
196 rb_link_node(&wl->node, parent, node); in wakelock_lookup_add()
197 rb_insert_color(&wl->node, &wakelocks_tree); in wakelock_lookup_add()
198 wakelocks_lru_add(wl); in wakelock_lookup_add()
200 return wl; in wakelock_lookup_add()
206 struct wakelock *wl; in pm_wake_lock() local
230 wl = wakelock_lookup_add(buf, len, true); in pm_wake_lock()
231 if (IS_ERR(wl)) { in pm_wake_lock()
232 ret = PTR_ERR(wl); in pm_wake_lock()
239 __pm_wakeup_event(wl->ws, timeout_ms); in pm_wake_lock()
241 __pm_stay_awake(wl->ws); in pm_wake_lock()
244 wakelocks_lru_most_recent(wl); in pm_wake_lock()
253 struct wakelock *wl; in pm_wake_unlock() local
272 wl = wakelock_lookup_add(buf, len, false); in pm_wake_unlock()
273 if (IS_ERR(wl)) { in pm_wake_unlock()
274 ret = PTR_ERR(wl); in pm_wake_unlock()
277 __pm_relax(wl->ws); in pm_wake_unlock()
279 wakelocks_lru_most_recent(wl); in pm_wake_unlock()