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

개요

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

sysobj_lookup(3sysobj)

sysobj_create(3SYSOBJ)      System Object Database      sysobj_create(3SYSOBJ)

NAME
       sysobj_create, sysobj_destroy, sysobj_find, sysobj_lookup, sysobj_uuid,
       sysobj_uuidstr,  sysobj_classes, sysobj_free - look up, create, and de‐
       stroy system database objects

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

            int      sysobj_create(uuid_t *uuidp, const char *class, sysobj_t *objp);
            int      sysobj_destroy(sysobj_t obj);
            sysobj_t sysobj_dup(sysobj_t obj);
            void     sysobj_free(sysobj_t obj);

            int  sysobj_classes(sysobj_t obj, char ***classes, size_t *nclasses);

            void sysobj_uuid(sysobj_t obj, uuid_t *uuidp);
            void sysobj_uuidstr(sysobj_t obj, char *uuidstr);

            int  sysobj_find(char *uuidstr, sysobj_t *objp);
            int  sysobj_lookup(const char *search, sysobj_t **results,
                size_t *nresults);

DESCRIPTION
       The following sections state the tasks performed by the functions.

   Allocation
       sysobj_create()   The function adds a new object of the  primary  class
                         specified  in the parameter, class. The uuidp parame‐
                         ter specifies the UUID to use for the new object. If,
                         however, the uuidp parameter is NULL, a new  UUID  is
                         generated  and used for the object. The new object is
                         stored in the handle pointed to by the  objp  parame‐
                         ter.


       sysobj_classes()  The  function  returns  a  string  array  of  all the
                         classes that an object belongs to. The primary  class
                         is at index 0 in the array.


       sysobj_destroy()  The  function  removes  an object that was previously
                         inserted into the sysobj database. The object is  de‐
                         scribed  by  the  handle  in  the name parameter. The
                         function frees only the object, and not the handle.


       sysobj_free()     The function frees an unused handle, but does not de‐
                         stroy the database object described by that handle.


       sysobj_dup()      The function duplicates a handle, but does not dupli‐
                         cate or add references to  the  database  object  de‐
                         scribed by that handle.



   UUIDs
       sysobj_uuid()     The function returns a UUID structure associated with
                         an object.


       sysobj_uuidstr()  The  function returns a printable UUID string associ‐
                         ated with an object.



   Lookup
       sysobj_find()    The function looks up an object by  its  UUID  string,
                        and stores a new handle in the space pointed to by the
                        objp parameter.


       sysobj_lookup()  The  function  provides a more powerful way of looking
                        up  objects  than  the  sysobj_find()  function.   The
                        sysobj_lookup() function does this by using search ex‐
                        pressions, described as follows:



   Search Expression
       The search expression used by the sysobj_lookup() function is contained
       as  a string in the search parameter. The search expression is a number
       of sets combined with logical operators. Each set in the search expres‐
       sion is a comma-separated list of comparisons. Each  comparison  has  a
       keyword  describing  whole or part of an alias or property as its right
       hand side, and a value to compare it to as its left hand side. Sets, or
       their combinations can grouped by enclosing them in parentheses  (  and
       ).


       Regular expressions may be used in right hand comparison values.


       A search expression has the following format:



                  search     := set [logicop set ..]
                  logicop    := '&&' | '||' | '--'
                  set        := expression [, expression ...]
                  expression := keyword operator value
                  keyword    := 'aliasclass' | 'aliasspace' | 'aliasval' |
                                'propclass' | 'propname' | 'propval'
                  operator   := '==' | '!=' | '>' | '<' | '>=' | '=:' | '=:' | '=@'
                  value      := string | regexp | integer | floating point | hex





       The components of a search expression are described as follows:


       Keywords

           Keywords can take the following values:


           aliasclass    The class under which an object has a specified alias


           aliasspace    The namespace in which the alias resides


           aliasval      The value of the alias


           propclass     The class of a property


           propname      The name of a property


           propval       The value of a property




       Right hand comparison values

           Right hand comparison values can take the following formats:

               o      Signed integer


               o      Floating point value


               o      HEX value starting with 0x


               o      String value

                      A  string  value  is  surrounded  by single quotes. If a
                      quote needs to be included in the string, it must be es‐
                      caped by a backslash character that in turn must be  es‐
                      caped  by  another backslash character. Any other escape
                      sequence is ignored, and removed from the string.



       Comparison operators

           Comparison operators can take the following values:


           ==    Equal to


           !=    Not equal to


           >     Greater than


           <     Smaller than


           >=    Greater than or equal to


           <=    Smaller than or equal to


           =:    Compares FMRI string values


           =@    Compares devid string values




       Logical operators

           Logical operators can take the following values


           &&    AND (set intersection)


           ||    OR (set union)


           --    DIFF (set difference)





PARAMETERS
       obj         The handle of an existing system database object


       objp        The pointer to the system object handle that will contain a
                   new handle


       class       The primary class of a new object


       uuidp       A pointer to an existing UUID or to a UUID to be returned


       uuidstr     A caller-allocated space that contains or  will  contain  a
                   printable UUID string


       search      The search expression used to match database objects


       results     A pointer to an array of sysobj_t handles


       nresults    The number of elements in the results parameter


       classes     A  pointer to an array that consists of classes in the form
                   of strings, and is allocated and returned to the caller


       nclasses    The number of elements in the classes parameter



RETURN VALUES
       These functions return 0 on success and an error value on failure,  ex‐
       cept  for  the  sysobj_free(), sysobj_uuid() and sysobj_uuidstr() func‐
       tions, which have no return value.

ERRORS
       These functions fail if:


       EINVAL    An invalid argument is specified.


       ENOMEM    Either the library or the system object daemon  cannot  allo‐
                 cate the memory required for the operation.


       EEXIST    A  UUID is passed to the sysobj_create() function when a UUID
                 already exists in the database.


       ENOENT    A look up  performed  by  either  the  sysobj_find()  or  the
                 sysobj_lookup() function returned no results.


       EACCES    The system object db daemon disallowed the operation.




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

EXAMPLES
       Example 1 Looking Up Objects and Printing Their UUIDS



              /*
               * Look up all objects that are in class 'cloud', have a property
               * with a name that ends in 'size', with a value greater
               * than 1024', and print their UUIDs.
               */

               #include <malloc.h>
               #include <sysobj.h>
               #include <uuid/uuid.h>
               #include <stdio.h>
               #include <stdlib.h>

               ...

               size_t nresults, i;
               sysobj_t *results;
               int ret;
               char uuidstr[UUID_PRINTABLE_STRING_LENGTH];

               ret = sysobj_lookup(
                   "aliasclass == 'cloud',propname == '.*size',propval > 1024",
                   &results, &nresults);
               if (ret != 0) {
                   fprintf(stderr, "sysobj_lookup: %s\n", strerror(ret));
                   exit(1);
               }
               for (i = 0; i < nresults; i++) {
                   sysobj_uuidstr(results[i], uuidstr);
                   printf("UUID: %s\n", uuidstr);
                   sysobj_free(results[i]);
               }

               free(results);



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 StabilityVolatile _ MT-LevelMT-Safe


SEE ALSO
       libsysobj(3LIB),       sysobj_add_alias(3SYSOBJ),      sysobj_add_prop‐
       erty(3SYSOBJ), sysobj_event_register(3SYSOBJ),  uuid_clear(3UUID),  at‐
       tributes(7)

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