tracker
struct tracker *tracker;
FOR_EACH_PTR(freed_args, tracker) {
print_arg(tracker->sym);
} END_FOR_EACH_PTR(tracker);
struct tracker *tracker;
FOR_EACH_PTR(freed_args, tracker) {
tmp = get_sm_state(my_id, tracker->name, tracker->sym);
del_tracker(&freed_args, my_id, tracker->name,
tracker->sym);
} END_FOR_EACH_PTR(tracker);
FOR_EACH_PTR(write_list, tracker) {
sm_printf("%s, ", tracker->name);
} END_FOR_EACH_PTR(tracker);
struct tracker *tracker;
FOR_EACH_PTR(write_list, tracker) {
sm_printf("%s, ", tracker->name);
} END_FOR_EACH_PTR(tracker);
struct tracker *tracker;
FOR_EACH_PTR(parsed_syscalls, tracker) {
if (tracker->sym == sym) // don't re-parse
} END_FOR_EACH_PTR(tracker);
struct tracker *tracker;
FOR_EACH_PTR(read_list, tracker) {
sm_printf("%s, ", tracker->name);
} END_FOR_EACH_PTR(tracker);
struct tracker *tracker;
struct tracker *tracker;
FOR_EACH_PTR(locks, tracker) {
check_lock(tracker->name, tracker->sym);
} END_FOR_EACH_PTR(tracker);
struct tracker *tracker;
FOR_EACH_PTR(putted_args, tracker) {
print_arg(tracker->sym);
} END_FOR_EACH_PTR(tracker);
struct tracker *tracker;
FOR_EACH_PTR(putted_args, tracker) {
tmp = get_sm_state(my_id, tracker->name, tracker->sym);
del_tracker(&putted_args, my_id, tracker->name,
tracker->sym);
} END_FOR_EACH_PTR(tracker);
struct tracker *alloc_tracker(int owner, const char *name, struct symbol *sym);
DECLARE_ALLOCATOR(tracker);
DECLARE_PTR_LIST(tracker_list, struct tracker);
static void delete_state_tracker(struct tracker *t)
struct tracker *t;
struct tracker tracker = {
return avl_lookup(stree, (struct sm_state *)&tracker);
struct tracker tracker = {
avl_remove(stree, (struct sm_state *)&tracker);
ALLOCATOR(tracker, "trackers");
struct tracker *alloc_tracker(int owner, const char *name, struct symbol *sym)
struct tracker *tmp;
struct tracker *tmp;
static void free_tracker(struct tracker *t)
struct tracker *tmp;
struct tracker *tmp;
struct tracker *tmp;
struct vmm_dirty_tracker tracker;
if (ddi_copyin(datap, &tracker, sizeof (tracker), md) != 0) {
if ((tracker.vdt_start_gpa & PAGEOFFSET) != 0) {
if (tracker.vdt_len == 0) {
if ((tracker.vdt_len & PAGEOFFSET) != 0) {
if (tracker.vdt_len > max_track_region_len) {
len = roundup(tracker.vdt_len / PAGESIZE, 8) / 8;
error = vm_track_dirty_pages(sc->vmm_vm, tracker.vdt_start_gpa,
tracker.vdt_len, bitmap);
ddi_copyout(bitmap, tracker.vdt_pfns, len, md) != 0) {