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 
dcookie_register(void)52 static inline struct dcookie_user * dcookie_register(void)
53 {
54 	return NULL;
55 }
56 
dcookie_unregister(struct dcookie_user * user)57 static inline void dcookie_unregister(struct dcookie_user * user)
58 {
59 	return;
60 }
61 
get_dcookie(const struct path * path,unsigned long * cookie)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 */
70