diff options
author | Dimitar Dimitrov <dimitar@dinux.eu> | 2018-03-11 22:23:26 +0200 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2019-10-31 14:47:19 -0400 |
commit | 0c7734673a981e81a88235851be219ce23fd242b (patch) | |
tree | faa1780561efd74c106f9838d20164a5008b3b08 /libgloss/pru/inbyte.c | |
parent | 0574317971f53d4471ef92aca4c57315bf777358 (diff) | |
download | newlib-0c7734673a981e81a88235851be219ce23fd242b.zip newlib-0c7734673a981e81a88235851be219ce23fd242b.tar.gz newlib-0c7734673a981e81a88235851be219ce23fd242b.tar.bz2 |
Initial PRU port for libgloss and newlib
Signed-off-by: Dimitar Dimitrov <dimitar@dinux.eu>
Diffstat (limited to 'libgloss/pru/inbyte.c')
-rw-r--r-- | libgloss/pru/inbyte.c | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/libgloss/pru/inbyte.c b/libgloss/pru/inbyte.c new file mode 100644 index 0000000..36eb363 --- /dev/null +++ b/libgloss/pru/inbyte.c @@ -0,0 +1,51 @@ +/* SPDX-License-Identifier: BSD-2-Clause-FreeBSD + * + * inbyte.c -- inbyte function for remoteproc + * + * Copyright (c) 2018-2019 Dimitar Dimitrov <dimitar@dinux.eu> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +#include <errno.h> +#include <_ansi.h> +#include <stdio.h> +#include <unistd.h> +#include "glue.h" + +extern ssize_t _read(int fd, void *b, size_t count); + +int +inbyte (void) +{ + ssize_t n; + char c; + + /* PRU has no interrupts, so it is inherently thread-safe. */ + n = _read(STDIN_FILENO, &c, 1); + if (n < 0) + return n; + else if (n == 0) + return -ENODATA; + else + return 1; +} + |