rx: Add a helper function for delayed acks
[openafs.git] / src / rx / rx_prototypes.h
index 2fa0d52..5473d5c 100644 (file)
@@ -20,16 +20,16 @@ extern int (*swapNameProgram) (PROCESS, const char *, char *);
 extern int (*rx_justReceived) (struct rx_packet *, struct sockaddr_in *);
 extern int (*rx_almostSent) (struct rx_packet *, struct sockaddr_in *);
 
+extern void rx_rto_setPeerTimeoutSecs(struct rx_peer *, int secs);
 
 extern void rx_SetEpoch(afs_uint32 epoch);
 extern int rx_Init(u_int port);
 extern int rx_InitHost(u_int host, u_int port);
+extern void rx_SetBusyChannelError(afs_int32 error);
 #ifdef AFS_NT40_ENV
 extern void rx_DebugOnOff(int on);
 extern void rx_StatsOnOff(int on);
-#endif
-#ifndef KERNEL
-extern void rxi_StartServerProcs(int nExistingProcs);
+extern void rx_StartClientThread(void);
 #endif
 extern void rx_StartServer(int donateMe);
 extern struct rx_connection *rx_NewConnection(afs_uint32 shost,
@@ -39,12 +39,12 @@ extern struct rx_connection *rx_NewConnection(afs_uint32 shost,
                                              int serviceSecurityIndex);
 extern void rx_SetConnDeadTime(struct rx_connection *conn,
                               int seconds);
-extern void rxi_CleanupConnection(struct rx_connection *conn);
+extern void rx_SetConnHardDeadTime(struct rx_connection *conn, int seconds);
+extern void rx_SetConnIdleDeadTime(struct rx_connection *conn, int seconds);
 extern void rxi_DestroyConnection(struct rx_connection *conn);
 extern void rx_GetConnection(struct rx_connection *conn);
 extern void rx_DestroyConnection(struct rx_connection *conn);
 extern struct rx_call *rx_NewCall(struct rx_connection *conn);
-extern int rxi_HasActiveCalls(struct rx_connection *aconn);
 extern int rxi_GetCallNumberVector(struct rx_connection *aconn,
                                   afs_int32 * aint32s);
 extern int rxi_SetCallNumberVector(struct rx_connection *aconn,
@@ -78,20 +78,9 @@ extern void rx_SetArrivalProc(struct rx_call *call,
                                                    int index),
                              void * handle, int arg);
 extern afs_int32 rx_EndCall(struct rx_call *call, afs_int32 rc);
+extern void rx_InterruptCall(struct rx_call *call, afs_int32 error);
 extern void rx_Finalize(void);
 extern void rxi_PacketsUnWait(void);
-extern struct rx_service *rxi_FindService(osi_socket socket,
-                                         u_short serviceId);
-extern struct rx_call *rxi_NewCall(struct rx_connection *conn,
-                                  int channel);
-
-/* Don't like this - change source at some point to make calls identical */
-#ifdef RX_ENABLE_LOCKS
-extern void rxi_FreeCall(struct rx_call *call, int haveCTLock);
-#else /* RX_ENABLE_LOCKS */
-extern void rxi_FreeCall(struct rx_call *call);
-#endif /* RX_ENABLE_LOCKS */
-
 extern void *rxi_Alloc(size_t size);
 extern void rxi_Free(void *addr, size_t size);
 extern void rxi_SetPeerMtu(struct rx_peer *peer, afs_uint32 host,
@@ -132,8 +121,7 @@ extern void rxi_AttachServerProc(struct rx_call *call,
                                 struct rx_call **newcallp);
 extern void rxi_AckAll(struct rxevent *event, struct rx_call *call,
                       char *dummy);
-extern void rxi_SendDelayedAck(struct rxevent *event,
-                              void *call /* struct rx_call *call */, void *dummy);
+extern void rxi_PostDelayedAckEvent(struct rx_call *call, struct clock *now);
 extern void rxi_ClearTransmitQueue(struct rx_call *call,
                                   int force);
 extern void rxi_ClearReceiveQueue(struct rx_call *call);
@@ -152,12 +140,7 @@ extern void rxi_ResetCall(struct rx_call *call,
 extern struct rx_packet *rxi_SendAck(struct rx_call *call, struct rx_packet
                                     *optionalPacket, int serial, int reason,
                                     int istack);
-extern void rxi_StartUnlocked(struct rxevent *event,
-                             void *call, /* struct rx_call */
-                             void *arg1, int istack);
-extern void rxi_Start(struct rxevent *event,
-                     void *call, /* struct rx_call */
-                     void *arg1, int istack);
+extern void rxi_Start(struct rx_call *call, int istack);
 extern void rxi_Send(struct rx_call *call,
                     struct rx_packet *p, int istack);
 #ifdef RX_ENABLE_LOCKS
@@ -188,9 +171,6 @@ extern void rxi_ChallengeEvent(struct rxevent *event,
                               void *conn, /* struct rx_connection *conn */
                               void *arg1, int atries);
 extern void rxi_ChallengeOn(struct rx_connection *conn);
-extern void rxi_ComputeRoundTripTime(struct rx_packet *p,
-                                    struct clock *sentp,
-                                    struct rx_peer *peer);
 extern void rxi_ReapConnections(struct rxevent *unused, void *unused1,
                                void *unused2);
 extern int rxs_Release(struct rx_securityClass *aobj);
@@ -276,6 +256,8 @@ extern int rx_RxStatUserOk(struct rx_call *call);
 extern afs_int32 rx_SetSecurityConfiguration(struct rx_service *service,
                                             rx_securityConfigVariables type,
                                             void *value);
+extern int rx_GetThreadNum(void);
+extern int rx_SetThreadNum(void);
 
 void rxi_DebugInit(void);
 void rxi_DebugPrint(char *format, ...)
@@ -383,7 +365,7 @@ extern osi_socket rxi_GetHostUDPSocket(u_int host, u_short port);
 # define osi_Panic(msg...) do { printk(KERN_CRIT "openafs: " msg); BUG(); } while (0)
 # undef osi_Assert
 # define osi_Assert(expr) \
-    do { if (!(expr)) { osi_AssertFailK(#expr, __FILE__, __LINE__); BUG(); } } while (0)
+    do { if (!(expr)) osi_Panic("assertion failed: %s, file: %s, line: %d\n", #expr, __FILE__, __LINE__); } while (0)
 # elif defined(AFS_AIX_ENV)
 extern void osi_Panic(char *fmt, void *a1, void *a2, void *a3);
 # else
@@ -409,7 +391,9 @@ extern int rxk_ReadPacket(osi_socket so, struct rx_packet *p, int *host,
 # ifdef UKERNEL
 extern void *rx_ServerProc(void *);
 # endif
+# ifndef AFS_LINUX26_ENV
 extern void osi_AssertFailK(const char *expr, const char *file, int line) AFS_NORETURN;
+# endif
 extern void rxk_ListenerProc(void);
 extern void rxk_Listener(void);
 # ifndef UKERNEL
@@ -437,8 +421,12 @@ extern int osi_NetSend(osi_socket asocket, struct sockaddr_in *addr,
                       struct iovec *dvec, int nvecs, afs_int32 asize,
                       int istack);
 # endif
+# ifdef RXK_UPCALL_ENV
+extern void rx_upcall(socket_t so, void *arg, __unused int waitflag);
+# else
 extern int osi_NetReceive(osi_socket so, struct sockaddr_in *addr,
                          struct iovec *dvec, int nvecs, int *lengthp);
+# endif
 # if defined(AFS_SUN510_ENV)
 extern void osi_StartNetIfPoller(void);
 extern void osi_NetIfPoller(void);
@@ -452,8 +440,8 @@ extern void rxi_ListenerProc(osi_socket usockp, int *tnop,
                             struct rx_call **newcallp);
 # endif
 
-# ifndef RXK_LISTENER_ENV
-extern void rxk_init();
+# if !defined(RXK_LISTENER_ENV) && !defined(RXK_UPCALL_ENV)
+extern void rxk_init(void);
 # endif
 
 /* UKERNEL/rx_knet.c */
@@ -571,7 +559,9 @@ extern void rxi_PrepareSendPacket(struct rx_call *call,
 extern int rxi_AdjustIfMTU(int mtu);
 extern int rxi_AdjustMaxMTU(int mtu, int peerMaxMTU);
 extern int rxi_AdjustDgramPackets(int frags, int mtu);
-
+#ifdef  AFS_GLOBAL_RXLOCK_KERNEL
+extern void rxi_WaitforTQBusy(struct rx_call *call);
+#endif
 
 /* rxperf.c */
 
@@ -605,8 +595,6 @@ extern int rxi_WriteProc(struct rx_call *call, char *buf,
 extern int rx_WriteProc(struct rx_call *call, char *buf, int nbytes);
 extern int rx_WriteProc32(struct rx_call *call,
                          afs_int32 * value);
-extern int rxi_WritevAlloc(struct rx_call *call, struct iovec *iov, int *nio,
-                          int maxio, int nbytes);
 extern int rx_WritevAlloc(struct rx_call *call, struct iovec *iov, int *nio,
                          int maxio, int nbytes);
 extern int rxi_WritevProc(struct rx_call *call, struct iovec *iov, int nio,
@@ -616,6 +604,8 @@ extern int rx_WritevProc(struct rx_call *call, struct iovec *iov, int nio,
 extern void rxi_FlushWrite(struct rx_call *call);
 extern void rx_FlushWrite(struct rx_call *call);
 
+
+
 /* rx_stats.c */
 extern struct rx_statistics * rx_GetStatistics(void);
 extern void rx_FreeStatistics(struct rx_statistics **);
@@ -659,9 +649,6 @@ extern void rx_SetMaxMTU(int mtu);
 #ifndef afs_osi_Alloc
 extern void *afs_osi_Alloc(size_t x);
 #endif
-#ifndef afs_osi_Alloc_NoSleep
-extern void *afs_osi_Alloc_NoSleep(size_t x);
-#endif
 #ifndef afs_osi_Free
 extern void afs_osi_Free(void *x, size_t asize);
 #endif