mirror of
https://review.haiku-os.org/haiku
synced 2025-02-03 12:16:35 +01:00
2195811a84
This module will load the various lowlevel cpuidle modules' implementations during initialiation. If it finds one available module, it will change the global gCpuIdleFunc as its own better one. When idle, cpuidle module will select the best cstate and enter it by calling the lowlevel module's implementation. Signed-off-by: Yongcong Du <ycdu.vmcore@gmail.com> Signed-off-by: Fredrik Holmqvist <fredrik.holmqvist@gmail.com>
52 lines
824 B
C
52 lines
824 B
C
/*
|
|
* Copyright 2012, Haiku, Inc. All Rights Reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef _CPUIDLE_MODULE_H
|
|
#define _CPUIDLE_MODULE_H
|
|
|
|
|
|
#include <module.h>
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#define CPUIDLE_CSTATE_MAX 8
|
|
#define CSTATE_NAME_LENGTH 32
|
|
#define B_CPUIDLE_MODULE_NAME "idle/generic/cpuidle/v1"
|
|
|
|
|
|
struct CpuidleStats {
|
|
uint64 usageCount;
|
|
bigtime_t usageTime;
|
|
};
|
|
|
|
|
|
struct CpuidleInfo {
|
|
int32 cstateSleep;
|
|
CpuidleStats stats[CPUIDLE_CSTATE_MAX];
|
|
};
|
|
|
|
|
|
struct CpuidleCstate {
|
|
char name[CSTATE_NAME_LENGTH];
|
|
int32 latency;
|
|
int32 (*EnterIdle)(int32 state, CpuidleCstate *cstate);
|
|
void *pData;
|
|
};
|
|
|
|
|
|
struct CpuidleModuleInfo {
|
|
module_info info;
|
|
CpuidleCstate cStates[CPUIDLE_CSTATE_MAX];
|
|
int32 cStateCount;
|
|
};
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _CPUIDLE_MODULE_H
|