From: Jeffrey Hutzelman Date: Mon, 11 Oct 2004 19:35:30 +0000 (+0000) Subject: rx-getputconnection-20041011 X-Git-Tag: BP-disconnected~222 X-Git-Url: https://git.michaelhowe.org/gitweb/?a=commitdiff_plain;h=3b9cdc23b5122e371139828e557732c5e434230a;p=packages%2Fo%2Fopenafs.git rx-getputconnection-20041011 FIXES 15584 add Get/PutConnection funcs to diddle conn refCounts. --- diff --git a/src/libafsrpc/afsrpc.def b/src/libafsrpc/afsrpc.def index 37cfd4d87..943267bb1 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 edcaaf3c6..c0a3d496b 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 c27fbdb1e..c948c9037 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 f06ec425d..6d57e165e 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);