cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

timer.h (1172B)


      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
     15struct 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
     23extern void rpc_init_rtt(struct rpc_rtt *rt, unsigned long timeo);
     24extern void rpc_update_rtt(struct rpc_rtt *rt, unsigned timer, long m);
     25extern unsigned long rpc_calc_rto(struct rpc_rtt *rt, unsigned timer);
     26
     27static 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
     43static 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 */