1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* 3 * linux/include/linux/sunrpc/timer.h 4 * 5 * Declarations for the RPC transport timer. 6 * 7 * Copyright (C) 2002 Trond Myklebust <trond.myklebust@fys.uio.no> 8 */ 9 10 #ifndef _LINUX_SUNRPC_TIMER_H 11 #define _LINUX_SUNRPC_TIMER_H 12 13 #include <linux/atomic.h> 14 15 struct rpc_rtt { 16 unsigned long timeo; /* default timeout value */ 17 unsigned long srtt[5]; /* smoothed round trip time << 3 */ 18 unsigned long sdrtt[5]; /* smoothed medium deviation of RTT */ 19 int ntimeouts[5]; /* Number of timeouts for the last request */ 20 }; 21 22 23 extern void rpc_init_rtt(struct rpc_rtt *rt, unsigned long timeo); 24 extern void rpc_update_rtt(struct rpc_rtt *rt, unsigned timer, long m); 25 extern unsigned long rpc_calc_rto(struct rpc_rtt *rt, unsigned timer); 26 27 static inline void rpc_set_timeo(struct rpc_rtt *rt, int timer, int ntimeo) 28 { 29 int *t; 30 if (!timer) 31 return; 32 t = &rt->ntimeouts[timer-1]; 33 if (ntimeo < *t) { 34 if (*t > 0) 35 (*t)--; 36 } else { 37 if (ntimeo > 8) 38 ntimeo = 8; 39 *t = ntimeo; 40 } 41 } 42 43 static inline int rpc_ntimeo(struct rpc_rtt *rt, int timer) 44 { 45 if (!timer) 46 return 0; 47 return rt->ntimeouts[timer-1]; 48 } 49 50 #endif /* _LINUX_SUNRPC_TIMER_H */ 51
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.