sysobj_add_property(3sysobj) 맨 페이지 - 윈디하나의 솔라나라

개요

섹션
맨 페이지 이름
검색(S)

sysobj_add_property(3sysobj)

sysobj_...property(3SYSOBJ) System Object Database sysobj_...property(3SYSOBJ)

NAME
       sysobj_add_property,       sysobj_del_property,      sysobj_properties,
       sysobj_nvl_prop_classes, sysobj_nvl_prop_list,  sysobj_nvl_prop_nvpair,
       sysobj_nvl_prop_value - add, delete, and query properties of system ob‐
       ject database objects

SYNOPSIS
            cc [ flag... ] file... -lsysobj [ library... ]
            #include <libnvpair.h>
            #include <sysobj.h>

            int  sysobj_add_property(sysobj_t obj, const char *class,
                const char *pname, data_type_t type, ...);
            int  sysobj_del_property(sysobj_t obj, const char *class,
                const char *pname);
            int  sysobj_get_property(sysobj_t obj, const char *class,
                const char *pname, data_type_t type, ...);

            int sysobj_properties(sysobj_t obj, const char *class, const char *pname,
                nvlist_t **nvlp);

            int sysobj_nvl_prop_classes(nvlist_t *nvl, nvlist_t **nvlp);
            int sysobj_nvl_prop_list(nvlist_t *nvl, const char *class,
                nvlist_t **nvlp);
            int sysobj_nvl_prop_value(nvlist_t *nvl, const char *class,
                const char *pname, data_type_t type, ...);
            int sysobj_nvl_prop_nvpair(nvlist_t *nvl, const char *class,
                const char *pname, nvpair_t **nvp);

DESCRIPTION
       These  functions  add, remove and retrieve properties of objects in the
       system object database.


       Properties are <propname, value> pairs, in which propname is a  string,
       and  value  is  of the type, data_type_t. For a list of possible values
       for data_type_t, see the nvpair_type(3NVPAIR) man page. Properties  are
       divided into classes. A class is identified by a string.


       The functions are described as follows:


       sysobj_add_property()

           The  function  adds a property of a specified class to an object in
           the database. If the property already exists,  the  function  over‐
           writes  it.  Depending on the data type specified, the value passed
           to the sysobj_add_property() function consists of  either  one,  or
           two parameters described as follows:

               o      For  array  types, a pointer to the array and the length
                      of the array, size_t are used.


               o      For integer, boolean and  double  types,  the  value  is
                      passed.


               o      For an nvlist type, a pointer to an nvlist is passed.



       sysobj_del_property()

           The function deletes the specified property of the object specified
           in the name argument, from the database.


       sysobj_properties()

           The function returns a nested nvlist of properties. The nvlist fur‐
           ther  consists  of  <class, nvlist> pairs for each class of proper‐
           ties. The nvlist in each such <class, nvlist>  pair  is  itself  an
           nvlist of <propname, value> pairs.

           Convenience functions are provided to access the nvlist returned by
           the  sysobj_properties() function. For array types and strings, the
           convenience functions return pointers  to  data  contained  in  the
           nvlist.  This means that the data is valid as long as the nvlist is
           not freed.


       sysobj_nvl_prop_classes()

           The function returns an nvlist of <class, nvlist> pairs.


       sysobj_nvl_prop_list()

           The function returns the list of  <propname,  value>  pairs  for  a
           specified class.


       sysobj_nvl_prop_value()

           The  function retrieves the value of a property from the nvlist re‐
           turned by the sysobj_properties() function. The type  is  specified
           in the type parameter. For non-array types, the parameter after the
           type  parameter  is  a  pointer to variable of that type. For array
           types, there are two additional parameters: a pointer to  an  array
           and a pointer to a size_t.


       sysobj_get_property()

           The function retrieves just one property. The output parameters are
           specified in the same way for the sysobj_nvl_prop_value() function.
           Unlike  the  sysobj_nvl_prop_value() function, the sysobj_get_prop‐
           erty() allocates space if needed for the type of property,  whether
           strings  or  arrays. Additionally, for string arrays and nvlist ar‐
           rays, each individual array element that is returned  is  allocated
           separately.


       sysobj_del_property() and sysobj_property()

           The  functions  accept  extended regular expressions in their class
           and pname parameters. The regular expression is considered to be  a
           match  if it matches the whole class or property name, and not just
           a substring.



PARAMETERS
       obj      The handle of an existing system database object


       class    The class of one or more properties


       pname    The name of a property


       type     The data type of a property


       nvl      An nvlist pointer, returned by the  sysobj_properties()  func‐
                tion and passed to the sysobj_nvl() convenience functions


       nvlp     A pointer to an nvlist pointer, in which results are returned


       nvp      A  pointer to an nvpair pointer, in which a <name, value> pair
                property is returned



RETURN VALUES
       These functions return 0 on success and an error value on failure.

ERRORS
       These functions fail if:


       EINVAL    An invalid argument is specified.


       ENOMEM    Either the library or the system object db daemon cannot  al‐
                 locate the memory required for the operation


       EEXIST    The alias added already exists in the database.


       EACCES    The system object db daemon disallowed the operation.


       ENOENT    No    aliases    match   the   parameters   passed   to   the
                 sysobj_aliases() function




       Passing invalid pointers or object handles to any  of  these  functions
       results in undefined behavior.

EXAMPLES
       Example 1 Adding and Printing Object Properties



              /*
               * Add properties to an object.
               * Print some properties associated with an object.
               */

               #include <libnvpair.h>
               #include <malloc.h>
               #include <sysobj.h>
               #include <stdio.h>
               #include <stdlib.h>

               ...

               /*
                * Assume an object has a set of properties, amongst which are:
                * class "object data" name "intprop"
                * class "random stuff" name "bytes"
                * class "random stuff" name "double"
                * class "other" name "strings"
                */
               int
               add_properties(sysobj_t obj, int64_t int64val, uint8_t *bytes,
                   size_t nbytes, double dval, char **strings, size_t nstrings)
               {
                   int ret;

                   ret = sysobj_add_property(name, "object data", "intprop",
                       DATA_TYPE_INT64, int64val);
                   if (ret != 0)
                       return (ret);

                   ret = sysobj_add_property(name, "random stuff", "bytes",
                       DATA_TYPE_UINT8_ARRAY, bytes, nbytes);
                   if (ret != 0)
                       return (ret);

                   ret = sysobj_add_property(name, "random stuff", "double",
                       DATA_TYPE_DOUBLE, dval);
                   if (ret != 0)
                       return (ret);

                   ret = sysobj_add_property(name, "other", "strings",
                       DATA_TYPE_STRING_ARRAY, strings, nstrings);
                   if (ret != 0)
                       return (ret);
               }

               int
               print_some_properties(sysobj_t obj)
               {
                   int ret;
                   nvlist_t *nvl;
                   size_t nbytes, nstrings, i;
                   int64_t int64val;
                   double dval;
                   uint8_t *bytes;
                   char **strings;

                   /*
                    * If the caller is just interested in one property,
                    * this is the easiest way to do it.
                    */
                    ret = sysobj_get_property(obj, "object data", "intprop",
                        DATA_TYPE_INT64, &int64val);
                   if (ret == 0)
                       printf("int64val 1: %lld\n", (long long)int64val);

                   /*
                    * Do the same as above, but retrieve the entire list
                    * of properties, extracting the one we want. The list
                    * could be used to look up other properties too.
                    */
                   ret = sysobj_properties(obj, NULL, NULL, &nvl);
                   if (ret != 0)
                       return (ret);

                   /*
                    * Retrieve the 'intprop' property.
                    */
                   ret = sysobj_nvl_prop_value(nvl, "object data", "intprop",
                       DATA_TYPE_INT64, &int64val);
                   if (ret == 0)
                       printf("int64val 2: %lld\n", (long long)int64val);

                   nvlist_free(nvl);

                   /*
                    * Alternatively, here's how to retrieve some properties
                    * that are in the same class by retrieving the list
                    * for one class first, and then extracting the properties
                    * that we want.
                    */

                   ret = sysobj_properties(obj, "random stuff", NULL, &nvl);
                   if (ret != 0)
                       return (ret);

                   ret = sysobj_nvl_prop_value(nvl, "random stuff", "bytes",
                       DATA_TYPE_UINT8_ARRAY, &bytes, &nbytes);
                   if (ret == 0) {
                       printf("bytes:\n");
                       for (i = 0; i < nbytes; i++) {
                           printf("%02x ", bytes[i]);
                       }
                       printf("\n");
                   }

                   ret = sysobj_nvl_prop_value(nvl, "random stuff", "bytes",
                       DATA_TYPE_DOUBLE, &dval);
                   if (ret == 0)
                       printf("dval: %lf\n", dval);

                   nvlist_free(nvl);

                   return (0);

               }



ATTRIBUTES
       See attributes(7) for descriptions of the following attributes:

       tab()  box; cw(2.75i) |cw(2.75i) lw(2.75i) |lw(2.75i) ATTRIBUTE TYPEAT‐
       TRIBUTE VALUE _ Interface StabilityCommitted _ MT-LevelMT-Safe


SEE ALSO
       libnvpair(3LIB),        libsysobj(3LIB),        sysobj_create(3SYSOBJ),
       sysobj_event_register(3SYSOBJ), attributes(7)

Oracle Solaris 11.4               27 Nov 2017      sysobj_...property(3SYSOBJ)
맨 페이지 내용의 저작권은 맨 페이지 작성자에게 있습니다.
RSS ATOM XHTML 5 CSS3