aboutsummaryrefslogtreecommitdiff
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 0000000..c5cc530
--- /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);";
+}