cython
1# https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/sys_resource.h.html
2# https://man7.org/linux/man-pages/man2/getrusage.2.html
3
4from posix.time cimport timeval
5from posix.types cimport id_t
6
7cdef extern from "<sys/resource.h>" nogil:
8
9enum: PRIO_PROCESS
10enum: PRIO_PGRP
11enum: PRIO_USER
12
13enum: RLIM_INFINITY
14enum: RLIM_SAVED_MAX
15enum: RLIM_SAVED_CUR
16
17enum: RUSAGE_SELF
18enum: RUSAGE_CHILDREN
19
20enum: RLIMIT_CORE
21enum: RLIMIT_CPU
22enum: RLIMIT_DATA
23enum: RLIMIT_FSIZE
24enum: RLIMIT_NOFILE
25enum: RLIMIT_STACK
26enum: RLIMIT_AS
27
28ctypedef unsigned long rlim_t
29
30cdef struct rlimit:
31rlim_t rlim_cur
32rlim_t rlim_max
33
34cdef struct rusage:
35timeval ru_utime
36timeval ru_stime
37# Linux-specific
38long ru_maxrss
39long ru_ixrss
40long ru_idrss
41long ru_isrss
42long ru_minflt
43long ru_majflt
44long ru_nswap
45long ru_inblock
46long ru_oublock
47long ru_msgsnd
48long ru_msgrcv
49long ru_nsignals
50long ru_nvcsw
51long ru_nivcsw
52
53int getpriority(int, id_t)
54int getrlimit(int, rlimit *)
55int getrusage(int, rusage *)
56int setpriority(int, id_t, int)
57int setrlimit(int, const rlimit *)
58