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