Re: [PATCH] list: avoid incompatibility with *BSD sys/queue.h

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

 



> On 17 Jul 2016, at 02:25, Eric Wong <e@xxxxxxxxx> wrote:
> 
> Eric Wong <e@xxxxxxxxx> wrote:
>> Lars Schneider <larsxschneider@xxxxxxxxx> wrote:
>>> It looks like as if this topic breaks the OS X build because 
>>> it defines LIST_HEAD. LIST_HEAD is already defined in 
>>> /usr/include/sys/queue.h. 
>> 
>> Oops, I suppose GIT_LIST_HEAD is an acceptable name?
>> (looks a bit like a refname, though...).
>> 
>> Or maybe CDS_LIST_HEAD (since I originally took it from the cds
>> namespace under urcu)
> 
> Naming things is hard; I think it's better to just undef an
> existing LIST_HEAD, instead, since it's unlikely we'd ever use
> sys/queue.h from *BSD.  (sys/queue.h is branchier, and IMHO
> sys/queue.h macros are uglier than list_entry (container_of))
That sounds like the best solution to me, too.


> I also wonder where we use sys/queue.h, since I use
>> LIST_HEAD from ccan/list/list.h in a different project
>> without conflicts...
> 
> Still wondering... Checking sys/mman.h in an old FreeBSD source
> tree I had lying around reveals "#include <sys/queue.h>" is
> guarded by "#if defined(_KERNEL)", so it mman.h wouldn't pull
> it in for userspace builds...
> 
> -----8<------
> Subject: [PATCH] list: avoid incompatibility with *BSD sys/queue.h
> 
> Somehow, the OS X build pulls in sys/queue.h and causes
> conflicts with the LIST_HEAD macro, here.
> 
> ref: http://mid.gmane.org/FB76544F-16F7-45CA-9649-FD62EE44B0DE@xxxxxxxxx
> 
> Reported-by: Lars Schneider <larsxschneider@xxxxxxxxx>
> Signed-off-by: Eric Wong <e@xxxxxxxxx>
> ---
> list.h | 2 ++
> 1 file changed, 2 insertions(+)
> 
> diff --git a/list.h b/list.h
> index f65edce..a226a87 100644
> --- a/list.h
> +++ b/list.h
> @@ -36,6 +36,8 @@ struct list_head {
> 	struct list_head *next, *prev;
> };
> 
> +/* avoid conflicts with BSD-only sys/queue.h */
> +#undef LIST_HEAD
> /* Define a variable with the head and tail of the list. */
> #define LIST_HEAD(name) \
> 	struct list_head name = { &(name), &(name) }
> -- 
> EW

This patch compiles without trouble on my local OS X.

Thanks,
Lars

--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]