Innerhalb
Nach weiteren Dokumenten suchen
Support-Ressourcen
| 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
|
|