1cac7dca0Sopenharmony_ci// Copyright (c) 2023 Huawei Device Co., Ltd. 2cac7dca0Sopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License"); 3cac7dca0Sopenharmony_ci// you may not use this file except in compliance with the License. 4cac7dca0Sopenharmony_ci// You may obtain a copy of the License at 5cac7dca0Sopenharmony_ci// 6cac7dca0Sopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0 7cac7dca0Sopenharmony_ci// 8cac7dca0Sopenharmony_ci// Unless required by applicable law or agreed to in writing, software 9cac7dca0Sopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS, 10cac7dca0Sopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 11cac7dca0Sopenharmony_ci// See the License for the specific language governing permissions and 12cac7dca0Sopenharmony_ci// limitations under the License. 13cac7dca0Sopenharmony_ci 14cac7dca0Sopenharmony_ci//! A FFI crate for FFRT runtime. 15cac7dca0Sopenharmony_ci 16cac7dca0Sopenharmony_cimod config; 17cac7dca0Sopenharmony_cimod sys_event; 18cac7dca0Sopenharmony_cimod task; 19cac7dca0Sopenharmony_ci 20cac7dca0Sopenharmony_cipub use config::*; 21cac7dca0Sopenharmony_ciuse libc::{c_int, c_void}; 22cac7dca0Sopenharmony_cipub use sys_event::*; 23cac7dca0Sopenharmony_cipub use task::*; 24cac7dca0Sopenharmony_cipub use {ffrt_get_current_task, ffrt_submit_coroutine}; 25cac7dca0Sopenharmony_ci 26cac7dca0Sopenharmony_ci#[repr(C)] 27cac7dca0Sopenharmony_ci#[derive(Clone, Copy, PartialEq, Eq, Debug, Hash)] 28cac7dca0Sopenharmony_ci/// Qos levels. 29cac7dca0Sopenharmony_cipub enum Qos { 30cac7dca0Sopenharmony_ci /// Inherits parent's qos level 31cac7dca0Sopenharmony_ci Inherent = -1, 32cac7dca0Sopenharmony_ci /// Lowest qos 33cac7dca0Sopenharmony_ci Background, 34cac7dca0Sopenharmony_ci /// Utility qos 35cac7dca0Sopenharmony_ci Utility, 36cac7dca0Sopenharmony_ci /// Default qos 37cac7dca0Sopenharmony_ci Default, 38cac7dca0Sopenharmony_ci /// User initialiated qos 39cac7dca0Sopenharmony_ci UserInitiated, 40cac7dca0Sopenharmony_ci /// Deadline qos 41cac7dca0Sopenharmony_ci DeadlineRequest, 42cac7dca0Sopenharmony_ci /// Highest qos 43cac7dca0Sopenharmony_ci UserInteractive, 44cac7dca0Sopenharmony_ci} 45cac7dca0Sopenharmony_ci 46cac7dca0Sopenharmony_ci#[repr(C)] 47cac7dca0Sopenharmony_ci/// Dependencies for the task. 48cac7dca0Sopenharmony_cipub struct FfrtDeps { 49cac7dca0Sopenharmony_ci len: u32, 50cac7dca0Sopenharmony_ci items: *const *const c_void, 51cac7dca0Sopenharmony_ci} 52cac7dca0Sopenharmony_ci 53cac7dca0Sopenharmony_ci#[repr(C)] 54cac7dca0Sopenharmony_ci#[derive(Clone)] 55cac7dca0Sopenharmony_ci/// Task attributes. 56cac7dca0Sopenharmony_cipub struct FfrtTaskAttr { 57cac7dca0Sopenharmony_ci storage: [u8; 128], 58cac7dca0Sopenharmony_ci} 59cac7dca0Sopenharmony_ci 60cac7dca0Sopenharmony_ci/// Result returned by the ffrt task. 61cac7dca0Sopenharmony_cipub type FfrtResult<T> = Result<T, c_int>; 62