The ROme OpTimistic Simulator
2.0.0
A General-Purpose Multithreaded Parallel/Distributed Simulation Platform
Main Page
Data Structures
Files
File List
Globals
cross_state_manager.h
Go to the documentation of this file.
1
35
#pragma once
36
37
//#ifdef HAVE_CROSS_STATE
38
39
#include <linux/ioctl.h>
40
41
#define CROSS_STATE_IOCTL_MAGIC 'R'
42
43
/* core user defined parameters */
44
#define SIBLING_PGD 128 // max number of concurrent memory views (concurrent root-sim worker threads on a node)
45
#define MAX_CROSS_STATE_DEPENDENCIES 1024 // max number of cross-state dependencied per LP at each event
46
47
#ifndef IOCTL_STRUCT
48
#define IOCTL_STRUCT
49
50
typedef
struct
_ioctl_info
{
51
int
ds;
52
void
*addr;
53
int
id;
54
unsigned
int
count;
55
unsigned
int
*objects;
56
unsigned
mapped_processes;
57
58
ulong callback;
59
60
void
*base_address;
61
int
page_count;
62
int
write_mode;
63
}
ioctl_info
;
64
65
#endif
66
67
68
#define ECS_MAJOR_FAULT 0
69
#define ECS_MINOR_FAULT 1
70
#define ECS_CHANGE_PAGE_PRIVILEGE 2
71
72
typedef
struct
_fault_info_t
{
73
long
long
rcx;
74
long
long
rip;
75
long
long
target_address;
76
unsigned
long
target_gid;
77
unsigned
char
fault_type;
78
}
fault_info_t
;
79
80
// Setup all ioctl commands
81
#define IOCTL_GET_PGD _IOW(CROSS_STATE_IOCTL_MAGIC, 1, void *)
82
#define IOCTL_SET_ANCESTOR_PGD _IO(CROSS_STATE_IOCTL_MAGIC, 2)
83
#define IOCTL_SET_VM_RANGE _IOW(CROSS_STATE_IOCTL_MAGIC, 3, ioctl_info *)
84
#define IOCTL_SCHEDULE_ON_PGD _IOW(CROSS_STATE_IOCTL_MAGIC, 4, ioctl_info *)
85
#define IOCTL_UNSCHEDULE_ON_PGD _IOW(CROSS_STATE_IOCTL_MAGIC, 5, int)
86
#define IOCTL_SET_PAGE_PRIVILEGE _IOW(CROSS_STATE_IOCTL_MAGIC, 6, int)
87
#define IOCTL_PROTECT_REMOTE_LP _IOW(CROSS_STATE_IOCTL_MAGIC, 7, int)
88
89
// Macros to access subportions of an address
90
#define PML4(addr) (((long long)(addr) >> 39) & 0x1ff)
91
#define PDP(addr) (((long long)(addr) >> 30) & 0x1ff)
92
#define PDE(addr) (((long long)(addr) >> 21) & 0x1ff)
93
#define PTE(addr) (((long long)(addr) >> 12) & 0x1ff)
94
95
#define OBJECT_TO_PML4(object_id) ((ulong)object_id >> 9 )
96
#define OBJECT_TO_PDP(object_id) ((ulong)object_id & 0x1ff)
97
#define GET_ADDRESS(addr) ( (((long long)(addr)) & ((1LL << 40) - 1)) >> 12)
98
#define PML4_PLUS_ONE(addr) (void *)((long long)(addr) + (1LL << 39))
99
100
#define MASK_PTADDR 0x07FFFFFFFFFFF000
101
#define MASK_PTCONT 0xF800000000000FFF
102
103
//#endif /* HAVE_CROSS_STATE */
_fault_info_t
Definition:
cross_state_manager.h:72
_ioctl_info
Definition:
cross_state_manager.h:50
src
arch
x86
linux
cross_state_manager
cross_state_manager.h
Generated by
1.8.11