From: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
To: vinod.koul@intel.com
Cc: alsa-devel@alsa-project.org, ckeepax@opensource.wolfsonmicro.com,
pierre-louis.bossart@linux.intel.com
Subject: [tinycompress][PATCH 2/2] compress: do not poll if enough space to write remaining data
Date: Wed, 5 Jun 2013 13:11:44 +0100 [thread overview]
Message-ID: <20130605121144.GC21556@opensource.wolfsonmicro.com> (raw)
In-Reply-To: <20130605120827.GA21556@opensource.wolfsonmicro.com>
Changes the poll logic in compress_write() to prevent
it polling if there is enough available space to write
all remaining data. Previously the logic always polled for
an entire fragment to become available before starting the
first write.
This change allows short writes of < frag_size, which is likely
at the end of a stream.
Signed-off-by: Richard Fitzgerald <rf@opensource.wolfsonmicro.com>
---
compress.c | 10 ++++------
1 files changed, 4 insertions(+), 6 deletions(-)
diff --git a/compress.c b/compress.c
index 373de85..bb68fa6 100644
--- a/compress.c
+++ b/compress.c
@@ -368,12 +368,10 @@ int compress_write(struct compress *compress, const void *buf, unsigned int size
if (ioctl(compress->fd, SNDRV_COMPRESS_AVAIL, &avail))
return oops(compress, errno, "cannot get avail");
- if ( (avail.avail < frag_size)
- || ((to_write != 0) && (avail.avail < size)) ) {
- /* not enough space for one fragment, or we have done
- * a short write and there isn't enough space for all
- * the remaining data
- */
+ /* We can write if we have at least one fragment available
+ * or there is enough space for all remaining data
+ */
+ if ((avail.avail < frag_size) && (avail.avail < size)) {
ret = poll(&fds, 1, compress->max_poll_wait_ms);
/* A pause will cause -EBADFD or zero.
* This is not an error, just stop writing */
--
1.7.2.5
next prev parent reply other threads:[~2013-06-05 12:11 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-06-05 12:08 [tinycompress][PATCH 0/2] Fixes for write loop logic Richard Fitzgerald
2013-06-05 12:10 ` [tinycompress][PATCH 1/2] compress: copy final version of config struct Richard Fitzgerald
2013-06-05 12:11 ` Richard Fitzgerald [this message]
2013-06-07 0:30 ` [tinycompress][PATCH 0/2] Fixes for write loop logic Vinod Koul
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130605121144.GC21556@opensource.wolfsonmicro.com \
--to=rf@opensource.wolfsonmicro.com \
--cc=alsa-devel@alsa-project.org \
--cc=ckeepax@opensource.wolfsonmicro.com \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=vinod.koul@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.