Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at v4.18 71 lines 2.1 kB view raw
1/* 2 * Definitions for measuring cputime on powerpc machines. 3 * 4 * Copyright (C) 2006 Paul Mackerras, IBM Corp. 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 9 * 2 of the License, or (at your option) any later version. 10 * 11 * If we have CONFIG_VIRT_CPU_ACCOUNTING_NATIVE, we measure cpu time in 12 * the same units as the timebase. Otherwise we measure cpu time 13 * in jiffies using the generic definitions. 14 */ 15 16#ifndef __POWERPC_CPUTIME_H 17#define __POWERPC_CPUTIME_H 18 19#ifdef CONFIG_VIRT_CPU_ACCOUNTING_NATIVE 20 21#include <linux/types.h> 22#include <linux/time.h> 23#include <asm/div64.h> 24#include <asm/time.h> 25#include <asm/param.h> 26#include <asm/cpu_has_feature.h> 27 28typedef u64 __nocast cputime_t; 29typedef u64 __nocast cputime64_t; 30 31#define cmpxchg_cputime(ptr, old, new) cmpxchg(ptr, old, new) 32 33#ifdef __KERNEL__ 34/* 35 * Convert cputime <-> microseconds 36 */ 37extern u64 __cputime_usec_factor; 38 39static inline unsigned long cputime_to_usecs(const cputime_t ct) 40{ 41 return mulhdu((__force u64) ct, __cputime_usec_factor); 42} 43 44/* 45 * PPC64 uses PACA which is task independent for storing accounting data while 46 * PPC32 uses struct thread_info, therefore at task switch the accounting data 47 * has to be populated in the new task 48 */ 49#ifdef CONFIG_PPC64 50#define get_accounting(tsk) (&get_paca()->accounting) 51static inline void arch_vtime_task_switch(struct task_struct *tsk) { } 52#else 53#define get_accounting(tsk) (&task_thread_info(tsk)->accounting) 54/* 55 * Called from the context switch with interrupts disabled, to charge all 56 * accumulated times to the current process, and to prepare accounting on 57 * the next process. 58 */ 59static inline void arch_vtime_task_switch(struct task_struct *prev) 60{ 61 struct cpu_accounting_data *acct = get_accounting(current); 62 struct cpu_accounting_data *acct0 = get_accounting(prev); 63 64 acct->starttime = acct0->starttime; 65 acct->startspurr = acct0->startspurr; 66} 67#endif 68 69#endif /* __KERNEL__ */ 70#endif /* CONFIG_VIRT_CPU_ACCOUNTING_NATIVE */ 71#endif /* __POWERPC_CPUTIME_H */