Moved isomalloc info. to its own section, and updated for new
authorOrion Lawlor <olawlor@acm.org>
Fri, 27 Sep 2002 23:20:43 +0000 (23:20 +0000)
committerOrion Lawlor <olawlor@acm.org>
Fri, 27 Sep 2002 23:20:43 +0000 (23:20 +0000)
interface.

doc/converse/cmi.tex
doc/converse/isomalloc.tex [new file with mode: 0644]
doc/converse/manual.tex

index aac8339122deea1cb346049d564a9d10decd558e..0b8d504cbaee7b59999d4dc702e259aa721936dc 100644 (file)
@@ -871,62 +871,6 @@ numbers of children of \uw{procNum} in the spanning tree.}
 \desc{This function fills the array \uw{children} with node
 numbers of children of \uw{nodeNum} in the spanning tree.}
 
-\section{Isomalloc}
-
-It is occasionally useful to allocate memory at a globally unique
-virtual address.  This is trivial on a shared memory machine
-(where every address is globally unique); but more difficult on
-a distributed memory machine (where each node has its own 0x40000000).
-Isomalloc provides a uniform interface for allocating globally unique
-virtual addresses.
-
-Isomalloc can thus be thought of as a software distributed shared
-memory implementation; except data movement between
-processors is explicit (by making a subroutine call), not on demand
-(by taking a page fault).
-
-Isomalloc is useful when moving highly interlinked data structures
-from one processor to another, because internal pointers will still
-point to the correct locations, even on a new processor.  This is especially
-useful when the format of the data structure is complex or unknown, as with
-thread stacks.
-
-\function{void *CmiIsomalloc(int size,CmiIsomallocBlock *retBlock)}
-\index{CmiIsomalloc}
-\desc{Allocate size bytes at a unique virtual address.  Returns
-a pointer to the allocated region, and fills out the given 
-CmiIsomallocBlock structure.
-
-CmiIsomalloc makes allocations with page granularity (typically several
-kilobytes); so it is not recommended for small allocations.
-}
-
-\function{void CmiIsomallocFree(CmiIsomallocBlock *doomedBlock)}
-\index{CmiIsomallocFree}
-\desc{Release the given block, which must have been previously
-filled out by CmiIsomalloc.  Also releases the used virtual
-address range, which the system may subsequently reuse.
-
-After a CmiIsomallocFree, references to that block will 
-likely result in a segmentation violation.  It is illegal to
-call CmiIsomallocFree more than once on the same block.
-}
-
-\function{void *CmiIsomallocPup(pup\_er p,CmiIsomallocBlock *block)}
-\index{CmiIsomallocPup}
-\desc{Pack/Unpack the given block.  This routine can be used to move
-blocks across processors, save blocks to disk, or checkpoint blocks.
-
-Returns a pointer to the allocated region.  The pointer is guaranteed
-to have the same value after unpacking that it did before packing.
-}
-
-\function{int CmiIsomallocInRange(void *address)}
-\index{CmiIsomallocInRange}
-\desc{Return 1 if the given address may have been previously allocated to 
-this processor using Isomalloc; 0 otherwise.  CmiIsomallocInRange(malloc(size))
-is guaranteed to be zero for any value of size.
-}
 
 
 
diff --git a/doc/converse/isomalloc.tex b/doc/converse/isomalloc.tex
new file mode 100644 (file)
index 0000000..51568dd
--- /dev/null
@@ -0,0 +1,63 @@
+\section{Isomalloc}
+
+It is occasionally useful to allocate memory at a globally unique
+virtual address.  This is trivial on a shared memory machine
+(where every address is globally unique); but more difficult on
+a distributed memory machine (where each node has its own separate data
+at address 0x80000000).
+Isomalloc provides a uniform interface for allocating globally unique
+virtual addresses.
+
+Isomalloc can thus be thought of as a software distributed shared
+memory implementation; except data movement between
+processors is explicit (by making a subroutine call), not on demand
+(by taking a page fault).
+
+Isomalloc is useful when moving highly interlinked data structures
+from one processor to another, because internal pointers will still
+point to the correct locations, even on a new processor.  This is especially
+useful when the format of the data structure is complex or unknown, as with
+thread stacks.
+
+\function{void *CmiIsomalloc(int size)}
+\index{CmiIsomalloc}
+\desc{Allocate size bytes at a unique virtual address.  Returns
+a pointer to the allocated region.
+
+CmiIsomalloc makes allocations with page granularity (typically several
+kilobytes); so it is not recommended for small allocations.
+}
+
+\function{void CmiIsomallocFree(void *doomedBlock)}
+\index{CmiIsomallocFree}
+\desc{Release the given block, which must have been previously
+returned by CmiIsomalloc.  Also releases the used virtual
+address range, which the system may subsequently reuse.
+
+After a CmiIsomallocFree, references to that block will 
+likely result in a segmentation violation.  It is illegal to
+call CmiIsomallocFree more than once on the same block.
+}
+
+\function{void CmiIsomallocPup(pup\_er p,void **block)}
+\index{CmiIsomallocPup}
+\desc{Pack/Unpack the given block.  This routine can be used to move
+blocks across processors, save blocks to disk, or checkpoint blocks.
+
+After unpacking, the pointer is guaranteed
+to have the same value that it did before packing.
+}
+
+\function{int CmiIsomallocLength(void *block);}
+\index{CmiIsomallocLength}
+\desc{
+Return the length, in bytes, of this isomalloc'd block.
+}
+
+\function{int CmiIsomallocInRange(void *address)}
+\index{CmiIsomallocInRange}
+\desc{Return 1 if the given address may have been previously allocated to 
+this processor using Isomalloc; 0 otherwise.  CmiIsomallocInRange(malloc(size))
+is guaranteed to be zero; CmiIsomallocInRange(CmiIsomalloc(size))
+is guaranteed to be one.
+}
index 60abeed3edec85b99774b2d1b5b584bd929a27ee..4d81e041063bddbc3f2603828bc95806b6d34402 100644 (file)
@@ -19,6 +19,7 @@ Parthasarathy Ramachandran, Krishnan Varadarajan, and Jeffrey Wright.
 
 \input{usermain}
 \input{cmi}
+\input{isomalloc}
 \input{queue}
 \input{threads}
 \input{conditions}