Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

ddi_prop_create(9F)

ddi_prop_op(9F)

prop_op(9E)

NAME

prop_op − report driver property information

SYNOPSIS

#include <sys/types.h>
#include <sys/ddi.h>
#include <sys/sunddi.h>

int prefixprop_op(dev_t dev, dev_info_t ∗dip, ddi_prop_op_t prop_op, int flags,

char ∗name, caddr_t valuep, int ∗lengthp)

INTERFACE LEVEL

Solaris DDI specific (Solaris DDI).  This entry point is required, but it can be ddi_prop_op(9F). 

ARGUMENTS

dev Device number associated with this device. 

dip A pointer to the device information structure for this device. 

prop_op Property operator.  Valid operators are:

PROP_LEN
Get property length only. (valuep unaffected)

PROP_LEN_AND_VAL_BUF
Get length and value into caller’s buffer. (valuep used as input)

PROP_LEN_AND_VAL_ALLOC
Get length and value into allocated buffer. (valuep returned as pointer to pointer to allocated buffer)

flags The only possible flag value is:

DDI_PROP_DONTPASS
Don’t pass request to parent if property not found.

name Pointer to name of property to be interrogated. 

valuep If prop_op is PROP_LEN_AND_VAL_BUF, this should be a pointer to the users buffer.  If prop_op is PROP_LEN_AND_VAL_ALLOC, this should be the address of a pointer. 

lengthp On exit, ∗lengthp will contain the property length.  If prop_op is PROP_LEN_AND_VAL_BUF then before calling prop_op(), lengthp should point to an int that contains the length of callers buffer. 

DESCRIPTION

prop_op() is an entry point which reports the values of certain "properties" of the driver or device to the system.  Each driver must have an xxprop_op entry point, but most drivers which do not need to create or manage their own properties can use ddi_prop_op() for this entry point.  Then the driver can use ddi_prop_create(9F) to create properties for its device. 

RETURN VALUES

prop_op() should return:

DDI_PROP_SUCCESS Property found and returned. 

DDI_PROP_NOT_FOUND
Property not found.

DDI_PROP_UNDEFINED Prop explicitly undefined. 

DDI_PROP_NO_MEMORY
Property found, but unable to allocate memory. lengthp has the correct property length. 

DDI_PROP_BUF_TOO_SMALL
Property found, but the supplied buffer is too small. lengthp has the correct property length. 

EXAMPLES

static int
xxprop_op(dev_t dev, dev_info_t ∗dip, ddi_prop_op_t prop_op,
int flags, char ∗name, caddr_t valuep, int ∗lengthp)
{
int  instance;
struct xxstate ∗xsp;
if (dev == DDI_DEV_T_ANY)
goto skip;
instance = getminor(dev);
xsp = ddi_get_soft_state(statep, instance);
if (xsp == NULL)
return (DDI_PROP_NOTFOUND);
if (!strcmp(name, "nblocks")) {
ddi_prop_modify(dev, dip, "nblocks", flags,
&xsp->nblocks, sizeof(int));
}
/∗other cases...∗/
skip:
return (ddi_prop_op(dev, dip, prop_op, flags, name,
valuep, lengthp));
}

SEE ALSO

ddi_prop_create(9F), ddi_prop_op(9F)

Writing Device Drivers

SunOS 5.5/SPARC  —  Last change: 15 Dec 1993

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026