• Home
  • Raw
  • Download

Lines Matching full:entry

70 	struct snd_info_entry *entry;  member
75 static void snd_info_disconnect(struct snd_info_entry *entry);
89 static int alloc_info_private(struct snd_info_entry *entry, in alloc_info_private() argument
94 if (!entry || !entry->p) in alloc_info_private()
96 if (!try_module_get(entry->module)) in alloc_info_private()
100 module_put(entry->module); in alloc_info_private()
103 data->entry = entry; in alloc_info_private()
123 struct snd_info_entry *entry; in snd_info_entry_llseek() local
127 entry = data->entry; in snd_info_entry_llseek()
128 mutex_lock(&entry->access); in snd_info_entry_llseek()
129 if (entry->c.ops->llseek) { in snd_info_entry_llseek()
130 offset = entry->c.ops->llseek(entry, in snd_info_entry_llseek()
136 size = entry->size; in snd_info_entry_llseek()
158 mutex_unlock(&entry->access); in snd_info_entry_llseek()
166 struct snd_info_entry *entry = data->entry; in snd_info_entry_read() local
173 if (pos >= entry->size) in snd_info_entry_read()
175 size = entry->size - pos; in snd_info_entry_read()
177 size = entry->c.ops->read(entry, data->file_private_data, in snd_info_entry_read()
188 struct snd_info_entry *entry = data->entry; in snd_info_entry_write() local
196 size_t maxsize = entry->size - pos; in snd_info_entry_write()
198 size = entry->c.ops->write(entry, data->file_private_data, in snd_info_entry_write()
209 struct snd_info_entry *entry = data->entry; in snd_info_entry_poll() local
212 if (entry->c.ops->poll) in snd_info_entry_poll()
213 return entry->c.ops->poll(entry, in snd_info_entry_poll()
216 if (entry->c.ops->read) in snd_info_entry_poll()
218 if (entry->c.ops->write) in snd_info_entry_poll()
227 struct snd_info_entry *entry = data->entry; in snd_info_entry_ioctl() local
229 if (!entry->c.ops->ioctl) in snd_info_entry_ioctl()
231 return entry->c.ops->ioctl(entry, data->file_private_data, in snd_info_entry_ioctl()
239 struct snd_info_entry *entry; in snd_info_entry_mmap() local
244 entry = data->entry; in snd_info_entry_mmap()
245 if (!entry->c.ops->mmap) in snd_info_entry_mmap()
247 return entry->c.ops->mmap(entry, data->file_private_data, in snd_info_entry_mmap()
253 struct snd_info_entry *entry = PDE_DATA(inode); in snd_info_entry_open() local
258 err = alloc_info_private(entry, &data); in snd_info_entry_open()
263 if (((mode == O_RDONLY || mode == O_RDWR) && !entry->c.ops->read) || in snd_info_entry_open()
264 ((mode == O_WRONLY || mode == O_RDWR) && !entry->c.ops->write)) { in snd_info_entry_open()
269 if (entry->c.ops->open) { in snd_info_entry_open()
270 err = entry->c.ops->open(entry, mode, &data->file_private_data); in snd_info_entry_open()
281 module_put(entry->module); in snd_info_entry_open()
290 struct snd_info_entry *entry = data->entry; in snd_info_entry_release() local
292 if (entry->c.ops->release) in snd_info_entry_release()
293 entry->c.ops->release(entry, file->f_flags & O_ACCMODE, in snd_info_entry_release()
295 module_put(entry->module); in snd_info_entry_release()
322 struct snd_info_entry *entry = data->entry; in snd_info_text_entry_write() local
328 if (!entry->c.text.write) in snd_info_text_entry_write()
337 mutex_lock(&entry->access); in snd_info_text_entry_write()
362 mutex_unlock(&entry->access); in snd_info_text_entry_write()
372 struct snd_info_entry *entry = data->entry; in snd_info_seq_show() local
374 if (!entry->c.text.read) { in snd_info_seq_show()
378 entry->c.text.read(entry, data->rbuffer); in snd_info_seq_show()
385 struct snd_info_entry *entry = PDE_DATA(inode); in snd_info_text_entry_open() local
390 err = alloc_info_private(entry, &data); in snd_info_text_entry_open()
399 if (entry->size) in snd_info_text_entry_open()
401 entry->size); in snd_info_text_entry_open()
412 module_put(entry->module); in snd_info_text_entry_open()
422 struct snd_info_entry *entry = data->entry; in snd_info_text_entry_release() local
424 if (data->wbuffer && entry->c.text.write) in snd_info_text_entry_release()
425 entry->c.text.write(entry, data->wbuffer); in snd_info_text_entry_release()
434 module_put(entry->module); in snd_info_text_entry_release()
452 struct snd_info_entry *entry; in create_subdir() local
454 entry = snd_info_create_module_entry(mod, name, NULL); in create_subdir()
455 if (!entry) in create_subdir()
457 entry->mode = S_IFDIR | 0555; in create_subdir()
458 if (snd_info_register(entry) < 0) { in create_subdir()
459 snd_info_free_entry(entry); in create_subdir()
462 return entry; in create_subdir()
513 struct snd_info_entry *entry; in snd_info_card_create() local
519 entry = create_subdir(card->module, str); in snd_info_card_create()
520 if (!entry) in snd_info_card_create()
522 card->proc_root = entry; in snd_info_card_create()
527 static int snd_info_register_recursive(struct snd_info_entry *entry) in snd_info_register_recursive() argument
532 if (!entry->p) { in snd_info_register_recursive()
533 err = snd_info_register(entry); in snd_info_register_recursive()
538 list_for_each_entry(p, &entry->children, list) { in snd_info_register_recursive()
697 * snd_info_create_entry - create an info entry
701 * Creates an info entry with the given file name and initializes as
712 struct snd_info_entry *entry; in snd_info_create_entry() local
713 entry = kzalloc(sizeof(*entry), GFP_KERNEL); in snd_info_create_entry()
714 if (entry == NULL) in snd_info_create_entry()
716 entry->name = kstrdup(name, GFP_KERNEL); in snd_info_create_entry()
717 if (entry->name == NULL) { in snd_info_create_entry()
718 kfree(entry); in snd_info_create_entry()
721 entry->mode = S_IFREG | 0444; in snd_info_create_entry()
722 entry->content = SNDRV_INFO_CONTENT_TEXT; in snd_info_create_entry()
723 mutex_init(&entry->access); in snd_info_create_entry()
724 INIT_LIST_HEAD(&entry->children); in snd_info_create_entry()
725 INIT_LIST_HEAD(&entry->list); in snd_info_create_entry()
726 entry->parent = parent; in snd_info_create_entry()
729 list_add_tail(&entry->list, &parent->children); in snd_info_create_entry()
732 return entry; in snd_info_create_entry()
736 * snd_info_create_module_entry - create an info entry for the given module
741 * Creates a new info entry and assigns it to the given module.
749 struct snd_info_entry *entry = snd_info_create_entry(name, parent); in snd_info_create_module_entry() local
750 if (entry) in snd_info_create_module_entry()
751 entry->module = module; in snd_info_create_module_entry()
752 return entry; in snd_info_create_module_entry()
757 * snd_info_create_card_entry - create an info entry for the given card
762 * Creates a new info entry and assigns it to the given card.
770 struct snd_info_entry *entry = snd_info_create_entry(name, parent); in snd_info_create_card_entry() local
771 if (entry) { in snd_info_create_card_entry()
772 entry->module = card->module; in snd_info_create_card_entry()
773 entry->card = card; in snd_info_create_card_entry()
775 return entry; in snd_info_create_card_entry()
779 static void snd_info_disconnect(struct snd_info_entry *entry) in snd_info_disconnect() argument
783 if (!entry->p) in snd_info_disconnect()
785 list_for_each_entry(p, &entry->children, list) in snd_info_disconnect()
787 proc_remove(entry->p); in snd_info_disconnect()
788 entry->p = NULL; in snd_info_disconnect()
792 * snd_info_free_entry - release the info entry
793 * @entry: the info entry
795 * Releases the info entry.
797 void snd_info_free_entry(struct snd_info_entry * entry) in snd_info_free_entry() argument
801 if (!entry) in snd_info_free_entry()
803 if (entry->p) { in snd_info_free_entry()
805 snd_info_disconnect(entry); in snd_info_free_entry()
810 list_for_each_entry_safe(p, n, &entry->children, list) in snd_info_free_entry()
813 p = entry->parent; in snd_info_free_entry()
816 list_del(&entry->list); in snd_info_free_entry()
819 kfree(entry->name); in snd_info_free_entry()
820 if (entry->private_free) in snd_info_free_entry()
821 entry->private_free(entry); in snd_info_free_entry()
822 kfree(entry); in snd_info_free_entry()
827 * snd_info_register - register the info entry
828 * @entry: the info entry
830 * Registers the proc info entry.
834 int snd_info_register(struct snd_info_entry * entry) in snd_info_register() argument
838 if (snd_BUG_ON(!entry)) in snd_info_register()
840 root = entry->parent == NULL ? snd_proc_root->p : entry->parent->p; in snd_info_register()
842 if (S_ISDIR(entry->mode)) { in snd_info_register()
843 p = proc_mkdir_mode(entry->name, entry->mode, root); in snd_info_register()
850 if (entry->content == SNDRV_INFO_CONTENT_DATA) in snd_info_register()
854 p = proc_create_data(entry->name, entry->mode, root, in snd_info_register()
855 ops, entry); in snd_info_register()
860 proc_set_size(p, entry->size); in snd_info_register()
862 entry->p = p; in snd_info_register()
872 static void snd_info_version_read(struct snd_info_entry *entry, struct snd_info_buffer *buffer) in snd_info_version_read() argument
881 struct snd_info_entry *entry; in snd_info_version_init() local
883 entry = snd_info_create_module_entry(THIS_MODULE, "version", NULL); in snd_info_version_init()
884 if (entry == NULL) in snd_info_version_init()
886 entry->c.text.read = snd_info_version_read; in snd_info_version_init()
887 return snd_info_register(entry); /* freed in error path */ in snd_info_version_init()