//===------------ Implementation of getrandom function ----------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// #ifndef LLVM_LIBC_SRC___SUPPORT_OSUTIL_GETRANDOM_H #define LLVM_LIBC_SRC___SUPPORT_OSUTIL_GETRANDOM_H #include "hdr/types/ssize_t.h" #include "src/__support/OSUtil/linux/syscall.h" // syscall_impl #include "src/__support/common.h" #include "src/__support/error_or.h" #include "src/__support/macros/config.h" #include // For syscall numbers namespace LIBC_NAMESPACE_DECL { namespace internal { LIBC_INLINE static ErrorOr getrandom(void *buf, size_t buflen, unsigned int flags) { ssize_t ret = LIBC_NAMESPACE::syscall_impl(SYS_getrandom, buf, buflen, flags); if (ret < 0) { return Error(-static_cast(ret)); } return ret; } } // namespace internal } // namespace LIBC_NAMESPACE_DECL #endif // LLVM_LIBC_SRC___SUPPORT_OSUTIL_GETRANDOM_H