From 3b9cdc23b5122e371139828e557732c5e434230a Mon Sep 17 00:00:00 2001 From: Jeffrey Hutzelman Date: Mon, 11 Oct 2004 19:35:30 +0000 Subject: [PATCH] rx-getputconnection-20041011 FIXES 15584 add Get/PutConnection funcs to diddle conn refCounts. --- src/libafsrpc/afsrpc.def | 3 ++- src/rx/rx.c | 14 ++++++++++++++ src/rx/rx.h | 2 ++ src/rx/rx_prototypes.h | 1 + 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/libafsrpc/afsrpc.def b/src/libafsrpc/afsrpc.def index 37cfd4d..943267b 100644 --- a/src/libafsrpc/afsrpc.def +++ b/src/libafsrpc/afsrpc.def @@ -198,4 +198,5 @@ EXPORTS rx_enable_hot_thread @203 DATA xdr_int64 @204 xdr_uint64 @205 - rx_SetMaxMTU @206 + rx_SetMaxMTU @206 + rx_GetConnection @207 diff --git a/src/rx/rx.c b/src/rx/rx.c index edcaaf3..c0a3d49 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -1015,6 +1015,20 @@ rx_DestroyConnection(register struct rx_connection *conn) USERPRI; } +void +rx_GetConnection(register struct rx_connection *conn) +{ + SPLVAR; + + NETPRI; + AFS_RXGLOCK(); + MUTEX_ENTER(&conn->conn_data_lock); + conn->refCount++; + MUTEX_EXIT(&conn->conn_data_lock); + AFS_RXGUNLOCK(); + USERPRI; +} + /* Start a new rx remote procedure call, on the specified connection. * If wait is set to 1, wait for a free call channel; otherwise return * 0. Maxtime gives the maximum number of seconds this call may take, diff --git a/src/rx/rx.h b/src/rx/rx.h index c27fbdb..c948c90 100644 --- a/src/rx/rx.h +++ b/src/rx/rx.h @@ -211,6 +211,8 @@ returned with an error code of RX_CALL_DEAD ( transient error ) */ #define rx_EnableHotThread() (rx_enable_hot_thread = 1) #define rx_DisableHotThread() (rx_enable_hot_thread = 0) +#define rx_PutConnection(conn) rx_DestroyConnection(conn) + /* A connection is an authenticated communication path, allowing limited multiple asynchronous conversations. */ #ifdef KDUMP_RX_LOCK diff --git a/src/rx/rx_prototypes.h b/src/rx/rx_prototypes.h index f06ec42..6d57e16 100644 --- a/src/rx/rx_prototypes.h +++ b/src/rx/rx_prototypes.h @@ -26,6 +26,7 @@ extern void rx_SetConnDeadTime(register struct rx_connection *conn, register int seconds); extern void rxi_CleanupConnection(struct rx_connection *conn); extern void rxi_DestroyConnection(register struct rx_connection *conn); +extern void rx_GetConnection(register struct rx_connection *conn); extern void rx_DestroyConnection(register struct rx_connection *conn); extern struct rx_call *rx_NewCall(register struct rx_connection *conn); extern int rxi_HasActiveCalls(register struct rx_connection *aconn); -- 1.9.4