#include <hash_map.h>
#include <list.h>
Go to the source code of this file.
Compounds | |
struct | canonical_page_s |
A structure for a canonical page, storing both its identity and its metadata. More... | |
struct | equal_context_ID_s |
A structure for comparing context IDs used by tables indexed by context. More... | |
struct | equal_file_ID_s |
A structure for comparing file IDs used by tables indexed by file ID. More... | |
struct | equal_shm_ID_s |
A structure for comparing IPC shared memory segment IDs used by tables indexed by shm IDs. More... | |
struct | equal_task_ID_s |
A structure for comparing task IDs used by tables indexed by task ID. More... | |
struct | equal_virtual_page_ID_s |
A structure for comparing virtual page numbers used by tables indexed by virtual page number. More... | |
struct | file_ID_hash_s |
A structure that provides a hashing function for file IDs. More... | |
struct | file_ID_s |
A structure to hold a unique identifier for a file. More... | |
struct | kernel_record_s |
A structure to hold the contents of a kernel trace record. More... | |
struct | reference_record_s |
A structure to hold the contents of a reference trace record. More... | |
struct | virtual_page_s |
A structure for uniquely identifying a virtual address within its virtual address space. More... | |
Defines | |
#define | _TYPES_AND_CONSTANTS_HH |
#define | BUFFER_SIZE 256 |
The size of buffer spaces allocated for temporary work. | |
#define | PAGE_SIZE_ORDER 12; |
The number of offset bits in a virtual address. | |
#define | TAG_USER_READ 'r' |
#define | TAG_KERNEL_READ 'R' |
#define | TAG_USER_WRITE 'w' |
#define | TAG_KERNEL_WRITE 'W' |
#define | TAG_USER_INSTRUCTION_FETCH 'i' |
#define | TAG_KERNEL_EVENT 'K' |
#define | TAG_KERNEL_INSTRUCTION_FETCH 'I' |
#define | TAG_SCHEDULE 'S' |
#define | TAG_FORK 'F' |
#define | TAG_EXEC 'X' |
#define | TAG_EXIT 'T' |
#define | TAG_CONTEXT_ASSIGNMENT 'A' |
#define | TAG_DUPLICATE_RANGE 'D' |
#define | TAG_MMAP_FILE 'M' |
#define | TAG_MMAP_ANONYMOUS 'm' |
#define | TAG_MUNMAP 'U' |
#define | TAG_COMPLETE_UNMAP 'u' |
#define | TAG_IPC_SHMAT 's' |
#define | TAG_IPC_SHMDT 'd' |
#define | TAG_COW_UNMAP 'C' |
#define | TAG_BUFFER_ALLOCATION 'B' |
#define | TAG_BUFFER_DEALLOCATION 'b' |
#define | TAG_FILE_CACHE_ALLOCATION 'P' |
#define | TAG_FILE_CACHE_DEALLOCATION 'p' |
#define | TAG_FILE_OPEN '(' |
#define | TAG_FILE_CLOSE ')' |
#define | TAG_FILE_READ '<' |
#define | TAG_FILE_WRITE '>' |
#define | TAG_FILE_DELETE '-' |
#define | TAG_ACCEPT 'a' |
#define | TAG_END_OF_TRACE 'e' |
#define | TYPE_ANONYMOUS 'A' |
Marks a canonical page as ``anonymous''. | |
#define | TYPE_FILE_CACHE 'F' |
Marks a canonical page as part of the VFS cache. | |
#define | TYPE_IPC_SHM_SEGMENT 'S' |
Marks a canonical page as part of an IPC shared memory segment. | |
#define | TYPE_ZERO_PAGE 'Z' |
Marks a canonical page as the ``zero page''. | |
#define | TYPE_BUFFER_CACHE 'B' |
Marks a canonical page as a buffer cache page. | |
#define | KERNEL_CONTEXT 0x101 |
The kernel's context ID. | |
#define | KERNEL_PROCESS_ID 0 |
The kernel's process ID. | |
#define | KERNEL_VIRTUAL_PAGE_OFFSET 0xc0000 |
The first page number of the kernel's virtual space that is shared with all tasks. (Linux specific). | |
#define | KERNEL_CANONICAL_PAGE_OFFSET 0xfffc0000 |
The first page number of the kernel's canonical space that is shared with all tasks. | |
Typedefs | |
typedef char | tag_t |
The type for the tag that indicates the type of a reference. | |
typedef unsigned long long int | timestamp_t |
The type for a time counter. | |
typedef unsigned long int | virtual_address_t |
The type for a virtual address. | |
typedef unsigned short int | length_t |
The type for a reference length (bytes accessed). | |
typedef unsigned long int | context_ID_t |
The type for a context (virtual address space) ID. | |
typedef unsigned long int | virtual_page_ID_t |
The type for a virtual page number. | |
typedef unsigned long int | canonical_page_ID_t |
The type for a canonical page number. | |
typedef unsigned short int | task_ID_t |
The type for a task (thread) ID. | |
typedef unsigned int | process_ID_t |
The type for a process ID. | |
typedef unsigned long int | inode_ID_t |
The type for an inode number, and thus a unique ID for a file. | |
typedef unsigned short int | device_ID_t |
The type for a device ID, uniquely identifying a device that holds files. | |
typedef unsigned long int | shm_ID_t |
The type of a IPC shared memory segment. | |
typedef unsigned long int | offset_t |
The type for an offset into a space, usually a virtual space. | |
typedef unsigned long long int | file_offset_t |
The type for an offset into a file. | |
typedef char | page_type_t |
The type for a marker that indicates the type of a page (anonymous, file mmap'ed, etc.). | |
typedef hash_map< virtual_page_ID_t, canonical_page_s *, hash< virtual_page_ID_t >, equal_virtual_page_ID_s > | virtual_to_canonical_map_t |
A table type used to map virtual page IDs to canonical pages. | |
typedef hash_map< task_ID_t, bool, hash< task_ID_t >, equal_task_ID_s > | live_map_t |
A table type used to track the liveness of tasks, indexed by task ID. | |
typedef hash_map< file_ID_s, virtual_to_canonical_map_t *, file_ID_hash_s, equal_file_ID_s > | file_ID_to_V2C_map_t |
A table type used to map file IDs to virtual->canonical mapping tables. | |
typedef hash_map< shm_ID_t, virtual_to_canonical_map_t *, hash< shm_ID_t >, equal_shm_ID_s > | shm_ID_to_V2C_map_t |
A table type used to map IPC shared memory segment IDs to virtual->canonical mapping tables. | |
typedef hash_map< shm_ID_t, bool, hash< shm_ID_t >, equal_shm_ID_s > | defunct_shm_ID_map_t |
A table type used to track IPC shared memory segments that become defunct and must be deleted. | |
typedef hash_map< task_ID_t, Task *, hash< task_ID_t >, equal_task_ID_s > | task_ID_to_Task_map_t |
A table type that maps task IDs to task objects. | |
typedef hash_map< context_ID_t, Process *, hash< context_ID_t >, equal_context_ID_s > | context_ID_to_Process_map_t |
A table type that maps contexts to task objects. |
Definition in file types-and-constants.hh.
|
Definition at line 14 of file types-and-constants.hh. |
|
The size of buffer spaces allocated for temporary work.
Definition at line 107 of file types-and-constants.hh. Referenced by Page_Reduced_Reader::Page_Reduced_Reader(), Per_Task_Page_Reduced_Reader::Per_Task_Page_Reduced_Reader(), Per_Task_Writer::Per_Task_Writer(), and Per_Task_Page_Reduced_Reader::read_record(). |
|
The first page number of the kernel's canonical space that is shared with all tasks. The upper 1 GB of the canonical space is reserved for the shared kernel space, and this is the first page of that range, and thus the kernel_virtual_page_offset maps to this page in the virtual->canonical mapping. Definition at line 206 of file types-and-constants.hh. Referenced by Consumer::get_new_canonical_page(), and Consumer::lookup_canonical_page_ID(). |
|
The kernel's context ID. This value is specific to Linux, which uses the address 0x101000 as the top of the kernel's page table. Used to identify references made by kernel tasks. Definition at line 188 of file types-and-constants.hh. Referenced by Basic_Consumer::act_on_reference_record(), and Consumer::Consumer(). |
|
The kernel's process ID.
Definition at line 191 of file types-and-constants.hh. Referenced by Consumer::Consumer(). |
|
The first page number of the kernel's virtual space that is shared with all tasks. (Linux specific).
Definition at line 195 of file types-and-constants.hh. Referenced by Basic_Consumer::act_on_reference_record(), Consumer::handle_anonymous_mmap_range(), Consumer::handle_buffer_cache_allocation(), Consumer::handle_buffer_cache_deallocation(), Consumer::handle_complete_unmap(), Consumer::handle_cow_unmap(), Consumer::handle_duplicate_range(), Consumer::handle_file_cache_allocation(), Consumer::handle_file_cache_deallocation(), Consumer::handle_file_mmap_range(), Consumer::handle_munmap_range(), Consumer::handle_shmat(), Consumer::lookup_canonical_page_ID(), and Consumer::update_with_reference_record(). |
|
The number of offset bits in a virtual address. Given a page size n, the log_{2}(n), a.k.a. the number of lower bits of an address to eliminate to create a page number. Definition at line 114 of file types-and-constants.hh. Referenced by Text_Raw_Reader::read(), Instruction_Reduced_Reader::read(), Binary_Raw_Reader::read(), Consumer::read_kernel_record(), and Per_Task_Page_Reduced_Reader::read_record(). |
|
Definition at line 148 of file types-and-constants.hh. Referenced by Per_Task_Consumer::act_on_kernel_record(), Per_Task_Writer::append_kernel_record(), Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 139 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 140 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 135 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 130 of file types-and-constants.hh. Referenced by Per_Task_Consumer::act_on_kernel_record(), Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 138 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 131 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
|
Definition at line 128 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 129 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), Consumer::synchronize(), and Consumer::update_with_kernel_record(). |
|
Definition at line 141 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 142 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 144 of file types-and-constants.hh. Referenced by Per_Task_Consumer::act_on_kernel_record(), Per_Task_Writer::append_kernel_record(), Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 147 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 143 of file types-and-constants.hh. Referenced by Per_Task_Consumer::act_on_kernel_record(), Per_Task_Writer::append_kernel_record(), Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 145 of file types-and-constants.hh. Referenced by Per_Task_Consumer::act_on_kernel_record(), Per_Task_Writer::append_kernel_record(), Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 146 of file types-and-constants.hh. Referenced by Per_Task_Consumer::act_on_kernel_record(), Per_Task_Writer::append_kernel_record(), Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 127 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), Consumer::synchronize(), and Consumer::update_with_kernel_record(). |
|
Definition at line 136 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 137 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 122 of file types-and-constants.hh. Referenced by Consumer::merge(), Text_Raw_Reader::read(), Instruction_Reduced_Reader::read(), Binary_Raw_Reader::read(), and Consumer::synchronize(). |
|
Definition at line 123 of file types-and-constants.hh. Referenced by Basic_Consumer::act_on_reference_record(), Text_Raw_Reader::read(), Instruction_Reduced_Reader::read(), Binary_Raw_Reader::read(), and Consumer::update_with_reference_record(). |
|
Definition at line 118 of file types-and-constants.hh. Referenced by Basic_Consumer::act_on_reference_record(), Text_Raw_Reader::read(), Instruction_Reduced_Reader::read(), Binary_Raw_Reader::read(), and Consumer::update_with_reference_record(). |
|
Definition at line 120 of file types-and-constants.hh. Referenced by Basic_Consumer::act_on_reference_record(), Text_Raw_Reader::read(), Instruction_Reduced_Reader::read(), Binary_Raw_Reader::read(), and Consumer::update_with_reference_record(). |
|
Definition at line 133 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 132 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 134 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 126 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(), and Consumer::update_with_kernel_record(). |
|
Definition at line 121 of file types-and-constants.hh. Referenced by Basic_Consumer::act_on_reference_record(), Text_Raw_Reader::read(), Instruction_Reduced_Reader::read(), Binary_Raw_Reader::read(), and Consumer::update_with_reference_record(). |
|
Definition at line 117 of file types-and-constants.hh. Referenced by Basic_Consumer::act_on_reference_record(), Text_Raw_Reader::read(), Instruction_Reduced_Reader::read(), Binary_Raw_Reader::read(), and Consumer::update_with_reference_record(). |
|
Definition at line 119 of file types-and-constants.hh. Referenced by Basic_Consumer::act_on_reference_record(), Text_Raw_Reader::read(), Instruction_Reduced_Reader::read(), Binary_Raw_Reader::read(), and Consumer::update_with_reference_record(). |
|
Marks a canonical page as ``anonymous''. An anonymous page is allocated to a process but not backed by a named file. Heap space is typically anonymous. Definition at line 159 of file types-and-constants.hh. Referenced by Consumer::delete_if_unused_page(), and Consumer::handle_cow_unmap(). |
|
Marks a canonical page as a buffer cache page.
Definition at line 179 of file types-and-constants.hh. Referenced by Consumer::Consumer(), Consumer::handle_buffer_cache_deallocation(), and Consumer::lookup_canonical_page_ID(). |
|
Marks a canonical page as part of the VFS cache.
Definition at line 162 of file types-and-constants.hh. Referenced by Consumer::handle_file_cache_allocation(), Consumer::handle_file_cache_deallocation(), and Consumer::handle_file_mmap_range(). |
|
Marks a canonical page as part of an IPC shared memory segment.
Definition at line 166 of file types-and-constants.hh. Referenced by Consumer::handle_complete_unmap(), Consumer::handle_cow_unmap(), and Consumer::handle_munmap_range(). |
|
Marks a canonical page as the ``zero page''. The zero page is a shared page maintained by the kernel which it maps as copy-on-write for new allocations, thus ensuring that new virtual pages are zeroed. There should be only one of these in the canonical address space. Definition at line 176 of file types-and-constants.hh. |
|
The type for a canonical page number.
Definition at line 70 of file types-and-constants.hh. Referenced by Per_Task_Consumer::act_on_reference_record(), Basic_Consumer::act_on_reference_record(), Per_Task_Writer::append_reference_record(), and Consumer::lookup_canonical_page_ID(). |
|
The type for a context (virtual address space) ID. This value is taken as the pointer to the top of the page table that was active at the time of a reference. Definition at line 58 of file types-and-constants.hh. Referenced by Basic_Consumer::act_on_reference_record(), Per_Task_Writer::append_reference_record(), Instruction_Reduced_Reader::read(), Per_Task_Page_Reduced_Reader::read_record(), and Consumer::update_with_reference_record(). |
|
A table type that maps contexts to task objects.
Definition at line 357 of file types-and-constants.hh. |
|
A table type used to track IPC shared memory segments that become defunct and must be deleted.
Definition at line 345 of file types-and-constants.hh. |
|
The type for a device ID, uniquely identifying a device that holds files.
Definition at line 84 of file types-and-constants.hh. |
|
A table type used to map file IDs to virtual->canonical mapping tables.
Definition at line 331 of file types-and-constants.hh. |
|
The type for an offset into a file.
Definition at line 94 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(). |
|
The type for an inode number, and thus a unique ID for a file.
Definition at line 80 of file types-and-constants.hh. |
|
The type for a reference length (bytes accessed).
Definition at line 50 of file types-and-constants.hh. |
|
A table type used to track the liveness of tasks, indexed by task ID.
Definition at line 324 of file types-and-constants.hh. |
|
The type for an offset into a space, usually a virtual space.
Definition at line 91 of file types-and-constants.hh. Referenced by Consumer::read_kernel_record(). |
|
The type for a marker that indicates the type of a page (anonymous, file mmap'ed, etc.).
Definition at line 98 of file types-and-constants.hh. |
|
The type for a process ID.
Definition at line 76 of file types-and-constants.hh. Referenced by Per_Task_Writer::Per_Task_Writer(). |
|
The type of a IPC shared memory segment.
Definition at line 87 of file types-and-constants.hh. Referenced by Consumer::delete_defunct_shm_segments(). |
|
A table type used to map IPC shared memory segment IDs to virtual->canonical mapping tables.
Definition at line 338 of file types-and-constants.hh. |
|
The type for the tag that indicates the type of a reference.
Definition at line 41 of file types-and-constants.hh. Referenced by Basic_Consumer::act_on_reference_record(). |
|
The type for a task (thread) ID.
Definition at line 73 of file types-and-constants.hh. Referenced by Page_Reduced_Reader::Page_Reduced_Reader(), Per_Task_Page_Reduced_Reader::Per_Task_Page_Reduced_Reader(), and Per_Task_Writer::Per_Task_Writer(). |
|
A table type that maps task IDs to task objects.
Definition at line 351 of file types-and-constants.hh. |
|
The type for a time counter.
Definition at line 44 of file types-and-constants.hh. Referenced by Per_Task_Writer::append_kernel_record(), Per_Task_Writer::append_reference_record(), Task::mark_time(), Text_Raw_Reader::read(), Instruction_Reduced_Reader::read(), Binary_Raw_Reader::read(), Per_Task_Page_Reduced_Reader::read_record(), and Consumer::synchronize(). |
|
The type for a virtual address.
Definition at line 47 of file types-and-constants.hh. Referenced by Instruction_Reduced_Reader::Instruction_Reduced_Reader(), Instruction_Reduced_Reader::read(), and Consumer::read_kernel_record(). |
|
The type for a virtual page number.
Definition at line 67 of file types-and-constants.hh. Referenced by Per_Task_Writer::append_reference_record(), Consumer::handle_anonymous_mmap_range(), Consumer::handle_buffer_cache_allocation(), Consumer::handle_buffer_cache_deallocation(), Consumer::handle_cow_unmap(), Consumer::handle_duplicate_range(), Consumer::handle_file_cache_allocation(), Consumer::handle_file_cache_deallocation(), Consumer::handle_file_mmap_range(), Consumer::handle_munmap_range(), Consumer::handle_shmat(), Consumer::lookup_canonical_page_ID(), Consumer::map_virtual_to_canonical(), Per_Task_Page_Reduced_Reader::read_record(), and Consumer::update_with_reference_record(). |
|