diff options
author | Poul-Henning Kamp <phk@FreeBSD.org> | 2003-04-23 21:28:27 +0000 |
---|---|---|
committer | Poul-Henning Kamp <phk@FreeBSD.org> | 2003-04-23 21:28:27 +0000 |
commit | 0a9c130c066e5de650a9dd672f39bbe211969809 (patch) | |
tree | 2f6f2067280259902445ac8d739f9808ae338173 /sys/geom/geom_kern.c | |
parent | 356e4049dae1c81529a5b6dc58e5a4d48d1e560a (diff) | |
download | src-0a9c130c066e5de650a9dd672f39bbe211969809.tar.gz src-0a9c130c066e5de650a9dd672f39bbe211969809.zip |
Introduce a g_waitfor_event() function which posts an event and waits for
it to be run (or cancelled) and use this instead of home-rolled versions.
Notes
Notes:
svn path=/head/; revision=113940
Diffstat (limited to 'sys/geom/geom_kern.c')
-rw-r--r-- | sys/geom/geom_kern.c | 15 |
1 files changed, 3 insertions, 12 deletions
diff --git a/sys/geom/geom_kern.c b/sys/geom/geom_kern.c index 38531b75cecd..aa44b9fa4c69 100644 --- a/sys/geom/geom_kern.c +++ b/sys/geom/geom_kern.c @@ -172,10 +172,7 @@ sysctl_kern_geom_conftxt(SYSCTL_HANDLER_ARGS) sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); sbuf_clear(sb); - g_post_event(g_conftxt, sb, M_WAITOK, NULL); - do { - tsleep(sb, PZERO, "g_conftxt", hz); - } while(!sbuf_done(sb)); + g_waitfor_event(g_conftxt, sb, M_WAITOK, NULL); error = SYSCTL_OUT(req, sbuf_data(sb), sbuf_len(sb) + 1); sbuf_delete(sb); return error; @@ -189,10 +186,7 @@ sysctl_kern_geom_confdot(SYSCTL_HANDLER_ARGS) sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); sbuf_clear(sb); - g_post_event(g_confdot, sb, M_WAITOK, NULL); - do { - tsleep(sb, PZERO, "g_confdot", hz); - } while(!sbuf_done(sb)); + g_waitfor_event(g_confdot, sb, M_WAITOK, NULL); error = SYSCTL_OUT(req, sbuf_data(sb), sbuf_len(sb) + 1); sbuf_delete(sb); return error; @@ -206,10 +200,7 @@ sysctl_kern_geom_confxml(SYSCTL_HANDLER_ARGS) sb = sbuf_new(NULL, NULL, 0, SBUF_AUTOEXTEND); sbuf_clear(sb); - g_post_event(g_confxml, sb, M_WAITOK, NULL); - do { - tsleep(sb, PZERO, "g_confxml", hz); - } while(!sbuf_done(sb)); + g_waitfor_event(g_confxml, sb, M_WAITOK, NULL); error = SYSCTL_OUT(req, sbuf_data(sb), sbuf_len(sb) + 1); sbuf_delete(sb); return error; |