On Wed, Aug 01, 2018 at 04:24:58PM +0300, Nir Soffer wrote: > On Wed, Aug 1, 2018 at 2:14 PM Richard W.M. Jones <[email protected]> wrote: > > > Currently this adds two useful header files containing functions which > > will be consumed by filters in later commits. > > --- > > Makefile.am | 5 +++- > > common/include/Makefile.am | 39 ++++++++++++++++++++++++ > > common/include/ispowerof2.h | 50 +++++++++++++++++++++++++++++++ > > common/include/iszero.h | 60 +++++++++++++++++++++++++++++++++++++ > > configure.ac | 1 + > > 5 files changed, 154 insertions(+), 1 deletion(-) > > > > diff --git a/Makefile.am b/Makefile.am > > index 6a3a377..09dbdb9 100644 > > --- a/Makefile.am > > +++ b/Makefile.am > > @@ -53,7 +53,10 @@ SUBDIRS = \ > > src > > > > if HAVE_PLUGINS > > -SUBDIRS += plugins filters > > +SUBDIRS += \ > > + common/include \ > > + plugins \ > > + filters > > endif > > > > SUBDIRS += tests > > diff --git a/common/include/Makefile.am b/common/include/Makefile.am > > new file mode 100644 > > index 0000000..4ce1723 > > --- /dev/null > > +++ b/common/include/Makefile.am > > @@ -0,0 +1,39 @@ > > +# nbdkit > > +# Copyright (C) 2018 Red Hat Inc. > > +# All rights reserved. > > +# > > +# Redistribution and use in source and binary forms, with or without > > +# modification, are permitted provided that the following conditions are > > +# met: > > +# > > +# * Redistributions of source code must retain the above copyright > > +# notice, this list of conditions and the following disclaimer. > > +# > > +# * Redistributions in binary form must reproduce the above copyright > > +# notice, this list of conditions and the following disclaimer in the > > +# documentation and/or other materials provided with the distribution. > > +# > > +# * Neither the name of Red Hat nor the names of its contributors may be > > +# used to endorse or promote products derived from this software without > > +# specific prior written permission. > > +# > > +# THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND > > +# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, > > +# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A > > +# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR > > +# CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > > +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > > +# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF > > +# USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND > > +# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, > > +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT > > +# OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > > +# SUCH DAMAGE. > > + > > +include $(top_srcdir)/common-rules.mk > > + > > +# These headers contain only common code shared by plugins and > > +# filters. They are not installed. > > +EXTRA_DIST = \ > > + ispowerof2.h \ > > + iszero.h > > diff --git a/common/include/ispowerof2.h b/common/include/ispowerof2.h > > new file mode 100644 > > index 0000000..41844b3 > > --- /dev/null > > +++ b/common/include/ispowerof2.h > > @@ -0,0 +1,50 @@ > > +/* nbdkit > > + * Copyright (C) 2018 Red Hat Inc. > > + * All rights reserved. > > + * > > + * Redistribution and use in source and binary forms, with or without > > + * modification, are permitted provided that the following conditions are > > + * met: > > + * > > + * * Redistributions of source code must retain the above copyright > > + * notice, this list of conditions and the following disclaimer. > > + * > > + * * Redistributions in binary form must reproduce the above copyright > > + * notice, this list of conditions and the following disclaimer in the > > + * documentation and/or other materials provided with the distribution. > > + * > > + * * Neither the name of Red Hat nor the names of its contributors may be > > + * used to endorse or promote products derived from this software without > > + * specific prior written permission. > > + * > > + * THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND > > + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, > > + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A > > + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR > > + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > > + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > > + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF > > + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND > > + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, > > + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT > > + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > > + * SUCH DAMAGE. > > + */ > > + > > +#ifndef NBDKIT_ISPOWEROF2_H > > +#define NBDKIT_ISPOWEROF2_H > > + > > +#include <stdbool.h> > > + > > +/* Returns true if v is a power of 2. > > + * > > + * Uses the algorithm described at > > + * > > http://graphics.stanford.edu/~seander/bithacks.html#DetermineIfPowerOf2 > > + */ > > +static inline bool > > +is_power_of_2 (unsigned long v) > > +{ > > + return v && ((v & (v - 1)) == 0); > > +} > > + > > +#endif /* NBDKIT_ISPOWEROF2_H */ > > diff --git a/common/include/iszero.h b/common/include/iszero.h > > new file mode 100644 > > index 0000000..331614c > > --- /dev/null > > +++ b/common/include/iszero.h > > @@ -0,0 +1,60 @@ > > +/* nbdkit > > + * Copyright (C) 2018 Red Hat Inc. > > + * All rights reserved. > > + * > > + * Redistribution and use in source and binary forms, with or without > > + * modification, are permitted provided that the following conditions are > > + * met: > > + * > > + * * Redistributions of source code must retain the above copyright > > + * notice, this list of conditions and the following disclaimer. > > + * > > + * * Redistributions in binary form must reproduce the above copyright > > + * notice, this list of conditions and the following disclaimer in the > > + * documentation and/or other materials provided with the distribution. > > + * > > + * * Neither the name of Red Hat nor the names of its contributors may be > > + * used to endorse or promote products derived from this software without > > + * specific prior written permission. > > + * > > + * THIS SOFTWARE IS PROVIDED BY RED HAT AND CONTRIBUTORS ''AS IS'' AND > > + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, > > + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A > > + * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL RED HAT OR > > + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, > > + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT > > + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF > > + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND > > + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, > > + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT > > + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF > > + * SUCH DAMAGE. > > + */ > > + > > +#ifndef NBDKIT_ISZERO_H > > +#define NBDKIT_ISZERO_H > > + > > +#include <string.h> > > +#include <stdbool.h> > > + > > +/* Return true iff the buffer is all zero bytes. > > + * > > + * The clever approach here was suggested by Eric Blake. See: > > + * https://www.redhat.com/archives/libguestfs/2017-April/msg00171.html > > > It would be nice to mention the original author: > http://rusty.ozlabs.org/?p=560
Thanks - I didn't know that. I will add the link to the comment. Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com libguestfs lets you edit virtual machines. Supports shell scripting, bindings from many languages. http://libguestfs.org _______________________________________________ Libguestfs mailing list [email protected] https://www.redhat.com/mailman/listinfo/libguestfs
