aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-meson/meson.c
Commit message (Expand)AuthorAge
* ARM: meson: add support for the Meson8m2 SoCsMartin Blumenstingl2018-05-10
* ARM: meson: Enable Meson8b SoCsCarlo Caione2015-10-08
* ARM: meson: enable L2 cacheBeniamino Galvani2014-11-18
* ARM: meson: add meson8 supportBeniamino Galvani2014-11-18
* ARM: meson: add basic support for MesonX SoCsCarlo Caione2014-09-25
org> 2005-07-12 19:00:58 -0400 [PATCH] name_to_dev_t warning fix' href='/cgit/cgit.cgi/litmus-rt-budgetable-locks.git/.git/commit/include/linux/mount.h?h=update_litmus_2019&id=d53d9f16ea95a91ad4aa114809dcde486ca4000d'>d53d9f16ea95
1da177e4c3f4
3d733633a633
1da177e4c3f4


726c33422318


6b3286ed1169
726c33422318
07b20889e305


fc33a7bb9c6d

47ae32d6a549
2e4b7fcd9260
d0adde574b84
bf066c7db775
5528f911b4c4
d3ef3d7351cc
5528f911b4c4
fc33a7bb9c6d

495d6c9c6595









1da177e4c3f4
8089352a13b7
1da177e4c3f4
07b20889e305
1da177e4c3f4






1da177e4c3f4
4ba4d4c0c522
88b387824fda
1da177e4c3f4
55e700b924f9
03e06e68ff76
a58b0eb8e64b


6b3286ed1169
73cd49ecdde9
719f5d7f0b90
4ba4d4c0c522






7b7b1ace2d9d
7c4b93d8269b
d3ef3d7351cc
003cb608a253
d3ef3d7351cc


1da177e4c3f4

d3ef3d7351cc








1da177e4c3f4






96029c4e09cc

8366025eb80d
96029c4e09cc

8366025eb80d
7b7b1ace2d9d


8366025eb80d
1da177e4c3f4




751c404b8f63
1da177e4c3f4


1da177e4c3f4


bb4a58bf4647




1da177e4c3f4

8d66bf548100

1da177e4c3f4



d53d9f16ea95
1da177e4c3f4
1da177e4c3f4
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139






                                                                           


                      
 
                        
                       
                           


                           


                   
                     
 


                            

                            
                            
                                                                        
                            
 
                             
                             
 

                                                                           









                                                                      
 
                              
 
                 






                                                                               
                      
                                           
                                                                               
                                  
                                                                             
                                                                            


                                                                                
                                                                  
                                                              
                                                                   






                                                                           
                       
                       
                 
                                  


                        

  








                                                            






                                                           

                              
                                                

                                                  
                                                 


                                                   
                                                   




                                               
                                      


         


                                                                    




                                                                     

                 

                                                                   



                                                                 
                                       
 
                           
/*
 *
 * Definitions for mount interface. This describes the in the kernel build 
 * linkedlist with mounted filesystems.
 *
 * Author:  Marco van Wieringen <mvw@planets.elm.net>
 *
 */
#ifndef _LINUX_MOUNT_H
#define _LINUX_MOUNT_H

#include <linux/types.h>
#include <linux/list.h>
#include <linux/nodemask.h>
#include <linux/spinlock.h>
#include <asm/atomic.h>

struct super_block;
struct vfsmount;
struct dentry;
struct mnt_namespace;

#define MNT_NOSUID	0x01
#define MNT_NODEV	0x02
#define MNT_NOEXEC	0x04
#define MNT_NOATIME	0x08
#define MNT_NODIRATIME	0x10
#define MNT_RELATIME	0x20
#define MNT_READONLY	0x40	/* does the user want this to be r/o? */
#define MNT_STRICTATIME 0x80

#define MNT_SHRINKABLE	0x100
#define MNT_WRITE_HOLD	0x200

#define MNT_SHARED	0x1000	/* if the vfsmount is a shared mount */
#define MNT_UNBINDABLE	0x2000	/* if the vfsmount is a unbindable mount */
/*
 * MNT_SHARED_MASK is the set of flags that should be cleared when a
 * mount becomes shared.  Currently, this is only the flag that says a
 * mount cannot be bind mounted, since this is how we create a mount
 * that shares events with another mount.  If you add a new MNT_*
 * flag, consider how it interacts with shared mounts.
 */
#define MNT_SHARED_MASK	(MNT_UNBINDABLE)
#define MNT_PROPAGATION_MASK	(MNT_SHARED | MNT_UNBINDABLE)


#define MNT_INTERNAL	0x4000

struct vfsmount {
	struct list_head mnt_hash;
	struct vfsmount *mnt_parent;	/* fs we are mounted on */
	struct dentry *mnt_mountpoint;	/* dentry of mountpoint */
	struct dentry *mnt_root;	/* root of the mounted tree */
	struct super_block *mnt_sb;	/* pointer to superblock */
	struct list_head mnt_mounts;	/* list of children, anchored here */
	struct list_head mnt_child;	/* and going through their mnt_child */
	int mnt_flags;
	/* 4 bytes hole on 64bits arches */
	const char *mnt_devname;	/* Name of device e.g. /dev/dsk/hda1 */
	struct list_head mnt_list;
	struct list_head mnt_expire;	/* link in fs-specific expiry list */
	struct list_head mnt_share;	/* circular list of shared mounts */
	struct list_head mnt_slave_list;/* list of slave mounts */
	struct list_head mnt_slave;	/* slave list entry */
	struct vfsmount *mnt_master;	/* slave is on master->mnt_slave_list */
	struct mnt_namespace *mnt_ns;	/* containing namespace */
	int mnt_id;			/* mount identifier */
	int mnt_group_id;		/* peer group identifier */
	/*
	 * We put mnt_count & mnt_expiry_mark at the end of struct vfsmount
	 * to let these frequently modified fields in a separate cache line
	 * (so that reads of mnt_flags wont ping-pong on SMP machines)
	 */
	atomic_t mnt_count;
	int mnt_expiry_mark;		/* true if marked for expiry */
	int mnt_pinned;
	int mnt_ghosts;
#ifdef CONFIG_SMP
	int __percpu *mnt_writers;
#else
	int mnt_writers;
#endif
};

static inline int *get_mnt_writers_ptr(struct vfsmount *mnt)
{
#ifdef CONFIG_SMP
	return mnt->mnt_writers;
#else
	return &mnt->mnt_writers;
#endif
}

static inline struct vfsmount *mntget(struct vfsmount *mnt)
{
	if (mnt)
		atomic_inc(&mnt->mnt_count);
	return mnt;
}

struct file; /* forward dec */

extern int mnt_want_write(struct vfsmount *mnt);
extern int mnt_want_write_file(struct file *file);
extern int mnt_clone_write(struct vfsmount *mnt);
extern void mnt_drop_write(struct vfsmount *mnt);
extern void mntput_no_expire(struct vfsmount *mnt);
extern void mnt_pin(struct vfsmount *mnt);
extern void mnt_unpin(struct vfsmount *mnt);
extern int __mnt_is_readonly(struct vfsmount *mnt);

static inline void mntput(struct vfsmount *mnt)
{
	if (mnt) {
		mnt->mnt_expiry_mark = 0;
		mntput_no_expire(mnt);
	}
}

extern struct vfsmount *do_kern_mount(const char *fstype, int flags,
				      const char *name, void *data);

struct file_system_type;
extern struct vfsmount *vfs_kern_mount(struct file_system_type *type,
				      int flags, const char *name,
				      void *data);

struct nameidata;

struct path;
extern int do_add_mount(struct vfsmount *newmnt, struct path *path,
			int mnt_flags, struct list_head *fslist);

extern void mark_mounts_for_expiry(struct list_head *mounts);

extern dev_t name_to_dev_t(char *name);

#endif /* _LINUX_MOUNT_H */