LCOV - code coverage report
Current view: top level - zephyr/kernel - smp.h Coverage Total Hit
Test: new.info Lines: 50.0 % 4 2
Test Date: 2025-09-05 22:20:39

            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 2.0-1