1f5cbbb99SSiva Chandra Reddy //===-- Linux implementation of getrlimit ---------------------------------===// 2f5cbbb99SSiva Chandra Reddy // 3f5cbbb99SSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4f5cbbb99SSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information. 5f5cbbb99SSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6f5cbbb99SSiva Chandra Reddy // 7f5cbbb99SSiva Chandra Reddy //===----------------------------------------------------------------------===// 8f5cbbb99SSiva Chandra Reddy 9f5cbbb99SSiva Chandra Reddy #include "src/sys/resource/getrlimit.h" 10f5cbbb99SSiva Chandra Reddy 11f5cbbb99SSiva Chandra Reddy #include "src/__support/OSUtil/syscall.h" // For internal syscall function. 12f5cbbb99SSiva Chandra Reddy #include "src/__support/common.h" 13f5cbbb99SSiva Chandra Reddy 14*5ff3ff33SPetr Hosek #include "src/__support/macros/config.h" 15204587a3SSiva Chandra Reddy #include "src/errno/libc_errno.h" 169050a59cSSiva Chandra Reddy #include <sys/resource.h> // For struct rlimit 17f5cbbb99SSiva Chandra Reddy #include <sys/syscall.h> // For syscall numbers. 18f5cbbb99SSiva Chandra Reddy 19*5ff3ff33SPetr Hosek namespace LIBC_NAMESPACE_DECL { 20f5cbbb99SSiva Chandra Reddy 219050a59cSSiva Chandra Reddy LLVM_LIBC_FUNCTION(int, getrlimit, (int res, struct rlimit *limits)) { 22f0a3954eSMichael Jones int ret = 23b6bc9d72SGuillaume Chatelet LIBC_NAMESPACE::syscall_impl<int>(SYS_prlimit64, 0, res, nullptr, limits); 24f5cbbb99SSiva Chandra Reddy if (ret < 0) { 25204587a3SSiva Chandra Reddy libc_errno = -ret; 26f5cbbb99SSiva Chandra Reddy return -1; 27f5cbbb99SSiva Chandra Reddy } 28f5cbbb99SSiva Chandra Reddy return 0; 29f5cbbb99SSiva Chandra Reddy } 30f5cbbb99SSiva Chandra Reddy 31*5ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL 32