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

개요

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

sysobj_add_alias(3sysobj)

sysobj_add_alias(3SYSOBJ)   System Object Database   sysobj_add_alias(3SYSOBJ)



NAME
       sysobj_add_alias, sysobj_del_alias, sysobj_get_aliases, sysobj_aliases,
       sysobj_nvl_alias_classes,                  sysobj_nvl_alias_namespaces,
       sysobj_nvl_alias_array  -  add,  remove,  and  get  aliases  for system
       objects

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

            int  sysobj_add_alias(sysobj_t obj, const char *class,
                const char *namespace, const char *alias);
            int  sysobj_del_alias(sysobj_t obj, const char *class,
                const char *namespace, const char *alias);
            int  sysobj_get_aliases(sysobj_t obj, const char *class,
                const char *namespace, char ***aliases, size_t *nelemp);

            int sysobj_aliases(sysobj_t obj, const char *class, const char *namespace,
                nvlist_t **nvlp);

            int sysobj_nvl_alias_classes(nvlist_t *nvl, nvlist_t **nvlp);
            int sysobj_nvl_alias_namespaces(nvlist_t *nvl, const char *class,
                nvlist_t **nvlp);
            int sysobj_nvl_alias_array(nvlist_t *nvl, const char *class,
                const char *namespace, char ***aliases, size_t *naliases);

PARAMETERS
       obj          The handle of an existing system database object


       class        The class under which the object appears in a namespace


       namespace    The namespace containing a specified alias


       alias        The specified alias


       aliases      A pointer to an array of aliases for an object in a speci‐
                    fied class and namespace


       naliases     A pointer to a size_t value in which the number of aliases
                    is returned


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


       nvlp         A  pointer  to  the  nvlist  pointer  in which results are
                    returned



DESCRIPTION
       These functions  add,  remove  and  retrieve  aliases  associated  with
       objects in the system object database.


       An  object  can  have multiple aliases in a certain namespace. For each
       class an object belongs to, the object appears under  an  alias  in  at
       least  one  namespace. The primary class of an object is specified when
       the object is created and causes the object to appear in the predefined
       namespace, "global-uuid".


       The functions in this man page are used as follows:


       sysobj_add_alias()

           A  call  to the sysobj_add_alias() function adds an object to a new
           class, if it doesn't already belong to it.


       sysobj_del_alias() and sysobj_add_alias()

           An object can have multiple aliases in a  namespace.  Additionally,
           adding  an alias to a namespace cannot overwrite any existing alias
           in that namespace. Thus, aliases cannot be changed by  overwriting.
           Therefore,  if  an  alias  needs to be changed, you must explicitly
           delete it with the sysobj_del_alias() function, and then  create  a
           new  alias  with the sysobj_add_alias() function. However, deleting
           aliases is not expected to be a common operation. For more informa‐
           tion, see the 'Client Recommendations' section of the sysobj(7) man
           page.


       sysobj_aliases()

           The sysobj_aliases() function allocates and returns a nested nvlist
           containing alias information for an object. The nvlist is a list of
           <class, nvlist> pairs. Each of the nvlists in the pair is a list of
           <namespace,  aliasarray>  pairs.  Only aliases that match the class
           and namespace parameters are included in the array, aliasarray.  If
           both   the   class   and   namespace   parameters   are  NULL,  the
           sysobj_aliases() function returns all possible class and  namespace
           combinations in the nested nvlist


       sysobj_nvl_alias_classes(), sysobj_nvl_alias_namespaces(), and
       sysobj_nvl_alias_array()

           You must use the following  convenience  functions  to  access  the
           nvlist pairs returned by the sysobj_aliases() function.

               o      The   sysobj_nvl_alias_classes()  function  returns  the
                      nvlist of <class, nvlist> pairs.


               o      The sysobj_nvl_alias_namespaces() function  returns  the
                      nvlist  of <namespace, aliasarray> pairs for a specified
                      class.


               o      The sysobj_nvl_alias_array() function returns the  array
                      of  aliases, aliasarray for a class and namespace combi‐
                      nation.



       sysobj_del_alias() and sysobj_aliases()

           The  sysobj_del_alias()  and  sysobj_aliases()   functions   accept
           extended  regular  expressions in their class and namespace parame‐
           ters. The regular expression is considered to  be  a  match  if  it
           matches  a whole class or namespace name, and not just a substring.
           In regular expression terms, this means that each  regular  expres‐
           sion is implicitly enclosed in ^ and $.


       sysobj_get_aliases()

           The  sysobj_get_aliases() function returns the array of aliases for
           an object in a specified class and  namespace.  The  function  also
           allocates  the space for the array and for each individual alias in
           the form of a string.



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

ERRORS
       These functions will fail if:


       EINVAL    An invalid argument is specified.


       ENOMEM    Either the library or the  system  object  db  daemon  cannot
                 allocate memory required for the operation.


       EEXIST    An alias is added that already existed in the database.


       EACCES    The system object db daemon disallowed the operation.


       ENOENT    No   aliases   matched   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 Look Up an Object by UUID and Print its Aliases



              /*
               * Look up an object by its UUID, and print its aliases in
               * the device-path namespace.
               */

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

               ...

               int
               print_aliases(const char *uuidstr)
               {
                   int ret;
                   sysobj_t obj;
                   nvlist_t *nvl;
                   char **aliases;
                   size_t naliases, i;

                   ret = sysobj_find(uuidstr, &obj);
                   if (ret != 0)
                       return (ret);

                   /*
                    * Method one: if we're just interested in alias(es) in
                    * one class/namespace, use sysobj_get_aliases directly.
                    */
                   ret = sysobj_get_aliases(obj, "device", "device-path",
                       &aliases, &naliases);
                   if (ret != 0)
                       return (ret);

                   printf("aliases 1:\n");
                   for (i = 0; i < naliases; i++) {
                       printf("alias %u: %s\n", (uint_t)i, aliases[i]);
                   }

                   /*
                    * Must free all array elements as well as the array itself.
                    */
                   for (i = 0; i < naliases; i++) {
                       free(aliases[i]);
                   }
                   free(aliases);

                   /*
                    * Method 2: get all aliases and then extract the ones
                    * we're interested in from the returned nvlist.
                    *
                    * Step 1: get all aliases for this object.
                    */
                   ret = sysobj_aliases(obj, NULL, NULL, &nvl);
                   if (ret != 0)
                       return (ret);

                   /*
                    * Step 2: Grab the aliases in the 'device-path' namespace where
                    * this object appears in the class 'device'.
                    */
                   ret = sysobj_nvl_alias_array("device", "device-path", &aliases,
                       &naliases);
                   if (ret != 0) {
                       nvlist_free(nvl);
                       return (ret);
                   }

                   printf("aliases 2:\n");
                   for (i = 0; i < naliases; i++) {
                       printf("alias %u: %s\n", (uint_t)i, aliases[i]);
                   }

                   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_add_property(3SYSOBJ),
       sysobj_create(3SYSOBJ), sysobj_event_register(3SYSOBJ), attributes(7)



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