• Home
  • Raw
  • Download

Lines Matching full:list

7 (``struct list_head`` in list.h).  One big advantage of this approach is
8 that all of the required memory ordering is provided by the list macros.
9 This document describes several list-based RCU use cases.
12 Example 1: Read-mostly list: Deferred Destruction
16 all processes in the system. ``task_struct::tasks`` represents the list node that
17 links all the processes. The list can be traversed in parallel to any list
20 The traversal of the list is done using ``for_each_process()`` which is defined
29 The code traversing the list of all processes typically looks like::
38 task list is::
51 the task from the list of all tasks. The ``tasklist_lock``
52 prevents concurrent list additions/removals from corrupting the
53 list. Readers using ``for_each_process()`` are not protected with the
54 ``tasklist_lock``. To prevent readers from noticing changes in the list
58 any readers traversing the list will see valid ``p->tasks.next`` pointers
59 and deletion/freeing can happen in parallel with traversal of the list.
96 list_for_each_entry(e, &audit_tsklist, list) {
108 Here the list is searched under the lock, but the lock is dropped before
110 on, the list may well have been modified. This makes sense, since if
122 list_for_each_entry_rcu(e, &audit_tsklist, list) {
136 has become list_for_each_entry_rcu(). The **_rcu()** list-traversal
145 struct list_head *list)
150 list_for_each_entry(e, list, list) {
152 list_del(&e->list);
162 struct list_head *list)
167 list_add(&entry->list, list);
169 list_add_tail(&entry->list, list);
178 struct list_head *list)
184 list_for_each_entry(e, list, list) {
186 list_del_rcu(&e->list);
195 struct list_head *list)
199 list_add_rcu(&entry->list, list);
201 list_add_tail_rcu(&entry->list, list);
214 The **_rcu()** list-manipulation primitives add memory barriers that are
232 struct list_head *list,
241 list_for_each_entry(e, list, list) {
261 struct list_head *list,
268 list_for_each_entry(e, list, list) {
276 list_replace_rcu(&e->list, &ne->list);
334 list_for_each_entry_rcu(e, &audit_tsklist, list) {
356 struct list_head *list)
362 list_for_each_entry(e, list, list) {
365 list_del_rcu(&e->list);
388 stale objects during read-side list traversal, where stale objects
472 the list. In this example, a flag is used to skip such objects.
478 Read-mostly list-based data structures that can tolerate stale data are