dcookies.h 1.3 KB

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