pmc: require a configuration for creating a PMC instance.
In the near future, the transports will need to consult the configuration database in order to obtain various options. This patch also introduces the idea of a configuration file into the phc2sys and pmc programs. Signed-off-by: Richard Cochran <richardcochran@gmail.com>master
parent
b297f22a82
commit
bbbc0cd451
10
phc2sys.c
10
phc2sys.c
|
@ -119,6 +119,8 @@ struct node {
|
||||||
struct clock *master;
|
struct clock *master;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static struct config phc2sys_config;
|
||||||
|
|
||||||
static int update_pmc(struct node *node, int subscribe);
|
static int update_pmc(struct node *node, int subscribe);
|
||||||
static int clock_handle_leap(struct node *node, struct clock *clock,
|
static int clock_handle_leap(struct node *node, struct clock *clock,
|
||||||
int64_t offset, uint64_t ts);
|
int64_t offset, uint64_t ts);
|
||||||
|
@ -777,13 +779,13 @@ static void send_subscription(struct node *node)
|
||||||
pmc_send_set_action(node->pmc, TLV_SUBSCRIBE_EVENTS_NP, &sen, sizeof(sen));
|
pmc_send_set_action(node->pmc, TLV_SUBSCRIBE_EVENTS_NP, &sen, sizeof(sen));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int init_pmc(struct node *node, int domain_number)
|
static int init_pmc(struct config *cfg, struct node *node, int domain_number)
|
||||||
{
|
{
|
||||||
char uds_local[MAX_IFNAME_SIZE + 1];
|
char uds_local[MAX_IFNAME_SIZE + 1];
|
||||||
|
|
||||||
snprintf(uds_local, sizeof(uds_local), "/var/run/phc2sys.%d",
|
snprintf(uds_local, sizeof(uds_local), "/var/run/phc2sys.%d",
|
||||||
getpid());
|
getpid());
|
||||||
node->pmc = pmc_create(TRANS_UDS, uds_local, 0, domain_number, 0, 1);
|
node->pmc = pmc_create(cfg, TRANS_UDS, uds_local, 0, domain_number, 0, 1);
|
||||||
if (!node->pmc) {
|
if (!node->pmc) {
|
||||||
pr_err("failed to create pmc");
|
pr_err("failed to create pmc");
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1395,7 +1397,7 @@ int main(int argc, char *argv[])
|
||||||
print_set_level(print_level);
|
print_set_level(print_level);
|
||||||
|
|
||||||
if (autocfg) {
|
if (autocfg) {
|
||||||
if (init_pmc(&node, domain_number))
|
if (init_pmc(&phc2sys_config, &node, domain_number))
|
||||||
return -1;
|
return -1;
|
||||||
if (auto_init_ports(&node, rt) < 0)
|
if (auto_init_ports(&node, rt) < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -1431,7 +1433,7 @@ int main(int argc, char *argv[])
|
||||||
r = -1;
|
r = -1;
|
||||||
|
|
||||||
if (wait_sync) {
|
if (wait_sync) {
|
||||||
if (init_pmc(&node, domain_number))
|
if (init_pmc(&phc2sys_config, &node, domain_number))
|
||||||
goto end;
|
goto end;
|
||||||
|
|
||||||
while (is_running()) {
|
while (is_running()) {
|
||||||
|
|
3
pmc.c
3
pmc.c
|
@ -42,6 +42,7 @@
|
||||||
#define P41 ((double)(1ULL << 41))
|
#define P41 ((double)(1ULL << 41))
|
||||||
|
|
||||||
static struct pmc *pmc;
|
static struct pmc *pmc;
|
||||||
|
static struct config pmc_config;
|
||||||
|
|
||||||
static void do_get_action(int action, int index, char *str);
|
static void do_get_action(int action, int index, char *str);
|
||||||
static void do_set_action(int action, int index, char *str);
|
static void do_set_action(int action, int index, char *str);
|
||||||
|
@ -816,7 +817,7 @@ int main(int argc, char *argv[])
|
||||||
print_set_syslog(1);
|
print_set_syslog(1);
|
||||||
print_set_verbose(1);
|
print_set_verbose(1);
|
||||||
|
|
||||||
pmc = pmc_create(transport_type, iface_name, boundary_hops,
|
pmc = pmc_create(&pmc_config, transport_type, iface_name, boundary_hops,
|
||||||
domain_number, transport_specific, zero_datalen);
|
domain_number, transport_specific, zero_datalen);
|
||||||
if (!pmc) {
|
if (!pmc) {
|
||||||
fprintf(stderr, "failed to create pmc\n");
|
fprintf(stderr, "failed to create pmc\n");
|
||||||
|
|
|
@ -61,9 +61,10 @@ struct pmc {
|
||||||
int zero_length_gets;
|
int zero_length_gets;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct pmc *pmc_create(enum transport_type transport_type, const char *iface_name,
|
struct pmc *pmc_create(struct config *cfg, enum transport_type transport_type,
|
||||||
UInteger8 boundary_hops, UInteger8 domain_number,
|
const char *iface_name, UInteger8 boundary_hops,
|
||||||
UInteger8 transport_specific, int zero_datalen)
|
UInteger8 domain_number, UInteger8 transport_specific,
|
||||||
|
int zero_datalen)
|
||||||
{
|
{
|
||||||
struct pmc *pmc;
|
struct pmc *pmc;
|
||||||
|
|
||||||
|
|
|
@ -21,14 +21,16 @@
|
||||||
#ifndef HAVE_PMC_COMMON_H
|
#ifndef HAVE_PMC_COMMON_H
|
||||||
#define HAVE_PMC_COMMON_H
|
#define HAVE_PMC_COMMON_H
|
||||||
|
|
||||||
|
#include "config.h"
|
||||||
#include "msg.h"
|
#include "msg.h"
|
||||||
#include "transport.h"
|
#include "transport.h"
|
||||||
|
|
||||||
struct pmc;
|
struct pmc;
|
||||||
|
|
||||||
struct pmc *pmc_create(enum transport_type transport_type, const char *iface_name,
|
struct pmc *pmc_create(struct config *cfg, enum transport_type transport_type,
|
||||||
UInteger8 boundary_hops, UInteger8 domain_number,
|
const char *iface_name, UInteger8 boundary_hops,
|
||||||
UInteger8 transport_specific, int zero_datalen);
|
UInteger8 domain_number, UInteger8 transport_specific,
|
||||||
|
int zero_datalen);
|
||||||
|
|
||||||
void pmc_destroy(struct pmc *pmc);
|
void pmc_destroy(struct pmc *pmc);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue