Go to main content

Oracle® Solaris 11.3 Programming Interfaces Guide

Exit Print View

Updated: April 2019
 
 

Using Application Data Integrity (ADI)

The SPARC M7, SPARC M8, SPARC S7, SPARC T7, and SPARC T8 servers support the Application Data Integrity (ADI) feature. ADI detects memory corruptions in optimized production code by adding version numbers to the application's memory pointers and the memory they point to. The hardware does this by allowing software to mark software buffers with special versions. On execution the processor compares the version encoded in the pointer used by a load or store instruction with the version assigned to the target location and generates an exception if there is a mismatch. The ADI feature can be used by the Database, by user applications that manage memory, and by the OS. For more information about developing applications that use ADI, see the adi(2) and adi(3C) man pages.

Interfaces that support ADI include the following:

copyin()

Returns an error value when there is a version mismatch. For more information, see the copyin(9F) man page.

copyout()

Returns an error value when there is a version mismatch. For more information, see the copyout(9F) man page.

ddi_copyin()

Returns an error value when there is a version mismatch. For more information, see the ddi_copyin(9F) man page.

ddi_copyout()

Returns an error value when there is a version mismatch. For more information, see the ddi_copyout(9F) man page.

getmsg()

Returns an error value if a version mismatch is detected while the system is writing data to the buffer. For more information, see the getmsg(2) man page.

memcntl()

Allows ADI to be enabled or disabled for specified memory pages. For more information, see the memcntl(2) man page.

meminfo()

Provides the status of ADI for a specified virtual address. For more information, see the meminfo(2) man page.

mmap()

Enables ADI for mapped pages. For more information, see the mmap(2) man page.

pmap()

Reports which process mappings have ADI enabled. For more information, see the pmap(1) man page.

proc()

Provides information about the state of a ADI process. For more information, see the proc(4) man page.

putmsg()

Returns an error value if there is a version mismatch while the system is reading data from the buffer. For more information, see the putmsg(2) man page.

read()

Returns an error value if there is a version mismatch while the system is writing data to the buffer. For more information, see the read(2) man page.

siginfo()

Defines signal values for signals raised for ADI exceptions. For more information, see the siginfo(3HEAD) man page.

uiomove()

Returns an error value if a version mismatch is detected while the system is transferring data to or from the buffer. For more information, see the uiomove(9F) man page.

write()

Returns an error value if a version mismatch is detected while the system is reading data from the buffer. For more information, see the write(2) man page.

libadimalloc library

Contains ADI-aware memory allocation functions. For more information, see the libadimalloc(3LIB) man page.