[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH] libxl: Include a version of bsd's queue.h
On Tue, 2011-10-25 at 18:35 +0100, Ian Jackson wrote: > We would like some linked list macros which are (a) well known to be > sane and (b) typesafe. BSD's queue.h meets these criteria. > > The files in this changeset were obtained with: > svn co -r 221843 svn://svn.freebsd.org/base/head/sys/sys/ > svn co -r 221843 svn://svn.freebsd.org/base/head/share/man/man3 > > We also provide some simple perlery to arrange to add the libxl_ > namespace prefix to the macros. This will allow us to #include our > modified queue.h in our public header file without clashing with > anyone else who is also using another version of queue.h. > > Signed-off-by: Ian Jackson <ian.jackson@xxxxxxxxxxxxx> > > --- > tools/libxl/Makefile | 5 +- > tools/libxl/bsd-queue.3 | 1044 > +++++++++++++++++++++++++++++++++++ > tools/libxl/bsd-sys-queue-h-seddery | 67 +++ > tools/libxl/bsd-sys-queue.h | 637 +++++++++++++++++++++ > 4 files changed, 1752 insertions(+), 1 deletions(-) > > diff --git a/tools/libxl/Makefile b/tools/libxl/Makefile > index 51e5132..5d7e0f5 100644 > --- a/tools/libxl/Makefile > +++ b/tools/libxl/Makefile > @@ -42,7 +42,7 @@ LIBXL_OBJS += _libxl_types.o libxl_flask.o > _libxl_types_internal.o > > $(LIBXL_OBJS): CFLAGS += $(CFLAGS_libxenctrl) $(CFLAGS_libxenguest) > $(CFLAGS_libxenstore) $(CFLAGS_libblktapctl) > > -AUTOINCS= libxlu_cfg_y.h libxlu_cfg_l.h > +AUTOINCS= libxlu_cfg_y.h libxlu_cfg_l.h _libxl_list.h > AUTOSRCS= libxlu_cfg_y.c libxlu_cfg_l.c > LIBXLU_OBJS = libxlu_cfg_y.o libxlu_cfg_l.o libxlu_cfg.o \ > libxlu_disk_l.o libxlu_disk.o > @@ -81,6 +81,9 @@ _libxl_paths.h: genpath > rm -f $@.tmp > $(call move-if-changed,$@.2.tmp,$@) > > +_libxl_list.h: bsd-sys-queue-h-seddery bsd-sys-queue.h > + ./$^ --prefix=libxl >$@.new && mv -f $@.new $@ > + You should $(call move-if-changed,...) here. > libxl_paths.c: _libxl_paths.h > > libxl.h: _libxl_types.h > diff --git a/tools/libxl/bsd-queue.3 b/tools/libxl/bsd-queue.3 > new file mode 100644 > index 0000000..007ca5c > --- /dev/null > +++ b/tools/libxl/bsd-queue.3 Did you intend to sederize/install this too? > diff --git a/tools/libxl/bsd-sys-queue-h-seddery > b/tools/libxl/bsd-sys-queue-h-seddery > new file mode 100755 > index 0000000..0bab8e0 > --- /dev/null > +++ b/tools/libxl/bsd-sys-queue-h-seddery > @@ -0,0 +1,67 @@ > +#!/usr/bin/perl -p > +# > +# This script is part of the Xen build system. It has a very > +# permissive licence to avoid complicating the licence of the > +# generated header file and to allow this seddery to be reused by > +# other projects. > +# > +# Permission is hereby granted, free of charge, to any person > +# obtaining a copy of this individual file (the "Software"), to deal > +# in the Software without restriction, including without limitation > +# the rights to use, copy, modify, merge, publish, distribute, > +# sublicense, and/or sell copies of the Software, and to permit > +# persons to whom the Software is furnished to do so, subject to the > +# following conditions: > +# > +# The above copyright notice and this permission notice shall be > +# included in all copies or substantial portions of the Software. > +# > +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > +# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > +# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND > +# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS > +# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN > +# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN > +# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE > +# SOFTWARE. > +# > +# Copyright (C) 2011 Citrix Ltd > + > +our $namespace, $ucnamespace; > + > +BEGIN { > + die unless @ARGV; > + $namespace = pop @ARGV; > + $namespace =~ s/^--prefix=// or die; > + $ucnamespace = uc $namespace; > + > + print <<END or die $!; > +/* > + * DO NOT EDIT THIS FILE > + * > + * Generated automatically by bsd-sys-queue-h-seddery to > + * - introduce ${ucnamespace}_ and ${namespace}_ namespace prefixes > + * - turn "struct type" into "type" so that type arguments > + * to the macros are type names not struct tags > + * > + * The purpose of this seddery is to allow the resulting file to be > + * freely included by software which might also want to include other > + * list macros, and to be used when struct tags are not being used or > + * not known. > + */ > +END > +} > + > +s/\b( _SYS_QUEUE | > + SLIST | LIST | STAILQ | TAILQ | QUEUE > + )/${ucnamespace}_$1/xg; > + > +s/\b( TRACEBUF | TRASHIT | > + QMD_ > + )/${ucnamespace}__$1/xg; > + > +s/\b( > + qm_ > + )/${namespace}__$1/xg; > + > +s/\b struct \s+ type \b/type/xg; > diff --git a/tools/libxl/bsd-sys-queue.h b/tools/libxl/bsd-sys-queue.h > new file mode 100644 > index 0000000..274e636 > --- /dev/null > +++ b/tools/libxl/bsd-sys-queue.h I worry (only a little) that people might start trying to edit this directly. Perhaps put it in a subdirectory (tools/libxl/external?) with a README (which can include the svn co runes) and a big warning? "hg chmod -r" might help in some small way too? Ian. _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxxxxxxxx http://lists.xensource.com/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |