summaryrefslogtreecommitdiff
path: root/xdelta3/xdelta3-blkcache.h
diff options
context:
space:
mode:
Diffstat (limited to 'xdelta3/xdelta3-blkcache.h')
-rw-r--r--xdelta3/xdelta3-blkcache.h13
1 files changed, 7 insertions, 6 deletions
diff --git a/xdelta3/xdelta3-blkcache.h b/xdelta3/xdelta3-blkcache.h
index dcd4c06..36f8216 100644
--- a/xdelta3/xdelta3-blkcache.h
+++ b/xdelta3/xdelta3-blkcache.h
@@ -21,6 +21,8 @@
21/* TODO: This code is heavily revised from 3.0z but still needs major 21/* TODO: This code is heavily revised from 3.0z but still needs major
22 * refactoring. */ 22 * refactoring. */
23 23
24#include "xdelta3-internal.h"
25
24typedef struct _main_blklru main_blklru; 26typedef struct _main_blklru main_blklru;
25typedef struct _main_blklru_list main_blklru_list; 27typedef struct _main_blklru_list main_blklru_list;
26 28
@@ -38,8 +40,7 @@ struct _main_blklru
38 main_blklru_list link; 40 main_blklru_list link;
39}; 41};
40 42
41/* TODO: The value for MAX_LRU_SIZE has what significance? */ 43#define MAX_LRU_SIZE 32U
42#define MAX_LRU_SIZE 32U /* must be a power of 2 */
43#define XD3_MINSRCWINSZ (XD3_ALLOCSIZE * MAX_LRU_SIZE) 44#define XD3_MINSRCWINSZ (XD3_ALLOCSIZE * MAX_LRU_SIZE)
44 45
45XD3_MAKELIST(main_blklru_list,main_blklru,link); 46XD3_MAKELIST(main_blklru_list,main_blklru,link);
@@ -67,7 +68,7 @@ static void main_lru_cleanup (void)
67{ 68{
68 if (lru != NULL) 69 if (lru != NULL)
69 { 70 {
70 main_free (lru[0].blk); 71 main_buffree (lru[0].blk);
71 } 72 }
72 73
73 main_free (lru); 74 main_free (lru);
@@ -145,7 +146,7 @@ main_set_source (xd3_stream *stream, xd3_cmd cmd,
145 memset (lru, 0, sizeof(lru[0]) * MAX_LRU_SIZE); 146 memset (lru, 0, sizeof(lru[0]) * MAX_LRU_SIZE);
146 147
147 /* Allocate the entire buffer. */ 148 /* Allocate the entire buffer. */
148 if ((lru[0].blk = (uint8_t*) main_malloc (option_srcwinsz)) == NULL) 149 if ((lru[0].blk = (uint8_t*) main_bufalloc (option_srcwinsz)) == NULL)
149 { 150 {
150 ret = ENOMEM; 151 ret = ENOMEM;
151 return ret; 152 return ret;
@@ -189,11 +190,11 @@ main_set_source (xd3_stream *stream, xd3_cmd cmd,
189 if (!sfile->size_known || source_size > option_srcwinsz) 190 if (!sfile->size_known || source_size > option_srcwinsz)
190 { 191 {
191 /* Modify block 0, change blocksize. */ 192 /* Modify block 0, change blocksize. */
192 lru_size = MAX_LRU_SIZE; 193 blksize = option_srcwinsz / MAX_LRU_SIZE;
193 blksize = option_srcwinsz / MAX_LRU_SIZE; /* Power of 2 */
194 source->blksize = blksize; 194 source->blksize = blksize;
195 source->onblk = blksize; /* xd3 sets onblk */ 195 source->onblk = blksize; /* xd3 sets onblk */
196 lru[0].size = blksize; 196 lru[0].size = blksize;
197 lru_size = MAX_LRU_SIZE;
197 198
198 /* Setup rest of blocks. */ 199 /* Setup rest of blocks. */
199 for (i = 1; i < lru_size; i += 1) 200 for (i = 1; i < lru_size; i += 1)