From 5dcb407add4013d7234dc248fb97c8a5d146e3d3 Mon Sep 17 00:00:00 2001 From: aiju Date: Mon, 12 Jun 2017 19:28:27 +0000 Subject: acid: provide hooks 'procattach' and 'dying' --- sys/src/cmd/acid/main.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) (limited to 'sys/src/cmd/acid/main.c') diff --git a/sys/src/cmd/acid/main.c b/sys/src/cmd/acid/main.c index 9a18f5f53..a69fd2ed7 100644 --- a/sys/src/cmd/acid/main.c +++ b/sys/src/cmd/acid/main.c @@ -178,6 +178,8 @@ die(void) Bprint(bout, "\n"); + if(setjmp(err) == 0) + callhook("dying"); s = look("proclist"); if(s && s->v->type == TLIST) { for(f = s->v->l; f; f = f->next) @@ -196,11 +198,26 @@ loadmoduleobjtype(void) free(buf); } -void -userinit(void) +int +callhook(char *name) { Lsym *l; Node *n; + + l = look(name); + if(l && l->proc) { + n = an(ONAME, ZN, ZN); + n->sym = l; + n = an(OCALL, n, ZN); + execute(n); + return 0; + } + return -1; +} + +void +userinit(void) +{ char *buf, *p; p = getenv("home"); @@ -216,13 +233,7 @@ userinit(void) unwind(); return; } - l = look("acidinit"); - if(l && l->proc) { - n = an(ONAME, ZN, ZN); - n->sym = l; - n = an(OCALL, n, ZN); - execute(n); - } + callhook("acidinit"); } void -- cgit v1.2.3