From 48318fa3936aa95bb037bea45ff6036335c5b030 Mon Sep 17 00:00:00 2001 From: "Michael I. Bushnell" Date: Tue, 20 Jun 1995 17:05:13 +0000 Subject: Initial revision --- libpager/clean.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 libpager/clean.c diff --git a/libpager/clean.c b/libpager/clean.c new file mode 100644 index 00000000..b8a3e3d0 --- /dev/null +++ b/libpager/clean.c @@ -0,0 +1,50 @@ +/* + Copyright (C) 1995 Free Software Foundation, Inc. + Written by Michael I. Bushnell. + + This file is part of the GNU Hurd. + + The GNU Hurd is free software; you can redistribute it and/or + modify it under the terms of the GNU General Public License as + published by the Free Software Foundation; either version 2, or (at + your option) any later version. + + The GNU Hurd is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. */ + +#include "priv.h" + +/* Called by port management routines when the last send-right + to a pager has gone away. This is a dual of pager_create. */ +void +pager_clean (void *arg) +{ + struct pager *p = arg; +#ifdef KERNEL_INIT_RACE + struct pending_init *i, *tmp; +#endif + + if (p->pager_state != NOTINIT) + { + mutex_lock (&p->interlock); + _pager_free_structure (p); +#ifdef KERNEL_INIT_RACE + for (i = p->init_head; i; i = tmp) + { + mach_port_deallocate (mach_task_self (), i->control); + mach_port_deallocate (mach_task_self (), i->name); + tmp = i->next; + free (i); + } +#endif + mutex_unlock (&p->interlock); + } + + pager_clear_user_data (p->upi); +} -- cgit v1.2.3