aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/list_nulls.h
diff options
context:
space:
mode:
authorMauro Carvalho Chehab <mchehab@osg.samsung.com>2015-02-23 14:02:19 -0500
committerMauro Carvalho Chehab <mchehab@osg.samsung.com>2015-02-23 14:02:19 -0500
commit99a85b901eb54f62ff0c3fd6eb56e60b7b9f15c8 (patch)
tree0c6637b7d2172e079c30e966847326767cbaf45c /include/linux/list_nulls.h
parent135f9be9194cf7778eb73594aa55791b229cf27c (diff)
parentc517d838eb7d07bbe9507871fab3931deccff539 (diff)
Merge tag 'v4.0-rc1' into patchwork
Linux 34.0-rc1 * tag 'v4.0-rc1': (8947 commits) Linux 4.0-rc1 autofs4 copy_dev_ioctl(): keep the value of ->size we'd used for allocation procfs: fix race between symlink removals and traversals debugfs: leave freeing a symlink body until inode eviction Documentation/filesystems/Locking: ->get_sb() is long gone trylock_super(): replacement for grab_super_passive() fanotify: Fix up scripted S_ISDIR/S_ISREG/S_ISLNK conversions Cachefiles: Fix up scripted S_ISDIR/S_ISREG/S_ISLNK conversions VFS: (Scripted) Convert S_ISLNK/DIR/REG(dentry->d_inode) to d_is_*(dentry) SELinux: Use d_is_positive() rather than testing dentry->d_inode Smack: Use d_is_positive() rather than testing dentry->d_inode TOMOYO: Use d_is_dir() rather than d_inode and S_ISDIR() Apparmor: Use d_is_positive/negative() rather than testing dentry->d_inode Apparmor: mediated_filesystem() should use dentry->d_sb not inode->i_sb VFS: Split DCACHE_FILE_TYPE into regular and special types VFS: Add a fallthrough flag for marking virtual dentries VFS: Add a whiteout dentry type VFS: Introduce inode-getting helpers for layered/unioned fs environments kernel: make READ_ONCE() valid on const arguments blk-throttle: check stats_cpu before reading it from sysfs ...
Diffstat (limited to 'include/linux/list_nulls.h')
-rw-r--r--include/linux/list_nulls.h6
1 files changed, 5 insertions, 1 deletions
diff --git a/include/linux/list_nulls.h b/include/linux/list_nulls.h
index 5d10ae364b5e..f266661d2666 100644
--- a/include/linux/list_nulls.h
+++ b/include/linux/list_nulls.h
@@ -1,6 +1,9 @@
1#ifndef _LINUX_LIST_NULLS_H 1#ifndef _LINUX_LIST_NULLS_H
2#define _LINUX_LIST_NULLS_H 2#define _LINUX_LIST_NULLS_H
3 3
4#include <linux/poison.h>
5#include <linux/const.h>
6
4/* 7/*
5 * Special version of lists, where end of list is not a NULL pointer, 8 * Special version of lists, where end of list is not a NULL pointer,
6 * but a 'nulls' marker, which can have many different values. 9 * but a 'nulls' marker, which can have many different values.
@@ -21,8 +24,9 @@ struct hlist_nulls_head {
21struct hlist_nulls_node { 24struct hlist_nulls_node {
22 struct hlist_nulls_node *next, **pprev; 25 struct hlist_nulls_node *next, **pprev;
23}; 26};
27#define NULLS_MARKER(value) (1UL | (((long)value) << 1))
24#define INIT_HLIST_NULLS_HEAD(ptr, nulls) \ 28#define INIT_HLIST_NULLS_HEAD(ptr, nulls) \
25 ((ptr)->first = (struct hlist_nulls_node *) (1UL | (((long)nulls) << 1))) 29 ((ptr)->first = (struct hlist_nulls_node *) NULLS_MARKER(nulls))
26 30
27#define hlist_nulls_entry(ptr, type, member) container_of(ptr,type,member) 31#define hlist_nulls_entry(ptr, type, member) container_of(ptr,type,member)
28/** 32/**