Direct Guest Physical Memory Access (DGPMA) of shm-snapshot

Users now can get a read only pointer to the shm-snapshot by the vmi_get_dgpma(vmi) function, and then read the shm-snapshot content in a non-copy manner (ideally  at a native speed like reading the local memory) , bypassing the vmi_read_pa(vmi) function.

Example:

1. without DGPMA:
    vmi_init(&vmi, VMI_AUTO | VMI_INIT_COMPLETE, vm);
    void* pmem = malloc(ANY_SIZE);
    vmi_read_pa(vmi,  A_PHY_ADDR, pmem, ANY_SIZE); // with memcpy() inside
    any_vmi_processing(pmem, ANY_SIZE);
    free(pmem);
    vmi_shm_snapshot_destroy(vmi);
    vmi_destroy(vmi);

2. with DGPMA:
    vmi_init(&vmi, VMI_AUTO | VMI_INIT_COMPLETE, vm);
    vmi_shm_snapshot_create(vmi);
    const void* pmem = vmi_get_dgpma(vmi);
    if (NULL == pmem) {
        printf("fail to get dpgma\n");
        return 1;
    }
    any_vmi_processing(pmem + A_PHY_ADDR, ANY_SIZE);
    vmi_shm_snapshot_destroy(vmi);
    vmi_destroy(vmi);
Interrupt events: generalized boilerplate supporting drivers that might provide interrupt events. Provides an extension to the Xen driver supporting its only interrupt event, INT3.
initialize xen_event related function pointers to NULL when xen_events is disabled

Signed-off-by: Guanglin Xu <mzguanglin@gmail.com>
Fixed broken cache compilation due to incompatible stubs
fix function signitures

1. cache.c : prevent compilation error when #define ENABLE_ADDRESS_CACHE 0
2. shm-snapshot-process-list.c : remove compiler warnings
Merge pull request #96 from adrianlshaw/cachefix

Fixed broken cache compilation due to incompatible stubs
Merge pull request #98 from mzguanglin/direct-guest-physical-memory-access

Direct Guest Physical Memory Access (DGPMA) of shm-snapshot
Merge pull request #99 from Zentific/events_int3

Interrupt events
Merge pull request #100 from mzguanglin/fix-noncached-function-sign

fix function signitures
Merge pull request #101 from mzguanglin/fix-xen-init-of-function-pointer

initialize xen_event related function pointers to NULL when xen_events i...
quiet some compiler warnings on 32-bit builds related to format strings
Whitespace cleanup (Hard tabs ^I --> 4 space tabs)
Whitespace cleanup (prune all trailing spaces at line endings)
Remedy compiler warnings on 32-bit builds related to integer width (invisible when building on 64-bit).
    a pointer to vmi_instance_t->size (which is a uint64_t) was passed to
    driver_get_memsize in core.c:

        driver_get_memsize(*vmi, &(*vmi)->size);

    the following results for 32-bit builds (where of course
    sizeof(long unsigned int) != sizeof(uint64_t), causing the warning):

        core.c: In function 'vmi_init_private':
        core.c:553:9: warning: passing argument 2 of 'driver_get_memsize' from
          incompatible pointer type [enabled by default]
        driver/interface.h:59:10: note: expected 'long unsigned int *' but argument
          is of type 'uint64_t *'
        core.c:597:9: warning: passing argument 2 of 'driver_get_memsize' from
          incompatible pointer type [enabled by default]
        driver/interface.h:59:10: note: expected 'long unsigned int *' but argument
          is of type 'uint64_t *'
Merge pull request #103 from Zentific/housekeeping

Housekeeping
libvmi.h - remove stray /**
Another format string compile warning fix (debug builds only)
Merge pull request #104 from Zentific/housekeeping

more housekeeping
Fix mixup in the order of PID and base vaddr in sym2rva
Merge pull request #105 from Zentific/sym2v_fix

Fix mixup in the order of PID and base vaddr in vmi_translate_sym2v