diff options
author | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2008-07-29 22:11:08 +0000 |
---|---|---|
committer | patacongo <patacongo@42af7a65-404d-4744-a932-0658087f49c3> | 2008-07-29 22:11:08 +0000 |
commit | 35d2ad28792ad668adc504d6d71f1adef289d672 (patch) | |
tree | eb5583ea821b9db8bdcce2cb5ce4533f48338587 /nuttx/examples/pipe/pipe_main.c | |
parent | e3ff949fecaf5d7a66082b3c394c217368076078 (diff) | |
download | px4-nuttx-35d2ad28792ad668adc504d6d71f1adef289d672.tar.gz px4-nuttx-35d2ad28792ad668adc504d6d71f1adef289d672.tar.bz2 px4-nuttx-35d2ad28792ad668adc504d6d71f1adef289d672.zip |
Separate tests into separate files
git-svn-id: svn://svn.code.sf.net/p/nuttx/code/trunk@788 42af7a65-404d-4744-a932-0658087f49c3
Diffstat (limited to 'nuttx/examples/pipe/pipe_main.c')
-rw-r--r-- | nuttx/examples/pipe/pipe_main.c | 189 |
1 files changed, 6 insertions, 183 deletions
diff --git a/nuttx/examples/pipe/pipe_main.c b/nuttx/examples/pipe/pipe_main.c index 47815f00e..d6764c247 100644 --- a/nuttx/examples/pipe/pipe_main.c +++ b/nuttx/examples/pipe/pipe_main.c @@ -1,5 +1,5 @@ /**************************************************************************** - * pipe_main.c + * examples/pipe/pipe_main.c * * Copyright (C) 2008 Gregory Nutt. All rights reserved. * Author: Gregory Nutt <spudmonkey@racsa.co.cr> @@ -37,34 +37,22 @@ * Included Files ****************************************************************************/ -#include <sys/types.h> +#include <nuttx/config.h> #include <sys/stat.h> +#include <sys/types.h> + #include <stdio.h> -#include <stdlib.h> #include <unistd.h> -#include <pthread.h> -#include <string.h> #include <fcntl.h> #include <errno.h> +#include "pipe.h" + /**************************************************************************** * Definitions ****************************************************************************/ -#define FIFO_PATH1 "/tmp/testfifo-1" -#define FIFO_PATH2 "/tmp/testfifo-2" - -#define MAX_BYTE 13 - -#define WRITE_SIZE MAX_BYTE -#define NWRITES 1400 -#define NWRITE_BYTES (NWRITES * WRITE_SIZE) - -#define READ_SIZE (2*MAX_BYTE) -#define NREADS (NWRITES / 2) -#define NREAD_BYTES NWRITE_BYTES - /**************************************************************************** * Private Types ****************************************************************************/ @@ -78,171 +66,6 @@ ****************************************************************************/ /**************************************************************************** - * Name: reader - ****************************************************************************/ - -static void *reader(pthread_addr_t pvarg) -{ - char buffer[READ_SIZE]; - int fd = (int)pvarg; - int ret; - int nbytes; - int value; - int ndx; - - printf("reader: started\n"); - for (nbytes = 0, value = 0; nbytes < NREAD_BYTES;) - { - ret = read(fd, buffer, READ_SIZE); - if (ret < 0 ) - { - fprintf(stderr, "reader: read failed, errno=%d\n", errno); - return (void*)1; - } - else if (ret == 0) - { - if (nbytes < NREAD_BYTES) - { - fprintf(stderr, "reader: Too few bytes read -- aborting: %d\n", nbytes); - return (void*)2; - } - break; - } - for (ndx = 0; ndx < ret; ndx++) - { - if (value >= WRITE_SIZE) - { - value = 0; - } - if (buffer[ndx] != value) - { - fprintf(stderr, "reader: Byte %d, expected %d, found %d\n", - nbytes + ndx, value, buffer[ndx]); - return (void*)3; - } - value++; - } - nbytes += ret; - if (nbytes > NREAD_BYTES) - { - fprintf(stderr, "reader: Too many bytes read -- aborting: %d\n", nbytes); - return (void*)4; - } - } - printf("reader: %d bytes read\n", nbytes); - return (void*)0; -} - -/**************************************************************************** - * Name: writer - ****************************************************************************/ - -static void *writer(pthread_addr_t pvarg) -{ - char buffer[WRITE_SIZE]; - int fd = (int)pvarg; - int ret; - int i; - - printf("writer: started\n"); - for (i = 0; i < WRITE_SIZE; i++) - { - buffer[i] = i; - } - - for (i = 0; i < NWRITES; i++) - { - ret = write(fd, buffer, WRITE_SIZE); - if (ret < 0 ) - { - fprintf(stderr, "writer: write failed, errno=%d\n", errno); - return (void*)1; - } - else if (ret != WRITE_SIZE) - { - fprintf(stderr, "writer: Unexpected write size=%d\n", ret); - return (void*)2; - } - } - printf("writer: %d bytes written\n", NWRITE_BYTES); - return (void*)0; -} - -/**************************************************************************** - * Name: transfer_test - ****************************************************************************/ - -static int transfer_test(int fdin, int fdout) -{ - pthread_t readerid; - pthread_t writerid; - void *value; - int tmp; - int ret; - - /* Start reader thread */ - - printf("transfer_test: Starting reader thread\n"); - ret = pthread_create(&readerid, NULL, reader, (pthread_addr_t)fdin); - if (ret != 0) - { - fprintf(stderr, "transfer_test: Failed to create reader thread, error=%d\n", ret); - return 1; - } - - /* Start writer thread */ - - printf("transfer_test: Starting writer thread\n"); - ret = pthread_create(&writerid, NULL, writer, (pthread_addr_t)fdout); - if (ret != 0) - { - fprintf(stderr, "transfer_test: Failed to create writer thread, error=%d\n", ret); - pthread_detach(readerid); - ret = pthread_cancel(readerid); - if (ret != 0) - { - fprintf(stderr, "transfer_test: Failed to cancel reader thread, error=%d\n", ret); - } - return 2; - } - - /* Wait for writer thread to complete */ - - printf("transfer_test: Waiting for writer thread\n"); - ret = pthread_join(writerid, &value); - if (ret != 0) - { - fprintf(stderr, "transfer_test: pthread_join failed, error=%d\n", ret); - } - else - { - ret = (int)value; - printf("transfer_test: writer returned %d\n", ret); - } - - /* Wait for reader thread to complete */ - - printf("transfer_test: Waiting for reader thread\n"); - tmp = pthread_join(readerid, &value); - if (tmp != 0) - { - fprintf(stderr, "transfer_test: pthread_join failed, error=%d\n", ret); - } - else - { - tmp = (int)value; - printf("transfer_test: reader returned %d\n", tmp); - } - - if (ret == 0) - { - ret = tmp; - } - printf("transfer_test: returning %d\n", ret); - return ret; -} - -/**************************************************************************** * Name: null_writer ****************************************************************************/ |