Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

tools/nolibc: move getrlimit() and friends to sys/resource.h

This is the location regular userspace expects these definitions.

Signed-off-by: Thomas Weißschuh <linux@weissschuh.net>
Acked-by: Willy Tarreau <w@1wt.eu>
Link: https://lore.kernel.org/r/20250515-nolibc-sys-v1-5-74f82eea3b59@weissschuh.net

+55 -39
+1
tools/include/nolibc/Makefile
··· 55 55 sys/prctl.h \ 56 56 sys/random.h \ 57 57 sys/reboot.h \ 58 + sys/resource.h \ 58 59 sys/stat.h \ 59 60 sys/syscall.h \ 60 61 sys/time.h \
+1
tools/include/nolibc/nolibc.h
··· 103 103 #include "sys/prctl.h" 104 104 #include "sys/random.h" 105 105 #include "sys/reboot.h" 106 + #include "sys/resource.h" 106 107 #include "sys/stat.h" 107 108 #include "sys/syscall.h" 108 109 #include "sys/time.h"
-38
tools/include/nolibc/sys.h
··· 23 23 #include <linux/auxvec.h> 24 24 #include <linux/fcntl.h> /* for O_* and AT_* */ 25 25 #include <linux/stat.h> /* for statx() */ 26 - #include <linux/resource.h> 27 26 #include <linux/utsname.h> 28 27 29 28 #include "errno.h" ··· 726 727 ssize_t read(int fd, void *buf, size_t count) 727 728 { 728 729 return __sysret(sys_read(fd, buf, count)); 729 - } 730 - 731 - 732 - /* 733 - * int getrlimit(int resource, struct rlimit *rlim); 734 - * int setrlimit(int resource, const struct rlimit *rlim); 735 - */ 736 - 737 - static __attribute__((unused)) 738 - int sys_prlimit64(pid_t pid, int resource, 739 - const struct rlimit64 *new_limit, struct rlimit64 *old_limit) 740 - { 741 - return my_syscall4(__NR_prlimit64, pid, resource, new_limit, old_limit); 742 - } 743 - 744 - static __attribute__((unused)) 745 - int getrlimit(int resource, struct rlimit *rlim) 746 - { 747 - struct rlimit64 rlim64; 748 - int ret; 749 - 750 - ret = __sysret(sys_prlimit64(0, resource, NULL, &rlim64)); 751 - rlim->rlim_cur = rlim64.rlim_cur; 752 - rlim->rlim_max = rlim64.rlim_max; 753 - 754 - return ret; 755 - } 756 - 757 - static __attribute__((unused)) 758 - int setrlimit(int resource, const struct rlimit *rlim) 759 - { 760 - struct rlimit64 rlim64 = { 761 - .rlim_cur = rlim->rlim_cur, 762 - .rlim_max = rlim->rlim_max, 763 - }; 764 - 765 - return __sysret(sys_prlimit64(0, resource, &rlim64, NULL)); 766 730 } 767 731 768 732
+53
tools/include/nolibc/sys/resource.h
··· 1 + /* SPDX-License-Identifier: LGPL-2.1 OR MIT */ 2 + /* 3 + * Resource definitions for NOLIBC 4 + * Copyright (C) 2017-2021 Willy Tarreau <w@1wt.eu> 5 + */ 6 + 7 + /* make sure to include all global symbols */ 8 + #include "../nolibc.h" 9 + 10 + #ifndef _NOLIBC_SYS_RESOURCE_H 11 + #define _NOLIBC_SYS_RESOURCE_H 12 + 13 + #include "../sys.h" 14 + 15 + #include <linux/resource.h> 16 + 17 + /* 18 + * int getrlimit(int resource, struct rlimit *rlim); 19 + * int setrlimit(int resource, const struct rlimit *rlim); 20 + */ 21 + 22 + static __attribute__((unused)) 23 + int sys_prlimit64(pid_t pid, int resource, 24 + const struct rlimit64 *new_limit, struct rlimit64 *old_limit) 25 + { 26 + return my_syscall4(__NR_prlimit64, pid, resource, new_limit, old_limit); 27 + } 28 + 29 + static __attribute__((unused)) 30 + int getrlimit(int resource, struct rlimit *rlim) 31 + { 32 + struct rlimit64 rlim64; 33 + int ret; 34 + 35 + ret = __sysret(sys_prlimit64(0, resource, NULL, &rlim64)); 36 + rlim->rlim_cur = rlim64.rlim_cur; 37 + rlim->rlim_max = rlim64.rlim_max; 38 + 39 + return ret; 40 + } 41 + 42 + static __attribute__((unused)) 43 + int setrlimit(int resource, const struct rlimit *rlim) 44 + { 45 + struct rlimit64 rlim64 = { 46 + .rlim_cur = rlim->rlim_cur, 47 + .rlim_max = rlim->rlim_max, 48 + }; 49 + 50 + return __sysret(sys_prlimit64(0, resource, &rlim64, NULL)); 51 + } 52 + 53 + #endif /* _NOLIBC_SYS_RESOURCE_H */
-1
tools/include/nolibc/types.h
··· 15 15 #include <linux/stat.h> 16 16 #include <linux/time.h> 17 17 #include <linux/wait.h> 18 - #include <linux/resource.h> 19 18 20 19 21 20 /* Only the generic macros and types may be defined here. The arch-specific