[alsa-devel] [PATCH alsa-lib 1/2] pcm_share: Fix compiler warnings -Wunused-result
Kirill Marinushkin
kmarinushkin at birdec.tech
Thu Nov 15 08:19:56 CET 2018
Before this commit, compilation of `pcm_share` causes warnings "ignoring
return value" for several `read` and `write` operations:
~~~~
pcm_share.c: In function '_snd_pcm_share_missing':
pcm_share.c:293:5: warning: ignoring return value of 'read', declared with
attribute warn_unused_result [-Wunused-result]
read(share->slave_socket, buf, 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<...>
~~~~
However, ignoring return values in these use-cases is safe and optimal,
because `read` and `write` operations are executed upon descriptors,
created with `socketpair()` and `pipe()`.
This commit fixes the warnings by introducing the return value with the
attribute `unused` (for details, see [1]). The macro, used in this commit,
is defined at `global.h`:
~~~~
define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
~~~~
I explicitly checked the objdump: this commit doesn't change the machine
code, related to the modified C code lines. The execution performance is
not affected.
[1] https://gcc.gnu.org/onlinedocs/gcc-8.2.0/gcc/Common-Variable-Attributes.html
Signed-off-by: Kirill Marinushkin <kmarinushkin at birdec.tech>
---
src/pcm/pcm_share.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/pcm/pcm_share.c b/src/pcm/pcm_share.c
index 5a540c4f..9592e003 100644
--- a/src/pcm/pcm_share.c
+++ b/src/pcm/pcm_share.c
@@ -287,17 +287,18 @@ static snd_pcm_uframes_t _snd_pcm_share_missing(snd_pcm_t *pcm)
update_poll:
if (ready != share->ready) {
+ int un ATTRIBUTE_UNUSED;
char buf[1];
if (pcm->stream == SND_PCM_STREAM_PLAYBACK) {
if (ready)
- read(share->slave_socket, buf, 1);
+ un = read(share->slave_socket, buf, 1);
else
- write(share->client_socket, buf, 1);
+ un = write(share->client_socket, buf, 1);
} else {
if (ready)
- write(share->slave_socket, buf, 1);
+ un = write(share->slave_socket, buf, 1);
else
- read(share->client_socket, buf, 1);
+ un = read(share->client_socket, buf, 1);
}
share->ready = ready;
}
@@ -404,8 +405,9 @@ static void *snd_pcm_share_thread(void *data)
err = poll(pfd, 2, -1);
Pthread_mutex_lock(&slave->mutex);
if (pfd[0].revents & POLLIN) {
+ int un ATTRIBUTE_UNUSED;
char buf[1];
- read(pfd[0].fd, buf, 1);
+ un = read(pfd[0].fd, buf, 1);
}
} else {
slave->polling = 0;
--
2.13.6
More information about the Alsa-devel
mailing list