Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / sys / resource.h @ 13

History | View | Annotate | Download (4.65 KB)

1
/*        $NetBSD: resource.h,v 1.33 2012/06/09 02:31:15 christos Exp $        */
2

    
3
/*
4
 * Copyright (c) 1982, 1986, 1993
5
 *        The Regents of the University of California.  All rights reserved.
6
 *
7
 * Redistribution and use in source and binary forms, with or without
8
 * modification, are permitted provided that the following conditions
9
 * are met:
10
 * 1. Redistributions of source code must retain the above copyright
11
 *    notice, this list of conditions and the following disclaimer.
12
 * 2. Redistributions in binary form must reproduce the above copyright
13
 *    notice, this list of conditions and the following disclaimer in the
14
 *    documentation and/or other materials provided with the distribution.
15
 * 3. Neither the name of the University nor the names of its contributors
16
 *    may be used to endorse or promote products derived from this software
17
 *    without specific prior written permission.
18
 *
19
 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
20
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
21
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
22
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
23
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
24
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
25
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
26
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
27
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
28
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
29
 * SUCH DAMAGE.
30
 *
31
 *        @(#)resource.h        8.4 (Berkeley) 1/9/95
32
 */
33

    
34
#ifndef _SYS_RESOURCE_H_
35
#define        _SYS_RESOURCE_H_
36

    
37
#include <sys/featuretest.h>
38
#include <sys/time.h>
39

    
40
/*
41
 * Process priority specifications to get/setpriority.
42
 */
43
#define        PRIO_MIN        -20
44
#define        PRIO_MAX        20
45

    
46
#define        PRIO_PROCESS        0
47
#define        PRIO_PGRP        1
48
#define        PRIO_USER        2
49

    
50
/*
51
 * Resource utilization information.
52
 */
53

    
54
#define        RUSAGE_SELF        0
55
#define        RUSAGE_CHILDREN        -1
56

    
57
struct        rusage {
58
        struct timeval ru_utime;        /* user time used */
59
        struct timeval ru_stime;        /* system time used */
60
        long        ru_maxrss;                /* max resident set size */
61
#define        ru_first        ru_ixrss
62
        long        ru_ixrss;                /* integral shared memory size */
63
        long        ru_idrss;                /* integral unshared data " */
64
        long        ru_isrss;                /* integral unshared stack " */
65
        long        ru_minflt;                /* page reclaims */
66
        long        ru_majflt;                /* page faults */
67
        long        ru_nswap;                /* swaps */
68
        long        ru_inblock;                /* block input operations */
69
        long        ru_oublock;                /* block output operations */
70
        long        ru_msgsnd;                /* messages sent */
71
        long        ru_msgrcv;                /* messages received */
72
        long        ru_nsignals;                /* signals received */
73
        long        ru_nvcsw;                /* voluntary context switches */
74
        long        ru_nivcsw;                /* involuntary " */
75
#define        ru_last                ru_nivcsw
76
};
77

    
78
/*
79
 * Resource limits
80
 */
81
#define        RLIMIT_CPU        0                /* cpu time in milliseconds */
82
#define        RLIMIT_FSIZE        1                /* maximum file size */
83
#define        RLIMIT_DATA        2                /* data size */
84
#define        RLIMIT_STACK        3                /* stack size */
85
#define        RLIMIT_CORE        4                /* core file size */
86
#define        RLIMIT_RSS        5                /* resident set size */
87
#define        RLIMIT_MEMLOCK        6                /* locked-in-memory address space */
88
#define        RLIMIT_NPROC        7                /* number of processes */
89
#define        RLIMIT_NOFILE        8                /* number of open files */
90
#define        RLIMIT_SBSIZE        9                /* maximum size of all socket buffers */
91
#define        RLIMIT_AS        10                /* virtual process size (inclusive of mmap) */
92
#define        RLIMIT_VMEM        RLIMIT_AS        /* common alias */
93
#define        RLIMIT_NTHR        11                /* number of threads */
94

    
95
#if defined(_NETBSD_SOURCE)
96
#define        RLIM_NLIMITS        12                /* number of resource limits */
97
#endif
98

    
99
#define        RLIM_INFINITY        (~((u_quad_t)1 << 63))        /* no limit */
100
#define        RLIM_SAVED_MAX        RLIM_INFINITY        /* unrepresentable hard limit */
101
#define        RLIM_SAVED_CUR        RLIM_INFINITY        /* unrepresentable soft limit */
102

    
103
#if defined(_KERNEL)
104
/* 4.3BSD compatibility rlimit argument structure. */
105
struct orlimit {
106
        int32_t        rlim_cur;                /* current (soft) limit */
107
        int32_t        rlim_max;                /* maximum value for rlim_cur */
108
};
109
#endif
110

    
111
struct rlimit {
112
        rlim_t        rlim_cur;                /* current (soft) limit */
113
        rlim_t        rlim_max;                /* maximum value for rlim_cur */
114
};
115

    
116
#if defined(_NETBSD_SOURCE)
117
/* Load average structure. */
118
struct loadavg {
119
        fixpt_t        ldavg[3];
120
        long        fscale;
121
};
122
#endif
123

    
124
#ifdef _KERNEL
125
extern struct loadavg averunnable;
126
struct pcred;
127
int        dosetrlimit(struct lwp *, struct proc *, int, struct rlimit *);
128
#else
129
#include <sys/cdefs.h>
130

    
131
__BEGIN_DECLS
132
int        getpriority(int, id_t);
133
int        getrlimit(int, struct rlimit *);
134
#ifndef __LIBC12_SOURCE__
135
int        getrusage(int, struct rusage *) __RENAME(__getrusage50);
136
#endif
137
int        setpriority(int, id_t, int);
138
int        setrlimit(int, const struct rlimit *);
139
__END_DECLS
140

    
141
#endif        /* _KERNEL */
142
#endif        /* !_SYS_RESOURCE_H_ */