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