Kernel Functions for Drivers ddi_mmap_get_model(9F)
NAME
ddi_mmap_get_model - return data model type of current
threadSYNOPSIS
#include
#include
uint_t ddi_mmap_get_model(void);
INTERFACE LEVEL
Solaris DDI specific (Solaris DDI).DESCRIPTION
ddi_mmap_get_model() returns the C Language Type Model which
the current thread expects. ddi_mmap_get_model() is used in
combination with ddi_model_convert_from(9F) in the mmap(9E)
driver entry point to determine whether there is a data model mismatch between the current thread and the device driver. The device driver might have to adjust the shape of data structures before exporting them to a user thread which supports a different data model.RETURN VALUES
DDI_MODEL_ILP32 Current thread expects 32-bit (ILP32)
semantics.DDI_MODEL_LP64 Current thread expects 64-bit (LP64)
semantics.DDI_FAILURE The ddi_mmap_get_model() function was
not called from the mmap(9E) entry point.CONTEXT
The ddi_mmap_get_model() function can only be called from
the mmap(9E) driver entry point.EXAMPLES
Example 1 : Using ddi_mmap_get_model()
The following is an example of the mmap(9E) entry point andhow to support 32-bit and 64-bit applications with the same
device driver.SunOS 5.11 Last change: 8 Feb 2001 1
Kernel Functions for Drivers ddi_mmap_get_model(9F)
struct data32 { int len;caddr32_t addr;
}; struct data { int len;caddr_t addr;
};xxmmap(dev_t dev, off_t off, int prot) {
struct data dtc; /* a local copy for clash resolution */struct data *dp = (struct data *)shared_area;
switch (ddi_model_convert_from(ddi_mmap_get_model())) {
case DDI_MODEL_ILP32:
{ struct data32 *da32p;da32p = (struct data32 *)shared_area;
dp = &dtc;dp->len = da32p->len;
dp->address = da32->address;
break; }case DDI_MODEL_NONE:
break; } /* continues along using dp */ ... }SEE ALSO
mmap(9E), ddi_model_convert_from(9F)
Writing Device DriversSunOS 5.11 Last change: 8 Feb 2001 2