1/*
2 * Copyright 2016-present Facebook, Inc.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#pragma once
18
19#ifndef _WIN32
20#include <sys/resource.h>
21#else
22#include <cstdint>
23
24#include <folly/portability/SysTime.h>
25
26#define PRIO_PROCESS 1
27
28#define RLIMIT_CORE 0
29#define RLIMIT_NOFILE 0
30#define RLIMIT_DATA 0
31#define RLIMIT_STACK 3
32#define RLIM_INFINITY SIZE_MAX
33
34#define RUSAGE_SELF 0
35#define RUSAGE_CHILDREN 0
36#define RUSAGE_THREAD 0
37
38using rlim_t = size_t;
39struct rlimit {
40 rlim_t rlim_cur;
41 rlim_t rlim_max;
42};
43
44struct rusage {
45 timeval ru_utime;
46 timeval ru_stime;
47 long ru_maxrss;
48 long ru_ixrss;
49 long ru_idrss;
50 long ru_isrss;
51 long ru_minflt;
52 long ru_majflt;
53 long ru_nswap;
54 long ru_inblock;
55 long ru_oublock;
56 long ru_msgsnd;
57 long ru_msgrcv;
58 long ru_nsignals;
59 long ru_nvcsw;
60 long ru_nivcsw;
61};
62
63extern "C" {
64int getrlimit(int type, rlimit* dst);
65int getrusage(int who, rusage* usage);
66int setrlimit(int type, rlimit* src);
67
68int getpriority(int which, int who);
69int setpriority(int which, int who, int value);
70}
71#endif
72