dax_scan_value(3dax) 맨 페이지 - 윈디하나의 솔라나라

개요

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

dax_scan_value(3dax)

dax_scan_value(3DAX)         DAX Library Functions        dax_scan_value(3DAX)

NAME
       dax_scan_value - compare vector elements with a specified value

SYNOPSIS
       cc [ flag... ] file... -ldax [ library...]

       #include <dax.h>

       dax_result_t
       dax_scan_value(dax_context_t *ctx, uint64_t flags,
           dax_vec_t *src, dax_vec_t *dst, dax_compare_t op, dax_int_t *val);

DESCRIPTION
       This  function  compares each element of src to a single value by using
       the operation specified in op. If an element in src  matches  the  user
       specified  value,  the  corresponding bit in the dst vector is set to 1
       else set to 0. All values are unsigned, with the most  significant  bit
       (MSB)  on  the left and decreasing bit significance moving to the right
       within a byte and to the next higher address byte.


       If src is zipped, translates each code word of src  by  using  the  src
       codec and produces a 1 to 8 byte symbol which it appends to an interme‐
       diate  unzip  stream. It then partitions the unzip stream into elements
       at src->elem_width boundaries, repeats each  element  if  src  is  run-
       length encoded, and compares it with val.


       In  a  variable  width src, the i^th element of the src->aux_data field
       gives the width of the i^th unzipped element.


       In a run-length encoded src, the  i^th  element  of  the  src->aux_data
       field  gives the repeat count of the i^th unzipped element as described
       in the dax_vec_t(3DAX) man page. The aux_data field is  not  in  zipped
       form.


       The op parameter can be set to any one of the following values:


       DAX_EQ    element == value


       DAX_NE    element != value


       DAX_LT    element < value


       DAX_LE    element <= value


       DAX_GT    element > value


       DAX_GE    element >= value




       The src element width can be:

           o      1 to 16 bits or 1 to 16 bytes in libdax version 1


           o      1 to 24 bits or 1 to 16 bytes in libdax version 2



       The  src  format  may be fixed width, variable width, or run-length en‐
       coded.


       The val argument contains a comparison value that is:

           o      1 to 16 bits or 1 to 16 bytes wide in libdax version 1


           o      1 to 24 bits or 1 to 16 bytes wide in libdax version 2



       val has the following structure:


         typedef struct {
                 uint32_t format;
                 uint32_t elem_width;
                 uint64_t dword[3];
         } dax_int_t;




       dword[0] is the high order word, dword[1] is the middle order word, and
       dword[2] is the low order word. Each word is big endian. The  width  of
       the  value  is  given  by  elem_width,  in  units  of bits if (format &
       DAX_BITS),  else  in  units  of  bytes.  The  high  order  bytes  above
       elem_width within the partially used dwords must be 0. Checks this con‐
       dition  only  if  the  DAX_DEBUG_EXTRA debug option is set. Ignores the
       high order dwords that are above elem_width. For a fixed-width src, the
       elem_width value must match the width of the src element.

       Note -




         libdax versions 1 and 2 do not use dword[0].




       The following rules apply when comparing two values that have different
       widths:

           o      Each value is round up to a byte-sized boundary, padded with
                  0 bits at the MSB as needed.


           o      If the rounded widths are the same, apply normal  comparison
                  rules.


           o      If the rounded widths differ, the values are not equal.

               o      Compares  the  left most bytes by using the normal rules
                      up to the width of the shorter value. If they match, the
                      shorter element is smaller.




       The dst->offset field must be set to 0.


       If you omit the DAX_ONES_INDEX flag, the width of the elements  in  dst
       must  be  1  bit and the number of elements in dst must be at least the
       number of elements in src. The latter number  includes  expansion  from
       run-length  encoding.  If  src is run-length encoded, this condition is
       only checked if the DAX_DEBUG_EXTRA debug option is set.  The  data  in
       dst must start on a 64 byte boundary. You must round up the size of the
       data in dst as described in the dax_vec_t(3DAX) man page.


       The following address ranges must not overlap:

           o      Address range of the src->data vector and the dst->data vec‐
                  tor.


           o      Address  range of the src->aux_data vector and the dst->data
                  vector.



       The libdax library checks the overlap in the address ranges only if the
       DAX_DEBUG_EXTRA debug option is set. If violations  of  the  conditions
       occur and are not checked, you will get undefined results.

   Supported Flags
       The flags parameter can be set to one or more following values:


       DAX_ONES_INDEX    Instead  of  writing  a  single 0 or 1 bit to dst for
                         each element in src, write the index of the src  ele‐
                         ment  for  which  the  translation  is 1. The indices
                         start at 0. The width of the elements in dst may be 2
                         or 4 bytes, and correspondingly writes each index  as
                         a  2  or  4-byte big-endian word. If the index is too
                         large for the word, writes the maximum unsigned value
                         for the word in libdax versions 1 and 2.  The  number
                         of elements in dst must be at least the number of el‐
                         ements that translate to 1. If this is not known, use
                         the number of elements in src as an upper bound.

                         Limits the number of elements in src to 2^32 when you
                         specify this flag.


       DAX_CACHE_DST     Writes  results  to  cache. If not specified, invali‐
                         dates the address range for dst  in  the  cache,  and
                         writes the result to the main memory.


       DAX_NOWAIT        If  the  DAX  command  queue is full, returns without
                         submitting the command, instead of waiting to submit.



RETURN VALUES
       Returns the number of matching elements in the dax_result_t count field
       and sets the dax_result_t status field to one of the following values:


       DAX_SUCCESS      Operation completed successfully


       DAX_EINVAL       Invalid argument, detected by libdax


       DAX_EPARSE       Invalid argument, detected by DAX


       DAX_EDATAFMT     The true value of an aux_data element  is  0,  or  the
                        width  of  a zip symbol is less than 1 or greater than
                        8, detected by DAX.


       DAX_EOVERFLOW    Output buffer overflow


       DAX_EADI         ADI mismatch error for an input or output buffer


       DAX_ETHREAD      The calling thread did not create ctx


       DAX_EBUSY        DAX is busy and nowait was requested


       DAX_EINTERNAL    Unknown internal error. Caller must stop using ctx.



EXAMPLES
       The following examples show comparisons between elements with different
       widths. Each expression below is true.

           o      "4" > "3"


           o      "4" > "33"


           o      "4" > "04"


           o      "4" < "40"


USAGE
       The DAX_CACHE_DST flag generally improves performance if  the  size  of
       the  results  is  small relative to the cachesize, and the program uses
       the data soon after the function completes. It may  reduce  performance
       if the result is large and displaces other useful data from the cache.


       The  DAX_ONES_INDEX flag improves performance if the selectivity of the
       scan is low, which means that a small percentage of src  elements  pro‐
       duce  the  comparison  result  as true. The size of dst in bytes can be
       smaller, and software can efficiently select the elements in src by us‐
       ing the indices. When you use a 4-byte index, the dst size  is  smaller
       if  selectivity is less than 1/32. But if selectivity is 100%, the size
       of dst is 32 times larger with DAX_ONES_INDEX.

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 _ Availabilitysystem/library _ Interface StabilityCommit‐
       ted


SEE ALSO
       libdax(3LIB),    dax_vec_t(3DAX),    dax_adi(3DAX),   dax_dtrace(3DAX),
       dax_int_create(3DAX), dax_zip(3DAX)

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