1 |
dpavlin |
1 |
/* |
2 |
|
|
* Cisco 7200 (Predator) simulation platform. |
3 |
|
|
* Copyright (c) 2005,2006 Christophe Fillot (cf@utc.fr) |
4 |
|
|
*/ |
5 |
|
|
|
6 |
|
|
#ifndef __CPU_H__ |
7 |
|
|
#define __CPU_H__ |
8 |
|
|
|
9 |
|
|
#include "mips64.h" |
10 |
|
|
|
11 |
|
|
/* CPU group definition */ |
12 |
|
|
typedef struct cpu_group cpu_group_t; |
13 |
|
|
struct cpu_group { |
14 |
|
|
char *name; |
15 |
|
|
cpu_mips_t *cpu_list; |
16 |
|
|
void *priv_data; |
17 |
|
|
}; |
18 |
|
|
|
19 |
|
|
/* Find a CPU in a group given its ID */ |
20 |
|
|
cpu_mips_t *cpu_group_find_id(cpu_group_t *group,u_int id); |
21 |
|
|
|
22 |
|
|
/* Find the highest CPU ID in a CPU group */ |
23 |
|
|
int cpu_group_find_highest_id(cpu_group_t *group,u_int *highest_id); |
24 |
|
|
|
25 |
|
|
/* Add a CPU in a CPU group */ |
26 |
|
|
int cpu_group_add(cpu_group_t *group,cpu_mips_t *cpu); |
27 |
|
|
|
28 |
|
|
/* Create a new CPU group */ |
29 |
|
|
cpu_group_t *cpu_group_create(char *name); |
30 |
|
|
|
31 |
|
|
/* Delete a CPU group */ |
32 |
|
|
void cpu_group_delete(cpu_group_t *group); |
33 |
|
|
|
34 |
|
|
/* Rebuild the MTS subsystem for a CPU group */ |
35 |
|
|
int cpu_group_rebuild_mts(cpu_group_t *group); |
36 |
|
|
|
37 |
|
|
/* Log a message for a CPU */ |
38 |
|
|
void cpu_log(cpu_mips_t *cpu,char *module,char *format,...); |
39 |
|
|
|
40 |
|
|
/* Create a new CPU */ |
41 |
|
|
cpu_mips_t *cpu_create(vm_instance_t *vm,u_int id); |
42 |
|
|
|
43 |
|
|
/* Delete a CPU */ |
44 |
|
|
void cpu_delete(cpu_mips_t *cpu); |
45 |
|
|
|
46 |
|
|
/* Start a CPU */ |
47 |
|
|
void cpu_start(cpu_mips_t *cpu); |
48 |
|
|
|
49 |
|
|
/* Stop a CPU */ |
50 |
|
|
void cpu_stop(cpu_mips_t *cpu); |
51 |
|
|
|
52 |
|
|
/* Start all CPUs of a CPU group */ |
53 |
|
|
void cpu_group_start_all_cpu(cpu_group_t *group); |
54 |
|
|
|
55 |
|
|
/* Stop all CPUs of a CPU group */ |
56 |
|
|
void cpu_group_stop_all_cpu(cpu_group_t *group); |
57 |
|
|
|
58 |
|
|
/* Set a state of all CPUs of a CPU group */ |
59 |
|
|
void cpu_group_set_state(cpu_group_t *group,u_int state); |
60 |
|
|
|
61 |
|
|
/* Synchronize on CPUs (all CPUs must be inactive) */ |
62 |
|
|
int cpu_group_sync_state(cpu_group_t *group); |
63 |
|
|
|
64 |
|
|
/* Save state of all CPUs */ |
65 |
|
|
int cpu_group_save_state(cpu_group_t *group); |
66 |
|
|
|
67 |
|
|
/* Restore state of all CPUs */ |
68 |
|
|
int cpu_group_restore_state(cpu_group_t *group); |
69 |
|
|
|
70 |
|
|
#endif |