~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

Linux Cross Reference
Linux/include/linux/devfs_fs_kernel.h

Version: ~ [ 2.4.0 ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

  1 #ifndef _LINUX_DEVFS_FS_KERNEL_H
  2 #define _LINUX_DEVFS_FS_KERNEL_H
  3 
  4 #include <linux/fs.h>
  5 #include <linux/config.h>
  6 
  7 #define DEVFS_SUPER_MAGIC                0x1373
  8 
  9 #define IS_DEVFS_INODE(inode) (DEVFS_SUPER_MAGIC == (inode)->i_sb->s_magic)
 10 
 11 #define DEVFS_MINOR(inode) \
 12     ({unsigned int m; /* evil GCC trickery */ \
 13       ((inode)->i_sb && \
 14        ((inode)->i_sb->s_magic==DEVFS_SUPER_MAGIC) && \
 15        (devfs_get_maj_min(devfs_get_handle_from_inode((inode)),NULL,&m)==0) \
 16       ) ? m : MINOR((inode)->r_dev); })
 17 
 18 
 19 #define DEVFS_FL_NONE           0x000 /* This helps to make code more readable
 20                                        */
 21 #define DEVFS_FL_AUTO_OWNER     0x001 /* When a closed inode is opened the
 22                                          ownerships are set to the opening
 23                                          process and the protection is set to
 24                                          that given in <<mode>>. When the inode
 25                                          is closed, ownership reverts back to
 26                                          <<uid>> and <<gid>> and the protection
 27                                          is set to read-write for all        */
 28 #define DEVFS_FL_SHOW_UNREG     0x002 /* Show unregistered entries in
 29                                          directory listings                  */
 30 #define DEVFS_FL_HIDE           0x004 /* Do not show entry in directory list */
 31 #define DEVFS_FL_AUTO_DEVNUM    0x008 /* Automatically generate device number
 32                                        */
 33 #define DEVFS_FL_AOPEN_NOTIFY   0x010 /* Asynchronously notify devfsd on open
 34                                        */
 35 #define DEVFS_FL_REMOVABLE      0x020 /* This is a removable media device    */
 36 #define DEVFS_FL_WAIT           0x040 /* Wait for devfsd to finish           */
 37 #define DEVFS_FL_NO_PERSISTENCE 0x080 /* Forget changes after unregister     */
 38 #define DEVFS_FL_CURRENT_OWNER  0x100 /* Set initial ownership to current    */
 39 #define DEVFS_FL_DEFAULT        DEVFS_FL_NONE
 40 
 41 
 42 #define DEVFS_SPECIAL_CHR     0
 43 #define DEVFS_SPECIAL_BLK     1
 44 
 45 typedef struct devfs_entry * devfs_handle_t;
 46 
 47 
 48 #ifdef CONFIG_BLK_DEV_INITRD
 49 #  define ROOT_DEVICE_NAME ((real_root_dev ==ROOT_DEV) ? root_device_name:NULL)
 50 #else
 51 #  define ROOT_DEVICE_NAME root_device_name
 52 #endif
 53 
 54 
 55 #ifdef CONFIG_DEVFS_FS
 56 extern devfs_handle_t devfs_register (devfs_handle_t dir, const char *name,
 57                                       unsigned int flags,
 58                                       unsigned int major, unsigned int minor,
 59                                       umode_t mode, void *ops, void *info);
 60 extern void devfs_unregister (devfs_handle_t de);
 61 extern int devfs_mk_symlink (devfs_handle_t dir, const char *name,
 62                              unsigned int flags, const char *link,
 63                              devfs_handle_t *handle, void *info);
 64 extern devfs_handle_t devfs_mk_dir (devfs_handle_t dir, const char *name,
 65                                     void *info);
 66 extern devfs_handle_t devfs_find_handle (devfs_handle_t dir, const char *name,
 67                                          unsigned int major,unsigned int minor,
 68                                          char type, int traverse_symlinks);
 69 extern int devfs_get_flags (devfs_handle_t de, unsigned int *flags);
 70 extern int devfs_set_flags (devfs_handle_t de, unsigned int flags);
 71 extern int devfs_get_maj_min (devfs_handle_t de, 
 72                               unsigned int *major, unsigned int *minor);
 73 extern devfs_handle_t devfs_get_handle_from_inode (struct inode *inode);
 74 extern int devfs_generate_path (devfs_handle_t de, char *path, int buflen);
 75 extern void *devfs_get_ops (devfs_handle_t de);
 76 extern int devfs_set_file_size (devfs_handle_t de, unsigned long size);
 77 extern void *devfs_get_info (devfs_handle_t de);
 78 extern int devfs_set_info (devfs_handle_t de, void *info);
 79 extern devfs_handle_t devfs_get_parent (devfs_handle_t de);
 80 extern devfs_handle_t devfs_get_first_child (devfs_handle_t de);
 81 extern devfs_handle_t devfs_get_next_sibling (devfs_handle_t de);
 82 extern void devfs_auto_unregister (devfs_handle_t master,devfs_handle_t slave);
 83 extern devfs_handle_t devfs_get_unregister_slave (devfs_handle_t master);
 84 extern const char *devfs_get_name (devfs_handle_t de, unsigned int *namelen);
 85 extern int devfs_register_chrdev (unsigned int major, const char *name,
 86                                   struct file_operations *fops);
 87 extern int devfs_register_blkdev (unsigned int major, const char *name,
 88                                   struct block_device_operations *bdops);
 89 extern int devfs_unregister_chrdev (unsigned int major, const char *name);
 90 extern int devfs_unregister_blkdev (unsigned int major, const char *name);
 91 
 92 extern void devfs_register_tape (devfs_handle_t de);
 93 extern void devfs_register_series (devfs_handle_t dir, const char *format,
 94                                    unsigned int num_entries,
 95                                    unsigned int flags, unsigned int major,
 96                                    unsigned int minor_start,
 97                                    umode_t mode, void *ops, void *info);
 98 
 99 extern int init_devfs_fs (void);
100 extern void mount_devfs_fs (void);
101 extern void devfs_make_root (const char *name);
102 #else  /*  CONFIG_DEVFS_FS  */
103 static inline devfs_handle_t devfs_register (devfs_handle_t dir,
104                                              const char *name,
105                                              unsigned int flags,
106                                              unsigned int major,
107                                              unsigned int minor,
108                                              umode_t mode,
109                                              void *ops, void *info)
110 {
111     return NULL;
112 }
113 static inline void devfs_unregister (devfs_handle_t de)
114 {
115     return;
116 }
117 static inline int devfs_mk_symlink (devfs_handle_t dir, const char *name,
118                                     unsigned int flags, const char *link,
119                                     devfs_handle_t *handle, void *info)
120 {
121     return 0;
122 }
123 static inline devfs_handle_t devfs_mk_dir (devfs_handle_t dir,
124                                            const char *name, void *info)
125 {
126     return NULL;
127 }
128 static inline devfs_handle_t devfs_find_handle (devfs_handle_t dir,
129                                                 const char *name,
130                                                 unsigned int major,
131                                                 unsigned int minor,
132                                                 char type,
133                                                 int traverse_symlinks)
134 {
135     return NULL;
136 }
137 static inline int devfs_get_flags (devfs_handle_t de, unsigned int *flags)
138 {
139     return 0;
140 }
141 static inline int devfs_set_flags (devfs_handle_t de, unsigned int flags)
142 {
143     return 0;
144 }
145 static inline int devfs_get_maj_min (devfs_handle_t de, 
146                                      unsigned int *major, unsigned int *minor)
147 {
148     return 0;
149 }
150 static inline devfs_handle_t devfs_get_handle_from_inode (struct inode *inode)
151 {
152     return NULL;
153 }
154 static inline int devfs_generate_path (devfs_handle_t de, char *path,
155                                        int buflen)
156 {
157     return -ENOSYS;
158 }
159 static inline void *devfs_get_ops (devfs_handle_t de)
160 {
161     return NULL;
162 }
163 static inline int devfs_set_file_size (devfs_handle_t de, unsigned long size)
164 {
165     return -ENOSYS;
166 }
167 static inline void *devfs_get_info (devfs_handle_t de, unsigned long size)
168 {
169     return NULL;
170 }
171 static inline int devfs_set_info (devfs_handle_t de, void *info)
172 {
173     return 0;
174 }
175 static inline devfs_handle_t devfs_get_parent (devfs_handle_t de)
176 {
177     return NULL;
178 }
179 static inline devfs_handle_t devfs_get_first_child (devfs_handle_t de)
180 {
181     return NULL;
182 }
183 static inline devfs_handle_t devfs_get_next_sibling (devfs_handle_t de)
184 {
185     return NULL;
186 }
187 static inline void devfs_auto_unregister (devfs_handle_t master,
188                                           devfs_handle_t slave)
189 {
190     return;
191 }
192 static inline devfs_handle_t devfs_get_unregister_slave (devfs_handle_t master)
193 {
194     return NULL;
195 }
196 static inline const char *devfs_get_name (devfs_handle_t de,
197                                           unsigned int *namelen)
198 {
199     return NULL;
200 }
201 static inline int devfs_register_chrdev (unsigned int major, const char *name,
202                                          struct file_operations *fops)
203 {
204     return register_chrdev (major, name, fops);
205 }
206 static inline int devfs_register_blkdev (unsigned int major, const char *name,
207                                          struct block_device_operations *bdops)
208 {
209     return register_blkdev (major, name, bdops);
210 }
211 static inline int devfs_unregister_chrdev (unsigned int major,const char *name)
212 {
213     return unregister_chrdev (major, name);
214 }
215 static inline int devfs_unregister_blkdev (unsigned int major,const char *name)
216 {
217     return unregister_blkdev (major, name);
218 }
219 
220 static inline void devfs_register_tape (devfs_handle_t de)
221 {
222     return;
223 }
224 
225 static inline void devfs_register_series (devfs_handle_t dir,
226                                           const char *format,
227                                           unsigned int num_entries,
228                                           unsigned int flags,
229                                           unsigned int major,
230                                           unsigned int minor_start,
231                                           umode_t mode, void *ops, void *info)
232 {
233     return;
234 }
235 
236 static inline int init_devfs_fs (void)
237 {
238     return 0;
239 }
240 static inline void mount_devfs_fs (void)
241 {
242     return;
243 }
244 static inline void devfs_make_root (const char *name)
245 {
246     return;
247 }
248 #endif  /*  CONFIG_DEVFS_FS  */
249 
250 #endif  /*  _LINUX_DEVFS_FS_KERNEL_H  */
251 

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~ [ freetext search ] ~ [ file search ] ~

This page was automatically generated by the LXR engine.
Visit the LXR main site for more information.