aboutsummaryrefslogtreecommitdiffstats
path: root/headers/posix/sys/resource.h
blob: c27cfda0d908ac613e24a8649298bc1d8e19b3aa (plain) (blame)
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
65
66
67
68
69
70
71
72
/*
 * Copyright 2003-2012 Haiku, Inc. All Rights Reserved.
 * Distributed under the terms of the MIT License.
 */
#ifndef _SYS_RESOURCE_H
#define _SYS_RESOURCE_H


#include <config/types.h>

#include <sys/cdefs.h>
#include <sys/time.h>


/* getrlimit()/setrlimit() definitions */

typedef __haiku_addr_t rlim_t;

struct rlimit {
	rlim_t	rlim_cur;		/* current soft limit */
	rlim_t	rlim_max;		/* hard limit */
};

/* ToDo: the only supported mode is RLIMIT_NOFILE right now */
#define RLIMIT_CORE		0	/* size of the core file */
#define RLIMIT_CPU		1	/* CPU time per team */
#define RLIMIT_DATA		2	/* data segment size */
#define RLIMIT_FSIZE	3	/* file size */
#define RLIMIT_NOFILE	4	/* number of open files */
#define RLIMIT_STACK	5	/* stack size */
#define RLIMIT_AS		6	/* address space size */
/* Haiku-specifics */
#define RLIMIT_NOVMON	7	/* number of open vnode monitors */

#define RLIM_NLIMITS	8	/* number of resource limits */

#define RLIM_INFINITY	(0xffffffffUL)
#define RLIM_SAVED_MAX	RLIM_INFINITY
#define RLIM_SAVED_CUR	RLIM_INFINITY


/* getrusage() definitions */

struct rusage {
	struct timeval ru_utime;	/* user time used */
	struct timeval ru_stime;	/* system time used */
};

#define RUSAGE_SELF     0
#define RUSAGE_CHILDREN -1


/* getpriority()/setpriority() definitions */

#define PRIO_PROCESS	0
#define PRIO_PGRP		1
#define PRIO_USER		2


__BEGIN_DECLS

extern int getrusage(int who, struct rusage *rusage);

extern int getrlimit(int resource, struct rlimit * rlp);
extern int setrlimit(int resource, const struct rlimit * rlp);

extern int getpriority(int which, id_t who);
extern int setpriority(int which, id_t who, int priority);

__END_DECLS

#endif	/* _SYS_RESOURCE_H */