mtd/fs/jffs2 compr_zlib.c,1.18,1.19
David Woodhouse
dwmw2 at infradead.org
Thu Jan 9 08:55:05 EST 2003
- Previous message: mtd/fs/jffs2/ecos/src dir-ecos.c,1.1,1.2 file-ecos.c,1.1,1.2 fs-ecos.c,1.5,1.6 jffs2port.h,1.1,1.2 malloc-ecos.c,1.1,1.2 os-ecos.h,1.1,1.2
- Next message: mtd/fs/jffs2 erase.c,1.45,1.46
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
Update of /home/cvs/mtd/fs/jffs2
In directory phoenix.infradead.org:/tmp/cvs-serv28130
Modified Files:
compr_zlib.c
Log Message:
Rearrange a little to clean up eCos build with fewer ifdefs
Index: compr_zlib.c
===================================================================
RCS file: /home/cvs/mtd/fs/jffs2/compr_zlib.c,v
retrieving revision 1.18
retrieving revision 1.19
diff -u -r1.18 -r1.19
--- compr_zlib.c 20 May 2002 14:56:37 -0000 1.18
+++ compr_zlib.c 9 Jan 2003 13:55:03 -0000 1.19
@@ -11,7 +11,7 @@
*
*/
-#ifndef __KERNEL__
+#if !defined(__KERNEL__) && !defined(__ECOS)
#error "The userspace support got too messy and was removed. Update your mkfs.jffs2"
#endif
@@ -21,6 +21,7 @@
#include <linux/slab.h>
#include <linux/jffs2.h>
#include <linux/zlib.h>
+#include <asm/semaphore.h>
#include "nodelist.h"
/* Plan: call deflate() with avail_in == *sourcelen,
@@ -34,21 +35,21 @@
static DECLARE_MUTEX(deflate_sem);
static DECLARE_MUTEX(inflate_sem);
-static void *deflate_workspace;
-static void *inflate_workspace;
+static z_stream inf_strm, def_strm;
+#ifdef __KERNEL__ /* Linux-only */
int __init jffs2_zlib_init(void)
{
- deflate_workspace = vmalloc(zlib_deflate_workspacesize());
- if (!deflate_workspace) {
+ def_strm.workspace = vmalloc(zlib_deflate_workspacesize());
+ if (!def_strm.workspace) {
printk(KERN_WARNING "Failed to allocate %d bytes for deflate workspace\n", zlib_deflate_workspacesize());
return -ENOMEM;
}
D1(printk(KERN_DEBUG "Allocated %d bytes for deflate workspace\n", zlib_deflate_workspacesize()));
- inflate_workspace = vmalloc(zlib_inflate_workspacesize());
- if (!inflate_workspace) {
+ inf_strm.workspace = vmalloc(zlib_inflate_workspacesize());
+ if (!inf_strm.workspace) {
printk(KERN_WARNING "Failed to allocate %d bytes for inflate workspace\n", zlib_inflate_workspacesize());
- vfree(deflate_workspace);
+ vfree(def_strm.workspace);
return -ENOMEM;
}
D1(printk(KERN_DEBUG "Allocated %d bytes for inflate workspace\n", zlib_inflate_workspacesize()));
@@ -57,97 +58,99 @@
void jffs2_zlib_exit(void)
{
- vfree(deflate_workspace);
- vfree(inflate_workspace);
+ vfree(def_strm.workspace);
+ vfree(inf_strm.workspace);
}
+#endif /* __KERNEL__ */
int jffs2_zlib_compress(unsigned char *data_in, unsigned char *cpage_out,
uint32_t *sourcelen, uint32_t *dstlen)
{
- z_stream strm;
int ret;
if (*dstlen <= STREAM_END_SPACE)
return -1;
down(&deflate_sem);
- strm.workspace = deflate_workspace;
- if (Z_OK != zlib_deflateInit(&strm, 3)) {
+ if (Z_OK != zlib_deflateInit(&def_strm, 3)) {
printk(KERN_WARNING "deflateInit failed\n");
up(&deflate_sem);
return -1;
}
- strm.next_in = data_in;
- strm.total_in = 0;
+ def_strm.next_in = data_in;
+ def_strm.total_in = 0;
- strm.next_out = cpage_out;
- strm.total_out = 0;
+ def_strm.next_out = cpage_out;
+ def_strm.total_out = 0;
- while (strm.total_out < *dstlen - STREAM_END_SPACE && strm.total_in < *sourcelen) {
- strm.avail_out = *dstlen - (strm.total_out + STREAM_END_SPACE);
- strm.avail_in = min((unsigned)(*sourcelen-strm.total_in), strm.avail_out);
+ while (def_strm.total_out < *dstlen - STREAM_END_SPACE && def_strm.total_in < *sourcelen) {
+ def_strm.avail_out = *dstlen - (def_strm.total_out + STREAM_END_SPACE);
+ def_strm.avail_in = min((unsigned)(*sourcelen-def_strm.total_in), def_strm.avail_out);
D1(printk(KERN_DEBUG "calling deflate with avail_in %d, avail_out %d\n",
- strm.avail_in, strm.avail_out));
- ret = zlib_deflate(&strm, Z_PARTIAL_FLUSH);
+ def_strm.avail_in, def_strm.avail_out));
+ ret = zlib_deflate(&def_strm, Z_PARTIAL_FLUSH);
D1(printk(KERN_DEBUG "deflate returned with avail_in %d, avail_out %d, total_in %ld, total_out %ld\n",
- strm.avail_in, strm.avail_out, strm.total_in, strm.total_out));
+ def_strm.avail_in, def_strm.avail_out, def_strm.total_in, def_strm.total_out));
if (ret != Z_OK) {
D1(printk(KERN_DEBUG "deflate in loop returned %d\n", ret));
- zlib_deflateEnd(&strm);
+ zlib_deflateEnd(&def_strm);
up(&deflate_sem);
return -1;
}
}
- strm.avail_out += STREAM_END_SPACE;
- strm.avail_in = 0;
- ret = zlib_deflate(&strm, Z_FINISH);
- zlib_deflateEnd(&strm);
- up(&deflate_sem);
+ def_strm.avail_out += STREAM_END_SPACE;
+ def_strm.avail_in = 0;
+ ret = zlib_deflate(&def_strm, Z_FINISH);
+ zlib_deflateEnd(&def_strm);
+
if (ret != Z_STREAM_END) {
D1(printk(KERN_DEBUG "final deflate returned %d\n", ret));
- return -1;
+ ret = -1;
+ goto out;
}
D1(printk(KERN_DEBUG "zlib compressed %ld bytes into %ld\n",
- strm.total_in, strm.total_out));
+ def_strm.total_in, def_strm.total_out));
- if (strm.total_out >= strm.total_in)
- return -1;
+ if (def_strm.total_out >= def_strm.total_in) {
+ ret = -1;
+ goto out;
+ }
- *dstlen = strm.total_out;
- *sourcelen = strm.total_in;
- return 0;
+ *dstlen = def_strm.total_out;
+ *sourcelen = def_strm.total_in;
+ out:
+ up(&deflate_sem);
+ return ret;
}
void jffs2_zlib_decompress(unsigned char *data_in, unsigned char *cpage_out,
uint32_t srclen, uint32_t destlen)
{
- z_stream strm;
int ret;
down(&inflate_sem);
- strm.workspace = inflate_workspace;
- if (Z_OK != zlib_inflateInit(&strm)) {
+ if (Z_OK != zlib_inflateInit(&inf_strm)) {
printk(KERN_WARNING "inflateInit failed\n");
up(&inflate_sem);
return;
}
- strm.next_in = data_in;
- strm.avail_in = srclen;
- strm.total_in = 0;
+ inf_strm.next_in = data_in;
+ inf_strm.avail_in = srclen;
+ inf_strm.total_in = 0;
- strm.next_out = cpage_out;
- strm.avail_out = destlen;
- strm.total_out = 0;
+ inf_strm.next_out = cpage_out;
+ inf_strm.avail_out = destlen;
+ inf_strm.total_out = 0;
- while((ret = zlib_inflate(&strm, Z_FINISH)) == Z_OK)
+ while((ret = zlib_inflate(&inf_strm, Z_FINISH)) == Z_OK)
;
if (ret != Z_STREAM_END) {
printk(KERN_NOTICE "inflate returned %d\n", ret);
}
- zlib_inflateEnd(&strm);
+ zlib_inflateEnd(&inf_strm);
up(&inflate_sem);
}
- Previous message: mtd/fs/jffs2/ecos/src dir-ecos.c,1.1,1.2 file-ecos.c,1.1,1.2 fs-ecos.c,1.5,1.6 jffs2port.h,1.1,1.2 malloc-ecos.c,1.1,1.2 os-ecos.h,1.1,1.2
- Next message: mtd/fs/jffs2 erase.c,1.45,1.46
- Messages sorted by:
[ date ]
[ thread ]
[ subject ]
[ author ]
More information about the linux-mtd-cvs
mailing list