/******************************************************************************
 * Copyright (c) Huawei Technologies Co., Ltd. 2020. All rights reserved.
 * iSulad licensed under the Mulan PSL v1.
 * You can use this software according to the terms and conditions of the Mulan PSL v1.
 * You may obtain a copy of Mulan PSL v1 at:
 *     http://license.coscl.org.cn/MulanPSL
 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, EITHER EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, MERCHANTABILITY OR FIT FOR A PARTICULAR
 * PURPOSE.
 * See the Mulan PSL v1 for more details.
 * Author: jikui
 * Create: 2020-02-25
 * Description: provide sysinfo mock
 ******************************************************************************/

#include "sysinfo_mock.h"

namespace {
MockSysinfo *g_sysinfo_mock = NULL;
}

void MockSysinfo_SetMock(MockSysinfo *mock)
{
    g_sysinfo_mock = mock;
}

uint64_t get_default_total_mem_size(void)
{
    if (g_sysinfo_mock != nullptr) {
        return g_sysinfo_mock->GetDefaultTotalMemSize();
    }
    return 0;
}

mountinfo_t *find_mount_info(mountinfo_t **minfos, const char *dir)
{
    if (g_sysinfo_mock != nullptr) {
        return g_sysinfo_mock->FindMountInfo(minfos, dir);
    }
    return nullptr;
}

void free_mounts_info(mountinfo_t **minfos)
{
    if (g_sysinfo_mock != nullptr) {
        return g_sysinfo_mock->FreeMountsInfo(minfos);
    }
}

char *validate_hugetlb(const char *pagesize, uint64_t limit)
{
    if (g_sysinfo_mock != nullptr) {
        return g_sysinfo_mock->ValidateHugetlb(pagesize, limit);
    }
    return nullptr;
}

void free_sysinfo(sysinfo_t *sysinfo)
{
    if (g_sysinfo_mock != nullptr) {
        return g_sysinfo_mock->FreeSysinfo(sysinfo);
    }
}
