17777dab0Sopenharmony_ci/* 27777dab0Sopenharmony_ci * Copyright (c) 2024 Huawei Device Co., Ltd. 37777dab0Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 47777dab0Sopenharmony_ci * you may not use this file except in compliance with the License. 57777dab0Sopenharmony_ci * You may obtain a copy of the License at 67777dab0Sopenharmony_ci * 77777dab0Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 87777dab0Sopenharmony_ci * 97777dab0Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 107777dab0Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 117777dab0Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 127777dab0Sopenharmony_ci * See the License for the specific language governing permissions and 137777dab0Sopenharmony_ci * limitations under the License. 147777dab0Sopenharmony_ci */ 157777dab0Sopenharmony_ci 167777dab0Sopenharmony_ci#ifndef QOS_H 177777dab0Sopenharmony_ci#define QOS_H 187777dab0Sopenharmony_ci/** 197777dab0Sopenharmony_ci * @addtogroup QoS 207777dab0Sopenharmony_ci * @{ 217777dab0Sopenharmony_ci * 227777dab0Sopenharmony_ci * @brief QoS provides APIs. 237777dab0Sopenharmony_ci * 247777dab0Sopenharmony_ci * @since 12 257777dab0Sopenharmony_ci */ 267777dab0Sopenharmony_ci 277777dab0Sopenharmony_ci/** 287777dab0Sopenharmony_ci * @file qos.h 297777dab0Sopenharmony_ci * 307777dab0Sopenharmony_ci * @brief Declares the QoS interfaces in C. 317777dab0Sopenharmony_ci * 327777dab0Sopenharmony_ci * Quality-of-service (QoS) refers to the priority scheduling attribute of tasks 337777dab0Sopenharmony_ci * in OpenHarmony. Developers can use QoS to categorize tasks to be executed to 347777dab0Sopenharmony_ci * indicate the degree of their relevance to user interactions, the system can 357777dab0Sopenharmony_ci * schedule the time and running order of tasks according to the QoS set by the tasks. 367777dab0Sopenharmony_ci * 377777dab0Sopenharmony_ci * @library libqos.so 387777dab0Sopenharmony_ci * @syscap SystemCapability.Resourceschedule.QoS.Core 397777dab0Sopenharmony_ci * @since 12 407777dab0Sopenharmony_ci */ 417777dab0Sopenharmony_ci#ifdef __cplusplus 427777dab0Sopenharmony_ciextern "C" { 437777dab0Sopenharmony_ci#endif 447777dab0Sopenharmony_ci 457777dab0Sopenharmony_ci/** 467777dab0Sopenharmony_ci * @brief Describes the level of QoS. 477777dab0Sopenharmony_ci * 487777dab0Sopenharmony_ci * @since 12 497777dab0Sopenharmony_ci */ 507777dab0Sopenharmony_citypedef enum QoS_Level { 517777dab0Sopenharmony_ci /** 527777dab0Sopenharmony_ci * @brief Means the QoS level is background. 537777dab0Sopenharmony_ci */ 547777dab0Sopenharmony_ci QOS_BACKGROUND = 0, 557777dab0Sopenharmony_ci 567777dab0Sopenharmony_ci /** 577777dab0Sopenharmony_ci * @brief Means the QoS level is utility. 587777dab0Sopenharmony_ci */ 597777dab0Sopenharmony_ci QOS_UTILITY, 607777dab0Sopenharmony_ci 617777dab0Sopenharmony_ci /** 627777dab0Sopenharmony_ci * @brief Means the QoS level is default. 637777dab0Sopenharmony_ci */ 647777dab0Sopenharmony_ci QOS_DEFAULT, 657777dab0Sopenharmony_ci 667777dab0Sopenharmony_ci /** 677777dab0Sopenharmony_ci * @brief Means the QoS level is user-initiated. 687777dab0Sopenharmony_ci */ 697777dab0Sopenharmony_ci QOS_USER_INITIATED, 707777dab0Sopenharmony_ci 717777dab0Sopenharmony_ci /** 727777dab0Sopenharmony_ci * @brief Means the QoS level is user-request. 737777dab0Sopenharmony_ci */ 747777dab0Sopenharmony_ci QOS_DEADLINE_REQUEST, 757777dab0Sopenharmony_ci 767777dab0Sopenharmony_ci /** 777777dab0Sopenharmony_ci * @brief Means the QoS level is user-interactive. 787777dab0Sopenharmony_ci */ 797777dab0Sopenharmony_ci QOS_USER_INTERACTIVE, 807777dab0Sopenharmony_ci} QoS_Level; 817777dab0Sopenharmony_ci 827777dab0Sopenharmony_ci/** 837777dab0Sopenharmony_ci * @brief Set the QoS level of the current thread. 847777dab0Sopenharmony_ci * 857777dab0Sopenharmony_ci * @param level Indicates the level to set. Specific level can be referenced {@link QoS_Level}. 867777dab0Sopenharmony_ci * @return Returns 0 if the operation is successful; returns -1 if level is out of range or 877777dab0Sopenharmony_ci * internal error failed. 887777dab0Sopenharmony_ci * @see QoS_Level 897777dab0Sopenharmony_ci * @since 12 907777dab0Sopenharmony_ci */ 917777dab0Sopenharmony_ciint OH_QoS_SetThreadQoS(QoS_Level level); 927777dab0Sopenharmony_ci 937777dab0Sopenharmony_ci/** 947777dab0Sopenharmony_ci * @brief Cancel the QoS level of the current thread. 957777dab0Sopenharmony_ci * 967777dab0Sopenharmony_ci * @return Returns 0 if the operation is successful; returns -1 if not set QoS for current thread 977777dab0Sopenharmony_ci * or internal error failed. 987777dab0Sopenharmony_ci * @see QoS_Level 997777dab0Sopenharmony_ci * @since 12 1007777dab0Sopenharmony_ci */ 1017777dab0Sopenharmony_ciint OH_QoS_ResetThreadQoS(); 1027777dab0Sopenharmony_ci 1037777dab0Sopenharmony_ci/** 1047777dab0Sopenharmony_ci * @brief Obtains the QoS level of the current thread. 1057777dab0Sopenharmony_ci * 1067777dab0Sopenharmony_ci * @param level This parameter is the output parameter, 1077777dab0Sopenharmony_ci * and the QoS level of the thread as a {@link QoS_Level} is written to this variable. 1087777dab0Sopenharmony_ci * @return Returns 0 if the operation is successful; returns -1 if level is null, not 1097777dab0Sopenharmony_ci * set QoS for current thread or internal error failed. 1107777dab0Sopenharmony_ci * @see QoS_Level 1117777dab0Sopenharmony_ci * @since 12 1127777dab0Sopenharmony_ci */ 1137777dab0Sopenharmony_ciint OH_QoS_GetThreadQoS(QoS_Level *level); 1147777dab0Sopenharmony_ci#ifdef __cplusplus 1157777dab0Sopenharmony_ci}; 1167777dab0Sopenharmony_ci#endif 1177777dab0Sopenharmony_ci#endif //QOS_H 118