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