FileDocCategorySizeDatePackage
IMemorySystem.javaAPI DocAndroid 1.5 API18854Wed May 06 22:41:04 BST 2009org.apache.harmony.luni.platform

IMemorySystem

public interface IMemorySystem
IMemorySystem

Fields Summary
public final int
MMAP_READ_ONLY
public final int
MMAP_READ_WRITE
public final int
MMAP_WRITE_COPY
Constructors Summary
Methods Summary
public voidflush(int addr, long size)
TODO : JavaDoc

public voidfree(int address)
Deallocates space for a memory block that was previously allocated by a call to {@link #malloc(int) malloc(long)}. The number of bytes freed is identical to the number of bytes acquired when the memory block was allocated. If address is zero the method does nothing.

Freeing a pointer to a memory block that was not allocated by malloc() has unspecified effect.

param
address the address of the memory block to deallocate.

public intgetAddress(int address)
Gets the value of the platform pointer at the given address.

The length of the platform pointer is defined by POINTER_SIZE.

The behavior is unspecified if (address ... address + POINTER_SIZE) is not wholly within the range that was previously allocated using malloc().

param
address the platform address of the start of the platform pointer.
return
the value of the platform pointer as a Java long.

public bytegetByte(int address)

public voidgetByteArray(int address, byte[] bytes, int offset, int length)
Copies length bytes from the memory block at address into the byte array bytes starting at element offset within the byte array.

The behavior of this method is undefined if the range (address ... address + length) is not within a memory block that was allocated using {@link #malloc(int) malloc(long)}.

param
address the address of the OS memory block from which to copy bytes.
param
bytes the byte array into which to copy the bytes.
param
offset the index of the first element in bytes that will be overwritten.
param
length the total number of bytes to copy into the byte array.
throws
NullPointerException if bytes is null.
throws
IndexOutOfBoundsException if offset + length > bytes.length.

public doublegetDouble(int address)
Gets the value of the IEEE754-format eight-byte float stored in platform byte order at the given address.

The behavior is unspecified if (address ... address + 8) is not wholly within the range that was previously allocated using malloc().

param
address the platform address of the start of the eight-byte value.
return
the value of the eight-byte float as a Java double.

public doublegetDouble(int address, Endianness endianness)

public floatgetFloat(int address)
Gets the value of the IEEE754-format four-byte float stored in platform byte order at the given address.

The behavior is unspecified if (address ... address + 4) is not wholly within the range that was previously allocated using malloc().

param
address the platform address of the start of the eight-byte value.
return
the value of the four-byte float as a Java float.

public floatgetFloat(int address, Endianness endianness)

public intgetInt(int address)
Gets the value of the signed four-byte integer stored in platform byte-order at the given address.

The behavior is unspecified if (address ... address + 4) is not wholly within the range that was previously allocated using malloc().

param
address the platform address of the start of the four-byte value.
return
the value of the four-byte integer as a Java int.

public intgetInt(int address, Endianness endianness)

public longgetLong(int address)
Gets the value of the signed eight-byte integer stored in platform byte order at the given address.

The behavior is unspecified if (address ... address + 8) is not wholly within the range that was previously allocated using malloc().

param
address the platform address of the start of the eight-byte value.
return
the value of the eight-byte integer as a Java long.

public longgetLong(int address, Endianness endianness)

public intgetPointerSize()
Returns the platform pointer size.

return
the native platform pointer size, in bytes.

public shortgetShort(int address)
Gets the value of the signed two-byte integer stored in platform byte order at the given address.

The behavior is unspecified if (address ... address + 2) is not wholly within the range that was previously allocated using malloc().

param
address the platform address of the start of the two-byte value.
return
the value of the two-byte integer as a Java short.

public shortgetShort(int address, Endianness endianness)

public booleanisLittleEndian()
Returns true if the platform is little endian, otherwise it may be assumed to be big endian..

return
true if the platform is little endian.

public booleanisLoaded(int addr, long size)
TODO: JavaDoc

public voidload(int addr, long size)
TODO: JavaDoc

public intmalloc(int length)
Allocates and returns a pointer to space for a memory block of length bytes. The space is uninitialized and may be larger than the number of bytes requested; however, the guaranteed usable memory block is exactly length bytes long.

param
length number of bytes requested.
return
the address of the start of the memory block.
throws
OutOfMemoryError if the request cannot be satisfied.

public voidmemmove(int destAddress, int srcAddress, long length)
Copies length bytes from srcAddress to destAddress. Where any part of the source memory block and the destination memory block overlap memmove() ensures that the original source bytes in the overlapping region are copied before being overwritten.

The behavior is unspecified if (srcAddress ... srcAddress + length) and (destAddress ... destAddress + length) are not both wholly within the range that was previously allocated using malloc().

param
destAddress the address of the destination memory block.
param
srcAddress the address of the source memory block.
param
length the number of bytes to move.

public voidmemset(int address, byte value, long length)
Places value into first length bytes of the memory block starting at address.

The behavior is unspecified if (address ... address + length) is not wholly within the range that was previously allocated using malloc().

param
address the address of the first memory location.
param
value the byte value to set at each location.
param
length the number of byte-length locations to set.

public intmmap(int fileDescriptor, long alignment, long size, int mapMode)
TODO: JavaDoc

param
fileDescriptor
param
alignment
param
size
param
mapMode
return
throws
IOException

public voidsetAddress(int address, int value)
Sets the value of the platform pointer at the given address.

The length of the platform pointer is defined by POINTER_SIZE. This method only sets POINTER_SIZE bytes at the given address.

The behavior is unspecified if (address ... address + POINTER_SIZE) is not wholly within the range that was previously allocated using malloc().

param
address the platform address of the start of the platform pointer.
param
value the value of the platform pointer as a Java long.

public voidsetByte(int address, byte value)
Sets the given single byte value at the given address.

The behavior is unspecified if address is not in the range that was previously allocated using malloc().

param
address the address at which to set the byte value.
param
value the value to set.

public voidsetByteArray(int address, byte[] bytes, int offset, int length)
Copies length bytes from the byte array bytes into the memory block at address, starting at element offset within the byte array.

The behavior of this method is undefined if the range (address ... address + length) is not within a memory block that was allocated using {@link #malloc(int) malloc(long)}.

param
address the address of the OS memory block into which to copy the bytes.
param
bytes the byte array from which to copy the bytes.
param
offset the index of the first element in bytes that will be read.
param
length the total number of bytes to copy from bytes into the memory block.
throws
NullPointerException if bytes is null.
throws
IndexOutOfBoundsException if offset + length > bytes.length.

public voidsetDouble(int address, double value)
Sets the value of the IEEE754-format eight-byte float store in platform byte order at the given address.

The behavior is unspecified if (address ... address + 8) is not wholly within the range that was previously allocated using malloc().

param
address the platform address of the start of the eight-byte value.
param
value the value of the eight-byte float as a Java double.

public voidsetDouble(int address, double value, Endianness endianness)

public voidsetFloat(int address, float value)
Sets the value of the IEEE754-format four-byte float stored in platform byte order at the given address.

The behavior is unspecified if (address ... address + 4) is not wholly within the range that was previously allocated using malloc().

param
address the platform address of the start of the eight-byte value.
param
value the value of the four-byte float as a Java float.

public voidsetFloat(int address, float value, Endianness endianness)

public voidsetInt(int address, int value)
Sets the value of the signed four-byte integer at the given address in platform byte order.

The behavior is unspecified if (address ... address + 4) is not wholly within the range that was previously allocated using malloc().

param
address the platform address of the start of the four-byte value.
param
value the value of the four-byte integer as a Java int.

public voidsetInt(int address, int value, Endianness endianness)

public voidsetIntArray(int address, int[] ints, int offset, int length, boolean swap)
Copies length ints from the int array ints into the memory block at address, starting at element offset within the int array.

The behavior of this method is undefined if the range (address ... address + length*4) is not within a memory block that was allocated using {@link #malloc(int) malloc(long)}.

param
address the address of the OS memory block into which to copy the ints.
param
ints the int array from which to copy the ints.
param
offset the index of the first element in ints that will be read.
param
length the total number of ints to copy from ints into the memory block.
param
swap true if the ints should be written in reverse byte order.
throws
NullPointerException if ints is null.
throws
IndexOutOfBoundsException if offset + length > ints.length.

public voidsetLong(int address, long value)
Sets the value of the signed eight-byte integer at the given address in the platform byte order.

The behavior is unspecified if (address ... address + 8) is not wholly within the range that was previously allocated using malloc().

param
address the platform address of the start of the eight-byte value.
param
value the value of the eight-byte integer as a Java long.

public voidsetLong(int address, long value, Endianness endianness)

public voidsetShort(int address, short value)
Sets the value of the signed two-byte integer at the given address in platform byte order.

The behavior is unspecified if (address ... address + 2) is not wholly within the range that was previously allocated using malloc().

param
address the platform address of the start of the two-byte value.
param
value the value of the two-byte integer as a Java short.

public voidsetShort(int address, short value, Endianness endianness)

public voidsetShortArray(int address, short[] shorts, int offset, int length, boolean swap)
Copies length shorts from the short array short into the memory block at address, starting at element offset within the short array.

The behavior of this method is undefined if the range (address ... address + length*2) is not within a memory block that was allocated using {@link #malloc(int) malloc(long)}.

param
address the address of the OS memory block into which to copy the shorts.
param
shorts the short array from which to copy the shorts.
param
offset the index of the first element in shorts that will be read.
param
length the total number of shorts to copy from shorts into the memory block.
param
swap true if the shorts should be written in reverse byte order.
throws
NullPointerException if shorts is null.
throws
IndexOutOfBoundsException if offset + length > shorts.length.

public voidunmap(int addr, long size)
TODO: JavaDoc

param
addr
throws
IOException