[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