[dpdk-dev] [PATCH v4 11/17] eal/soc: add default scan for Soc devices

Jan Viktorin viktorin at rehivetech.com
Sun Oct 16 02:56:58 CEST 2016


On Sat, 15 Oct 2016 19:15:02 +0530
Shreyansh Jain <shreyansh.jain at nxp.com> wrote:

> From: Jan Viktorin <viktorin at rehivetech.com>
> 
> Default implementation which scans the sysfs platform devices hierarchy.
> For each device, extract the ueven and convert into rte_soc_device.
> 
> The information populated can then be used in probe to match against
> the drivers registered.
> 
> Signed-off-by: Jan Viktorin <viktorin at rehivetech.com>
> [Shreyansh: restructure commit to be an optional implementation]
> Signed-off-by: Shreyansh Jain <shreyansh.jain at nxp.com>

[...]

> +
> +int
> +rte_eal_soc_scan(void)

What about naming it rte_eal_soc_scan_default? This would underline the
fact that this function can be replaced.

Second, this is for the 7/17 patch:
 
-/* register a driver */
 void
 rte_eal_soc_register(struct rte_soc_driver *driver)
 {
+	/* For a valid soc driver, match and scan function
+	 * should be provided.
+	 */
+	RTE_VERIFY(driver != NULL);
+	RTE_VERIFY(driver->match_fn != NULL);
+	RTE_VERIFY(driver->scan_fn != NULL);

What about setting the match_fn and scan_fn to default implementations if they
are NULL? This would make the standard/default approach easier to use.

 	TAILQ_INSERT_TAIL(&soc_driver_list, driver, next);
 }
 

> +{
> +	struct dirent *e;
> +	DIR *dir;
> +	char dirname[PATH_MAX];
> +
> +	dir = opendir(soc_get_sysfs_path());
> +	if (dir == NULL) {
> +		RTE_LOG(ERR, EAL, "%s(): opendir failed: %s\n",
> +			__func__, strerror(errno));
> +		return -1;
> +	}
> +
> +	while ((e = readdir(dir)) != NULL) {
> +		if (e->d_name[0] == '.')
> +			continue;
> +
> +		snprintf(dirname, sizeof(dirname), "%s/%s",
> +				soc_get_sysfs_path(), e->d_name);
> +		if (soc_scan_one(dirname, e->d_name) < 0)
> +			goto error;
> +	}
> +	closedir(dir);
> +	return 0;
> +
> +error:
> +	closedir(dir);
> +	return -1;
> +}
> +
>  /* Init the SoC EAL subsystem */
>  int
>  rte_eal_soc_init(void)



-- 
  Jan Viktorin                E-mail: Viktorin at RehiveTech.com
  System Architect            Web:    www.RehiveTech.com
  RehiveTech
  Brno, Czech Republic


More information about the dev mailing list