summaryrefslogtreecommitdiff
path: root/src/validators/cpu
diff options
context:
space:
mode:
authorViacheslav Hletenko <v.gletenko@vyos.io>2025-05-09 22:11:55 +0300
committerGitHub <noreply@github.com>2025-05-09 22:11:55 +0300
commit4ed8419dc12e2794dc5e13488aebea6c3160aa13 (patch)
tree884f1caf3938562e1c83179cc82eb46b0e0fd14c /src/validators/cpu
parentc8e468d4bf720f15e1c0232091399a45e8d9949b (diff)
parentc823a6908468acc840fd959066a8079db36cd4b6 (diff)
downloadvyos-1x-current.tar.gz
vyos-1x-current.zip
Merge pull request #4491 from sever-sever/T7423HEADcurrent
T7423: Add kernel boot options isolcpus, hugepages, numa_balancing
Diffstat (limited to 'src/validators/cpu')
-rwxr-xr-xsrc/validators/cpu43
1 files changed, 43 insertions, 0 deletions
diff --git a/src/validators/cpu b/src/validators/cpu
new file mode 100755
index 000000000..959a49248
--- /dev/null
+++ b/src/validators/cpu
@@ -0,0 +1,43 @@
+#!/usr/bin/python3
+
+import re
+import sys
+
+MAX_CPU = 511
+
+
+def validate_isolcpus(value):
+ pattern = re.compile(r'^(\d{1,3}(-\d{1,3})?)(,(\d{1,3}(-\d{1,3})?))*$')
+ if not pattern.fullmatch(value):
+ return False
+
+ flat_list = []
+ for part in value.split(','):
+ if '-' in part:
+ start, end = map(int, part.split('-'))
+ if start > end or start < 0 or end > MAX_CPU:
+ return False
+ flat_list.extend(range(start, end + 1))
+ else:
+ num = int(part)
+ if num < 0 or num > MAX_CPU:
+ return False
+ flat_list.append(num)
+
+ for i in range(1, len(flat_list)):
+ if flat_list[i] <= flat_list[i - 1]:
+ return False
+
+ return True
+
+
+if __name__ == "__main__":
+ if len(sys.argv) != 2:
+ print("Usage: python3 cpu.py <cpu_list>")
+ sys.exit(1)
+
+ input_value = sys.argv[1]
+ if validate_isolcpus(input_value):
+ sys.exit(0)
+ else:
+ sys.exit(1)