~ubuntu-branches/ubuntu/precise/linux-ti-omap4/precise

« back to all changes in this revision

Viewing changes to include/linux/rculist.h

  • Committer: Bazaar Package Importer
  • Author(s): Paolo Pisati
  • Date: 2011-06-29 15:23:51 UTC
  • mfrom: (26.1.1 natty-proposed)
  • Revision ID: james.westby@ubuntu.com-20110629152351-xs96tm303d95rpbk
Tags: 3.0.0-1200.2
* Rebased against 3.0.0-6.7
* BSP from TI based on 3.0.0

Show diffs side-by-side

added added

removed removed

Lines of Context:
241
241
#define list_first_entry_rcu(ptr, type, member) \
242
242
        list_entry_rcu((ptr)->next, type, member)
243
243
 
244
 
#define __list_for_each_entry_rcu(pos, head, member) \
245
 
        for (pos = list_entry_rcu((head)->next, typeof(*pos), member); \
246
 
                &pos->member != (head); \
247
 
                pos = list_entry_rcu(pos->member.next, typeof(*pos), member))
248
 
 
249
244
/**
250
245
 * list_for_each_entry_rcu      -       iterate over rcu list of given type
251
246
 * @pos:        the type * to use as a loop cursor.
258
253
 */
259
254
#define list_for_each_entry_rcu(pos, head, member) \
260
255
        for (pos = list_entry_rcu((head)->next, typeof(*pos), member); \
261
 
                prefetch(pos->member.next), &pos->member != (head); \
 
256
                &pos->member != (head); \
262
257
                pos = list_entry_rcu(pos->member.next, typeof(*pos), member))
263
258
 
264
259
 
275
270
 */
276
271
#define list_for_each_continue_rcu(pos, head) \
277
272
        for ((pos) = rcu_dereference_raw(list_next_rcu(pos)); \
278
 
                prefetch((pos)->next), (pos) != (head); \
 
273
                (pos) != (head); \
279
274
                (pos) = rcu_dereference_raw(list_next_rcu(pos)))
280
275
 
281
276
/**
289
284
 */
290
285
#define list_for_each_entry_continue_rcu(pos, head, member)             \
291
286
        for (pos = list_entry_rcu(pos->member.next, typeof(*pos), member); \
292
 
             prefetch(pos->member.next), &pos->member != (head);        \
 
287
             &pos->member != (head);    \
293
288
             pos = list_entry_rcu(pos->member.next, typeof(*pos), member))
294
289
 
295
290
/**
296
 
 * list_for_each_entry_continue_rcu -   continue iteration over typed rcu list
297
 
 * @pos:        the type * to use as a loop cursor.
298
 
 * @head:       the head for your list.
299
 
 * @member:     the name of the list_struct within the struct.
300
 
 *
301
 
 * This list-traversal primitive may safely run concurrently with
302
 
 * the _rcu list-mutation primitives such as list_add_rcu()
303
 
 * as long as the traversal is guarded by rcu_read_lock().
304
 
 * It continues an iteration initiated by list_for_each_entry_rcu().
305
 
 */
306
 
#define list_for_each_entry_continue_rcu(pos, head, member) \
307
 
        for (pos = list_entry_rcu(pos->member.next, typeof(*pos), member); \
308
 
                prefetch(pos->member.next), &pos->member != (head); \
309
 
                pos = list_entry_rcu(pos->member.next, typeof(*pos), member))
310
 
 
311
 
 
312
 
/**
313
291
 * hlist_del_rcu - deletes entry from hash list without re-initialization
314
292
 * @n: the element to delete from the hash list.
315
293
 *
449
427
 
450
428
#define __hlist_for_each_rcu(pos, head)                         \
451
429
        for (pos = rcu_dereference(hlist_first_rcu(head));      \
452
 
             pos && ({ prefetch(pos->next); 1; });              \
 
430
             pos;                                               \
453
431
             pos = rcu_dereference(hlist_next_rcu(pos)))
454
432
 
455
433
/**
465
443
 */
466
444
#define hlist_for_each_entry_rcu(tpos, pos, head, member)               \
467
445
        for (pos = rcu_dereference_raw(hlist_first_rcu(head));          \
468
 
                pos && ({ prefetch(pos->next); 1; }) &&                  \
 
446
                pos &&                                                   \
469
447
                ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; }); \
470
448
                pos = rcu_dereference_raw(hlist_next_rcu(pos)))
471
449
 
482
460
 */
483
461
#define hlist_for_each_entry_rcu_bh(tpos, pos, head, member)             \
484
462
        for (pos = rcu_dereference_bh((head)->first);                    \
485
 
                pos && ({ prefetch(pos->next); 1; }) &&                  \
 
463
                pos &&                                                   \
486
464
                ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; }); \
487
465
                pos = rcu_dereference_bh(pos->next))
488
466
 
494
472
 */
495
473
#define hlist_for_each_entry_continue_rcu(tpos, pos, member)            \
496
474
        for (pos = rcu_dereference((pos)->next);                        \
497
 
             pos && ({ prefetch(pos->next); 1; }) &&                    \
 
475
             pos &&                                                     \
498
476
             ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });  \
499
477
             pos = rcu_dereference(pos->next))
500
478
 
506
484
 */
507
485
#define hlist_for_each_entry_continue_rcu_bh(tpos, pos, member)         \
508
486
        for (pos = rcu_dereference_bh((pos)->next);                     \
509
 
             pos && ({ prefetch(pos->next); 1; }) &&                    \
 
487
             pos &&                                                     \
510
488
             ({ tpos = hlist_entry(pos, typeof(*tpos), member); 1; });  \
511
489
             pos = rcu_dereference_bh(pos->next))
512
490