mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-07-24 02:12:08 +08:00
Separate libbsd and RTEMS clock ticks
This commit is contained in:
parent
6a850e083d
commit
c727e4a22e
@ -65,7 +65,6 @@ __FBSDID("$FreeBSD$");
|
|||||||
#else /* __rtems__ */
|
#else /* __rtems__ */
|
||||||
#include <machine/rtems-bsd-thread.h>
|
#include <machine/rtems-bsd-thread.h>
|
||||||
#define RTEMSBSD_SWI_WAKEUP_EVENT RTEMS_EVENT_31
|
#define RTEMSBSD_SWI_WAKEUP_EVENT RTEMS_EVENT_31
|
||||||
#undef ticks
|
|
||||||
#include <rtems/score/threadimpl.h>
|
#include <rtems/score/threadimpl.h>
|
||||||
#endif /* __rtems__ */
|
#endif /* __rtems__ */
|
||||||
#include <machine/stdarg.h>
|
#include <machine/stdarg.h>
|
||||||
|
@ -317,6 +317,7 @@ rtems_bsd_callout_timer(rtems_id id, void *arg)
|
|||||||
sc = rtems_timer_reset(id);
|
sc = rtems_timer_reset(id);
|
||||||
BSD_ASSERT(sc == RTEMS_SUCCESSFUL);
|
BSD_ASSERT(sc == RTEMS_SUCCESSFUL);
|
||||||
|
|
||||||
|
++ticks;
|
||||||
callout_process(sbinuptime());
|
callout_process(sbinuptime());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -339,7 +340,9 @@ rtems_bsd_timeout_init_late(void *unused)
|
|||||||
sc = rtems_timer_create(rtems_build_name('_', 'C', 'L', 'O'), &id);
|
sc = rtems_timer_create(rtems_build_name('_', 'C', 'L', 'O'), &id);
|
||||||
BSD_ASSERT(sc == RTEMS_SUCCESSFUL);
|
BSD_ASSERT(sc == RTEMS_SUCCESSFUL);
|
||||||
|
|
||||||
sc = rtems_timer_server_fire_after(id, 1, rtems_bsd_callout_timer, NULL);
|
sc = rtems_timer_server_fire_after(id,
|
||||||
|
rtems_clock_get_ticks_per_second() / (rtems_interval)hz,
|
||||||
|
rtems_bsd_callout_timer, NULL);
|
||||||
BSD_ASSERT(sc == RTEMS_SUCCESSFUL);
|
BSD_ASSERT(sc == RTEMS_SUCCESSFUL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -94,7 +94,6 @@ __FBSDID("$FreeBSD$");
|
|||||||
#endif
|
#endif
|
||||||
#ifdef __rtems__
|
#ifdef __rtems__
|
||||||
#include <machine/rtems-bsd-thread.h>
|
#include <machine/rtems-bsd-thread.h>
|
||||||
#undef ticks
|
|
||||||
#include <rtems/score/threadimpl.h>
|
#include <rtems/score/threadimpl.h>
|
||||||
#include <rtems/score/watchdogimpl.h>
|
#include <rtems/score/watchdogimpl.h>
|
||||||
#endif /* __rtems__ */
|
#endif /* __rtems__ */
|
||||||
|
@ -1999,8 +1999,6 @@ kern_posix_error(struct thread *td, int error)
|
|||||||
#ifdef __rtems__
|
#ifdef __rtems__
|
||||||
#include <machine/rtems-bsd-thread.h>
|
#include <machine/rtems-bsd-thread.h>
|
||||||
|
|
||||||
#undef ticks
|
|
||||||
|
|
||||||
#include <rtems/score/objectimpl.h>
|
#include <rtems/score/objectimpl.h>
|
||||||
#include <rtems/score/threadimpl.h>
|
#include <rtems/score/threadimpl.h>
|
||||||
|
|
||||||
|
@ -70,16 +70,7 @@ extern int psratio; /* ratio: prof / stat */
|
|||||||
extern int stathz; /* statistics clock's frequency */
|
extern int stathz; /* statistics clock's frequency */
|
||||||
extern int profhz; /* profiling clock's frequency */
|
extern int profhz; /* profiling clock's frequency */
|
||||||
extern int profprocs; /* number of process's profiling */
|
extern int profprocs; /* number of process's profiling */
|
||||||
#ifndef __rtems__
|
|
||||||
extern volatile int ticks;
|
extern volatile int ticks;
|
||||||
#else /* __rtems__ */
|
|
||||||
/*
|
|
||||||
* This must be a singed integer type, otherwise expressions like
|
|
||||||
* (x - ticks) > 0 would yield unexpected results.
|
|
||||||
*/
|
|
||||||
extern volatile int32_t _bsd_ticks;
|
|
||||||
#define ticks _bsd_ticks
|
|
||||||
#endif /* __rtems__ */
|
|
||||||
|
|
||||||
#endif /* _KERNEL */
|
#endif /* _KERNEL */
|
||||||
|
|
||||||
|
@ -4939,6 +4939,7 @@
|
|||||||
#define ticket_altqs_active _bsd_ticket_altqs_active
|
#define ticket_altqs_active _bsd_ticket_altqs_active
|
||||||
#define ticket_altqs_inactive _bsd_ticket_altqs_inactive
|
#define ticket_altqs_inactive _bsd_ticket_altqs_inactive
|
||||||
#define ticket_pabuf _bsd_ticket_pabuf
|
#define ticket_pabuf _bsd_ticket_pabuf
|
||||||
|
#define ticks _bsd_ticks
|
||||||
#define tick_sbt _bsd_tick_sbt
|
#define tick_sbt _bsd_tick_sbt
|
||||||
#define ti_hwmods _bsd_ti_hwmods
|
#define ti_hwmods _bsd_ti_hwmods
|
||||||
#define ti_hwmods_contains _bsd_ti_hwmods_contains
|
#define ti_hwmods_contains _bsd_ti_hwmods_contains
|
||||||
|
@ -85,6 +85,7 @@ void mi_startup(void);
|
|||||||
|
|
||||||
int hz;
|
int hz;
|
||||||
int tick;
|
int tick;
|
||||||
|
volatile int ticks;
|
||||||
sbintime_t tick_sbt;
|
sbintime_t tick_sbt;
|
||||||
struct bintime bt_timethreshold;
|
struct bintime bt_timethreshold;
|
||||||
struct bintime bt_tickthreshold;
|
struct bintime bt_tickthreshold;
|
||||||
@ -105,22 +106,21 @@ SYSCTL_INT(_kern_smp, OID_AUTO, maxid, CTLFLAG_RD|CTLFLAG_CAPRD,
|
|||||||
SYSCTL_INT(_kern_smp, OID_AUTO, maxcpus, CTLFLAG_RD|CTLFLAG_CAPRD,
|
SYSCTL_INT(_kern_smp, OID_AUTO, maxcpus, CTLFLAG_RD|CTLFLAG_CAPRD,
|
||||||
&maxid_maxcpus, 0, "Max number of CPUs that the system was compiled for.");
|
&maxid_maxcpus, 0, "Max number of CPUs that the system was compiled for.");
|
||||||
|
|
||||||
#undef _bsd_ticks
|
|
||||||
|
|
||||||
RTEMS_STATIC_ASSERT(sizeof(int) == sizeof(int32_t), ticks);
|
|
||||||
|
|
||||||
volatile uint32_t _Watchdog_Ticks_since_boot;
|
|
||||||
|
|
||||||
extern volatile int32_t _bsd_ticks
|
|
||||||
__attribute__ ((__alias__("_Watchdog_Ticks_since_boot")));
|
|
||||||
|
|
||||||
rtems_status_code
|
rtems_status_code
|
||||||
rtems_bsd_initialize(void)
|
rtems_bsd_initialize(void)
|
||||||
{
|
{
|
||||||
static const char name[] = "TIME";
|
static const char name[] = "TIME";
|
||||||
rtems_status_code sc;
|
rtems_status_code sc;
|
||||||
|
int tps;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Limit the libbsd ticks per second to 100Hz. This helps to reduce
|
||||||
|
* the processor load on low end targets which use 1000Hz for the RTEMS
|
||||||
|
* clock tick.
|
||||||
|
*/
|
||||||
|
tps = (int)rtems_clock_get_ticks_per_second();
|
||||||
|
hz = MIN(100, tps);
|
||||||
|
|
||||||
hz = (int) rtems_clock_get_ticks_per_second();
|
|
||||||
tick = 1000000 / hz;
|
tick = 1000000 / hz;
|
||||||
tick_sbt = SBT_1S / hz;
|
tick_sbt = SBT_1S / hz;
|
||||||
FREQ2BT(hz, &tc_tick_bt);
|
FREQ2BT(hz, &tc_tick_bt);
|
||||||
|
@ -53,8 +53,6 @@
|
|||||||
|
|
||||||
#include <rtems/bsd/bsd.h>
|
#include <rtems/bsd/bsd.h>
|
||||||
|
|
||||||
#undef ticks
|
|
||||||
|
|
||||||
#include <rtems/score/objectimpl.h>
|
#include <rtems/score/objectimpl.h>
|
||||||
#include <rtems/score/statesimpl.h>
|
#include <rtems/score/statesimpl.h>
|
||||||
#include <rtems/score/threaddispatch.h>
|
#include <rtems/score/threaddispatch.h>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user