On Wed, Apr 6, 2016 at 7:31 AM, Christophe Milard < christophe.mil...@linaro.org> wrote:
> Fixes: https://bugs.linaro.org/show_bug.cgi?id=2146 (CID 159395) > The open system call is directely used to check the presence of the fifo > and open it at the same time. > > Signed-off-by: Christophe Milard <christophe.mil...@linaro.org> > Reviewed-by: Bill Fischofer <bill.fischo...@linaro.org> > --- > platform/linux-generic/test/shmem/shmem_linux.c | 15 +++++++++------ > 1 file changed, 9 insertions(+), 6 deletions(-) > > diff --git a/platform/linux-generic/test/shmem/shmem_linux.c > b/platform/linux-generic/test/shmem/shmem_linux.c > index 12266cc..f9399ab 100644 > --- a/platform/linux-generic/test/shmem/shmem_linux.c > +++ b/platform/linux-generic/test/shmem/shmem_linux.c > @@ -50,6 +50,7 @@ > > #define ODP_APP_NAME "shmem_odp" /* name of the odp program, in this dir > */ > #define DEVNAME_FMT "odp-%d-%s" /* shm device format: odp-<pid>-<name> > */ > +#define MAX_FIFO_WAIT 30 /* Max time waiting for the fifo (sec) > */ > > void test_success(char *fifo_name, int fd, pid_t odp_app) > { > @@ -89,12 +90,12 @@ int main(int argc __attribute__((unused)), char > *argv[]) > { > char prg_name[PATH_MAX]; > char odp_name[PATH_MAX]; > - int nb_sec = 0; > + int nb_sec; > int size; > pid_t odp_app; > char *odp_params = NULL; > char fifo_name[PATH_MAX]; /* fifo for linux->odp feedback */ > - int fifo_fd; > + int fifo_fd = -1; > char shm_devname[PATH_MAX];/* shared mem device name, under > /dev/shm */ > int shm_fd; > test_shared_linux_data_t *addr; > @@ -115,12 +116,14 @@ int main(int argc __attribute__((unused)), char > *argv[]) > * Just die if time expire as there is no fifo to communicate > * through... */ > sprintf(fifo_name, FIFO_NAME_FMT, odp_app); > - while (access(fifo_name, W_OK) != 0) { > + for (nb_sec = 0; nb_sec < MAX_FIFO_WAIT; nb_sec++) { > + fifo_fd = open(fifo_name, O_WRONLY); > + if (fifo_fd >= 0) > + break; > sleep(1); > - if (nb_sec++ == 30) > - exit(1); > } > - fifo_fd = open(fifo_name, O_WRONLY); > + if (fifo_fd < 0) > + exit(1); > printf("pipe found\n"); > > /* the linux named pipe has now been found, meaning that the > -- > 2.1.4 > > _______________________________________________ > lng-odp mailing list > lng-odp@lists.linaro.org > https://lists.linaro.org/mailman/listinfo/lng-odp >
_______________________________________________ lng-odp mailing list lng-odp@lists.linaro.org https://lists.linaro.org/mailman/listinfo/lng-odp