15bebb993Sopenharmony_ci/*
25bebb993Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd.
35bebb993Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License");
45bebb993Sopenharmony_ci * you may not use this file except in compliance with the License.
55bebb993Sopenharmony_ci * You may obtain a copy of the License at
65bebb993Sopenharmony_ci *
75bebb993Sopenharmony_ci *     http://www.apache.org/licenses/LICENSE-2.0
85bebb993Sopenharmony_ci *
95bebb993Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software
105bebb993Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS,
115bebb993Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
125bebb993Sopenharmony_ci * See the License for the specific language governing permissions and
135bebb993Sopenharmony_ci * limitations under the License.
145bebb993Sopenharmony_ci */
155bebb993Sopenharmony_ci
165bebb993Sopenharmony_ci#include "fdatasync.h"
175bebb993Sopenharmony_ci#include "file_fs_impl.h"
185bebb993Sopenharmony_ci
195bebb993Sopenharmony_ci#include <cstring>
205bebb993Sopenharmony_ci#include <fcntl.h>
215bebb993Sopenharmony_ci#include <unistd.h>
225bebb993Sopenharmony_ci#include <sys/stat.h>
235bebb993Sopenharmony_ci
245bebb993Sopenharmony_cinamespace OHOS {
255bebb993Sopenharmony_cinamespace CJSystemapi {
265bebb993Sopenharmony_ci
275bebb993Sopenharmony_ciusing namespace std;
285bebb993Sopenharmony_ci
295bebb993Sopenharmony_ciint FdatasyncImpl::Fdatasync(int32_t fd)
305bebb993Sopenharmony_ci{
315bebb993Sopenharmony_ci    LOGI("FS_TEST:: FdatasyncImpl::Fdatasync start");
325bebb993Sopenharmony_ci    std::unique_ptr<uv_fs_t, decltype(CommonFunc::FsReqCleanup)*> fdatasync_req = {
335bebb993Sopenharmony_ci        new (std::nothrow) uv_fs_t, CommonFunc::FsReqCleanup };
345bebb993Sopenharmony_ci    if (!fdatasync_req) {
355bebb993Sopenharmony_ci        LOGE("Failed to request heap memory.");
365bebb993Sopenharmony_ci        return ENOMEM;
375bebb993Sopenharmony_ci    }
385bebb993Sopenharmony_ci    int ret = uv_fs_fdatasync(nullptr, fdatasync_req.get(), fd, nullptr);
395bebb993Sopenharmony_ci    if (ret < 0) {
405bebb993Sopenharmony_ci        LOGE("Failed to transfer data associated with file descriptor: %{public}d, ret:%{public}d", fd, ret);
415bebb993Sopenharmony_ci        return ret;
425bebb993Sopenharmony_ci    }
435bebb993Sopenharmony_ci    LOGI("FS_TEST:: FdatasyncImpl::Fdatasync success");
445bebb993Sopenharmony_ci    return ret;
455bebb993Sopenharmony_ci}
465bebb993Sopenharmony_ci
475bebb993Sopenharmony_ci}
485bebb993Sopenharmony_ci}