mirror of
https://github.com/zephyrproject-rtos/zephyr
synced 2025-09-14 11:01:57 +00:00
Add support for task_sleep() and fiber_sleep() during the system initialization. When CONFIG_NANO_TIMEOUTS defined, before the k_server() starts, kernel uses nanokernel system clock announce and task sleep functionality. To give device drivers early sleep functionality, the system clock has to start on SECONDARY initialization level, same as most of the drivers. Change-Id: Ie1d391945cd1cfb9a5dc199783c2d224eb1b0ef3 Signed-off-by: Dmitriy Korovkin <dmitriy.korovkin@windriver.com>
36 lines
1.4 KiB
C
36 lines
1.4 KiB
C
/*
|
|
* Copyright (c) 2015 Wind River Systems, Inc.
|
|
*
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
* you may not use this file except in compliance with the License.
|
|
* You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
* See the License for the specific language governing permissions and
|
|
* limitations under the License.
|
|
*/
|
|
|
|
/**
|
|
* @file
|
|
* @brief Initialize system clock driver
|
|
*
|
|
* Initializing the timer driver is done in this module to reduce code
|
|
* duplication. Although both nanokernel and microkernel systems initialize
|
|
* the timer driver at the same point, the two systems differ in when the system
|
|
* can begin to process system clock ticks. A nanokernel system can process
|
|
* system clock ticks once the driver has initialized. However, in a
|
|
* microkernel system all system clock ticks are deferred (and stored on the
|
|
* kernel server command stack) until the kernel server fiber starts and begins
|
|
* processing any queued ticks.
|
|
*/
|
|
|
|
#include <nanokernel.h>
|
|
#include <init.h>
|
|
#include <drivers/system_timer.h>
|
|
|
|
SYS_INIT(_sys_clock_driver_init, SECONDARY, CONFIG_SYSTEM_CLOCK_INIT_PRIORITY);
|