dcookies.h 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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. #ifndef DCOOKIES_H
  10. #define DCOOKIES_H
  11. #ifdef CONFIG_PROFILING
  12. #include <linux/dcache.h>
  13. #include <linux/types.h>
  14. struct dcookie_user;
  15. struct path;
  16. /**
  17. * dcookie_register - register a user of dcookies
  18. *
  19. * Register as a dcookie user. Returns %NULL on failure.
  20. */
  21. struct dcookie_user * dcookie_register(void);
  22. /**
  23. * dcookie_unregister - unregister a user of dcookies
  24. *
  25. * Unregister as a dcookie user. This may invalidate
  26. * any dcookie values returned from get_dcookie().
  27. */
  28. void dcookie_unregister(struct dcookie_user * user);
  29. /**
  30. * get_dcookie - acquire a dcookie
  31. *
  32. * Convert the given dentry/vfsmount pair into
  33. * a cookie value.
  34. *
  35. * Returns -EINVAL if no living task has registered as a
  36. * dcookie user.
  37. *
  38. * Returns 0 on success, with *cookie filled in
  39. */
  40. int get_dcookie(const struct path *path, unsigned long *cookie);
  41. #else
  42. static inline struct dcookie_user * dcookie_register(void)
  43. {
  44. return NULL;
  45. }
  46. static inline void dcookie_unregister(struct dcookie_user * user)
  47. {
  48. return;
  49. }
  50. static inline int get_dcookie(const struct path *path, unsigned long *cookie)
  51. {
  52. return -ENOSYS;
  53. }
  54. #endif /* CONFIG_PROFILING */
  55. #endif /* DCOOKIES_H */