clock: Create a slave event monitor.
Signed-off-by: Richard Cochran <richardcochran@gmail.com>master
parent
d3a519e26d
commit
6f95c2e92c
13
clock.c
13
clock.c
|
@ -131,6 +131,7 @@ struct clock {
|
||||||
struct clockcheck *sanity_check;
|
struct clockcheck *sanity_check;
|
||||||
struct interface *udsif;
|
struct interface *udsif;
|
||||||
LIST_HEAD(clock_subscribers_head, clock_subscriber) subscribers;
|
LIST_HEAD(clock_subscribers_head, clock_subscriber) subscribers;
|
||||||
|
struct monitor *slave_event_monitor;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct clock the_clock;
|
struct clock the_clock;
|
||||||
|
@ -271,6 +272,7 @@ void clock_destroy(struct clock *c)
|
||||||
LIST_FOREACH_SAFE(p, &c->ports, list, tmp) {
|
LIST_FOREACH_SAFE(p, &c->ports, list, tmp) {
|
||||||
clock_remove_port(c, p);
|
clock_remove_port(c, p);
|
||||||
}
|
}
|
||||||
|
monitor_destroy(c->slave_event_monitor);
|
||||||
port_close(c->uds_port);
|
port_close(c->uds_port);
|
||||||
free(c->pollfd);
|
free(c->pollfd);
|
||||||
if (c->clkid != CLOCK_REALTIME) {
|
if (c->clkid != CLOCK_REALTIME) {
|
||||||
|
@ -1185,6 +1187,12 @@ struct clock *clock_create(enum clock_type type, struct config *config,
|
||||||
}
|
}
|
||||||
clock_fda_changed(c);
|
clock_fda_changed(c);
|
||||||
|
|
||||||
|
c->slave_event_monitor = monitor_create(config, c->uds_port);
|
||||||
|
if (!c->slave_event_monitor) {
|
||||||
|
pr_err("failed to create slave event monitor");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
/* Create the ports. */
|
/* Create the ports. */
|
||||||
STAILQ_FOREACH(iface, &config->interfaces, list) {
|
STAILQ_FOREACH(iface, &config->interfaces, list) {
|
||||||
if (clock_add_port(c, phc_device, phc_index, timestamping, iface)) {
|
if (clock_add_port(c, phc_device, phc_index, timestamping, iface)) {
|
||||||
|
@ -1626,6 +1634,11 @@ void clock_peer_delay(struct clock *c, tmv_t ppd, tmv_t req, tmv_t rx,
|
||||||
stats_add_value(c->stats.delay, tmv_dbl(ppd));
|
stats_add_value(c->stats.delay, tmv_dbl(ppd));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct monitor *clock_slave_monitor(struct clock *c)
|
||||||
|
{
|
||||||
|
return c->slave_event_monitor;
|
||||||
|
}
|
||||||
|
|
||||||
int clock_slave_only(struct clock *c)
|
int clock_slave_only(struct clock *c)
|
||||||
{
|
{
|
||||||
return c->dds.flags & DDS_SLAVE_ONLY;
|
return c->dds.flags & DDS_SLAVE_ONLY;
|
||||||
|
|
8
clock.h
8
clock.h
|
@ -23,6 +23,7 @@
|
||||||
#include "dm.h"
|
#include "dm.h"
|
||||||
#include "ds.h"
|
#include "ds.h"
|
||||||
#include "config.h"
|
#include "config.h"
|
||||||
|
#include "monitor.h"
|
||||||
#include "notification.h"
|
#include "notification.h"
|
||||||
#include "servo.h"
|
#include "servo.h"
|
||||||
#include "tlv.h"
|
#include "tlv.h"
|
||||||
|
@ -267,6 +268,13 @@ struct servo *clock_servo(struct clock *c);
|
||||||
*/
|
*/
|
||||||
enum servo_state clock_servo_state(struct clock *c);
|
enum servo_state clock_servo_state(struct clock *c);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Obtain the slave monitor instance from a clock.
|
||||||
|
* @param c The clock instance.
|
||||||
|
* @return The slave monitor associated with the clock.
|
||||||
|
*/
|
||||||
|
struct monitor *clock_slave_monitor(struct clock *c);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Obtain the slave-only flag from a clock's default data set.
|
* Obtain the slave-only flag from a clock's default data set.
|
||||||
* @param c The clock instance.
|
* @param c The clock instance.
|
||||||
|
|
Loading…
Reference in New Issue