summaryrefslogtreecommitdiff
path: root/nuttx/examples/poll/poll_main.c
diff options
context:
space:
mode:
Diffstat (limited to 'nuttx/examples/poll/poll_main.c')
-rw-r--r--nuttx/examples/poll/poll_main.c60
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