Lines Matching defs:pde

63 	ei->pde = NULL;
78 if (ei->pde)
79 pde_put(ei->pde);
198 static inline int use_pde(struct proc_dir_entry *pde)
200 return likely(atomic_inc_unless_negative(&pde->in_use));
203 static void unuse_pde(struct proc_dir_entry *pde)
205 if (unlikely(atomic_dec_return(&pde->in_use) == BIAS))
206 complete(pde->pde_unload_completion);
218 static void close_pdeo(struct proc_dir_entry *pde, struct pde_opener *pdeo)
219 __releases(&pde->pde_unload_lock)
232 spin_unlock(&pde->pde_unload_lock);
239 spin_unlock(&pde->pde_unload_lock);
242 pde->proc_ops->proc_release(file_inode(file), file);
244 spin_lock(&pde->pde_unload_lock);
248 spin_unlock(&pde->pde_unload_lock);
277 struct proc_dir_entry *pde = PDE(file_inode(file));
280 if (pde_is_permanent(pde)) {
281 return pde->proc_ops->proc_lseek(file, offset, whence);
282 } else if (use_pde(pde)) {
283 rv = pde->proc_ops->proc_lseek(file, offset, whence);
284 unuse_pde(pde);
291 struct proc_dir_entry *pde = PDE(file_inode(iocb->ki_filp));
294 if (pde_is_permanent(pde))
295 return pde->proc_ops->proc_read_iter(iocb, iter);
297 if (!use_pde(pde))
299 ret = pde->proc_ops->proc_read_iter(iocb, iter);
300 unuse_pde(pde);
304 static ssize_t pde_read(struct proc_dir_entry *pde, struct file *file, char __user *buf, size_t count, loff_t *ppos)
308 read = pde->proc_ops->proc_read;
316 struct proc_dir_entry *pde = PDE(file_inode(file));
319 if (pde_is_permanent(pde)) {
320 return pde_read(pde, file, buf, count, ppos);
321 } else if (use_pde(pde)) {
322 rv = pde_read(pde, file, buf, count, ppos);
323 unuse_pde(pde);
328 static ssize_t pde_write(struct proc_dir_entry *pde, struct file *file, const char __user *buf, size_t count, loff_t *ppos)
332 write = pde->proc_ops->proc_write;
340 struct proc_dir_entry *pde = PDE(file_inode(file));
343 if (pde_is_permanent(pde)) {
344 return pde_write(pde, file, buf, count, ppos);
345 } else if (use_pde(pde)) {
346 rv = pde_write(pde, file, buf, count, ppos);
347 unuse_pde(pde);
352 static __poll_t pde_poll(struct proc_dir_entry *pde, struct file *file, struct poll_table_struct *pts)
356 poll = pde->proc_ops->proc_poll;
364 struct proc_dir_entry *pde = PDE(file_inode(file));
367 if (pde_is_permanent(pde)) {
368 return pde_poll(pde, file, pts);
369 } else if (use_pde(pde)) {
370 rv = pde_poll(pde, file, pts);
371 unuse_pde(pde);
376 static long pde_ioctl(struct proc_dir_entry *pde, struct file *file, unsigned int cmd, unsigned long arg)
380 ioctl = pde->proc_ops->proc_ioctl;
388 struct proc_dir_entry *pde = PDE(file_inode(file));
391 if (pde_is_permanent(pde)) {
392 return pde_ioctl(pde, file, cmd, arg);
393 } else if (use_pde(pde)) {
394 rv = pde_ioctl(pde, file, cmd, arg);
395 unuse_pde(pde);
401 static long pde_compat_ioctl(struct proc_dir_entry *pde, struct file *file, unsigned int cmd, unsigned long arg)
405 compat_ioctl = pde->proc_ops->proc_compat_ioctl;
413 struct proc_dir_entry *pde = PDE(file_inode(file));
415 if (pde_is_permanent(pde)) {
416 return pde_compat_ioctl(pde, file, cmd, arg);
417 } else if (use_pde(pde)) {
418 rv = pde_compat_ioctl(pde, file, cmd, arg);
419 unuse_pde(pde);
425 static int pde_mmap(struct proc_dir_entry *pde, struct file *file, struct vm_area_struct *vma)
429 mmap = pde->proc_ops->proc_mmap;
437 struct proc_dir_entry *pde = PDE(file_inode(file));
440 if (pde_is_permanent(pde)) {
441 return pde_mmap(pde, file, vma);
442 } else if (use_pde(pde)) {
443 rv = pde_mmap(pde, file, vma);
444 unuse_pde(pde);
450 pde_get_unmapped_area(struct proc_dir_entry *pde, struct file *file, unsigned long orig_addr,
456 get_area = pde->proc_ops->proc_get_unmapped_area;
471 struct proc_dir_entry *pde = PDE(file_inode(file));
474 if (pde_is_permanent(pde)) {
475 return pde_get_unmapped_area(pde, file, orig_addr, len, pgoff, flags);
476 } else if (use_pde(pde)) {
477 rv = pde_get_unmapped_area(pde, file, orig_addr, len, pgoff, flags);
478 unuse_pde(pde);
485 struct proc_dir_entry *pde = PDE(inode);
491 if (!pde->proc_ops->proc_lseek)
494 if (pde_is_permanent(pde)) {
495 open = pde->proc_ops->proc_open;
512 if (!use_pde(pde))
515 release = pde->proc_ops->proc_release;
524 open = pde->proc_ops->proc_open;
534 spin_lock(&pde->pde_unload_lock);
535 list_add(&pdeo->lh, &pde->pde_openers);
536 spin_unlock(&pde->pde_unload_lock);
542 unuse_pde(pde);
548 struct proc_dir_entry *pde = PDE(inode);
551 if (pde_is_permanent(pde)) {
554 release = pde->proc_ops->proc_release;
561 spin_lock(&pde->pde_unload_lock);
562 list_for_each_entry(pdeo, &pde->pde_openers, lh) {
564 close_pdeo(pde, pdeo);
568 spin_unlock(&pde->pde_unload_lock);
635 struct proc_dir_entry *pde = PDE(inode);
636 if (!use_pde(pde))
638 set_delayed_call(done, proc_put_link, pde);
639 return pde->data;
658 PROC_I(inode)->pde = de;