[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 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. > --- /dev/null > +++ b/xen/common/gunzip.c > @@ -0,0 +1,138 @@ > +#include <xen/config.h> This should no be included explicitly in new code. > +#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... > +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().) > + > + 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. Jan _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx http://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |