Remove hidden _set/_get_field*() API - instead export and use mad_set/get_field*() API directly.
Signed-off-by: Sasha Khapyorsky <[email protected]> --- On 11:00 Fri 19 Dec , Sean Hefty wrote: > > I did see that. I was thinking more of renaming _set_field to mad_set_field > and > removing the existing implementation of mad_set_field. Ok, let's just do it. Sasha libibmad/include/infiniband/mad.h | 93 ++++------------------- libibmad/src/dump.c | 51 ------------ libibmad/src/fields.c | 156 +++++++++++++++++++++++++++++++++--- libibmad/src/libibmad.map | 20 ++--- libibmad/src/mad.c | 40 ---------- 5 files changed, 166 insertions(+), 194 deletions(-) diff --git a/libibmad/include/infiniband/mad.h b/libibmad/include/infiniband/mad.h index c2ad148..fd0deff 100644 --- a/libibmad/include/infiniband/mad.h +++ b/libibmad/include/infiniband/mad.h @@ -637,58 +637,23 @@ ib_portid_set(ib_portid_t *portid, int lid, int qp, int qkey) } /* fields.c */ -extern ib_field_t ib_mad_f[]; - -void _set_field(void *buf, int base_offs, ib_field_t *f, uint32_t val); -uint32_t _get_field(void *buf, int base_offs, ib_field_t *f); -void _set_array(void *buf, int base_offs, ib_field_t *f, void *val); -void _get_array(void *buf, int base_offs, ib_field_t *f, void *val); -void _set_field64(void *buf, int base_offs, ib_field_t *f, uint64_t val); -uint64_t _get_field64(void *buf, int base_offs, ib_field_t *f); - -/* mad.c */ -static inline uint32_t -mad_get_field(void *buf, int base_offs, int field) -{ - return _get_field(buf, base_offs, ib_mad_f + field); -} - -static inline void -mad_set_field(void *buf, int base_offs, int field, uint32_t val) -{ - _set_field(buf, base_offs, ib_mad_f + field, val); -} - +uint32_t mad_get_field(void *buf, int base_offs, int field); +void mad_set_field(void *buf, int base_offs, int field, uint32_t val); /* field must be byte aligned */ -static inline uint64_t -mad_get_field64(void *buf, int base_offs, int field) -{ - return _get_field64(buf, base_offs, ib_mad_f + field); -} - -static inline void -mad_set_field64(void *buf, int base_offs, int field, uint64_t val) -{ - _set_field64(buf, base_offs, ib_mad_f + field, val); -} - -static inline void -mad_set_array(void *buf, int base_offs, int field, void *val) -{ - _set_array(buf, base_offs, ib_mad_f + field, val); -} - -static inline void -mad_get_array(void *buf, int base_offs, int field, void *val) -{ - _get_array(buf, base_offs, ib_mad_f + field, val); -} +uint64_t mad_get_field64(void *buf, int base_offs, int field); +void mad_set_field64(void *buf, int base_offs, int field, uint64_t val); +void mad_set_array(void *buf, int base_offs, int field, void *val); +void mad_get_array(void *buf, int base_offs, int field, void *val); +void mad_decode_field(uint8_t *buf, int field, void *val); +void mad_encode_field(uint8_t *buf, int field, void *val); +int mad_print_field(int field, const char *name, void *val); +char *mad_dump_field(int field, char *buf, int bufsz, void *val); +char *mad_dump_val(int field, char *buf, int bufsz, void *val); -void mad_decode_field(uint8_t *buf, int field, void *val); -void mad_encode_field(uint8_t *buf, int field, void *val); -void * mad_encode(void *buf, ib_rpc_t *rpc, ib_dr_path_t *drpath, void *data); +/* mad.c */ +void *mad_encode(void *buf, ib_rpc_t *rpc, ib_dr_path_t *drpath, void *data); uint64_t mad_trid(void); -int mad_build_pkt(void *umad, ib_rpc_t *rpc, ib_portid_t *dport, ib_rmpp_hdr_t *rmpp, void *data); +int mad_build_pkt(void *umad, ib_rpc_t *rpc, ib_portid_t *dport, ib_rmpp_hdr_t *rmpp, void *data); /* register.c */ int mad_register_port_client(int port_id, int mgmt, uint8_t rmpp_version); @@ -868,36 +833,6 @@ ib_mad_dump_fn mad_dump_nodedesc, mad_dump_nodeinfo, mad_dump_portinfo, mad_dump_switchinfo, mad_dump_perfcounters, mad_dump_perfcounters_ext; -int _mad_dump(ib_mad_dump_fn *fn, char *name, void *val, int valsz); -char * _mad_dump_field(ib_field_t *f, char *name, char *buf, int bufsz, - void *val); -int _mad_print_field(ib_field_t *f, char *name, void *val, int valsz); -char * _mad_dump_val(ib_field_t *f, char *buf, int bufsz, void *val); - -static inline int -mad_print_field(int field, char *name, void *val) -{ - if (field <= IB_NO_FIELD || field >= IB_FIELD_LAST_) - return -1; - return _mad_print_field(ib_mad_f + field, name, val, 0); -} - -static inline char * -mad_dump_field(int field, char *buf, int bufsz, void *val) -{ - if (field <= IB_NO_FIELD || field >= IB_FIELD_LAST_) - return 0; - return _mad_dump_field(ib_mad_f + field, 0, buf, bufsz, val); -} - -static inline char * -mad_dump_val(int field, char *buf, int bufsz, void *val) -{ - if (field <= IB_NO_FIELD || field >= IB_FIELD_LAST_) - return 0; - return _mad_dump_val(ib_mad_f + field, buf, bufsz, val); -} - extern int ibdebug; END_C_DECLS diff --git a/libibmad/src/dump.c b/libibmad/src/dump.c index 052127f..49bb34b 100644 --- a/libibmad/src/dump.c +++ b/libibmad/src/dump.c @@ -729,54 +729,3 @@ mad_dump_perfcounters_ext(char *buf, int bufsz, void *val, int valsz) { _dump_fields(buf, bufsz, val, IB_PC_EXT_FIRST_F, IB_PC_EXT_LAST_F); } - -/************************/ - -char * -_mad_dump_val(ib_field_t *f, char *buf, int bufsz, void *val) -{ - f->def_dump_fn(buf, bufsz, val, ALIGN(f->bitlen, 8) / 8); - buf[bufsz - 1] = 0; - - return buf; -} - -char * -_mad_dump_field(ib_field_t *f, char *name, char *buf, int bufsz, void *val) -{ - char dots[128]; - int l, n; - - if (bufsz <= 32) - return 0; /* buf too small */ - - if (!name) - name = f->name; - - l = strlen(name); - if (l < 32) { - memset(dots, '.', 32 - l); - dots[32 - l] = 0; - } - - n = snprintf(buf, bufsz, "%s:%s", name, dots); - _mad_dump_val(f, buf + n, bufsz - n, val); - buf[bufsz - 1] = 0; - - return buf; -} - -int -_mad_dump(ib_mad_dump_fn *fn, char *name, void *val, int valsz) -{ - ib_field_t f = { .def_dump_fn = fn, .bitlen = valsz * 8}; - char buf[512]; - - return printf("%s\n", _mad_dump_field(&f, name, buf, sizeof buf, val)); -} - -int -_mad_print_field(ib_field_t *f, char *name, void *val, int valsz) -{ - return _mad_dump(f->def_dump_fn, name ? name : f->name, val, valsz ? valsz : ALIGN(f->bitlen, 8) / 8); -} diff --git a/libibmad/src/fields.c b/libibmad/src/fields.c index 6942e85..ffbfc76 100644 --- a/libibmad/src/fields.c +++ b/libibmad/src/fields.c @@ -54,7 +54,7 @@ #define BE_OFFS(o, w) (o), (w) #define BE_TO_BITSOFFS(o, w) (((o) & ~31) | ((32 - ((o) & 31) - (w)))) -ib_field_t ib_mad_f [] = { +static const ib_field_t ib_mad_f [] = { [0] {0, 0}, /* IB_NO_FIELD - reserved as invalid */ [IB_GID_PREFIX_F] {0, 64, "GidPrefix", mad_dump_rhex}, @@ -363,8 +363,7 @@ ib_field_t ib_mad_f [] = { }; -void -_set_field64(void *buf, int base_offs, ib_field_t *f, uint64_t val) +static void _set_field64(void *buf, int base_offs, const ib_field_t *f, uint64_t val) { uint64_t nval; @@ -372,16 +371,14 @@ _set_field64(void *buf, int base_offs, ib_field_t *f, uint64_t val) memcpy((char *)buf + base_offs + f->bitoffs / 8, &nval, sizeof(uint64_t)); } -uint64_t -_get_field64(void *buf, int base_offs, ib_field_t *f) +static uint64_t _get_field64(void *buf, int base_offs, const ib_field_t *f) { uint64_t val; memcpy(&val, ((char *)buf + base_offs + f->bitoffs / 8), sizeof(uint64_t)); return ntohll(val); } -void -_set_field(void *buf, int base_offs, ib_field_t *f, uint32_t val) +static void _set_field(void *buf, int base_offs, const ib_field_t *f, uint32_t val) { int prebits = (8 - (f->bitoffs & 7)) & 7; int postbits = (f->bitoffs + f->bitlen) & 7; @@ -411,8 +408,7 @@ _set_field(void *buf, int base_offs, ib_field_t *f, uint32_t val) } } -uint32_t -_get_field(void *buf, int base_offs, ib_field_t *f) +static uint32_t _get_field(void *buf, int base_offs, const ib_field_t *f) { int prebits = (8 - (f->bitoffs & 7)) & 7; int postbits = (f->bitoffs + f->bitlen) & 7; @@ -440,8 +436,7 @@ _get_field(void *buf, int base_offs, ib_field_t *f) } /* field must be byte aligned */ -void -_set_array(void *buf, int base_offs, ib_field_t *f, void *val) +static void _set_array(void *buf, int base_offs, const ib_field_t *f, void *val) { int bitoffs = f->bitoffs; @@ -451,8 +446,7 @@ _set_array(void *buf, int base_offs, ib_field_t *f, void *val) memcpy((uint8_t *)buf + base_offs + bitoffs / 8, val, f->bitlen / 8); } -void -_get_array(void *buf, int base_offs, ib_field_t *f, void *val) +static void _get_array(void *buf, int base_offs, const ib_field_t *f, void *val) { int bitoffs = f->bitoffs; @@ -461,3 +455,139 @@ _get_array(void *buf, int base_offs, ib_field_t *f, void *val) memcpy(val, (uint8_t *)buf + base_offs + bitoffs / 8, f->bitlen / 8); } + +uint32_t mad_get_field(void *buf, int base_offs, int field) +{ + return _get_field(buf, base_offs, ib_mad_f + field); +} + +void mad_set_field(void *buf, int base_offs, int field, uint32_t val) +{ + _set_field(buf, base_offs, ib_mad_f + field, val); +} + +uint64_t mad_get_field64(void *buf, int base_offs, int field) +{ + return _get_field64(buf, base_offs, ib_mad_f + field); +} + +void mad_set_field64(void *buf, int base_offs, int field, uint64_t val) +{ + _set_field64(buf, base_offs, ib_mad_f + field, val); +} + +void mad_set_array(void *buf, int base_offs, int field, void *val) +{ + _set_array(buf, base_offs, ib_mad_f + field, val); +} + +void mad_get_array(void *buf, int base_offs, int field, void *val) +{ + _get_array(buf, base_offs, ib_mad_f + field, val); +} + +void mad_decode_field(uint8_t *buf, int field, void *val) +{ + const ib_field_t *f = ib_mad_f + field; + + if (!field) { + *(int *)val = *(int *)buf; + return; + } + if (f->bitlen <= 32) { + *(uint32_t *)val = _get_field(buf, 0, f); + return; + } + if (f->bitlen == 64) { + *(uint64_t *)val = _get_field64(buf, 0, f); + return; + } + _get_array(buf, 0, f, val); +} + +void mad_encode_field(uint8_t *buf, int field, void *val) +{ + const ib_field_t *f = ib_mad_f + field; + + if (!field) { + *(int *)buf = *(int *)val; + return; + } + if (f->bitlen <= 32) { + _set_field(buf, 0, f, *(uint32_t *)val); + return; + } + if (f->bitlen == 64) { + _set_field64(buf, 0, f, *(uint64_t *)val); + return; + } + _set_array(buf, 0, f, val); +} + +/************************/ + +static char *_mad_dump_val(const ib_field_t *f, char *buf, int bufsz, void *val) +{ + f->def_dump_fn(buf, bufsz, val, ALIGN(f->bitlen, 8) / 8); + buf[bufsz - 1] = 0; + + return buf; +} + +static char *_mad_dump_field(const ib_field_t *f, const char *name, char *buf, int bufsz, void *val) +{ + char dots[128]; + int l, n; + + if (bufsz <= 32) + return 0; /* buf too small */ + + if (!name) + name = f->name; + + l = strlen(name); + if (l < 32) { + memset(dots, '.', 32 - l); + dots[32 - l] = 0; + } + + n = snprintf(buf, bufsz, "%s:%s", name, dots); + _mad_dump_val(f, buf + n, bufsz - n, val); + buf[bufsz - 1] = 0; + + return buf; +} + +static int _mad_dump(ib_mad_dump_fn *fn, const char *name, void *val, int valsz) +{ + ib_field_t f = { .def_dump_fn = fn, .bitlen = valsz * 8}; + char buf[512]; + + return printf("%s\n", _mad_dump_field(&f, name, buf, sizeof buf, val)); +} + +static int _mad_print_field(const ib_field_t *f, const char *name, void *val, int valsz) +{ + return _mad_dump(f->def_dump_fn, name ? name : f->name, val, valsz ? valsz : ALIGN(f->bitlen, 8) / 8); +} + +int mad_print_field(int field, const char *name, void *val) +{ + if (field <= IB_NO_FIELD || field >= IB_FIELD_LAST_) + return -1; + return _mad_print_field(ib_mad_f + field, name, val, 0); +} + +char *mad_dump_field(int field, char *buf, int bufsz, void *val) +{ + if (field <= IB_NO_FIELD || field >= IB_FIELD_LAST_) + return 0; + return _mad_dump_field(ib_mad_f + field, 0, buf, bufsz, val); +} + +char *mad_dump_val(int field, char *buf, int bufsz, void *val) +{ + if (field <= IB_NO_FIELD || field >= IB_FIELD_LAST_) + return 0; + return _mad_dump_val(ib_mad_f + field, buf, bufsz, val); +} diff --git a/libibmad/src/libibmad.map b/libibmad/src/libibmad.map index f26d28d..ea1ed4b 100644 --- a/libibmad/src/libibmad.map +++ b/libibmad/src/libibmad.map @@ -1,9 +1,8 @@ IBMAD_1.3 { global: - _mad_dump; - _mad_dump_field; - _mad_dump_val; - _mad_print_field; + mad_dump_field; + mad_dump_val; + mad_print_field; mad_dump_array; mad_dump_bitfield; mad_dump_hex; @@ -34,13 +33,12 @@ IBMAD_1.3 { mad_dump_uint; mad_dump_vlarbitration; mad_dump_vlcap; - _get_array; - _get_field; - _get_field64; - _set_array; - _set_field; - _set_field64; - ib_mad_f; + mad_get_field; + mad_set_field; + mad_get_field64; + mad_set_field64; + mad_get_array; + mad_set_array; perf_classportinfo_query; port_performance_query; port_performance_reset; diff --git a/libibmad/src/mad.c b/libibmad/src/mad.c index 1367ecd..fc73a7a 100644 --- a/libibmad/src/mad.c +++ b/libibmad/src/mad.c @@ -49,46 +49,6 @@ #undef DEBUG #define DEBUG if (ibdebug) IBWARN -void -mad_decode_field(uint8_t *buf, int field, void *val) -{ - ib_field_t *f = ib_mad_f + field; - - if (!field) { - *(int *)val = *(int *)buf; - return; - } - if (f->bitlen <= 32) { - *(uint32_t *)val = _get_field(buf, 0, f); - return; - } - if (f->bitlen == 64) { - *(uint64_t *)val = _get_field64(buf, 0, f); - return; - } - _get_array(buf, 0, f, val); -} - -void -mad_encode_field(uint8_t *buf, int field, void *val) -{ - ib_field_t *f = ib_mad_f + field; - - if (!field) { - *(int *)buf = *(int *)val; - return; - } - if (f->bitlen <= 32) { - _set_field(buf, 0, f, *(uint32_t *)val); - return; - } - if (f->bitlen == 64) { - _set_field64(buf, 0, f, *(uint64_t *)val); - return; - } - _set_array(buf, 0, f, val); -} - uint64_t mad_trid(void) { -- 1.6.0.4.766.g6fc4a _______________________________________________ general mailing list [email protected] http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
