All of lore.kernel.org
 help / color / mirror / Atom feed
* [Xenomai] [PATCH] demo/alchemy/cross-link: Properly handle syscall errors
@ 2016-02-22 23:42 Michael Welling
  2016-02-22 23:49 ` Gilles Chanteperdrix
  2016-02-22 23:50 ` Michael Welling
  0 siblings, 2 replies; 4+ messages in thread
From: Michael Welling @ 2016-02-22 23:42 UTC (permalink / raw)
  To: xenomai, Gilles Chanteperdrix, Jan Kiszka, mwelling,
	Lowell Gilbert

Update cross link demo to properly handle errors returned from syscalls.

Signed-off-by: Michael Welling <mwelling@ieee.org>
---
 demo/alchemy/cobalt/cross-link.c | 25 +++++++++++++------------
 1 file changed, 13 insertions(+), 12 deletions(-)

diff --git a/demo/alchemy/cobalt/cross-link.c b/demo/alchemy/cobalt/cross-link.c
index 8c0f53f..dceb928 100644
--- a/demo/alchemy/cobalt/cross-link.c
+++ b/demo/alchemy/cobalt/cross-link.c
@@ -23,6 +23,7 @@
 #include <stdio.h>
 #include <signal.h>
 #include <unistd.h>
+#include <errno.h>
 #include <sys/mman.h>
 #include <alchemy/task.h>
 #include <alchemy/timer.h>
@@ -78,8 +79,8 @@ static int close_file( int fd, char *name)
 	do {
 		i++;
 		err = close(fd);
-		switch (err) {
-		case -EAGAIN:
+		switch (errno) {
+		case EAGAIN:
 			printf(MAIN_PREFIX "%s -> EAGAIN (%d times)\n",
 			       name, i);
 			rt_task_sleep(50000); /* wait 50us */
@@ -89,10 +90,10 @@ static int close_file( int fd, char *name)
 			break;
 		default:
 			printf(MAIN_PREFIX "%s -> %s\n", name,
-			       strerror(-err));
+			       strerror(errno));
 			break;
 		}
-	} while (err == -EAGAIN && i < 10);
+	} while (errno == EAGAIN && i < 10);
 
 	return err;
 }
@@ -158,7 +159,7 @@ static void write_task_proc(void *arg)
 		written = write(write_fd, &write_time, sz);
 		if (written < 0 ) {
 			printf(WTASK_PREFIX "error on write, %s\n",
-			       strerror(-err));
+			       strerror(errno));
 			break;
 		} else if (written != sz) {
 			printf(WTASK_PREFIX "only %d / %zd byte transmitted\n",
@@ -201,8 +202,8 @@ static void read_task_proc(void *arg)
 		if (err) {
 			printf(RTASK_PREFIX
 			       "error on RTSER_RTIOC_WAIT_EVENT, %s\n",
-			       strerror(-err));
-			if (err == -ETIMEDOUT)
+			       strerror(errno));
+			if (err == ETIMEDOUT)
 				continue;
 			break;
 		}
@@ -218,7 +219,7 @@ static void read_task_proc(void *arg)
 			nr++;
 		} else if (rd < 0 ) {
 			printf(RTASK_PREFIX "error on read, code %s\n",
-			       strerror(-err));
+			       strerror(errno));
 			break;
 		} else {
 			printf(RTASK_PREFIX "only %d / %zd byte received \n",
@@ -245,7 +246,7 @@ int main(int argc, char* argv[])
 	write_fd = open( WRITE_FILE, 0);
 	if (write_fd < 0) {
 		printf(MAIN_PREFIX "can't open %s (write), %s\n", WRITE_FILE,
-		       strerror(-write_fd));
+		       strerror(errno));
 		goto error;
 	}
 	write_state |= STATE_FILE_OPENED;
@@ -255,7 +256,7 @@ int main(int argc, char* argv[])
 	err = ioctl(write_fd, RTSER_RTIOC_SET_CONFIG, &write_config);
 	if (err) {
 		printf(MAIN_PREFIX "error while RTSER_RTIOC_SET_CONFIG, %s\n",
-		       strerror(-err));
+		       strerror(errno));
 		goto error;
 	}
 	printf(MAIN_PREFIX "write-config written\n");
@@ -264,7 +265,7 @@ int main(int argc, char* argv[])
 	read_fd = open( READ_FILE, 0 );
 	if (read_fd < 0) {
 		printf(MAIN_PREFIX "can't open %s (read), %s\n", READ_FILE,
-		       strerror(-read_fd));
+		       strerror(errno));
 		goto error;
 	}
 	read_state |= STATE_FILE_OPENED;
@@ -274,7 +275,7 @@ int main(int argc, char* argv[])
 	err = ioctl(read_fd, RTSER_RTIOC_SET_CONFIG, &read_config);
 	if (err) {
 		printf(MAIN_PREFIX "error while ioctl, %s\n",
-		       strerror(-err));
+		       strerror(errno));
 		goto error;
 	}
 	printf(MAIN_PREFIX "read-config written\n");
-- 
2.1.4



^ permalink raw reply related	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-02-22 23:51 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-02-22 23:42 [Xenomai] [PATCH] demo/alchemy/cross-link: Properly handle syscall errors Michael Welling
2016-02-22 23:49 ` Gilles Chanteperdrix
2016-02-22 23:51   ` Michael Welling
2016-02-22 23:50 ` Michael Welling

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.