Two new functions; svc_time_mark() remembers the current time in a struct svc_time; svc_time_elapsed() calculates and returns the time since a svc_time was marked. Signed-off-by: Greg Banks <gnb@xxxxxxx> --- include/linux/sunrpc/svc.h | 12 ++++++++++++ net/sunrpc/svc.c | 25 +++++++++++++++++++++++++ 2 files changed, 37 insertions(+) Index: bfields/include/linux/sunrpc/svc.h =================================================================== --- bfields.orig/include/linux/sunrpc/svc.h +++ bfields/include/linux/sunrpc/svc.h @@ -18,6 +18,16 @@ #include <linux/sunrpc/svcauth.h> #include <linux/wait.h> #include <linux/mm.h> +#include <linux/time.h> + +/* + * Structure used to implement a fast lockless elapsed time measure. + */ +struct svc_time +{ + struct timespec st_spec; +}; + /* * This is the RPC server thread function prototype @@ -419,6 +429,8 @@ int svc_register(const struct svc_se void svc_wake_up(struct svc_serv *); void svc_reserve(struct svc_rqst *rqstp, int space); struct svc_pool * svc_pool_for_cpu(struct svc_serv *serv, int cpu); +void svc_time_mark(struct svc_time *); +int svc_time_elapsed(const struct svc_time *, struct timespec *); char * svc_print_addr(struct svc_rqst *, char *, size_t); #define RPC_MAX_ADDRBUFLEN (63U) Index: bfields/net/sunrpc/svc.c =================================================================== --- bfields.orig/net/sunrpc/svc.c +++ bfields/net/sunrpc/svc.c @@ -1232,3 +1232,28 @@ u32 svc_max_payload(const struct svc_rqs return max; } EXPORT_SYMBOL_GPL(svc_max_payload); + + +void +svc_time_mark(struct svc_time *st) +{ + getnstimeofday(&st->st_spec); +} +EXPORT_SYMBOL(svc_time_mark); + +int +svc_time_elapsed(const struct svc_time *mark, struct timespec *ts) +{ + struct svc_time now; + + svc_time_mark(&now); + + if (now.st_spec.tv_sec < mark->st_spec.tv_sec) + return -EINVAL; /* time going backwards */ + + *ts = timespec_sub(now.st_spec, mark->st_spec); + + return 0; +} +EXPORT_SYMBOL(svc_time_elapsed); + -- Greg -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html