Refactor the data set comparison function variable.
There is no need to keep two copies of the data set comparison function. This patch adds a method that allows the port code to obtain the function from the clock code. Signed-off-by: Richard Cochran <richardcochran@gmail.com>master
parent
b2a36350bb
commit
6f96ebb7b8
5
clock.c
5
clock.c
|
@ -758,6 +758,11 @@ struct config *clock_config(struct clock *c)
|
|||
return c->config;
|
||||
}
|
||||
|
||||
int (*clock_dscmp(struct clock *c))(struct dataset *a, struct dataset *b)
|
||||
{
|
||||
return c->dscmp;
|
||||
}
|
||||
|
||||
struct currentDS *clock_current_dataset(struct clock *c)
|
||||
{
|
||||
return &c->cur;
|
||||
|
|
7
clock.h
7
clock.h
|
@ -79,6 +79,13 @@ struct config *clock_config(struct clock *c);
|
|||
*/
|
||||
struct currentDS *clock_current_dataset(struct clock *c);
|
||||
|
||||
/**
|
||||
* Obtains the clock's data set comparison function.
|
||||
* @param c The clock instance.
|
||||
* @return A pointer to the data set comparison function, without fail.
|
||||
*/
|
||||
int (*clock_dscmp(struct clock *c))(struct dataset *a, struct dataset *b);
|
||||
|
||||
/**
|
||||
* Obtains the required time stamping mode.
|
||||
* @param c The clock instance.
|
||||
|
|
5
port.c
5
port.c
|
@ -2191,9 +2191,11 @@ void port_close(struct port *p)
|
|||
|
||||
struct foreign_clock *port_compute_best(struct port *p)
|
||||
{
|
||||
int (*dscmp)(struct dataset *a, struct dataset *b);
|
||||
struct foreign_clock *fc;
|
||||
struct ptp_message *tmp;
|
||||
|
||||
dscmp = clock_dscmp(p->clock);
|
||||
p->best = NULL;
|
||||
|
||||
LIST_FOREACH(fc, &p->foreign_masters, list) {
|
||||
|
@ -2210,7 +2212,7 @@ struct foreign_clock *port_compute_best(struct port *p)
|
|||
|
||||
if (!p->best)
|
||||
p->best = fc;
|
||||
else if (p->dscmp(&fc->dataset, &p->best->dataset) > 0)
|
||||
else if (dscmp(&fc->dataset, &p->best->dataset) > 0)
|
||||
p->best = fc;
|
||||
else
|
||||
fc_clear(fc);
|
||||
|
@ -2784,7 +2786,6 @@ struct port *port_open(int phc_index,
|
|||
}
|
||||
|
||||
p->state_machine = clock_slave_only(clock) ? ptp_slave_fsm : ptp_fsm;
|
||||
p->dscmp = dscmp;
|
||||
p->phc_index = phc_index;
|
||||
p->jbod = config_get_int(cfg, interface->name, "boundary_clock_jbod");
|
||||
transport = config_get_int(cfg, interface->name, "network_transport");
|
||||
|
|
|
@ -88,7 +88,6 @@ struct port {
|
|||
unsigned int multiple_pdr_detected;
|
||||
enum port_state (*state_machine)(enum port_state state,
|
||||
enum fsm_event event, int mdiff);
|
||||
int (*dscmp)(struct dataset *a, struct dataset *b);
|
||||
/* portDS */
|
||||
struct PortIdentity portIdentity;
|
||||
enum port_state state; /*portState*/
|
||||
|
|
Loading…
Reference in New Issue