summaryrefslogtreecommitdiff
path: root/libc/stdlib/malloc-standard/mallopt.c
blob: 053242dbe28886f6c5d530257824a035e873b8e7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
/*
  This is a version (aka dlmalloc) of malloc/free/realloc written by
  Doug Lea and released to the public domain.  Use, modify, and
  redistribute this code without permission or acknowledgement in any
  way you wish.  Send questions, comments, complaints, performance
  data, etc to dl@cs.oswego.edu

  VERSION 2.7.2 Sat Aug 17 09:07:30 2002  Doug Lea  (dl at gee)

  Note: There may be an updated version of this malloc obtainable at
           ftp://gee.cs.oswego.edu/pub/misc/malloc.c
  Check before installing!

  Hacked up for uClibc by Erik Andersen <andersen@codepoet.org>
*/

#include "malloc.h"


/* ------------------------------ mallopt ------------------------------ */
int mallopt(int param_number, int value)
{
    int ret;
    mstate av;

    ret = 0;

    __MALLOC_LOCK;
    av = get_malloc_state();
    /* Ensure initialization/consolidation */
    __malloc_consolidate(av);

    switch(param_number) {
	case M_MXFAST:
	    if (value >= 0 && value <= MAX_FAST_SIZE) {
		set_max_fast(av, value);
		ret = 1;
	    }
	    break;

	case M_TRIM_THRESHOLD:
	    av->trim_threshold = value;
	    ret = 1;
	    break;

	case M_TOP_PAD:
	    av->top_pad = value;
	    ret = 1;
	    break;

	case M_MMAP_THRESHOLD:
	    av->mmap_threshold = value;
	    ret = 1;
	    break;

	case M_MMAP_MAX:
	    av->n_mmaps_max = value;
	    ret = 1;
	    break;
    }
    __MALLOC_UNLOCK;
    return ret;
}