summaryrefslogtreecommitdiff
path: root/sys/netncp
diff options
context:
space:
mode:
authorJason Evans <jasone@FreeBSD.org>2000-10-04 01:29:17 +0000
committerJason Evans <jasone@FreeBSD.org>2000-10-04 01:29:17 +0000
commita18b1f1d4ddeb48bde093cc8a8ecf5d48391a03c (patch)
treebe38329315e26593acf6a8b824bb4069d9701eba /sys/netncp
parent645b8b81f004da9bf1d09dd4707177be1640f1f9 (diff)
Notes
Diffstat (limited to 'sys/netncp')
-rw-r--r--sys/netncp/ncp_conn.c8
-rw-r--r--sys/netncp/ncp_conn.h1
-rw-r--r--sys/netncp/ncp_subr.c1
3 files changed, 10 insertions, 0 deletions
diff --git a/sys/netncp/ncp_conn.c b/sys/netncp/ncp_conn.c
index 3cfc4491909b..df86f99bfd01 100644
--- a/sys/netncp/ncp_conn.c
+++ b/sys/netncp/ncp_conn.c
@@ -79,6 +79,13 @@ ncp_conn_init(void) {
}
int
+ncp_conn_destroy(void) {
+ lockdestroy(&listlock);
+ lockdestroy(&lhlock);
+ return 0;
+}
+
+int
ncp_conn_locklist(int flags, struct proc *p){
return lockmgr(&listlock, flags | LK_CANRECURSE, 0, p);
}
@@ -231,6 +238,7 @@ ncp_conn_free(struct ncp_conn *ncp) {
* if signal is raised - how I do react ?
*/
lockmgr(&ncp->nc_lock, LK_DRAIN, 0, ncp->procp);
+ lockdestroy(&ncp->nc_lock);
while (ncp->nc_lwant) {
printf("lwant = %d\n", ncp->nc_lwant);
tsleep(&ncp->nc_lwant, PZERO,"ncpdr",2*hz);
diff --git a/sys/netncp/ncp_conn.h b/sys/netncp/ncp_conn.h
index 850e5e7217a6..017142122bcb 100644
--- a/sys/netncp/ncp_conn.h
+++ b/sys/netncp/ncp_conn.h
@@ -204,6 +204,7 @@ struct ncp_conn {
#define ncp_conn_invalidate(conn) {conn->flags |= NCPFL_INVALID;}
int ncp_conn_init(void);
+int ncp_conn_destroy(void);
int ncp_conn_alloc(struct proc *p,struct ucred *cred, struct ncp_conn **connid);
int ncp_conn_free(struct ncp_conn *conn);
int ncp_conn_access(struct ncp_conn *conn,struct ucred *cred,mode_t mode);
diff --git a/sys/netncp/ncp_subr.c b/sys/netncp/ncp_subr.c
index a14e3f07edaf..460169027e3b 100644
--- a/sys/netncp/ncp_subr.c
+++ b/sys/netncp/ncp_subr.c
@@ -124,6 +124,7 @@ ncp_done(void) {
ncp_conn_unlock(ncp,p);
}
ncp_conn_unlocklist(p);
+ ncp_conn_destroy();
}