1dc2b01b3SSiva Chandra Reddy //===-- Linux implementation of fsync -------------------------------------===// 2dc2b01b3SSiva Chandra Reddy // 3dc2b01b3SSiva Chandra Reddy // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 4dc2b01b3SSiva Chandra Reddy // See https://llvm.org/LICENSE.txt for license information. 5dc2b01b3SSiva Chandra Reddy // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 6dc2b01b3SSiva Chandra Reddy // 7dc2b01b3SSiva Chandra Reddy //===----------------------------------------------------------------------===// 8dc2b01b3SSiva Chandra Reddy 9dc2b01b3SSiva Chandra Reddy #include "src/unistd/fsync.h" 10dc2b01b3SSiva Chandra Reddy 11dc2b01b3SSiva Chandra Reddy #include "src/__support/OSUtil/syscall.h" // For internal syscall function. 12dc2b01b3SSiva Chandra Reddy #include "src/__support/common.h" 13dc2b01b3SSiva Chandra Reddy 14*5ff3ff33SPetr Hosek #include "src/__support/macros/config.h" 15803437dbSMichael Jones #include "src/errno/libc_errno.h" 16dc2b01b3SSiva Chandra Reddy #include <sys/syscall.h> // For syscall numbers. 17dc2b01b3SSiva Chandra Reddy 18*5ff3ff33SPetr Hosek namespace LIBC_NAMESPACE_DECL { 19dc2b01b3SSiva Chandra Reddy 20dc2b01b3SSiva Chandra Reddy LLVM_LIBC_FUNCTION(int, fsync, (int fd)) { 21b6bc9d72SGuillaume Chatelet int ret = LIBC_NAMESPACE::syscall_impl<int>(SYS_fsync, fd); 22dc2b01b3SSiva Chandra Reddy if (ret < 0) { 23204587a3SSiva Chandra Reddy libc_errno = -ret; 24dc2b01b3SSiva Chandra Reddy return -1; 25dc2b01b3SSiva Chandra Reddy } 26dc2b01b3SSiva Chandra Reddy return ret; 27dc2b01b3SSiva Chandra Reddy } 28dc2b01b3SSiva Chandra Reddy 29*5ff3ff33SPetr Hosek } // namespace LIBC_NAMESPACE_DECL 30