Patent ID: 8521966

Claim:
A tangible computer-readable storage medium embodying program instructions causing a computer to perform a method for enabling inter-process communication between a first user-level application and a second user-level application, the first user-level application running within a first context and the second user-level application running within a second context, the first and second contexts defining different hardware platforms for separately running user-level applications, at least one of the hardware platforms being virtualized, each context including the state of all virtual address space, as well as a set of processor registers including privilege registers, with all hardware exception and entry points, the method comprising: detecting communication between the first and second user-level applications, where the communication is specific to intended sharing between the first and second user-level applications; in response to the communication between the first and second user-level applications, creating a shared region of memory for receiving content and for enabling access to and the sharing of the content, wherein the first and second user-level applications are cooperative in determining a size of the shared region of memory; receiving a request to attach the shared region of memory to a memory allocation, the request being received by a framework from the second user-level application, the request including a handle that uniquely identifies the shared region of memory and including an identification of at least one guest memory page corresponding to the memory allocation, the framework being a component of a virtualization software, the virtualization software executing in a context distinct from the context of the first user-level application, identifying a list of one or more physical memory pages defining the shared region that corresponds to the handle; and mapping guest memory pages corresponding to the allocation to the physical memory pages, thereby enabling communications between the first and second user-level applications via the shared region of memory.