|  | /* include/linux/cpuacct.h | 
|  | * | 
|  | * Copyright (C) 2010 Google, Inc. | 
|  | * | 
|  | * This software is licensed under the terms of the GNU General Public | 
|  | * License version 2, as published by the Free Software Foundation, and | 
|  | * may be copied, distributed, and modified under those terms. | 
|  | * | 
|  | * This program is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
|  | * GNU General Public License for more details. | 
|  | * | 
|  | */ | 
|  |  | 
|  | #ifndef _CPUACCT_H_ | 
|  | #define _CPUACCT_H_ | 
|  |  | 
|  | #include <linux/cgroup.h> | 
|  |  | 
|  | #ifdef CONFIG_CGROUP_CPUACCT | 
|  |  | 
|  | /* | 
|  | * Platform specific CPU frequency hooks for cpuacct. These functions are | 
|  | * called from the scheduler. | 
|  | */ | 
|  | struct cpuacct_charge_calls { | 
|  | /* | 
|  | * Platforms can take advantage of this data and use | 
|  | * per-cpu allocations if necessary. | 
|  | */ | 
|  | void (*init) (void **cpuacct_data); | 
|  | void (*charge) (void *cpuacct_data,  u64 cputime, unsigned int cpu); | 
|  | void (*cpufreq_show) (void *cpuacct_data, struct cgroup_map_cb *cb); | 
|  | /* Returns power consumed in milliWatt seconds */ | 
|  | u64 (*power_usage) (void *cpuacct_data); | 
|  | }; | 
|  |  | 
|  | int cpuacct_charge_register(struct cpuacct_charge_calls *fn); | 
|  |  | 
|  | #endif /* CONFIG_CGROUP_CPUACCT */ | 
|  |  | 
|  | #endif // _CPUACCT_H_ |