18c2ecf20Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0 */ 28c2ecf20Sopenharmony_ci/* 38c2ecf20Sopenharmony_ci * Copyright IBM Corp. 2004 48c2ecf20Sopenharmony_ci * 58c2ecf20Sopenharmony_ci * Author: Martin Schwidefsky <schwidefsky@de.ibm.com> 68c2ecf20Sopenharmony_ci */ 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci#ifndef _S390_CPUTIME_H 98c2ecf20Sopenharmony_ci#define _S390_CPUTIME_H 108c2ecf20Sopenharmony_ci 118c2ecf20Sopenharmony_ci#include <linux/types.h> 128c2ecf20Sopenharmony_ci#include <asm/timex.h> 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ci#define CPUTIME_PER_USEC 4096ULL 158c2ecf20Sopenharmony_ci#define CPUTIME_PER_SEC (CPUTIME_PER_USEC * USEC_PER_SEC) 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci/* We want to use full resolution of the CPU timer: 2**-12 micro-seconds. */ 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci#define cmpxchg_cputime(ptr, old, new) cmpxchg64(ptr, old, new) 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci/* 228c2ecf20Sopenharmony_ci * Convert cputime to microseconds. 238c2ecf20Sopenharmony_ci */ 248c2ecf20Sopenharmony_cistatic inline u64 cputime_to_usecs(const u64 cputime) 258c2ecf20Sopenharmony_ci{ 268c2ecf20Sopenharmony_ci return cputime >> 12; 278c2ecf20Sopenharmony_ci} 288c2ecf20Sopenharmony_ci 298c2ecf20Sopenharmony_ci/* 308c2ecf20Sopenharmony_ci * Convert cputime to nanoseconds. 318c2ecf20Sopenharmony_ci */ 328c2ecf20Sopenharmony_ci#define cputime_to_nsecs(cputime) tod_to_ns(cputime) 338c2ecf20Sopenharmony_ci 348c2ecf20Sopenharmony_ciu64 arch_cpu_idle_time(int cpu); 358c2ecf20Sopenharmony_ci 368c2ecf20Sopenharmony_ci#define arch_idle_time(cpu) arch_cpu_idle_time(cpu) 378c2ecf20Sopenharmony_ci 388c2ecf20Sopenharmony_ci#endif /* _S390_CPUTIME_H */ 39