aboutsummaryrefslogtreecommitdiff
path: root/script/gen-manual-mach.sh
diff options
context:
space:
mode:
Diffstat (limited to 'script/gen-manual-mach.sh')
-rwxr-xr-xscript/gen-manual-mach.sh10
1 files changed, 7 insertions, 3 deletions
diff --git a/script/gen-manual-mach.sh b/script/gen-manual-mach.sh
index e973bce..b309e0c 100755
--- a/script/gen-manual-mach.sh
+++ b/script/gen-manual-mach.sh
@@ -1,19 +1,23 @@
#!/bin/bash
out=generated/manual-mach.inc.h
+pat='/thread_[gs]et_state|vm_remap/'
(mig -user /dev/stdout -server /dev/null -header /dev/stdout /usr/include/mach/{thread_act,mach_vm}.defs |
egrep -v '^(#ifndef|#define|#endif).*_user_' |
egrep -v '#include "stdout"' |
unifdef -D__MigTypeCheck |
sed -E 's/(mach_msg|memcpy)\(/manual_\1(/g;
s/^\)/, mach_port_t reply_port)/;
- s/_kernelrpc_//;
+ s/_kernelrpc_//g;
+ s/(Request|Reply)__/\1__manual_/g;
s/^([a-z].*)?kern_return_t[[:blank:]]+([a-z])/\1kern_return_t manual_\2/;
s/mig_external/static/;
- s/__defined/_manual__defined/g;
s/mig_get_reply_port\(\)/reply_port/g' |
awk 'BEGIN { on = 1; }
/^\/\* Routine / ||
- (/__MIG_check__Reply__/ && /^#[ie]/) { on = /thread_[gs]et_state|vm_remap/; }
+ (/__MIG_check__Reply__/ && /^#[ie]/) { on = '"$pat"'; }
on { print; }
+ /typedef struct {/ { xon = 1; accum = ""; }
+ xon { accum = accum $0 "\n"; }
+ xon && /} / { if('"$pat"') print accum; xon = 0; }
/#endif.*__AfterMigUserHeader/ { on = 1; }
' > $out) || rm -f $out