mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-02-05 05:23:46 +00:00
Add compatibility headers to fix CI build errors
Co-authored-by: BernardXiong <1241087+BernardXiong@users.noreply.github.com>
This commit is contained in:
111
components/drivers/include/drivers/cputime.h
Normal file
111
components/drivers/include/drivers/cputime.h
Normal file
@@ -0,0 +1,111 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2025, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2025-01-01 RT-Thread Compatibility layer for legacy cputime API
|
||||
*
|
||||
* COMPATIBILITY HEADER:
|
||||
* This header provides backward compatibility for code using the old cputime API.
|
||||
* The old cputime subsystem has been removed and replaced with the unified
|
||||
* clock_time subsystem.
|
||||
*/
|
||||
|
||||
#ifndef __DRIVERS_CPUTIME_H__
|
||||
#define __DRIVERS_CPUTIME_H__
|
||||
|
||||
#include <rtthread.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_CLOCK_TIME
|
||||
/* When clock_time is enabled, use the new APIs */
|
||||
#include <drivers/clock_time.h>
|
||||
|
||||
/* Map old cputime APIs to new clock_time APIs */
|
||||
#define clock_cpu_getres() rt_clock_cputimer_getres()
|
||||
#define clock_cpu_gettime() rt_clock_cputimer_getcnt()
|
||||
#define clock_cpu_microsecond(tick) ((tick) * 1000000ULL / rt_clock_cputimer_getfrq())
|
||||
#define clock_cpu_millisecond(tick) ((tick) * 1000ULL / rt_clock_cputimer_getfrq())
|
||||
|
||||
/* Delay functions for BSP compatibility */
|
||||
rt_inline void clock_cpu_delay_us(rt_uint32_t us)
|
||||
{
|
||||
rt_uint64_t start = rt_clock_cputimer_getcnt();
|
||||
rt_uint64_t freq = rt_clock_cputimer_getfrq();
|
||||
rt_uint64_t delta = (rt_uint64_t)us * freq / 1000000ULL;
|
||||
while ((rt_clock_cputimer_getcnt() - start) < delta);
|
||||
}
|
||||
|
||||
rt_inline void clock_cpu_delay_ms(rt_uint32_t ms)
|
||||
{
|
||||
rt_uint64_t start = rt_clock_cputimer_getcnt();
|
||||
rt_uint64_t freq = rt_clock_cputimer_getfrq();
|
||||
rt_uint64_t delta = (rt_uint64_t)ms * freq / 1000ULL;
|
||||
while ((rt_clock_cputimer_getcnt() - start) < delta);
|
||||
}
|
||||
|
||||
/* Stub for riscv_cputime_init - now handled by clock_time */
|
||||
rt_inline int riscv_cputime_init(void)
|
||||
{
|
||||
/* Initialization is now handled by clock_time subsystem */
|
||||
return 0;
|
||||
}
|
||||
|
||||
#else
|
||||
/* When clock_time is not enabled, provide stub implementations */
|
||||
|
||||
/* These are stub implementations for backward compatibility */
|
||||
rt_inline rt_uint64_t clock_cpu_getres(void)
|
||||
{
|
||||
return ((1000ULL * 1000 * 1000) * 1000000ULL) / RT_TICK_PER_SECOND;
|
||||
}
|
||||
|
||||
rt_inline rt_uint64_t clock_cpu_gettime(void)
|
||||
{
|
||||
return rt_tick_get();
|
||||
}
|
||||
|
||||
rt_inline rt_uint64_t clock_cpu_microsecond(rt_uint64_t cpu_tick)
|
||||
{
|
||||
return (cpu_tick * 1000000ULL) / RT_TICK_PER_SECOND;
|
||||
}
|
||||
|
||||
rt_inline rt_uint64_t clock_cpu_millisecond(rt_uint64_t cpu_tick)
|
||||
{
|
||||
return (cpu_tick * 1000ULL) / RT_TICK_PER_SECOND;
|
||||
}
|
||||
|
||||
/* Tick-based delay functions */
|
||||
rt_inline void clock_cpu_delay_us(rt_uint32_t us)
|
||||
{
|
||||
rt_uint32_t start = rt_tick_get();
|
||||
rt_uint32_t delta = (us * RT_TICK_PER_SECOND + 999999) / 1000000;
|
||||
if (delta == 0) delta = 1;
|
||||
while ((rt_tick_get() - start) < delta);
|
||||
}
|
||||
|
||||
rt_inline void clock_cpu_delay_ms(rt_uint32_t ms)
|
||||
{
|
||||
rt_uint32_t start = rt_tick_get();
|
||||
rt_uint32_t delta = (ms * RT_TICK_PER_SECOND + 999) / 1000;
|
||||
if (delta == 0) delta = 1;
|
||||
while ((rt_tick_get() - start) < delta);
|
||||
}
|
||||
|
||||
rt_inline int riscv_cputime_init(void)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
#endif /* RT_USING_CLOCK_TIME */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __DRIVERS_CPUTIME_H__ */
|
||||
@@ -18,6 +18,13 @@
|
||||
#ifndef __KTIME_H__
|
||||
#define __KTIME_H__
|
||||
|
||||
#include <rtthread.h>
|
||||
#include <sys/time.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#ifdef RT_USING_CLOCK_TIME
|
||||
/* Include the unified clock_time header which provides all APIs */
|
||||
#include <drivers/clock_time.h>
|
||||
@@ -25,7 +32,36 @@
|
||||
/* All rt_ktime_* APIs are already defined as macros in clock_time.h */
|
||||
|
||||
#else
|
||||
#error "ktime subsystem has been removed. Please enable RT_USING_CLOCK_TIME in menuconfig."
|
||||
/* When clock_time is not enabled, provide stub implementations for backward compatibility */
|
||||
|
||||
/* These are minimal stub implementations to maintain compilation compatibility */
|
||||
rt_inline rt_err_t rt_ktime_boottime_get_ns(struct timespec *ts)
|
||||
{
|
||||
rt_uint64_t tick = rt_tick_get();
|
||||
rt_uint64_t ns = tick * (1000000000ULL / RT_TICK_PER_SECOND);
|
||||
ts->tv_sec = ns / 1000000000ULL;
|
||||
ts->tv_nsec = ns % 1000000000ULL;
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
rt_inline rt_err_t rt_ktime_boottime_get_us(struct timeval *tv)
|
||||
{
|
||||
rt_uint64_t tick = rt_tick_get();
|
||||
rt_uint64_t us = tick * (1000000ULL / RT_TICK_PER_SECOND);
|
||||
tv->tv_sec = us / 1000000ULL;
|
||||
tv->tv_usec = us % 1000000ULL;
|
||||
return RT_EOK;
|
||||
}
|
||||
|
||||
rt_inline void rt_ktime_cputimer_init(void)
|
||||
{
|
||||
/* Stub implementation */
|
||||
}
|
||||
|
||||
#endif /* RT_USING_CLOCK_TIME */
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __KTIME_H__ */
|
||||
|
||||
Reference in New Issue
Block a user