13c3173acSopenharmony_ci
23c3173acSopenharmony_ci/*
33c3173acSopenharmony_ci* Copyright (c) 2024 Huawei Device Co., Ltd.
43c3173acSopenharmony_ci* Licensed under the Apache License, Version 2.0 (the "License");
53c3173acSopenharmony_ci* you may not use this file except in compliance with the License.
63c3173acSopenharmony_ci* You may obtain a copy of the License at
73c3173acSopenharmony_ci*
83c3173acSopenharmony_ci*     http://www.apache.org/licenses/LICENSE-2.0
93c3173acSopenharmony_ci*
103c3173acSopenharmony_ci* Unless required by applicable law or agreed to in writing, software
113c3173acSopenharmony_ci* distributed under the License is distributed on an "AS IS" BASIS,
123c3173acSopenharmony_ci* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133c3173acSopenharmony_ci* See the License for the specific language governing permissions and
143c3173acSopenharmony_ci* limitations under the License.
153c3173acSopenharmony_ci*/
163c3173acSopenharmony_ci#include "qos.h"
173c3173acSopenharmony_ci#include "inner_api/qos.h"
183c3173acSopenharmony_ci#include <unistd.h>
193c3173acSopenharmony_ci#include <string>
203c3173acSopenharmony_ci#include <unordered_map>
213c3173acSopenharmony_ci
223c3173acSopenharmony_cistatic constexpr int ERROR_NUM = -1;
233c3173acSopenharmony_ci
243c3173acSopenharmony_ciusing namespace OHOS::QOS;
253c3173acSopenharmony_ciusing namespace std;
263c3173acSopenharmony_ci
273c3173acSopenharmony_ciint OH_QoS_SetThreadQoS(QoS_Level level)
283c3173acSopenharmony_ci{
293c3173acSopenharmony_ci    if (level < QOS_BACKGROUND || level > QOS_USER_INTERACTIVE) {
303c3173acSopenharmony_ci        return ERROR_NUM;
313c3173acSopenharmony_ci    }
323c3173acSopenharmony_ci    return SetThreadQos(static_cast<QosLevel>(level));
333c3173acSopenharmony_ci}
343c3173acSopenharmony_ci
353c3173acSopenharmony_ciint OH_QoS_ResetThreadQoS(void)
363c3173acSopenharmony_ci{
373c3173acSopenharmony_ci    return ResetThreadQos();
383c3173acSopenharmony_ci}
393c3173acSopenharmony_ci
403c3173acSopenharmony_ciint OH_QoS_GetThreadQoS(QoS_Level *level)
413c3173acSopenharmony_ci{
423c3173acSopenharmony_ci    if (level == nullptr) {
433c3173acSopenharmony_ci        return ERROR_NUM;
443c3173acSopenharmony_ci    }
453c3173acSopenharmony_ci    QosLevel qosLevel;
463c3173acSopenharmony_ci    int ret = GetThreadQos(qosLevel);
473c3173acSopenharmony_ci    if (ret < 0) {
483c3173acSopenharmony_ci        return ERROR_NUM;
493c3173acSopenharmony_ci    }
503c3173acSopenharmony_ci    if (static_cast<int>(qosLevel) < QoS_Level::QOS_BACKGROUND ||
513c3173acSopenharmony_ci        static_cast<int>(qosLevel) > QoS_Level::QOS_USER_INTERACTIVE) {
523c3173acSopenharmony_ci        return ERROR_NUM;
533c3173acSopenharmony_ci    }
543c3173acSopenharmony_ci    *level = static_cast<QoS_Level>(qosLevel);
553c3173acSopenharmony_ci    return 0;
563c3173acSopenharmony_ci}