diff options
Diffstat (limited to 'nuttx/examples/poll/poll_main.c')
-rw-r--r-- | nuttx/examples/poll/poll_main.c | 60 |
1 files changed, 47 insertions, 13 deletions
diff --git a/nuttx/examples/poll/poll_main.c b/nuttx/examples/poll/poll_main.c index 4e91070b1..1c998a665 100644 --- a/nuttx/examples/poll/poll_main.c +++ b/nuttx/examples/poll/poll_main.c @@ -89,28 +89,46 @@ int user_start(int argc, char *argv[]) { char buffer[64]; ssize_t nbytes; - pthread_t tid; + pthread_t tid1; + pthread_t tid2; int count; - int fd; + int fd1; + int fd2; int ret; - /* Test FIFO logic */ + /* Open FIFOs */ - message("\nuser_start: Creating FIFO %s\n", FIFO_PATH); - ret = mkfifo(FIFO_PATH, 0666); + message("\nuser_start: Creating FIFO %s\n", FIFO_PATH1); + ret = mkfifo(FIFO_PATH1, 0666); if (ret < 0) { message("user_start: mkfifo failed: %d\n", errno); return 1; } - /* Open the FIFO for blocking, write */ + message("\nuser_start: Creating FIFO %s\n", FIFO_PATH2); + ret = mkfifo(FIFO_PATH2, 0666); + if (ret < 0) + { + message("user_start: mkfifo failed: %d\n", errno); + return 2; + } + + /* Open the FIFOs for blocking, write */ + + fd1 = open(FIFO_PATH1, O_WRONLY); + if (fd1 < 0) + { + message("user_start: Failed to open FIFO %s for writing, errno=%d\n", + FIFO_PATH1, errno); + return 2; + } - fd = open(FIFO_PATH, O_WRONLY); - if (fd < 0) + fd2 = open(FIFO_PATH2, O_WRONLY); + if (fd2 < 0) { message("user_start: Failed to open FIFO %s for writing, errno=%d\n", - FIFO_PATH, errno); + FIFO_PATH2, errno); return 2; } @@ -118,13 +136,22 @@ int user_start(int argc, char *argv[]) message("user_start: Starting poll_listener thread\n"); - ret = pthread_create(&tid, NULL, poll_listener, NULL); + ret = pthread_create(&tid1, NULL, poll_listener, NULL); if (ret != 0) { message("user_start: Failed to create poll_listener thread: %d\n", ret); return 3; } + message("user_start: Starting select_listener thread\n"); + + ret = pthread_create(&tid2, NULL, select_listener, NULL); + if (ret != 0) + { + message("user_start: Failed to create select_listener thread: %d\n", ret); + return 3; + } + /* Loop forever */ for (count = 0; ; count++) @@ -134,14 +161,21 @@ int user_start(int argc, char *argv[]) */ sprintf(buffer, "Message %d", count); - nbytes = write(fd, buffer, strlen(buffer)); + nbytes = write(fd1, buffer, strlen(buffer)); + if (nbytes < 0) + { + message("user_start: Write to fd1 failed: %d\n", errno); + return 4; + } + + nbytes = write(fd2, buffer, strlen(buffer)); if (nbytes < 0) { - message("user_start: Write failed: %d\n", errno); + message("user_start: Write fd2 failed: %d\n", errno); return 4; } - message("user_start: Sent '%s' (%d bytes)\n", buffer, nbytes); + message("\nuser_start: Sent '%s' (%d bytes)\n", buffer, nbytes); msgflush(); /* Wait awhile. This delay should be long enough that the |