about summary refs log tree commit diff
path: root/mach/errsystems.awk
diff options
context:
space:
mode:
Diffstat (limited to 'mach/errsystems.awk')
-rw-r--r--mach/errsystems.awk21
1 files changed, 21 insertions, 0 deletions
diff --git a/mach/errsystems.awk b/mach/errsystems.awk
new file mode 100644
index 0000000000..c5cc5302b4
--- /dev/null
+++ b/mach/errsystems.awk
@@ -0,0 +1,21 @@
+BEGIN {
+  print "#include <mach/error.h>\n#include <errorlib.h>";
+  print "#define static static const"
+  nsubs = split(subsys, subs);
+  while (nsubs > 0) printf "#include \"%s\"\n", subs[nsubs--];
+  print "\n\n\
+const struct error_system __mach_error_systems[err_max_system + 1] =";
+  print "  {";
+}
+/^static.*err_[a-z0-9A-Z_]+_sub *\[/ {
+  s = $0; sub(/^.*err_/, "", s); sub(/_sub.*$/, "", s);
+  printf "    [err_get_system (err_%s)] = { errlib_count (err_%s_sub),",
+	s, s;
+  printf "\"(system %s) error with unknown subsystem\", err_%s_sub },\n",
+	s, s;
+}
+END {
+  print "  };";
+  printf "\n\
+const int __mach_error_system_count = errlib_count (__mach_error_systems);";
+}