/*
* CoreFreq
* Copyright (C) 2015-2024 CYRIL COURTIAT
* Licenses: GPL2
*/
#define DRV_DEVNAME "corefreqk"
#define DRV_FILENAME "/dev/"DRV_DEVNAME
#define ID_RO_VMA_PROC (CORE_COUNT + 0)
#define ID_RW_VMA_PROC (CORE_COUNT + ID_RO_VMA_PROC)
#define ID_RO_VMA_GATE (CORE_COUNT + ID_RW_VMA_PROC)
#define ID_RO_VMA_CORE (CORE_COUNT + ID_RO_VMA_GATE)
#define ID_RW_VMA_CORE (CORE_COUNT + ID_RO_VMA_CORE)
#define ID_ANY_VMA_JAIL (CORE_COUNT + ID_RW_VMA_CORE)
#define WAKEUP_RATIO 4
#define LOOP_MIN_MS 100
#define LOOP_MAX_MS ((1000 - 1) * WAKEUP_RATIO)
#define LOOP_DEF_MS 1000
#define TICK_DEF_MS 2000
typedef struct
{
struct
{
unsigned char Chr[4];
} AX, BX, CX, DX;
} BRAND;
#define LEVEL_INVALID 0
#define LEVEL_THREAD 1
#define LEVEL_CORE 2
typedef struct {
union {
struct
{
unsigned int
SHRbits : 5-0,
Unused1 : 32-5;
};
unsigned int Register;
} AX;
union {
struct
{
unsigned int