[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT PATCH v3 6/7] include: Add ctors.h header for iterating over init arrays



Reviewed-by: Yuri Volchkov <yuri.volchkov@xxxxxxxxx>

Simon Kuenzer <simon.kuenzer@xxxxxxxxx> writes:

> Adds `ctors.h` header that provide helper macros and defintions
> for iterating over preinit_array and init_array sections.
>
> Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
> ---
>  include/uk/plat/ctors.h | 75 
> +++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 75 insertions(+)
>  create mode 100644 include/uk/plat/ctors.h
>
> diff --git a/include/uk/plat/ctors.h b/include/uk/plat/ctors.h
> new file mode 100644
> index 0000000..8c034af
> --- /dev/null
> +++ b/include/uk/plat/ctors.h
> @@ -0,0 +1,75 @@
> +/* SPDX-License-Identifier: BSD-3-Clause */
> +/*
> + * Authors: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
> + *
> + *
> + * Copyright (c) 2018, NEC Europe Ltd., NEC Corporation. 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.
> + * 3. Neither the name of the copyright holder nor the names of its
> + *    contributors may be used to endorse or promote products derived from
> + *    this software without specific prior written permission.
> + *
> + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 COPYRIGHT HOLDER OR CONTRIBUTORS 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.
> + *
> + * THIS HEADER MAY NOT BE EXTRACTED OR MODIFIED IN ANY WAY.
> + */
> +
> +#ifndef __UKPLAT_CTORS_H__
> +#define __UKPLAT_CTORS_H__
> +
> +#include <uk/essentials.h>
> +
> +#ifdef __cplusplus
> +extern "C" {
> +#endif
> +
> +typedef void (*ukplat_ctor_func_t)(void);
> +
> +/* Function pointer arrays of constructors; provided by
> + * the platform's linker script */
> +extern const ukplat_ctor_func_t const __preinit_array_start[];
> +extern const ukplat_ctor_func_t const __preinit_array_end;
> +extern const ukplat_ctor_func_t const __init_array_start[];
> +extern const ukplat_ctor_func_t const __init_array_end;
> +
> +/**
> + * Helper macro for iterating over constructor pointer arrays
> + * Please note that the array may contain NULL pointer entries
> + *
> + * @param arr_start
> + *   Start address of pointer array (type: const ukplat_ctor_func_t const [])
> + * @param arr_end
> + *   End address of pointer array
> + * @param i
> + *   Iterator variable (integer) which should be used to access the
> + *   individual fields
> + */
> +#define ukplat_ctor_foreach(arr_start, arr_end, i)                      \
> +     for ((i)=0;                                                        \
> +          &((arr_start)[i]) < &(arr_end); \
> +          ++(i))
> +
> +#ifdef __cplusplus
> +}
> +#endif
> +
> +#endif /* __UKPLAT_CTORS_H__ */
> -- 
> 2.7.4
>
>
> _______________________________________________
> Minios-devel mailing list
> Minios-devel@xxxxxxxxxxxxxxxxxxxx
> https://lists.xenproject.org/mailman/listinfo/minios-devel

-- 
Yuri Volchkov
Software Specialist

NEC Europe Ltd
Kurfürsten-Anlage 36
D-69115 Heidelberg

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.