File: ulimit.l

package info (click to toggle)
picolisp 26.3-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 7,376 kB
  • sloc: ansic: 3,127; javascript: 1,004; makefile: 108; sh: 2
file content (43 lines) | stat: -rw-r--r-- 948 bytes parent folder | download | duplicates (2)
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
# 27aug25 Software Lab. Alexander Burger

(symbols 'ulimit 'pico)

(local) (RLIMIT_STACK RLIMIT_NOFILE RLIMIT_NPROC stack files nproc)
(private) (error rlimit)

(sysdefs "ulimit")

(de error ()
   (quit (%@ "strErrno" 'S) 'ulimit) )

(de rlimit (Res Val U)
   (use Lim
      (nond
         ((=0
               (%@ "getrlimit" 'I Res '(Lim (16 P P))) )
            (error) )
         (Val
            (cons
               (*/ (car Lim) U)
               (*/ (cadr Lim) U) ) )
         ((=0
               (%@ "setrlimit" 'I Res
                  (list NIL (16)
                     (cons (* Val U) 8)
                     (cons (cadr Lim) 8) ) ) )
            (error) )
         (NIL Val) ) ) )

# (ulimit~stack ['cnt))
(de stack (KiB)
   (prog1
      (rlimit RLIMIT_STACK KiB 1024)
      (%@ "ulimStk") ) )

# (ulimit~files ['cnt))
(de files (N)
   (rlimit RLIMIT_NOFILE N 1) )

# (ulimit~nproc ['cnt))
(de nproc (N)
   (rlimit RLIMIT_NPROC N 1) )