|
@@ -101,6 +101,8 @@ int snd_pcm_lib_preallocate_free(struct snd_pcm_substream *substream)
|
|
|
{
|
|
|
snd_pcm_lib_preallocate_dma_free(substream);
|
|
|
#ifdef CONFIG_SND_VERBOSE_PROCFS
|
|
|
+ snd_info_free_entry(substream->proc_prealloc_max_entry);
|
|
|
+ substream->proc_prealloc_max_entry = NULL;
|
|
|
snd_info_free_entry(substream->proc_prealloc_entry);
|
|
|
substream->proc_prealloc_entry = NULL;
|
|
|
#endif
|
|
@@ -141,6 +143,18 @@ static void snd_pcm_lib_preallocate_proc_read(struct snd_info_entry *entry,
|
|
|
snd_iprintf(buffer, "%lu\n", (unsigned long) substream->dma_buffer.bytes / 1024);
|
|
|
}
|
|
|
|
|
|
+/*
|
|
|
+ * read callback for prealloc_max proc file
|
|
|
+ *
|
|
|
+ * prints the maximum allowed size in kB.
|
|
|
+ */
|
|
|
+static void snd_pcm_lib_preallocate_max_proc_read(struct snd_info_entry *entry,
|
|
|
+ struct snd_info_buffer *buffer)
|
|
|
+{
|
|
|
+ struct snd_pcm_substream *substream = entry->private_data;
|
|
|
+ snd_iprintf(buffer, "%lu\n", (unsigned long) substream->dma_max / 1024);
|
|
|
+}
|
|
|
+
|
|
|
/*
|
|
|
* write callback for prealloc proc file
|
|
|
*
|
|
@@ -203,6 +217,15 @@ static inline void preallocate_info_init(struct snd_pcm_substream *substream)
|
|
|
}
|
|
|
}
|
|
|
substream->proc_prealloc_entry = entry;
|
|
|
+ if ((entry = snd_info_create_card_entry(substream->pcm->card, "prealloc_max", substream->proc_root)) != NULL) {
|
|
|
+ entry->c.text.read = snd_pcm_lib_preallocate_max_proc_read;
|
|
|
+ entry->private_data = substream;
|
|
|
+ if (snd_info_register(entry) < 0) {
|
|
|
+ snd_info_free_entry(entry);
|
|
|
+ entry = NULL;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ substream->proc_prealloc_max_entry = entry;
|
|
|
}
|
|
|
|
|
|
#else /* !CONFIG_SND_VERBOSE_PROCFS */
|