LCOV - code coverage report
Current view: top level - zephyr/kernel - smp.h Hit Total Coverage
Test: new.info Lines: 2 4 50.0 %
Date: 2024-12-22 00:14:23

          Line data    Source code
       1           0 : /*
       2             :  * Copyright (c) 2023 Intel Corporation
       3             :  *
       4             :  * SPDX-License-Identifier: Apache-2.0
       5             :  */
       6             : 
       7             : #ifndef ZEPHYR_INCLUDE_KERNEL_SMP_H_
       8             : #define ZEPHYR_INCLUDE_KERNEL_SMP_H_
       9             : 
      10             : #include <stdbool.h>
      11             : 
      12           0 : typedef void (*smp_init_fn)(void *arg);
      13             : 
      14             : /**
      15             :  * @brief Start a CPU.
      16             :  *
      17             :  * This routine is used to manually start the CPU specified
      18             :  * by @a id. It may be called to restart a CPU that had been
      19             :  * stopped or powered down, as well as some other scenario.
      20             :  * After the CPU has finished initialization, the CPU will be
      21             :  * ready to participate in thread scheduling and execution.
      22             :  *
      23             :  * @note This function must not be used on currently running
      24             :  *       CPU. The target CPU must be in off state, or in
      25             :  *       certain architectural state(s) where the CPU is
      26             :  *       permitted to go through the power up process.
      27             :  *       Detection of such state(s) must be provided by
      28             :  *       the platform layers.
      29             :  *
      30             :  * @note This initializes per-CPU kernel structs and also
      31             :  *       initializes timers needed for MP operations.
      32             :  *       Use @ref k_smp_cpu_resume if these are not
      33             :  *       desired.
      34             :  *
      35             :  * @param id ID of target CPU.
      36             :  * @param fn Function to be called before letting scheduler
      37             :  *           run.
      38             :  * @param arg Argument to @a fn.
      39             :  */
      40           1 : void k_smp_cpu_start(int id, smp_init_fn fn, void *arg);
      41             : 
      42             : /**
      43             :  * @brief Resume a previously suspended CPU.
      44             :  *
      45             :  * This function works like @ref k_smp_cpu_start, but does not
      46             :  * re-initialize the kernel's internal tracking data for
      47             :  * the target CPU. Therefore, @ref k_smp_cpu_start must have
      48             :  * previously been called for the target CPU, and it must have
      49             :  * verifiably reached an idle/off state (detection of which
      50             :  * must be provided by the platform layers). It may be used
      51             :  * in cases where platform layers require, for example, that
      52             :  * data on the interrupt or idle stack be preserved.
      53             :  *
      54             :  * @note This function must not be used on currently running
      55             :  *       CPU. The target CPU must be in suspended state, or
      56             :  *       in certain architectural state(s) where the CPU is
      57             :  *       permitted to go through the resume process.
      58             :  *       Detection of such state(s) must be provided by
      59             :  *       the platform layers.
      60             :  *
      61             :  * @param id ID of target CPU.
      62             :  * @param fn Function to be called before resuming context.
      63             :  * @param arg Argument to @a fn.
      64             :  * @param reinit_timer True if timer needs to be re-initialized.
      65             :  * @param invoke_sched True if scheduler is invoked after the CPU
      66             :  *                     has started.
      67             :  */
      68           1 : void k_smp_cpu_resume(int id, smp_init_fn fn, void *arg,
      69             :                       bool reinit_timer, bool invoke_sched);
      70             : 
      71             : #endif /* ZEPHYR_INCLUDE_KERNEL_SMP_H_ */

Generated by: LCOV version 1.14