Commit eb3c4c03 authored by Davide Ciminaghi's avatar Davide Ciminaghi Committed by Alessandro Rubini

config: feed config handler with a pointer to relevant struct pp_argline

Signed-off-by: Davide Ciminaghi's avatarDavide Ciminaghi <ciminaghi@gnudd.com>
parent 8d293248
......@@ -8,7 +8,7 @@
#include <ppsi/ppsi.h>
#include "ppsi-sim.h"
static int f_ppm_real(int lineno, struct pp_globals *ppg,
static int f_ppm_real(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
struct pp_instance *ppi_slave;
......@@ -20,7 +20,7 @@ static int f_ppm_real(int lineno, struct pp_globals *ppg,
return 0;
}
static int f_ppm_servo(int lineno, struct pp_globals *ppg,
static int f_ppm_servo(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
struct pp_instance *ppi_slave;
......@@ -32,7 +32,7 @@ static int f_ppm_servo(int lineno, struct pp_globals *ppg,
return 0;
}
static int f_ofm(int lineno, struct pp_globals *ppg,
static int f_ofm(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
struct pp_sim_time_instance *t_master, *t_slave;
......@@ -45,7 +45,7 @@ static int f_ofm(int lineno, struct pp_globals *ppg,
return 0;
}
static int f_init_time(int lineno, struct pp_globals *ppg,
static int f_init_time(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
struct pp_sim_time_instance *t_inst;
......@@ -57,8 +57,8 @@ static int f_init_time(int lineno, struct pp_globals *ppg,
return 0;
}
static int f_fwd_t_prop(int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
static int f_fwd_t_prop(struct pp_argline *l, int lineno,
struct pp_globals *ppg, union pp_cfg_arg *arg)
{
struct sim_ppi_arch_data *data;
data = SIM_PPI_ARCH(pp_sim_get_master(ppg));
......@@ -66,8 +66,8 @@ static int f_fwd_t_prop(int lineno, struct pp_globals *ppg,
return 0;
}
static int f_bckwd_t_prop(int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
static int f_bckwd_t_prop(struct pp_argline *l, int lineno,
struct pp_globals *ppg, union pp_cfg_arg *arg)
{
struct sim_ppi_arch_data *data;
data = SIM_PPI_ARCH(pp_sim_get_slave(ppg));
......@@ -75,15 +75,15 @@ static int f_bckwd_t_prop(int lineno, struct pp_globals *ppg,
return 0;
}
static int f_t_prop(int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
static int f_t_prop(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
f_fwd_t_prop(lineno, ppg, arg);
f_bckwd_t_prop(lineno, ppg, arg);
f_fwd_t_prop(l, lineno, ppg, arg);
f_bckwd_t_prop(l, lineno, ppg, arg);
return 0;
}
static int f_fwd_jit(int lineno, struct pp_globals *ppg,
static int f_fwd_jit(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
struct sim_ppi_arch_data *data;
......@@ -93,7 +93,7 @@ static int f_fwd_jit(int lineno, struct pp_globals *ppg,
}
static int f_bckwd_jit(int lineno, struct pp_globals *ppg,
static int f_bckwd_jit(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
struct sim_ppi_arch_data *data;
......@@ -102,15 +102,15 @@ static int f_bckwd_jit(int lineno, struct pp_globals *ppg,
return 0;
}
static int f_jit(int lineno, struct pp_globals *ppg,
static int f_jit(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
f_fwd_jit(lineno, ppg, arg);
f_bckwd_jit(lineno, ppg, arg);
f_fwd_jit(l, lineno, ppg, arg);
f_bckwd_jit(l, lineno, ppg, arg);
return 0;
}
static int f_iter(int lineno, struct pp_globals *ppg,
static int f_iter(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
SIM_PPG_ARCH(ppg)->sim_iter_max = arg->i;
......
......@@ -8,13 +8,15 @@
#include <ppsi/ppsi.h>
static int f_rxdrop(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_rxdrop(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
ppg->rxdrop = arg->i;
return 0;
}
static int f_txdrop(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_txdrop(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
ppg->txdrop = arg->i;
return 0;
......
......@@ -286,8 +286,10 @@ union pp_cfg_arg {
/*
* Configuration: we are structure-based, and a typedef simplifies things
*/
typedef int (*cfg_handler)(int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg);
struct pp_argline;
typedef int (*cfg_handler)(struct pp_argline *l, int lineno,
struct pp_globals *ppg, union pp_cfg_arg *arg);
struct pp_argname {
char *name;
......
......@@ -22,7 +22,8 @@ static inline struct pp_instance *CUR_PPI(struct pp_globals *ppg)
}
/* A "port" (or "link", for compatibility) line creates or uses a pp instance */
static int f_port(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_port(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
int i;
......@@ -62,7 +63,8 @@ static int f_port(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
return -1; \
}})
static int f_if(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_if(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
CHECK_PPI(1);
strcpy(CUR_PPI(ppg)->cfg.iface_name, arg->s);
......@@ -70,21 +72,24 @@ static int f_if(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
}
/* The following ones are so similar. Bah... set a pointer somewhere? */
static int f_proto(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_proto(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
CHECK_PPI(1);
CUR_PPI(ppg)->proto = arg->i;
return 0;
}
static int f_role(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_role(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
CHECK_PPI(1);
CUR_PPI(ppg)->role = arg->i;
return 0;
}
static int f_ext(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_ext(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
CHECK_PPI(1);
CUR_PPI(ppg)->cfg.ext = arg->i;
......@@ -92,21 +97,24 @@ static int f_ext(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
}
/* The following two are identical as well. I really need a pointer... */
static int f_class(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_class(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
CHECK_PPI(0);
GOPTS(ppg)->clock_quality.clockClass = arg->i;
return 0;
}
static int f_accuracy(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_accuracy(struct pp_argline *l, int lineno,
struct pp_globals *ppg, union pp_cfg_arg *arg)
{
CHECK_PPI(0);
GOPTS(ppg)->clock_quality.clockAccuracy = arg->i;
return 0;
}
static int f_variance(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_variance(struct pp_argline *l, int lineno,
struct pp_globals *ppg, union pp_cfg_arg *arg)
{
CHECK_PPI(0);
GOPTS(ppg)->clock_quality.offsetScaledLogVariance = arg->i;
......@@ -114,7 +122,8 @@ static int f_variance(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
}
/* Diagnostics can be per-port or global */
static int f_diag(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_diag(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
unsigned long level = pp_diag_parse(arg->s);
......@@ -126,7 +135,8 @@ static int f_diag(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
}
/* VLAN support is per-port, and it depends on configuration itmes */
static int f_vlan(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_vlan(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
struct pp_instance *ppi = CUR_PPI(ppg);
int i, n, *v;
......@@ -190,7 +200,8 @@ static int f_vlan(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
return 0;
}
static int f_servo_pi(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_servo_pi(struct pp_argline *l, int lineno,
struct pp_globals *ppg, union pp_cfg_arg *arg)
{
int n1, n2;
......@@ -204,7 +215,8 @@ static int f_servo_pi(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
return 0;
}
static int f_latency(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_latency(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
int n1, n2;
......@@ -215,15 +227,16 @@ static int f_latency(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
return 0;
}
static int f_domain(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_domain(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
CHECK_PPI(0);
GOPTS(ppg)->domain_number = arg->i;
return 0;
}
static int f_announce_intvl(int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
static int f_announce_intvl(struct pp_argline *l, int lineno,
struct pp_globals *ppg, union pp_cfg_arg *arg)
{
int i = arg->i;
......@@ -237,8 +250,8 @@ static int f_announce_intvl(int lineno, struct pp_globals *ppg,
return 0;
}
static int f_sync_intvl(int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
static int f_sync_intvl(struct pp_argline *l, int lineno,
struct pp_globals *ppg, union pp_cfg_arg *arg)
{
int i = arg->i;
......@@ -247,14 +260,16 @@ static int f_sync_intvl(int lineno, struct pp_globals *ppg,
return 0;
}
static int f_prio1(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_prio1(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
CHECK_PPI(0);
GOPTS(ppg)->prio1 = arg->i;
return 0;
}
static int f_prio2(int lineno, struct pp_globals *ppg, union pp_cfg_arg *arg)
static int f_prio2(struct pp_argline *l, int lineno, struct pp_globals *ppg,
union pp_cfg_arg *arg)
{
CHECK_PPI(0);
GOPTS(ppg)->prio2 = arg->i;
......@@ -502,7 +517,7 @@ static int pp_config_line(struct pp_globals *ppg, char *line, int lineno)
break;
}
if (l->f(lineno, ppg, &cfg_arg))
if (l->f(l, lineno, ppg, &cfg_arg))
return -1;
return 0;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment