From c63e04d3bda11638480142c0c5d9db1e9482a563 Mon Sep 17 00:00:00 2001 From: ad Date: Mon, 9 Jul 2007 22:02:00 +0000 Subject: [PATCH] We got LWPs years ago.. --- sys/ufs/ffs/ffs_softdep.c | 52 ++++++++++++++++++--------------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/sys/ufs/ffs/ffs_softdep.c b/sys/ufs/ffs/ffs_softdep.c index 96970a64a48b..51adb7e1d991 100644 --- a/sys/ufs/ffs/ffs_softdep.c +++ b/sys/ufs/ffs/ffs_softdep.c @@ -1,4 +1,4 @@ -/* $NetBSD: ffs_softdep.c,v 1.92 2007/07/09 21:11:34 ad Exp $ */ +/* $NetBSD: ffs_softdep.c,v 1.93 2007/07/09 22:02:00 ad Exp $ */ /* * Copyright 1998 Marshall Kirk McKusick. All Rights Reserved. @@ -33,7 +33,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: ffs_softdep.c,v 1.92 2007/07/09 21:11:34 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: ffs_softdep.c,v 1.93 2007/07/09 22:02:00 ad Exp $"); #include #include @@ -115,11 +115,7 @@ const char *softdep_typenames[] = { }; #define TYPENAME(type) \ ((unsigned)(type) <= D_LAST ? softdep_typenames[type] : "???") -/* - * Finding the current process. - */ -#define CURPROC curproc -#define CURPROC_PID (curproc ? curproc->p_pid : 0) + /* * End system adaptation definitions. */ @@ -251,7 +247,7 @@ static struct lockit { #else /* DEBUG */ static struct lockit { int lkt_spl; - volatile pid_t lkt_held; + lwp_t *lkt_held; } lk = { 0, -1 }; static int lockcnt; @@ -270,13 +266,13 @@ acquire_lock(lkp) struct lockit *lkp; { if (lkp->lkt_held != -1) { - if (lkp->lkt_held == CURPROC_PID) + if (lkp->lkt_held == curlwp) panic("softdep_lock: locking against myself"); else - panic("softdep_lock: lock held by %d", lkp->lkt_held); + panic("softdep_lock: lock held by %p", lkp->lkt_held); } lkp->lkt_spl = splbio(); - lkp->lkt_held = CURPROC_PID; + lkp->lkt_held = curlwp; lockcnt++; } @@ -285,9 +281,9 @@ free_lock(lkp) struct lockit *lkp; { - if (lkp->lkt_held == -1) + if (lkp->lkt_held == NULL) panic("softdep_unlock: lock not held"); - lkp->lkt_held = -1; + lkp->lkt_held = NULL; splx(lkp->lkt_spl); } @@ -296,15 +292,15 @@ acquire_lock_interlocked(lkp, s) struct lockit *lkp; int s; { - if (lkp->lkt_held != -1) { - if (lkp->lkt_held == CURPROC_PID) + if (lkp->lkt_held != NULL) { + if (lkp->lkt_held == curlwp) panic("softdep_lock_interlocked: locking against self"); else - panic("softdep_lock_interlocked: lock held by %d", + panic("softdep_lock_interlocked: lock held by %p", lkp->lkt_held); } lkp->lkt_spl = s; - lkp->lkt_held = CURPROC_PID; + lkp->lkt_held = curlwp; lockcnt++; } @@ -323,9 +319,9 @@ free_lock_interlocked(lkp) * Place holder for real semaphores. */ struct sema { - int value; - pid_t holder; + lwp_t *holder; const char *name; + int value; int prio; int timo; }; @@ -340,7 +336,7 @@ sema_init(semap, name, prio, timo) int prio, timo; { - semap->holder = -1; + semap->holder = NULL; semap->value = 0; semap->name = name; semap->prio = prio; @@ -364,7 +360,7 @@ sema_get(semap, interlock) } return (0); } - semap->holder = CURPROC_PID; + semap->holder = curlwp; if (interlock != NULL) FREE_LOCK(interlock); return (1); @@ -375,13 +371,13 @@ sema_release(semap) struct sema *semap; { - if (semap->value <= 0 || semap->holder != CURPROC_PID) + if (semap->value <= 0 || semap->holder != curlwp) panic("sema_release: not held"); if (--semap->value > 0) { semap->value = 0; wakeup(semap); } - semap->holder = -1; + semap->holder = NULL; } /* @@ -630,8 +626,8 @@ static int softdep_worklist_req; /* serialized waiters */ static int max_softdeps; /* maximum number of structs before slowdown */ static int tickdelay = 2; /* number of ticks to pause during slowdown */ static int proc_waiting; /* tracks whether we have a timeout posted */ -static struct callout pause_timer_ch; -static struct proc *filesys_syncer; /* proc of filesystem syncer process */ +static callout_t pause_timer_ch; +static lwp_t *filesys_syncer; /* filesystem syncer thread */ static int req_clear_inodedeps; /* syncer process flush some inodedeps */ #define FLUSH_INODES 1 static int req_clear_remove; /* syncer process flush some freeblks */ @@ -715,7 +711,7 @@ softdep_process_worklist(matchmnt) * Record the process identifier of our caller so that we can give * this process preferential treatment in request_cleanup below. */ - filesys_syncer = l->l_proc; + filesys_syncer = l; matchcnt = 0; /* * There is no danger of having multiple processes run this @@ -5390,13 +5386,13 @@ request_cleanup(resource, islocked) int resource; int islocked; { - struct proc *p = CURPROC; + lwp_t *l = curlwp; int s; /* * We never hold up the filesystem syncer process. */ - if (p == filesys_syncer) + if (l == filesys_syncer) return (0); /* * If we are resource constrained on inode dependencies, try