| 1 |
|
| 2 | #ifndef _LINUX_PATH_H
|
| 3 | #define _LINUX_PATH_H
|
| 4 |
|
| 5 | struct dentry;
|
| 6 | struct vfsmount;
|
| 7 |
|
| 8 | struct path {
|
| 9 | struct vfsmount *mnt;
|
| 10 | struct dentry *dentry;
|
| 11 | } __randomize_layout;
|
| 12 |
|
| 13 | extern void path_get(const struct path *);
|
| 14 | extern void path_put(const struct path *);
|
| 15 |
|
| 16 | static inline int path_equal(const struct path *path1, const struct path *path2)
|
| 17 | {
|
| 18 | return path1->mnt == path2->mnt && path1->dentry == path2->dentry;
|
| 19 | }
|
| 20 |
|
| 21 | |
| 22 | * Cleanup macro for use with __free(path_put). Avoids dereference and
|
| 23 | * copying @path unlike DEFINE_FREE(). path_put() will handle the empty
|
| 24 | * path correctly just ensure @path is initialized:
|
| 25 | *
|
| 26 | * struct path path __free(path_put) = {};
|
| 27 |
|
| 28 | #define __free_path_put path_put
|
| 29 |
|
| 30 | #endif
|