net/mlx5e: Avoid unbounded peer devices when unpairing TC hairpin rules
[sfrench/cifs-2.6.git] / include / linux / dcookies.h
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * dcookies.h
4  *
5  * Persistent cookie-path mappings
6  *
7  * Copyright 2002 John Levon <levon@movementarian.org>
8  */
9
10 #ifndef DCOOKIES_H
11 #define DCOOKIES_H
12  
13
14 #ifdef CONFIG_PROFILING
15  
16 #include <linux/dcache.h>
17 #include <linux/types.h>
18  
19 struct dcookie_user;
20 struct path;
21  
22 /**
23  * dcookie_register - register a user of dcookies
24  *
25  * Register as a dcookie user. Returns %NULL on failure.
26  */
27 struct dcookie_user * dcookie_register(void);
28
29 /**
30  * dcookie_unregister - unregister a user of dcookies
31  *
32  * Unregister as a dcookie user. This may invalidate
33  * any dcookie values returned from get_dcookie().
34  */
35 void dcookie_unregister(struct dcookie_user * user);
36   
37 /**
38  * get_dcookie - acquire a dcookie
39  *
40  * Convert the given dentry/vfsmount pair into
41  * a cookie value.
42  *
43  * Returns -EINVAL if no living task has registered as a
44  * dcookie user.
45  *
46  * Returns 0 on success, with *cookie filled in
47  */
48 int get_dcookie(const struct path *path, unsigned long *cookie);
49
50 #else
51
52 static inline struct dcookie_user * dcookie_register(void)
53 {
54         return NULL;
55 }
56
57 static inline void dcookie_unregister(struct dcookie_user * user)
58 {
59         return;
60 }
61
62 static inline int get_dcookie(const struct path *path, unsigned long *cookie)
63 {
64         return -ENOSYS;
65 }
66
67 #endif /* CONFIG_PROFILING */
68
69 #endif /* DCOOKIES_H */