X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=palacios%2Fsrc%2Fpalacios%2Fvmm_sym_swap.c;h=1650c4e2db6b6f7f78bdf9d92ec6bee776a27680;hp=c22937cc16f9687c3bbc39be8a2ffe16db94084f;hb=449bf14185a1b3e2db53855b14e0e3ef3a803fd9;hpb=23b1c1715de4e064ee134b15273b3935ecfb8b74 diff --git a/palacios/src/palacios/vmm_sym_swap.c b/palacios/src/palacios/vmm_sym_swap.c index c22937c..1650c4e 100644 --- a/palacios/src/palacios/vmm_sym_swap.c +++ b/palacios/src/palacios/vmm_sym_swap.c @@ -23,6 +23,10 @@ #include +#ifdef CONFIG_SYMBIOTIC_SWAP_TELEMETRY +#include +#endif + // This is a hack and 32 bit linux specific.... need to fix... struct swap_pte { uint32_t present : 1; @@ -65,9 +69,29 @@ static inline uint32_t get_dev_index(pte32_t * pte) { +#ifdef CONFIG_SYMBIOTIC_SWAP_TELEMETRY +static void telemetry_cb(struct guest_info * info, void * private_data) { + struct v3_sym_swap_state * swap_state = &(info->swap_state); + + V3_Print("Symbiotic Swap:\n"); + V3_Print("\tRead faults=%d\n", swap_state->read_faults); + V3_Print("\tWrite faults=%d\n", swap_state->write_faults); + V3_Print("\tFlushes=%d\n", swap_state->flushes); +} +#endif + + int v3_init_sym_swap(struct guest_info * info) { - memset(&(info->swap_state), 0, sizeof(struct v3_sym_swap_state)); - info->swap_state.shdw_ptr_ht = v3_create_htable(0, swap_hash_fn, swap_eq_fn); + struct v3_sym_swap_state * swap_state = &(info->swap_state); + + memset(swap_state, 0, sizeof(struct v3_sym_swap_state)); + swap_state->shdw_ptr_ht = v3_create_htable(0, swap_hash_fn, swap_eq_fn); + +#ifdef CONFIG_SYMBIOTIC_SWAP_TELEMETRY + if (info->enable_telemetry) { + v3_add_telemetry_cb(info, telemetry_cb, NULL); + } +#endif PrintDebug("Initialized Symbiotic Swap\n"); @@ -126,6 +150,10 @@ int v3_swap_flush(struct guest_info * info) { PrintDebug("Flushing Symbiotic Swap table\n"); +#ifdef CONFIG_SYMBIOTIC_SWAP_TELEMETRY + swap_state->flushes++; +#endif + while (ht_iter->entry) { struct shadow_pointer * tmp_shdw_ptr = NULL; struct shadow_pointer * shdw_ptr = NULL;