Lines Matching refs:n
95 static void add_head(struct klist *k, struct klist_node *n) in add_head() argument
98 list_add(&n->n_node, &k->k_list); in add_head()
102 static void add_tail(struct klist *k, struct klist_node *n) in add_tail() argument
105 list_add_tail(&n->n_node, &k->k_list); in add_tail()
109 static void klist_node_init(struct klist *k, struct klist_node *n) in klist_node_init() argument
111 INIT_LIST_HEAD(&n->n_node); in klist_node_init()
112 kref_init(&n->n_ref); in klist_node_init()
113 knode_set_klist(n, k); in klist_node_init()
115 k->get(n); in klist_node_init()
123 void klist_add_head(struct klist_node *n, struct klist *k) in klist_add_head() argument
125 klist_node_init(k, n); in klist_add_head()
126 add_head(k, n); in klist_add_head()
135 void klist_add_tail(struct klist_node *n, struct klist *k) in klist_add_tail() argument
137 klist_node_init(k, n); in klist_add_tail()
138 add_tail(k, n); in klist_add_tail()
147 void klist_add_behind(struct klist_node *n, struct klist_node *pos) in klist_add_behind() argument
151 klist_node_init(k, n); in klist_add_behind()
153 list_add(&n->n_node, &pos->n_node); in klist_add_behind()
163 void klist_add_before(struct klist_node *n, struct klist_node *pos) in klist_add_before() argument
167 klist_node_init(k, n); in klist_add_before()
169 list_add_tail(&n->n_node, &pos->n_node); in klist_add_before()
187 struct klist_node *n = container_of(kref, struct klist_node, n_ref); in klist_release() local
189 WARN_ON(!knode_dead(n)); in klist_release()
190 list_del(&n->n_node); in klist_release()
193 if (waiter->node != n) in klist_release()
202 knode_set_klist(n, NULL); in klist_release()
205 static int klist_dec_and_del(struct klist_node *n) in klist_dec_and_del() argument
207 return kref_put(&n->n_ref, klist_release); in klist_dec_and_del()
210 static void klist_put(struct klist_node *n, bool kill) in klist_put() argument
212 struct klist *k = knode_klist(n); in klist_put()
217 knode_kill(n); in klist_put()
218 if (!klist_dec_and_del(n)) in klist_put()
222 put(n); in klist_put()
229 void klist_del(struct klist_node *n) in klist_del() argument
231 klist_put(n, true); in klist_del()
239 void klist_remove(struct klist_node *n) in klist_remove() argument
243 waiter.node = n; in klist_remove()
250 klist_del(n); in klist_remove()
266 int klist_node_attached(struct klist_node *n) in klist_node_attached() argument
268 return (n->n_klist != NULL); in klist_node_attached()
282 struct klist_node *n) in klist_iter_init_node() argument
286 if (n && kref_get_unless_zero(&n->n_ref)) in klist_iter_init_node()
287 i->i_cur = n; in klist_iter_init_node()
321 static struct klist_node *to_klist_node(struct list_head *n) in to_klist_node() argument
323 return container_of(n, struct klist_node, n_node); in to_klist_node()