|
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] [PATCH v2 1/2] xen: move perform_gunzip to common
On Thu, 13 Aug 2015, Jan Beulich wrote:
> >>> On 13.08.15 at 13:21, <stefano.stabellini@xxxxxxxxxxxxx> wrote:
> > --- a/xen/common/Makefile
> > +++ b/xen/common/Makefile
> > @@ -55,6 +55,7 @@ obj-y += vmap.o
> > obj-y += vsprintf.o
> > obj-y += wait.o
> > obj-y += xmalloc_tlsf.o
> > +obj-y += gunzip.o
> >
> > obj-bin-$(CONFIG_X86) += $(foreach n,decompress bunzip2 unxz unlzma unlzo
> > unlz4 earlycpio,$(n).init.o)
>
> Isn't the code you add in gunzip.c all __init / __initdata (or could at least
> be)? If so, this should become obj-bin-y += gunzip.o just like is being
> done for all the other decompressors.
OK, I'll make the change
> > --- /dev/null
> > +++ b/xen/common/gunzip.c
> > @@ -0,0 +1,138 @@
> > +#include <xen/config.h>
>
> This should no be included explicitly in new code.
OK
> > +#include <xen/errno.h>
> > +#include <xen/init.h>
> > +#include <xen/lib.h>
> > +#include <xen/mm.h>
> > +
> > +#define HEAPORDER 3
> > +
> > +static unsigned char *__initdata window;
> > +#define memptr long
> > +static memptr __initdata free_mem_ptr;
> > +static memptr __initdata free_mem_end_ptr;
> > +
> > +#define WSIZE 0x80000000
> > +
> > +static unsigned char *__initdata inbuf;
> > +static unsigned __initdata insize;
> > +
> > +/* Index of next byte to be processed in inbuf: */
> > +static unsigned __initdata inptr;
> > +
> > +/* Bytes in output buffer: */
> > +static unsigned __initdata outcnt;
> > +
> > +#define OF(args) args
> > +#define STATIC static
> > +
> > +#define memzero(s, n) memset((s), 0, (n))
>
> I understand that you're mostly moving code, but I'd appreciate if
> you did some formatting adjustments along the way (like removing
> the superfluous parentheses here...
I prefer to keep code movement as code movement -- much easier to bisect
or spot regressions. If you have any changes that you really require on
top of the movement, I could carry them on a separate patch on top of
this.
> > +typedef unsigned char uch;
> > +typedef unsigned short ush;
> > +typedef unsigned long ulg;
> > +
> > +#define INIT __init
> > +#define INITDATA __initdata
> > +
> > +#define get_byte() (inptr < insize ? inbuf[inptr++] : fill_inbuf())
> > +
> > +/* Diagnostic functions */
> > +#ifdef DEBUG
> > +# define Assert(cond, msg) do { if (!(cond)) error(msg); } while (0)
> > +# define Trace(x) do { fprintf x; } while (0)
> > +# define Tracev(x) do { if (verbose) fprintf x ; } while (0)
> > +# define Tracevv(x) do { if (verbose > 1) fprintf x ; } while (0)
> > +# define Tracec(c, x) do { if (verbose && (c)) fprintf x ; } while (0)
> > +# define Tracecv(c, x) do { if (verbose > 1 && (c)) fprintf x ; } while
> > (0)
> > +#else
> > +# define Assert(cond, msg)
> > +# define Trace(x)
> > +# define Tracev(x)
> > +# define Tracevv(x)
> > +# define Tracec(c, x)
> > +# define Tracecv(c, x)
> > +#endif
> > +
> > +static long __initdata bytes_out;
> > +static void flush_window(void);
> > +
> > +static __init void error(char *x)
> > +{
> > + panic("%s", x);
> > +}
> > +
> > +static __init int fill_inbuf(void)
> > +{
> > + error("ran out of input data");
> > + return 0;
>
> ... or indentation here).
>
> > +}
> > +
> > +
>
> Just one blank line please.
>
> > +#include "inflate.c"
> > +
> > +static __init void flush_window(void)
>
> Any reason this can't be placed ahead of the #include, avoiding the
> extra declaration earlier on?
>
> > +__init int gzip_check(char *image, unsigned long image_len)
>
> int __init gzip_check(...
>
> > +{
> > + unsigned char magic0, magic1;
> > +
> > + if ( image_len < 2 )
> > + return 0;
> > +
> > + magic0 = (unsigned char)image[0];
> > + magic1 = (unsigned char)image[1];
>
> Pointless casts?
>
> > +__init int perform_gunzip(char *output, char *image, unsigned long
> > image_len)
> > +{
> > + int rc;
> > +
> > + if ( !gzip_check(image, image_len) )
> > + return 1;
> > +
> > + window = (unsigned char *)output;
>
> Any reason output and image can't be declared "unsigned char *"
> right away, avoiding such bogus casts? (Same then for
> gzip_check().)
all this code was left untouched by the movement, but FYI simply
changing output and image to unsigned char * would break the compilation
of bzimage.c
> > +
> > + free_mem_ptr = (unsigned long)alloc_xenheap_pages(HEAPORDER, 0);
> > + free_mem_end_ptr = free_mem_ptr + (PAGE_SIZE << HEAPORDER);
> > +
> > + inbuf = (unsigned char *)image;
> > + insize = image_len;
> > + inptr = 0;
> > +
> > + makecrc();
> > +
> > + if ( gunzip() < 0 )
> > + {
> > + rc = -EINVAL;
> > + }
> > + else
> > + {
> > + rc = 0;
> > + }
>
> Many pointless braces.
>
> > --- /dev/null
> > +++ b/xen/include/xen/gunzip.h
> > @@ -0,0 +1,7 @@
> > +#ifndef __XEN_GUNZIP_H
> > +#define __XEN_GUNZIP_H
> > +
> > +__init int gzip_check(char *image, unsigned long image_len);
> > +__init int perform_gunzip(char *output, char *image, unsigned long
> > image_len);
>
> No __init on declarations please.
OK
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxx
http://lists.xen.org/xen-devel
|
![]() |
Lists.xenproject.org is hosted with RackSpace, monitoring our |