man Pages(9E): DDI and DKI Driver Entry Points
  Suchtext Nur in diesem Buch
Dieses Buch im PDF-Format herunterladen

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, * lengthpwill 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