|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT/LIBELF PATCH 3/7] Add SLIST macro operation
Reviewed-by: Razvan Deaconescu <razvan.deaconescu@xxxxxxxxx>
Simon Kuenzer <simon.kuenzer@xxxxxxxxx> writes:
> Adds missing `SLIST` macros so that libelf can be built
> without `<sys/queues.h>`.
>
> Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx>
> ---
> _elftc.h | 55 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
> _libelf.h | 2 ++
> elf_scn.c | 2 ++
> 3 files changed, 59 insertions(+)
>
> diff --git a/_elftc.h b/_elftc.h
> index 94272ef..f0fa046 100644
> --- a/_elftc.h
> +++ b/_elftc.h
> @@ -83,6 +83,35 @@
> (var) = (tvar))
> #endif
>
> +#ifndef SLIST_HEAD
> +#define SLIST_HEAD(name, type) \
> +struct name { \
> + struct type *slh_first; /* first element */ \
> +}
> +#endif
> +
> +#ifndef SLIST_ENTRY
> +#define SLIST_ENTRY(type) \
> +struct { \
> + struct type *sle_next; /* next element */ \
> +}
> +#endif
> +
> +#ifndef SLIST_FIRST
> +#define SLIST_FIRST(head) ((head)->slh_first)
> +#endif
> +
> +#ifndef SLIST_NEXT
> +#define SLIST_NEXT(elm, field) ((elm)->field.sle_next)
> +#endif
> +
> +#ifndef SLIST_FOREACH
> +#define SLIST_FOREACH(var, head, field) \
> + for ((var) = SLIST_FIRST((head)); \
> + (var); \
> + (var) = SLIST_NEXT((var), field))
> +#endif
> +
> #ifndef SLIST_FOREACH_SAFE
> #define SLIST_FOREACH_SAFE(var, head, field, tvar) \
> for ((var) = SLIST_FIRST((head)); \
> @@ -90,6 +119,32 @@
> (var) = (tvar))
> #endif
>
> +#ifndef SLIST_INIT
> +#define SLIST_INIT(head) do { \
> + SLIST_FIRST((head)) = 0; \
> +} while (0)
> +#endif
> +
> +#ifndef SLIST_INSERT_AFTER
> +#define SLIST_INSERT_AFTER(slistelm, elm, field) do {
> \
> + SLIST_NEXT((elm), field) = SLIST_NEXT((slistelm), field); \
> + SLIST_NEXT((slistelm), field) = (elm); \
> +} while (0)
> +#endif
> +
> +#ifndef SLIST_INSERT_HEAD
> +#define SLIST_INSERT_HEAD(head, elm, field) do { \
> + SLIST_NEXT((elm), field) = SLIST_FIRST((head)); \
> + SLIST_FIRST((head)) = (elm); \
> +} while (0)
> +#endif
> +
> +#ifndef SLIST_REMOVE_HEAD
> +#define SLIST_REMOVE_HEAD(head, field) do {
> \
> + SLIST_FIRST((head)) = SLIST_NEXT(SLIST_FIRST((head)), field); \
> +} while (0)
> +#endif
> +
> #ifndef STAILQ_CONCAT
> #define STAILQ_CONCAT(head1, head2) do { \
> if (!STAILQ_EMPTY((head2))) { \
> diff --git a/_libelf.h b/_libelf.h
> index be45335..734cbe7 100644
> --- a/_libelf.h
> +++ b/_libelf.h
> @@ -29,7 +29,9 @@
> #ifndef __LIBELF_H_
> #define __LIBELF_H_
>
> +#if !defined(__Unikraft__)
> #include <sys/queue.h>
> +#endif
>
> #include "_libelf_config.h"
>
> diff --git a/elf_scn.c b/elf_scn.c
> index d3e2747..4bc4035 100644
> --- a/elf_scn.c
> +++ b/elf_scn.c
> @@ -24,7 +24,9 @@
> * SUCH DAMAGE.
> */
>
> +#if !defined(__Unikraft__)
> #include <sys/queue.h>
> +#endif
>
> #include <assert.h>
> #include <errno.h>
_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |