[PATCH v8 10/10] devtools: check event device doc tables

Thomas Monjalon thomas at monjalon.net
Wed Nov 24 11:52:34 CET 2021


23/11/2021 12:07, skori at marvell.com:
> --- a/devtools/check-doc-vs-code.sh
> +++ b/devtools/check-doc-vs-code.sh
> +all_event_drivers()
> +{
> +	find $rootdir/drivers/event -mindepth 1 -maxdepth 1 -type d |
> +	sed 's,.*/,,' |
> +	sort
> +}
> +
> +check_event_dev() # <driver>
> +{
> +	code=$rootdir/drivers/event/$1
> +	doc=$rootdir/doc/guides/eventdevs/features/$1.ini
> +	[ -d $code ] || return 0
> +	[ -f $doc ] || return 0
> +	report=$($selfdir/parse-event-support.sh $code $doc)
> +	if [ -n "$report" ]; then
> +		error "doc out of sync for $1"
> +		echo "$report" | sed 's,^,\t,'
> +	fi
> +}

These 2 functions are mostly copy/paste of rte_flow functions.
Given there will be more in future, I would prefer code being factorized.

>  if [ -z "$trusted_commit" ]; then
>  	# check all
>  	for driver in $(all_net_drivers); do
>  		check_rte_flow $driver
>  	done
> +

I would remove this blank line.

> +	for driver in $(all_event_drivers); do
> +		check_event_dev $driver
> +	done
>  	exit $result
>  fi
[...]
> +if has_code_change 'RTE_EVENT_DEV_CAP_*' ||
> +		has_code_change 'RTE_EVENT_ETH_RX_ADAPTER_CAP_*' ||
> +		has_code_change 'RTE_EVENT_ETH_TX_ADAPTER_CAP_*' ||
> +		has_code_change 'RTE_EVENT_CRYPTO_ADAPTER_CAP_*' ||
> +		has_code_change 'RTE_EVENT_TIMER_ADAPTER_CAP_*' ||

Can it be a single query?

> +		has_file_change 'doc/guides/eventdevs/features'; then
> +	for driver in $(all_event_drivers); do

No need to check all drivers.
For rte_flow, only changed drivers are checked.

> +		check_event_dev $driver
> +	done
> +fi
[...]
> +# generate INI section
> +list() # <title> <pattern> <extra_patterns>
> +{
> +	echo "[$1]"
> +	word0=$(git grep -who "$2[[:alnum:]_]*" $dir)
> +	word1=$(echo "$3")

Why echo?

> +	words="$word0""$word1"

Why so many quotes?

> +	echo "$words" | sort -u |
> +		awk 'sub(/'$2'/, "") {printf "%-20s = Y\n", tolower($0)}'
> +}
[...]
> +event_dev_rx_adptr_support()
> +{
> +	title="Eth Rx adapter Features"
> +	pattern=$(echo "RTE_EVENT_ETH_RX_ADAPTER_CAP_" |
> +		awk '{print toupper($0)}')
> +	check_rx_adptr_sw_capa || extra='RTE_EVENT_ETH_RX_ADAPTER_CAP_OVERRIDE_FLOW_ID
> +				RTE_EVENT_ETH_RX_ADAPTER_CAP_MULTI_EVENTQ
> +				RTE_EVENT_ETH_RX_ADAPTER_CAP_EVENT_VECTOR'

Why having extra parameter, instead of updating the pattern?
By the way, the pattern RTE_EVENT_ETH_RX_ADAPTER_CAP_ already include all of this.

> +	list "$title" "$pattern" "$extra"
> +}
[...]
> +# compare with reference input
> +event_dev_sched_compare()
> +{
> +	section="Scheduling Features]"
> +	{
> +		event_dev_sched_support
> +		sed -n "/$section/,/]/p" "$ref" | sed '/^$/d'
> +	} |
> +	sed '/]/d' | # ignore section title
> +	sed 's, *=.*,,' | # ignore value (better in doc than generated one)
> +	sort | uniq -u | # show differences
> +	sed "s,^,Scheduling Features ," # prefix with category name
> +}
> +
> +event_dev_rx_adptr_compare()
> +{
> +	section="Eth Rx adapter Features]"
> +	{
> +		event_dev_rx_adptr_support
> +		sed -n "/$section/,/]/p" "$ref" | sed '/^$/d'
> +	} |
> +	sed '/]/d' | # ignore section title
> +	sed 's, *=.*,,' | # ignore value (better in doc than generated one)
> +	sort | uniq -u | # show differences
> +	sed "s,^,Eth Rx adapter Features ," # prefix with category name
> +}
> +
> +event_dev_tx_adptr_compare()
> +{
> +	section="Eth Tx adapter Features]"
> +	{
> +		event_dev_tx_adptr_support
> +		sed -n "/$section/,/]/p" "$ref" | sed '/^$/d'
> +	} |
> +	sed '/]/d' | # ignore section title
> +	sed 's, *=.*,,' | # ignore value (better in doc than generated one)
> +	sort | uniq -u | # show differences
> +	sed "s,^,Eth Tx adapter Features ," # prefix with category name
> +}
> +
> +event_dev_crypto_adptr_compare()
> +{
> +	section="Crypto adapter Features]"
> +	{
> +		event_dev_crypto_adptr_support
> +		sed -n "/$section/,/]/p" "$ref" | sed '/^$/d'
> +	} |
> +	sed '/]/d' | # ignore section title
> +	sed 's, *=.*,,' | # ignore value (better in doc than generated one)
> +	sort | uniq -u | # show differences
> +	sed "s,^,Crypto adapter Features ," # prefix with category name
> +}
> +
> +event_dev_timer_adptr_compare()
> +{
> +	section="Timer adapter Features]"
> +	{
> +		event_dev_timer_adptr_support
> +		sed -n "/$section/,/]/p" "$ref" | sed '/^$/d'
> +	} |
> +	sed '/]/d' | # ignore section title
> +	sed 's, *=.*,,' | # ignore value (better in doc than generated one)
> +	sort | uniq -u | # show differences
> +	sed "s,^,Timer adapter Features ," # prefix with category name
> +}

I think these functions can be factorized.




More information about the dev mailing list