[PATCH v9 5/6] riscv: Add ifunc helper method to hwprobe.h

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Wed Dec 6 17:39:25 GMT 2023



On 30/11/23 15:32, Evan Green wrote:
> Add a little helper method so it's easier to fetch a single value from
> the hwprobe function when used within an ifunc selector.
> 
> Signed-off-by: Evan Green <evan@rivosinc.com>
> 
> ---
> 
> Changes in v9:
>  - Use __inline rather than inline so c89 compiles (build-many-glibcs)
> 
> Changes in v7:
>  - Introduced static inline helper (Richard)
> 
>  sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h | 25 +++++++++++++++++++++
>  1 file changed, 25 insertions(+)
> 
> diff --git a/sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h b/sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h
> index fd3be5a411..ee7eed3960 100644
> --- a/sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h
> +++ b/sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h
> @@ -22,6 +22,7 @@
>  
>  #include <features.h>
>  #include <stddef.h>
> +#include <errno.h>
>  #ifdef __has_include
>  # if __has_include (<asm/hwprobe.h>)
>  #  include <asm/hwprobe.h>
> @@ -79,4 +80,28 @@ typedef int (*__riscv_hwprobe_t) (struct riscv_hwprobe *__pairs, size_t __pair_c
>  
>  __END_DECLS
>  
> +/* Helper function usable from ifunc selectors that probes a single key. */
> +static __inline int
> +__riscv_hwprobe_one(__riscv_hwprobe_t hwprobe_func,
> +                    signed long long int key,
> +                    unsigned long long int *value)
> +{
> +  struct riscv_hwprobe pair;
> +  int rc;
> +
> +  if (!hwprobe_func)
> +    return ENOSYS;

The convention is no implicit checks:

  if (hwprobe_func == NULL)
    return ENOSYS;

> +
> +  pair.key = key;
> +  rc = hwprobe_func(&pair, 1, 0, NULL, 0);

Missing space after function name.

> +  if (rc)
> +    return rc;

Same as before for function that return 'int':

  if (rc != 0)
    return rc;

> +
> +  if (pair.key < 0)
> +    return ENOENT;
> +
> +  *value = pair.value;
> +  return 0;
> +}
> +
>  #endif /* sys/hwprobe.h */


More information about the Libc-alpha mailing list