Missing LIST_PREV() ?

Julian Elischer julian at elischer.org
Tue May 8 18:45:06 UTC 2007


John Baldwin wrote:
> On Monday 07 May 2007 04:25:18 pm Giorgos Keramidas wrote:

>> with other compilers.
> 
> This can be fixed by passing the type as an argument which is what 
> TAILQ_PREV() does:
> 
> #define TAILQ_PREV(elm, headname, field)                                \
>         (*(((struct headname *)((elm)->field.tqe_prev))->tqh_last))
> 
> I'm not sure how portable offsetof() would be though.  In general if you want 
> this feature, you should just use a TAILQ though.  TAILQ_ENTRY() is the same 
> size as a LIST_ENTRY(), it just adds one more pointer to the HEAD structure.  
> It is also specifically designed to make TAILQ_PREV() work w/o needing the 
> offsetof() hack.
> 

I agree with this.. that's why we have the different types.
The suggested change in ingenious but I don't know how portable it is..



More information about the freebsd-arch mailing list