Module Name: src Committed By: pooka Date: Wed Jan 12 12:52:16 UTC 2011
Modified Files: src/lib/librumpuser: rumpuser_sp.c Log Message: call procexit when a connection closes To generate a diff of this commit: cvs rdiff -u -r1.34 -r1.35 src/lib/librumpuser/rumpuser_sp.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/librumpuser/rumpuser_sp.c diff -u src/lib/librumpuser/rumpuser_sp.c:1.34 src/lib/librumpuser/rumpuser_sp.c:1.35 --- src/lib/librumpuser/rumpuser_sp.c:1.34 Mon Jan 10 19:49:43 2011 +++ src/lib/librumpuser/rumpuser_sp.c Wed Jan 12 12:52:16 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpuser_sp.c,v 1.34 2011/01/10 19:49:43 pooka Exp $ */ +/* $NetBSD: rumpuser_sp.c,v 1.35 2011/01/12 12:52:16 pooka Exp $ */ /* * Copyright (c) 2010, 2011 Antti Kantee. All Rights Reserved. @@ -35,7 +35,7 @@ */ #include <sys/cdefs.h> -__RCSID("$NetBSD: rumpuser_sp.c,v 1.34 2011/01/10 19:49:43 pooka Exp $"); +__RCSID("$NetBSD: rumpuser_sp.c,v 1.35 2011/01/12 12:52:16 pooka Exp $"); #include <sys/types.h> #include <sys/atomic.h> @@ -196,6 +196,15 @@ return p; } +static void +lwproc_procexit(void) +{ + + spops.spop_schedule(); + spops.spop_procexit(); + spops.spop_unschedule(); +} + static int rumpsyscall(int sysnum, void *data, register_t *retval) { @@ -456,6 +465,12 @@ sendunlockl(spc); pthread_mutex_unlock(&spc->spc_mtx); + if (spc->spc_mainlwp) { + lwproc_switch(spc->spc_mainlwp); + lwproc_procexit(); + lwproc_switch(NULL); + } + /* * Nobody's going to attempt to send/receive anymore, * so reinit info relevant to that.