[openib-general] [PATCH 7/13] osm: port to WinIB stack : opensm/osm_ucast_file.c

Sasha Khapyorsky sashak at voltaire.com
Tue Oct 3 15:16:38 PDT 2006


Hi Eitan,

Some more comments...

On 18:59 Sun 17 Sep     , Eitan Zahavi wrote:
> Hi Hal
> 
> 1. Avoid varargs macros not supported by win
> 2. Some explicit casting required
> 3. Use stroull and not stroll
> 
> Thanks
> 
> Eitan
> 
> Signed-off-by:  Eitan Zahavi <eitan at mellanox.co.il>
> 
> Index: opensm/osm_ucast_file.c
> ===================================================================
> --- opensm/osm_ucast_file.c	(revision 9502)
> +++ opensm/osm_ucast_file.c	(working copy)
> @@ -52,18 +52,11 @@
>  
>  #include <iba/ib_types.h>
>  #include <complib/cl_qmap.h>
> +#include <complib/cl_debug.h>

Why this?

>  #include <opensm/osm_opensm.h>
>  #include <opensm/osm_switch.h>
>  #include <opensm/osm_log.h>
>  
> -#define PARSEERR(log, file_name, lineno, fmt, arg...) \
> -		osm_log(log, OSM_LOG_ERROR, "PARSE ERROR: %s:%u: " fmt , \
> -			file_name, lineno, ##arg )
> -
> -#define PARSEWARN(log, file_name, lineno, fmt, arg...) \
> -		osm_log(log, OSM_LOG_VERBOSE, "PARSE WARN: %s:%u: " fmt , \
> -			file_name, lineno, ##arg )
> -

Is it possible to use C99 style var args macros (with __VA_ARGS___)? MS
claims it is supported by VC. And it is supported by gcc too.

>  static uint16_t remap_lid(osm_opensm_t *p_osm, uint16_t lid, ib_net64_t guid)
>  {
>  	osm_port_t *p_port;
> @@ -72,10 +65,11 @@ static uint16_t remap_lid(osm_opensm_t *
>  
>  	p_port = (osm_port_t *)cl_qmap_get(&p_osm->subn.port_guid_tbl, guid);
>  	if (!p_port ||
> -	    p_port == (osm_port_t *)cl_qmap_end(&p_osm->subn.port_guid_tbl)) {
> +	    p_port == (osm_port_t *)cl_qmap_end(&p_osm->subn.port_guid_tbl)) 
> +	{

Please don't break existing code formatting.

>  		osm_log(&p_osm->log, OSM_LOG_VERBOSE,
> -			"remap_lid: cannot find port guid 0x%016" PRIx64
> -			" , will use the same lid\n", cl_ntoh64(guid));
> +				  "remap_lid: cannot find port guid 0x%016" PRIx64
> +				  " , will use the same lid\n", cl_ntoh64(guid));
>  		return lid;
>  	}
>  
> @@ -182,19 +176,21 @@ static int do_ucast_file_load(void *cont
>  				"skipping parsing. Using default routing algorithm\n");
>  
>  		}
> +

Ditto.

>  		else if (!strncmp(p, "Unicast lids", 12)) {
>  			q = strstr(p, " guid 0x");
>  			if (!q) {
> -				PARSEERR(&p_osm->log, file_name, lineno,
> -					 "cannot parse switch definition\n");
> +				osm_log(&p_osm->log, OSM_LOG_ERROR, "PARSE ERROR: %s:%u:" 
> +						  " cannot parse switch definition\n", 
> +						  file_name, lineno);
>  				return -1;
>  			}
>  			p = q + 6;
> -			sw_guid = strtoll(p, &q, 16);
> +			sw_guid = strtoull(p, &q, 16);

Good.

>  			if (q && !isspace(*q)) {
> -				PARSEERR(&p_osm->log, file_name, lineno,
> -					 "cannot parse switch guid: \'%s\'\n",
> -					 p);
> +				osm_log(&p_osm->log, OSM_LOG_ERROR, "PARSE ERROR: %s:%u:" 
> +						  "cannot parse switch guid: \'%s\'\n",
> +						  file_name, lineno, p);
>  				return -1;
>  			}
>  			sw_guid = cl_hton64(sw_guid);
> @@ -212,40 +208,39 @@ static int do_ucast_file_load(void *cont
>  			}
>  		}
>  		else if (p_sw && !strncmp(p, "0x", 2)) {
> -			lid = strtoul(p, &q, 16);
> +			lid = (uint16_t)strtoul(p, &q, 16);
>  			if (q && !isspace(*q)) {
> -				PARSEERR(&p_osm->log, file_name, lineno,
> -					 "cannot parse lid: \'%s\'\n", p);
> +				osm_log(&p_osm->log, OSM_LOG_ERROR, "PARSE ERROR: %s:%u:"
> +						  "cannot parse lid: \'%s\'\n", file_name, lineno, p);
>  				return -1;
>  			}
>  			p = q;
>  			while (isspace(*p))
>  				p++;
> -			port_num = strtoul(p, &q, 10);
> +			port_num = (uint8_t)strtoul(p, &q, 10);
>  			if (q && !isspace(*q)) {
> -				PARSEERR(&p_osm->log, file_name, lineno,
> -					 "cannot parse port: \'%s\'\n", p);
> +				osm_log(&p_osm->log, OSM_LOG_ERROR, "PARSE ERROR: %s:%u:" 
> +						  "cannot parse port: \'%s\'\n", file_name, lineno, p);
>  				return -1;
>  			}
>  			p = q;
>  			/* additionally try to exract guid */
>  			q = strstr(p, " portguid 0x");
>  			if (!q) {
> -				PARSEWARN(&p_osm->log, file_name, lineno,
> -					  "cannot find port guid "
> -					  "(maybe broken dump): \'%s\'\n", p);
> +				osm_log(&p_osm->log, OSM_LOG_VERBOSE, "PARSE WARNING: %s:%u:" 
> +						  "cannot find port guid "
> +						  "(maybe broken dump): \'%s\'\n", file_name, lineno, p);
>  				port_guid = 0;
>  			}
>  			else
>  			{
>  				p = q + 10;
> -				port_guid = strtoll(p, &q, 16);
> +				port_guid = strtoull(p, &q, 16);

Good.

Sasha

>  				if (!q && !isspace(*q) && *q != ':') {
> -					PARSEWARN(&p_osm->log, file_name,
> -						  lineno,
> -						  "cannot parse port guid "
> -						  "(maybe broken dump): "
> -						  "\'%s\'\n", p);
> +					osm_log(&p_osm->log, OSM_LOG_VERBOSE, "PARSE WARNING: %s:%u:" 
> +							  "cannot parse port guid "
> +							  "(maybe broken dump): "
> +							  "\'%s\'\n", file_name, lineno, p);
>  					port_guid = 0;
>  				}
>  			}
> 
> 
> 
> _______________________________________________
> openib-general mailing list
> openib-general at openib.org
> http://openib.org/mailman/listinfo/openib-general
> 
> To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general
> 




More information about the general mailing list