Motr  M0
processor.c File Reference
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/syscall.h>
#include <dirent.h>
#include <unistd.h>
#include <linux/limits.h>
#include <sched.h>
#include "lib/trace.h"
#include "lib/errno.h"
#include "lib/memory.h"
#include "lib/processor.h"
#include "lib/list.h"
#include "lib/thread.h"
#include "module/instance.h"
Include dependency graph for processor.c:

Go to the source code of this file.

Data Structures

struct  processor_sys_summary
 
struct  processor_node
 
struct  processor_global
 
struct  getcpu_thr_data
 

Macros

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_OTHER
 
#define PROCESSORS_INFO_ENV   "M0_PROCESSORS_INFO_DIR"
 
#define PROCESSORS_SYSFS_DIR   "/sys/devices/system"
 
#define PROCESSORS_CPU_DIR   "cpu/"
 
#define PROCESSORS_NODE_DIR   "node/"
 
#define PROCESSORS_MAX_FILE   "cpu/kernel_max"
 
#define PROCESSORS_POSS_FILE   "cpu/possible"
 
#define PROCESSORS_PRESENT_FILE   "cpu/present"
 
#define PROCESSORS_ONLINE_FILE   "cpu/online"
 
#define PROCESSORS_CACHE1_LEVEL_FILE   "cache/index0/level"
 
#define PROCESSORS_CACHE2_LEVEL_FILE   "cache/index1/level"
 
#define PROCESSORS_CACHE3_LEVEL_FILE   "cache/index2/level"
 
#define PROCESSORS_CACHE1_SHCPUMAP_FILE   "cache/index0/shared_cpu_map"
 
#define PROCESSORS_CACHE2_SHCPUMAP_FILE   "cache/index1/shared_cpu_map"
 
#define PROCESSORS_CACHE3_SHCPUMAP_FILE   "cache/index2/shared_cpu_map"
 
#define PROCESSORS_CACHE1_SIZE_FILE   "cache/index0/size"
 
#define PROCESSORS_CACHE2_SIZE_FILE   "cache/index1/size"
 
#define PROCESSORS_CACHE3_SIZE_FILE   "cache/index2/size"
 
#define PROCESSORS_COREID_FILE   "topology/core_id"
 
#define PROCESSORS_PHYSID_FILE   "topology/physical_package_id"
 
#define PROCESSORS_CPU_DIR_PREFIX   "cpu/cpu"
 
#define PROCESSORS_NODE_STR   "node"
 
#define PROCESSORS_CPU_STR   "cpu"
 

Enumerations

enum  {
  PROCESSORS_RANGE_SET_SEPARATOR = ',', PROCESSORS_RANGE_SEPARATOR = '-', PROCESSORS_L1 = 1, PROCESSORS_L2 = 2,
  MAX_LINE_LEN = 256
}
 
enum  map { PROCESSORS_POSS_MAP = 0, PROCESSORS_AVAIL_MAP = 1, PROCESSORS_ONLN_MAP = 2 }
 

Functions

static void processor_map_set (struct m0_bitmap *map, const char *mapstr)
 
static int processor_map_type_set (enum map map_type)
 
static uint32_t number_read (const char *filename)
 
static void processor_maxsz_get ()
 
static uint32_t processor_numanodeid_get (m0_processor_nr_t id)
 
static uint32_t processor_coreid_get (m0_processor_nr_t id)
 
static uint32_t processor_physid_get (m0_processor_nr_t id)
 
static bool processor_is_cache_shared (const char *mapstr)
 
static size_t processor_l1_size_get (m0_processor_nr_t id)
 
static size_t processor_l2_size_get (m0_processor_nr_t id)
 
static uint32_t processor_l1_cacheid_get (m0_processor_nr_t id)
 
static uint32_t processor_l2_cacheid_get (m0_processor_nr_t id)
 
static uint32_t processor_pipelineid_get (m0_processor_nr_t id)
 
static int processor_info_get (m0_processor_nr_t id, struct processor_node *pn)
 
static void processor_cache_destroy (void)
 
static int processors_summary_get ()
 
static void processors_m0bitmap_copy (struct m0_bitmap *dst, const struct m0_bitmap *src)
 
static int getcpu_thr_init (struct getcpu_thr_data *data)
 
static void getcpu_thr_func (struct getcpu_thr_data *data)
 
static int processor_getcpu_check (bool *success)
 
static int processor_getcpu_init (void)
 
static void processor_getcpu_fini (void)
 
M0_INTERNAL int m0_processors_init (void)
 
M0_INTERNAL void m0_processors_fini (void)
 
M0_INTERNAL m0_processor_nr_t m0_processor_nr_max (void)
 
M0_INTERNAL void m0_processors_possible (struct m0_bitmap *map)
 
M0_INTERNAL void m0_processors_available (struct m0_bitmap *map)
 
M0_INTERNAL void m0_processors_online (struct m0_bitmap *map)
 
M0_INTERNAL int m0_processor_describe (m0_processor_nr_t id, struct m0_processor_descr *pd)
 
M0_INTERNAL m0_processor_nr_t m0_processor_id_get (void)
 
M0_INTERNAL bool m0_processor_is_vm (void)
 

Variables

static struct processor_sys_summary sys_cpus
 
static bool processor_init = false
 

Macro Definition Documentation

◆ M0_TRACE_SUBSYSTEM

#define M0_TRACE_SUBSYSTEM   M0_TRACE_SUBSYS_OTHER

Definition at line 34 of file processor.c.