cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

compr.h (3139B)


      1/*
      2 * JFFS2 -- Journalling Flash File System, Version 2.
      3 *
      4 * Copyright © 2004   Ferenc Havasi <havasi@inf.u-szeged.hu>,
      5 *		      University of Szeged, Hungary
      6 * Copyright © 2004-2010 David Woodhouse <dwmw2@infradead.org>
      7 *
      8 * For licensing information, see the file 'LICENCE' in this directory.
      9 *
     10 */
     11
     12#ifndef __JFFS2_COMPR_H__
     13#define __JFFS2_COMPR_H__
     14
     15#include <linux/kernel.h>
     16#include <linux/vmalloc.h>
     17#include <linux/list.h>
     18#include <linux/types.h>
     19#include <linux/string.h>
     20#include <linux/slab.h>
     21#include <linux/errno.h>
     22#include <linux/fs.h>
     23#include <linux/jffs2.h>
     24#include "jffs2_fs_i.h"
     25#include "jffs2_fs_sb.h"
     26#include "nodelist.h"
     27
     28#define JFFS2_RUBINMIPS_PRIORITY 10
     29#define JFFS2_DYNRUBIN_PRIORITY  20
     30#define JFFS2_LZARI_PRIORITY     30
     31#define JFFS2_RTIME_PRIORITY     50
     32#define JFFS2_ZLIB_PRIORITY      60
     33#define JFFS2_LZO_PRIORITY       80
     34
     35
     36#define JFFS2_RUBINMIPS_DISABLED /* RUBINs will be used only */
     37#define JFFS2_DYNRUBIN_DISABLED  /*	   for decompression */
     38
     39#define JFFS2_COMPR_MODE_NONE       0
     40#define JFFS2_COMPR_MODE_PRIORITY   1
     41#define JFFS2_COMPR_MODE_SIZE       2
     42#define JFFS2_COMPR_MODE_FAVOURLZO  3
     43#define JFFS2_COMPR_MODE_FORCELZO   4
     44#define JFFS2_COMPR_MODE_FORCEZLIB  5
     45
     46#define FAVOUR_LZO_PERCENT 80
     47
     48struct jffs2_compressor {
     49	struct list_head list;
     50	int priority;			/* used by prirority comr. mode */
     51	char *name;
     52	char compr;			/* JFFS2_COMPR_XXX */
     53	int (*compress)(unsigned char *data_in, unsigned char *cpage_out,
     54			uint32_t *srclen, uint32_t *destlen);
     55	int (*decompress)(unsigned char *cdata_in, unsigned char *data_out,
     56			  uint32_t cdatalen, uint32_t datalen);
     57	int usecount;
     58	int disabled;		/* if set the compressor won't compress */
     59	unsigned char *compr_buf;	/* used by size compr. mode */
     60	uint32_t compr_buf_size;	/* used by size compr. mode */
     61	uint32_t stat_compr_orig_size;
     62	uint32_t stat_compr_new_size;
     63	uint32_t stat_compr_blocks;
     64	uint32_t stat_decompr_blocks;
     65};
     66
     67int jffs2_register_compressor(struct jffs2_compressor *comp);
     68int jffs2_unregister_compressor(struct jffs2_compressor *comp);
     69
     70int jffs2_compressors_init(void);
     71int jffs2_compressors_exit(void);
     72
     73uint16_t jffs2_compress(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
     74			unsigned char *data_in, unsigned char **cpage_out,
     75			uint32_t *datalen, uint32_t *cdatalen);
     76
     77int jffs2_decompress(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
     78		     uint16_t comprtype, unsigned char *cdata_in,
     79		     unsigned char *data_out, uint32_t cdatalen, uint32_t datalen);
     80
     81void jffs2_free_comprbuf(unsigned char *comprbuf, unsigned char *orig);
     82
     83/* Compressor modules */
     84/* These functions will be called by jffs2_compressors_init/exit */
     85
     86#ifdef CONFIG_JFFS2_RUBIN
     87int jffs2_rubinmips_init(void);
     88void jffs2_rubinmips_exit(void);
     89int jffs2_dynrubin_init(void);
     90void jffs2_dynrubin_exit(void);
     91#endif
     92#ifdef CONFIG_JFFS2_RTIME
     93int jffs2_rtime_init(void);
     94void jffs2_rtime_exit(void);
     95#endif
     96#ifdef CONFIG_JFFS2_ZLIB
     97int jffs2_zlib_init(void);
     98void jffs2_zlib_exit(void);
     99#endif
    100#ifdef CONFIG_JFFS2_LZO
    101int jffs2_lzo_init(void);
    102void jffs2_lzo_exit(void);
    103#endif
    104
    105#endif /* __JFFS2_COMPR_H__ */