Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  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  *
  7  * For licensing information, see the file 'LICENCE' in this directory.
  8  *
  9  */
 10 
 11 #ifndef __JFFS2_COMPR_H__
 12 #define __JFFS2_COMPR_H__
 13 
 14 #include <linux/kernel.h>
 15 #include <linux/vmalloc.h>
 16 #include <linux/list.h>
 17 #include <linux/types.h>
 18 #include <linux/string.h>
 19 #include <linux/slab.h>
 20 #include <linux/errno.h>
 21 #include <linux/fs.h>
 22 #include <linux/jffs2.h>
 23 #include "jffs2_fs_i.h"
 24 #include "jffs2_fs_sb.h"
 25 #include "nodelist.h"
 26 
 27 #define JFFS2_RUBINMIPS_PRIORITY 10
 28 #define JFFS2_DYNRUBIN_PRIORITY  20
 29 #define JFFS2_LZARI_PRIORITY     30
 30 #define JFFS2_RTIME_PRIORITY     50
 31 #define JFFS2_ZLIB_PRIORITY      60
 32 #define JFFS2_LZO_PRIORITY       80
 33 
 34 
 35 #define JFFS2_RUBINMIPS_DISABLED /* RUBINs will be used only */
 36 #define JFFS2_DYNRUBIN_DISABLED  /*        for decompression */
 37 
 38 #define JFFS2_COMPR_MODE_NONE       0
 39 #define JFFS2_COMPR_MODE_PRIORITY   1
 40 #define JFFS2_COMPR_MODE_SIZE       2
 41 #define JFFS2_COMPR_MODE_FAVOURLZO  3
 42 
 43 #define FAVOUR_LZO_PERCENT 80
 44 
 45 struct jffs2_compressor {
 46         struct list_head list;
 47         int priority;                   /* used by prirority comr. mode */
 48         char *name;
 49         char compr;                     /* JFFS2_COMPR_XXX */
 50         int (*compress)(unsigned char *data_in, unsigned char *cpage_out,
 51                         uint32_t *srclen, uint32_t *destlen, void *model);
 52         int (*decompress)(unsigned char *cdata_in, unsigned char *data_out,
 53                           uint32_t cdatalen, uint32_t datalen, void *model);
 54         int usecount;
 55         int disabled;           /* if set the compressor won't compress */
 56         unsigned char *compr_buf;       /* used by size compr. mode */
 57         uint32_t compr_buf_size;        /* used by size compr. mode */
 58         uint32_t stat_compr_orig_size;
 59         uint32_t stat_compr_new_size;
 60         uint32_t stat_compr_blocks;
 61         uint32_t stat_decompr_blocks;
 62 };
 63 
 64 int jffs2_register_compressor(struct jffs2_compressor *comp);
 65 int jffs2_unregister_compressor(struct jffs2_compressor *comp);
 66 
 67 int jffs2_compressors_init(void);
 68 int jffs2_compressors_exit(void);
 69 
 70 uint16_t jffs2_compress(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
 71                         unsigned char *data_in, unsigned char **cpage_out,
 72                         uint32_t *datalen, uint32_t *cdatalen);
 73 
 74 int jffs2_decompress(struct jffs2_sb_info *c, struct jffs2_inode_info *f,
 75                      uint16_t comprtype, unsigned char *cdata_in,
 76                      unsigned char *data_out, uint32_t cdatalen, uint32_t datalen);
 77 
 78 void jffs2_free_comprbuf(unsigned char *comprbuf, unsigned char *orig);
 79 
 80 /* Compressor modules */
 81 /* These functions will be called by jffs2_compressors_init/exit */
 82 
 83 #ifdef CONFIG_JFFS2_RUBIN
 84 int jffs2_rubinmips_init(void);
 85 void jffs2_rubinmips_exit(void);
 86 int jffs2_dynrubin_init(void);
 87 void jffs2_dynrubin_exit(void);
 88 #endif
 89 #ifdef CONFIG_JFFS2_RTIME
 90 int jffs2_rtime_init(void);
 91 void jffs2_rtime_exit(void);
 92 #endif
 93 #ifdef CONFIG_JFFS2_ZLIB
 94 int jffs2_zlib_init(void);
 95 void jffs2_zlib_exit(void);
 96 #endif
 97 #ifdef CONFIG_JFFS2_LZO
 98 int jffs2_lzo_init(void);
 99 void jffs2_lzo_exit(void);
100 #endif
101 
102 #endif /* __JFFS2_COMPR_H__ */
103 
  This page was automatically generated by the LXR engine.