On Tue, Jun 12, 2018 at 01:52:47PM -0700, Andrey Smirnov wrote:
> Signed-off-by: Andrey Smirnov <andrew.smir...@gmail.com>
> ---
>  include/linux/iopoll.h | 69 ++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 69 insertions(+)
>  create mode 100644 include/linux/iopoll.h
> 
> diff --git a/include/linux/iopoll.h b/include/linux/iopoll.h
> new file mode 100644
> index 000000000..6e8a6fd71
> --- /dev/null
> +++ b/include/linux/iopoll.h
> @@ -0,0 +1,69 @@
> +/*
> + * Copyright (c) 2012-2014 The Linux Foundation. All rights reserved.
> + *
> + * SPDX-License-Identifier:  GPL-2.0
> + */
> +
> +#ifndef _LINUX_IOPOLL_H
> +#define _LINUX_IOPOLL_H
> +
> +#include <errno.h>
> +#include <io.h>
> +#include <clock.h>
> +
> +/**
> + * readx_poll_timeout - Periodically poll an address until a condition is 
> met or a timeout occurs
> + * @op: accessor function (takes @addr as its only argument)
> + * @addr: Address to poll
> + * @val: Variable to read the value into
> + * @cond: Break condition (usually involving @val)
> + * @timeout_ns: Timeout in ns, 0 means never timeout

nanoseconds here,

> + *
> + * Returns 0 on success and -ETIMEDOUT upon a timeout. In either
> + * case, the last read value at @addr is stored in @val.
> + *
> + * When available, you'll probably want to use one of the specialized
> + * macros defined below rather than this macro directly.
> + */
> +#define readx_poll_timeout(op, addr, val, cond, timeout_ns)  \

and here,

> +({ \
> +     uint64_t start = get_time_ns(); \
> +     for (;;) { \
> +             (val) = op(addr); \
> +             if (cond) \
> +                     break; \
> +             if (timeout_ns && \
> +                 is_timeout(start, (timeout_ns))) {  \
> +                     (val) = op(addr); \
> +                     break; \
> +             } \
> +     } \
> +     (cond) ? 0 : -ETIMEDOUT; \
> +})
> +
> +
> +#define readb_poll_timeout(addr, val, cond, timeout_us) \
> +     readx_poll_timeout(readb, addr, val, cond, timeout_us)

but microseconds here?

We should be consistent to the kernel API here, it's too easy to just
copy Linux code without noticing that the units are different.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |

_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox

Reply via email to