The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

ddi_devid_compare (9)
  • >> ddi_devid_compare (9) ( Solaris man: Ядро )
  •  

    NAME

    ddi_devid_compare, ddi_devid_free, ddi_devid_init, ddi_devid_register, ddi_devid_sizeof, ddi_devid_str_decode, ddi_devid_str_encode, ddi_devid_str_free, ddi_devid_get, ddi_devid_unregister, ddi_devid_valid - kernel interfaces for device ids
     
    

    SYNOPSIS

    int ddi_devid_compare(ddi_devid_t devid1, ddi_devid_t devid2);
    

    size_t ddi_devid_sizeof(ddi_devid_t devid);
    

    int ddi_devid_init(dev_info_t *dip, ushort_t devid_type, 
        ushort_t nbytes, void *id, ddi_devid_t *retdevid);
    

    void ddi_devid_free(ddi_devid_t devid);
    

    int ddi_devid_register(dev_info_t *dip, ddi_devid_t devid);
    

    int ddi_devid_str_decode(char *devidstr, ddi_devid_t *retdevid, 
        char **retminor_name);
    

    int ddi_devid_str_encode(ddi_devid_t devid, char *minor_name);
    

    int ddi_devid_str_free(char *devidstr);
    

    int ddi_devid_get(dev_info_t *dip, ddi_devid_t *retdevid);
    

    void ddi_devid_unregister(dev_info_t *dip);
    

    int ddi_devid_valid(ddi_devid_t devid);
    

     

    PARAMETERS

    devid

    The device id address.

    devidstr

    The devid and minor_name represented as a string.

    devid1

    The first of two device id addresses to be compared calling ddi_devid_compare().

    devid2

    The second of two device id addresses to be compared calling ddi_devid_compare().

    dip

    A dev_info pointer, which identifies the device.

    devid_type

    The following device id types may be accepted by the ddi_devid_init() function:

    DEVID_SCSI3_WWN

    World Wide Name associated with SCSI-3 devices.

    DEVID_SCSI_SERIAL

    Vendor IDand serial number associated with a SCSI device. Note: This may only be used if known to be unique; otherwise a fabricated device id must be used.

    DEVID_ENCAP

    Device ID of another device. This is for layered device driver usage.

    DEVID_FAB

    Fabricated device ID.

    minor_name

    The minor name to be encoded.

    nbytes

    The length in bytes of device ID.

    retdevid

    The return address of the device ID.

    retminor_name

    The return address of a minor name. Free string with ddi_devid_str_free().

     

    INTERFACE LEVEL

    Solaris DDI specific (Solaris DDI).  

    DESCRIPTION

    The following routines are used to provide unique identifiers, device IDs, for devices. Specifically, kernel modules use these interfaces to identify and locate devices, independent of the device's physical connection or its logical device name or number.

    ddi_devid_compare() compares two device IDs byte-by-byte and determines both equality and sort order.

    ddi_devid_sizeof() returns the number of bytes allocated for the passed in device ID (devid).

    ddi_devid_init() allocates memory and initializes the opaque device ID structure. This function does not store the devid. If the device id is not derived from the device's firmware, it is the driver's responsibility to store the devid on some reliable store. When a devid_type of either DEVID_SCSI3_WWN, DEVID_SCSI_SERIAL, or DEVID_ENCAP is accepted, an array of bytes (id) must be passed in (nbytes).

    When the devid_type DEVID_FAB is used, the array of bytes (id) must be NULL and the length (nbytes) must be zero. The fabricated device ids, DEVID_FAB will be initialized with the machine's host id and a timestamp.

    Drivers must free the memory allocated by this function, using the ddi_devid_free() function.

    ddi_devid_free() frees the memory allocated for the returned devid by the ddi_devid_init() and devid_str_decode() functions.

    ddi_devid_register() registers the device ID address (devid) with the DDI framework, associating it with the dev_info passed in (dip). The drivers must register device IDs at attach time. See attach(9E).

    ddi_devid_unregister() removes the device ID address from the dev_info passed in (dip). Drivers must use this function to unregister the device ID when devices are being detached. This function does not free the space allocated for the device ID. The driver must free the space allocated for the device ID, using the ddi_devid_free() function. See detach(9E).

    ddi_devid_valid() validates the device ID (devid) passed in. The driver must use this function to validate any fabricated device ID that has been stored on a device.

    ddi_devid_get() returns a pointer to the device ID structure through retdevid if there is already a registered device ID associated with the dev_info node. A driver can use this interface to check and get the device ID associated with the dev_info node. If no device ID is registered for the node then it returns DDI_FAILURE.

    The ddi_devid_str_encode() function encodes a devid and minor_name into a null-terminated ASCII string, returning a pointer to that string. If both a devid and a minor_name are non-null, then a slash (/) is used to separate the devid from the minor_name in the encoded string. If minor_name is null, then only the devid is encoded. If the devid is null, then the special string id0 is returned. Note that you cannot compare the returned string against another string with strcmp() to determine devid equality. The returned string must be freed by calling devid_str_free().

    The ddi_devid_str_decode() function takes a string previously produced by the devid_str_encode(3DEVID) or ddi_devid_str_encode() function and decodes the contained device ID and minor_name, allocating and returning pointers to the extracted parts through the retdevid and retminor_name arguments. If the special devidstr id0 was specified then the returned device ID and minor name will both be null. A non-null returned devid must be freed by the caller through the ddi_devid_free() function. A non-null returned minor name must be freed by calling ddi_devid_str_free().

    The ddi_devid_str_free() function is used to free all strings returned by the ddi_devid functions (the ddi_devid_str_encode() function return value and the returned retminor_name argument).  

    RETURN VALUES

    ddi_devid_init() returns the following values:

    DDI_SUCCESS

    Success.

    DDI_FAILURE

    Out of memory. An invalid devid_type was passed in.

    ddi_devid_valid() returns the following values:

    DDI_SUCCESS

    Valid device ID.

    DDI_FAILURE

    Invalid device ID.

    ddi_devid_register() returns the following values:

    DDI_SUCCESS

    Success.

    DDI_FAILURE

    Failure. The device ID is already registered or the device ID is invalid.

    ddi_devid_valid() returns the following values:

    DDI_SUCCESS

    Valid device ID.

    DDI_FAILURE

    Invalid device ID.

    ddi_devid_get() returns the following values:

    DDI_SUCCESS

    Device ID is present and a pointer to it is returned in retdevid.

    DDI_FAILURE

    No device ID is defined for this dev_info node.

    ddi_devid_compare() returns the following values:

    -1

    The first device ID is less than the second device ID.

    0

    The first device ID is equal to the second device ID.

    1

    The first device ID is greater than the second device ID.

    ddi_devid_sizeof() returns the size of the devid in bytes. If called with a null, then the number of bytes that must be allocated and initialized to determine the size of a complete device ID is returned.

    ddi_devid_str_encode() returns a value of null to indicate failure. Failure can be caused by attempting to encode an invalid devid. If the return value is non-null then the caller must free the returned string by using the devid_str_free() function.

    ddi_devid_str_decode() returns the following values:

    DDI_SUCCESS

    Success.

    DDI_FAILURE

    Failure; the devidstr string was not valid.

     

    CONTEXT

    These functions can be called from a user or kernel context.  

    SEE ALSO

    devid_get(3DEVID), , libdevid(3LIB), attributes(5), attach(9E), detach(9E), kmem_free(9F)

    Writing Device Drivers


     

    Index

    NAME
    SYNOPSIS
    PARAMETERS
    INTERFACE LEVEL
    DESCRIPTION
    RETURN VALUES
    CONTEXT
    SEE ALSO


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру