#ifndef SOCKS_CPU_H_ #define SOCKS_CPU_H_ #include #include #ifdef __cplusplus extern "C" { #endif typedef enum cpu_flags { CPU_ONLINE = 0x01u, } cpu_flags_t; typedef struct cpu_data { cpu_flags_t c_flags; unsigned int c_id; task_t *c_current_task; runqueue_t c_rq; } cpu_data_t; /* maximum number of processor cores that the kernel can support. TODO move to build config option */ #define CPU_MAX 128 #define this_cpu() (ml_cpu_block_get_id(ml_this_cpu())) extern cpu_data_t *get_this_cpu(void); extern void put_cpu(cpu_data_t *cpu); extern void cpu_set_available(unsigned int cpu_id); extern void cpu_set_online(unsigned int cpu_id); #define irq_enable() ml_int_enable() #define irq_disable() ml_int_disable() extern unsigned int cpu_get_highest_available(void); #ifdef __cplusplus } #endif #endif