Lines Matching refs:pde
67 ei->pde = NULL; in proc_alloc_inode()
128 static inline int use_pde(struct proc_dir_entry *pde) in use_pde() argument
130 return atomic_inc_unless_negative(&pde->in_use); in use_pde()
133 static void unuse_pde(struct proc_dir_entry *pde) in unuse_pde() argument
135 if (atomic_dec_return(&pde->in_use) == BIAS) in unuse_pde()
136 complete(pde->pde_unload_completion); in unuse_pde()
140 static void close_pdeo(struct proc_dir_entry *pde, struct pde_opener *pdeo) in close_pdeo() argument
146 spin_unlock(&pde->pde_unload_lock); in close_pdeo()
148 spin_lock(&pde->pde_unload_lock); in close_pdeo()
152 spin_unlock(&pde->pde_unload_lock); in close_pdeo()
154 pde->proc_fops->release(file_inode(file), file); in close_pdeo()
155 spin_lock(&pde->pde_unload_lock); in close_pdeo()
182 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_llseek() local
184 if (use_pde(pde)) { in proc_reg_llseek()
186 llseek = pde->proc_fops->llseek; in proc_reg_llseek()
190 unuse_pde(pde); in proc_reg_llseek()
198 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_read() local
200 if (use_pde(pde)) { in proc_reg_read()
201 read = pde->proc_fops->read; in proc_reg_read()
204 unuse_pde(pde); in proc_reg_read()
212 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_write() local
214 if (use_pde(pde)) { in proc_reg_write()
215 write = pde->proc_fops->write; in proc_reg_write()
218 unuse_pde(pde); in proc_reg_write()
225 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_poll() local
228 if (use_pde(pde)) { in proc_reg_poll()
229 poll = pde->proc_fops->poll; in proc_reg_poll()
232 unuse_pde(pde); in proc_reg_poll()
239 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_unlocked_ioctl() local
242 if (use_pde(pde)) { in proc_reg_unlocked_ioctl()
243 ioctl = pde->proc_fops->unlocked_ioctl; in proc_reg_unlocked_ioctl()
246 unuse_pde(pde); in proc_reg_unlocked_ioctl()
254 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_compat_ioctl() local
257 if (use_pde(pde)) { in proc_reg_compat_ioctl()
258 compat_ioctl = pde->proc_fops->compat_ioctl; in proc_reg_compat_ioctl()
261 unuse_pde(pde); in proc_reg_compat_ioctl()
269 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_mmap() local
272 if (use_pde(pde)) { in proc_reg_mmap()
273 mmap = pde->proc_fops->mmap; in proc_reg_mmap()
276 unuse_pde(pde); in proc_reg_mmap()
286 struct proc_dir_entry *pde = PDE(file_inode(file)); in proc_reg_get_unmapped_area() local
289 if (use_pde(pde)) { in proc_reg_get_unmapped_area()
292 get_area = pde->proc_fops->get_unmapped_area; in proc_reg_get_unmapped_area()
302 unuse_pde(pde); in proc_reg_get_unmapped_area()
309 struct proc_dir_entry *pde = PDE(inode); in proc_reg_open() local
329 if (!use_pde(pde)) { in proc_reg_open()
333 open = pde->proc_fops->open; in proc_reg_open()
334 release = pde->proc_fops->release; in proc_reg_open()
343 spin_lock(&pde->pde_unload_lock); in proc_reg_open()
344 list_add(&pdeo->lh, &pde->pde_openers); in proc_reg_open()
345 spin_unlock(&pde->pde_unload_lock); in proc_reg_open()
349 unuse_pde(pde); in proc_reg_open()
355 struct proc_dir_entry *pde = PDE(inode); in proc_reg_release() local
357 spin_lock(&pde->pde_unload_lock); in proc_reg_release()
358 list_for_each_entry(pdeo, &pde->pde_openers, lh) { in proc_reg_release()
360 close_pdeo(pde, pdeo); in proc_reg_release()
364 spin_unlock(&pde->pde_unload_lock); in proc_reg_release()
399 struct proc_dir_entry *pde = PDE(d_inode(dentry)); in proc_follow_link() local
400 if (unlikely(!use_pde(pde))) in proc_follow_link()
402 nd_set_link(nd, pde->data); in proc_follow_link()
403 return pde; in proc_follow_link()
424 PROC_I(inode)->pde = de; in proc_get_inode()