about summary refs log tree commit diff
path: root/REORG.TODO/mach/errsystems.awk
diff options
context:
space:
mode:
Diffstat (limited to 'REORG.TODO/mach/errsystems.awk')
-rw-r--r--REORG.TODO/mach/errsystems.awk23
1 files changed, 23 insertions, 0 deletions
diff --git a/REORG.TODO/mach/errsystems.awk b/REORG.TODO/mach/errsystems.awk
new file mode 100644
index 0000000000..a5e93604bc
--- /dev/null
+++ b/REORG.TODO/mach/errsystems.awk
@@ -0,0 +1,23 @@
+BEGIN {
+  print "#include <errno.h>";
+  print "#include <mach/error.h>";
+  print "#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 "  };";
+  print "\n\
+const int __mach_error_system_count = errlib_count (__mach_error_systems);";
+}