Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(211)

Side by Side Diff: fusl/src/misc/setrlimit.c

Issue 1714623002: [fusl] clang-format fusl (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: headers too Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 #include <sys/resource.h> 1 #include <sys/resource.h>
2 #include <errno.h> 2 #include <errno.h>
3 #include "syscall.h" 3 #include "syscall.h"
4 #include "libc.h" 4 #include "libc.h"
5 5
6 #define MIN(a, b) ((a)<(b) ? (a) : (b)) 6 #define MIN(a, b) ((a) < (b) ? (a) : (b))
7 #define FIX(x) do{ if ((x)>=SYSCALL_RLIM_INFINITY) (x)=RLIM_INFINITY; }while(0) 7 #define FIX(x) \
8 do { \
9 if ((x) >= SYSCALL_RLIM_INFINITY) \
10 (x) = RLIM_INFINITY; \
11 } while (0)
8 12
9 int __setrlimit(int resource, const struct rlimit *rlim) 13 int __setrlimit(int resource, const struct rlimit* rlim) {
10 { 14 unsigned long k_rlim[2];
11 » unsigned long k_rlim[2]; 15 struct rlimit tmp;
12 » struct rlimit tmp; 16 if (SYSCALL_RLIM_INFINITY != RLIM_INFINITY) {
13 » if (SYSCALL_RLIM_INFINITY != RLIM_INFINITY) { 17 tmp = *rlim;
14 » » tmp = *rlim; 18 FIX(tmp.rlim_cur);
15 » » FIX(tmp.rlim_cur); 19 FIX(tmp.rlim_max);
16 » » FIX(tmp.rlim_max); 20 rlim = &tmp;
17 » » rlim = &tmp; 21 }
18 » } 22 int ret = __syscall(SYS_prlimit64, 0, resource, rlim, 0);
19 » int ret = __syscall(SYS_prlimit64, 0, resource, rlim, 0); 23 if (ret != -ENOSYS)
20 » if (ret != -ENOSYS) return ret; 24 return ret;
21 » k_rlim[0] = MIN(rlim->rlim_cur, MIN(-1UL, SYSCALL_RLIM_INFINITY)); 25 k_rlim[0] = MIN(rlim->rlim_cur, MIN(-1UL, SYSCALL_RLIM_INFINITY));
22 » k_rlim[1] = MIN(rlim->rlim_max, MIN(-1UL, SYSCALL_RLIM_INFINITY)); 26 k_rlim[1] = MIN(rlim->rlim_max, MIN(-1UL, SYSCALL_RLIM_INFINITY));
23 » return __syscall(SYS_setrlimit, resource, k_rlim); 27 return __syscall(SYS_setrlimit, resource, k_rlim);
24 } 28 }
25 29
26 struct ctx { 30 struct ctx {
27 » const struct rlimit *rlim; 31 const struct rlimit* rlim;
28 » int res; 32 int res;
29 » int err; 33 int err;
30 }; 34 };
31 35
32 static void do_setrlimit(void *p) 36 static void do_setrlimit(void* p) {
33 { 37 struct ctx* c = p;
34 » struct ctx *c = p; 38 if (c->err > 0)
35 » if (c->err>0) return; 39 return;
36 » c->err = -__setrlimit(c->res, c->rlim); 40 c->err = -__setrlimit(c->res, c->rlim);
37 } 41 }
38 42
39 int setrlimit(int resource, const struct rlimit *rlim) 43 int setrlimit(int resource, const struct rlimit* rlim) {
40 { 44 struct ctx c = {.res = resource, .rlim = rlim, .err = -1};
41 » struct ctx c = { .res = resource, .rlim = rlim, .err = -1 }; 45 __synccall(do_setrlimit, &c);
42 » __synccall(do_setrlimit, &c); 46 if (c.err) {
43 » if (c.err) { 47 if (c.err > 0)
44 » » if (c.err>0) errno = c.err; 48 errno = c.err;
45 » » return -1; 49 return -1;
46 » } 50 }
47 » return 0; 51 return 0;
48 } 52 }
49 53
50 LFS64(setrlimit); 54 LFS64(setrlimit);
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698