1 /*-
2  * Copyright (c) 2000, 2020 Oracle and/or its affiliates.  All rights reserved.
3  *
4  * See the file LICENSE for license information.
5  *
6  * $Id$
7  */
8 
9 #include "db_config.h"
10 
11 #include "db_int.h"
12 
13 /*
14  * __db_util_cache --
15  *	Compute if we have enough cache.
16  *
17  * PUBLIC: int __db_util_cache __P((DB *, u_int32_t *, int *));
18  */
19 int
__db_util_cache(dbp,cachep,resizep)20 __db_util_cache(dbp, cachep, resizep)
21 	DB *dbp;
22 	u_int32_t *cachep;
23 	int *resizep;
24 {
25 	u_int32_t pgsize;
26 	int ret;
27 
28 	/* Get the current page size. */
29 	if ((ret = dbp->get_pagesize(dbp, &pgsize)) != 0)
30 		return (ret);
31 
32 	/*
33 	 * The current cache size is in cachep.  If it's insufficient, set the
34 	 * the memory referenced by resizep to 1 and set cachep to the minimum
35 	 * size needed.
36 	 *
37 	 * Make sure our current cache is big enough.  We want at least
38 	 * DB_MINPAGECACHE pages in the cache.
39 	 */
40 	if ((*cachep / pgsize) < DB_MINPAGECACHE) {
41 		*resizep = 1;
42 		*cachep = pgsize * DB_MINPAGECACHE;
43 	} else
44 		*resizep = 0;
45 
46 	return (0);
47 }
48