OpenCores
URL https://opencores.org/ocsvn/or1k_old/or1k_old/trunk

Subversion Repositories or1k_old

[/] [or1k_old/] [trunk/] [rc203soc/] [sw/] [uClinux/] [mm/] [swap.c] - Blame information for rev 1634

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 1634 jcastillo
/*
2
 *  linux/mm/swap.c
3
 *
4
 *  Copyright (C) 1991, 1992, 1993, 1994  Linus Torvalds
5
 */
6
 
7
/*
8
 * This file should contain most things doing the swapping from/to disk.
9
 * Started 18.12.91
10
 *
11
 * Swap aging added 23.2.95, Stephen Tweedie.
12
 */
13
 
14
#include <linux/mm.h>
15
#include <linux/sched.h>
16
#include <linux/head.h>
17
#include <linux/kernel.h>
18
#include <linux/kernel_stat.h>
19
#include <linux/errno.h>
20
#include <linux/string.h>
21
#include <linux/stat.h>
22
#include <linux/swap.h>
23
#include <linux/fs.h>
24
#include <linux/swapctl.h>
25
#include <linux/pagemap.h>
26
 
27
#include <asm/dma.h>
28
#include <asm/system.h> /* for cli()/sti() */
29
#include <asm/segment.h> /* for memcpy_to/fromfs */
30
#include <asm/bitops.h>
31
#include <asm/pgtable.h>
32
 
33
/*
34
 * We identify three levels of free memory.  We never let free mem
35
 * fall below the min_free_pages except for atomic allocations.  We
36
 * start background swapping if we fall below free_pages_high free
37
 * pages, and we begin intensive swapping below free_pages_low.
38
 *
39
 * Keep these three variables contiguous for sysctl(2).
40
 */
41
int min_free_pages = 20;
42
int free_pages_low = 30;
43
int free_pages_high = 40;
44
 
45
/* We track the number of pages currently being asynchronously swapped
46
   out, so that we don't try to swap TOO many pages out at once */
47
atomic_t nr_async_pages = 0;
48
 
49
/*
50
 * Constants for the page aging mechanism: the maximum age (actually,
51
 * the maximum "youthfulness"); the quanta by which pages rejuvenate
52
 * and age; and the initial age for new pages.
53
 */
54
 
55
swap_control_t swap_control = {
56
        20, 3, 1, 3,            /* Page aging */
57
        10, 2, 2, 4,            /* Buffer aging */
58
        32, 4,                  /* Aging cluster */
59
        8192, 8192,             /* Pageout and bufferout weights */
60
        -200,                   /* Buffer grace */
61
        1, 1,                   /* Buffs/pages to free */
62
        RCL_ROUND_ROBIN         /* Balancing policy */
63
};
64
 
65
swapstat_t swapstats = {0};
66
 
67
/* General swap control */
68
 
69
/* Parse the kernel command line "swap=" option at load time: */
70
void swap_setup(char *str, int *ints)
71
{
72
        int * swap_vars[8] = {
73
                &MAX_PAGE_AGE,
74
                &PAGE_ADVANCE,
75
                &PAGE_DECLINE,
76
                &PAGE_INITIAL_AGE,
77
                &AGE_CLUSTER_FRACT,
78
                &AGE_CLUSTER_MIN,
79
                &PAGEOUT_WEIGHT,
80
                &BUFFEROUT_WEIGHT
81
        };
82
        int i;
83
        for (i=0; i < ints[0] && i < 8; i++) {
84
                if (ints[i+1])
85
                        *(swap_vars[i]) = ints[i+1];
86
        }
87
}
88
 
89
/* Parse the kernel command line "buff=" option at load time: */
90
void buff_setup(char *str, int *ints)
91
{
92
        int * buff_vars[6] = {
93
                &MAX_BUFF_AGE,
94
                &BUFF_ADVANCE,
95
                &BUFF_DECLINE,
96
                &BUFF_INITIAL_AGE,
97
                &BUFFEROUT_WEIGHT,
98
                &BUFFERMEM_GRACE
99
        };
100
        int i;
101
        for (i=0; i < ints[0] && i < 6; i++) {
102
                if (ints[i+1])
103
                        *(buff_vars[i]) = ints[i+1];
104
        }
105
}
106
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.