[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

 


Rackspace

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