Hi,

On 10/9/24 14:06, Petr Machata wrote:
diff --git a/tools/testing/selftests/net/lib/sh/defer.sh 
b/tools/testing/selftests/net/lib/sh/defer.sh
new file mode 100644
index 000000000000..8d205c3f0445
--- /dev/null
+++ b/tools/testing/selftests/net/lib/sh/defer.sh
@@ -0,0 +1,115 @@
+#!/bin/bash
+# SPDX-License-Identifier: GPL-2.0
+
+# map[(scope_id,track,cleanup_id) -> cleanup_command]
+# track={d=default | p=priority}
+declare -A __DEFER__JOBS
+
+# map[(scope_id,track) -> # cleanup_commands]
+declare -A __DEFER__NJOBS
+
+# scope_id of the topmost scope.
+__DEFER__SCOPE_ID=0
+
+__defer__ndefer_key()
+{
+       local track=$1; shift

Minor nit: IMHO the trailing shift is here a bit confusing: it let me think about other arguments, which are not really expected.

[...]
+__defer__schedule()
+{
+       local track=$1; shift
+       local ndefers=$(__defer__ndefers $track)
+       local ndefers_key=$(__defer__ndefer_key $track)
+       local defer_key=$(__defer__defer_key $track $ndefers)
+       local defer="$@"
+
+       __DEFER__JOBS[$defer_key]="$defer"
+       __DEFER__NJOBS[$ndefers_key]=$((${__DEFER__NJOBS[$ndefers_key]} + 1))

'${__DEFER__NJOBS[$ndefers_key]}' is actually '$ndefers', right? If so it would be better to reuse the avail variable.

Thanks,

Paolo


Reply via email to