• Phillip Lougher's avatar
    Squashfs: Refactor decompressor interface and code · 9508c6b9
    Phillip Lougher authored
    The decompressor interface and code was written from
    the point of view of single-threaded operation.  In doing
    so it mixed a lot of single-threaded implementation specific
    aspects into the decompressor code and elsewhere which makes it
    difficult to seamlessly support multiple different decompressor
    implementations.
    
    This patch does the following:
    
    1.  It removes compressor_options parsing from the decompressor
        init() function.  This allows the decompressor init() function
        to be dynamically called to instantiate multiple decompressors,
        without the compressor options needing to be read and parsed each
        time.
    
    2.  It moves threading and all sleeping operations out of the
        decompressors.  In doing so, it makes the decompressors
        non-blocking wrappers which only deal with interfacing with
        the decompressor implementation.
    
    3. It splits decompressor.[ch] into decompressor generic functions
       in decompressor.[ch], and moves the single threaded
       decompressor implementation into decompressor_single.c.
    
    The result of this patch is Squashfs should now be able to
    support multiple decompressors by adding new decompressor_xxx.c
    files with specialised implementations of the functions in
    decompressor_single.c
    Signed-off-by: 's avatarPhillip Lougher <phillip@squashfs.org.uk>
    Reviewed-by: 's avatarMinchan Kim <minchan@kernel.org>
    9508c6b9
super.c 13.7 KB