root/include/linux/sunrpc/timer.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. rpc_set_timeo
  2. rpc_ntimeo

   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 */

/* [<][>][^][v][top][bottom][index][help] */