From: sleybo Date: Sun, 16 Apr 2006 14:43:39 +0000 (+0000) Subject: [DOCS] add html files generated by robodoc from ibal/complib headers files X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=5c4dff0971423232cb11dcf79c2e7219bc46014e;p=~shefty%2Frdma-win.git [DOCS] add html files generated by robodoc from ibal/complib headers files git-svn-id: svn://openib.tc.cornell.edu/gen1@310 ad392aa1-c5ef-ae45-8dd8-e69d62a5ef86 --- diff --git a/trunk/docs/complib/cl_async_proc_h.html b/trunk/docs/complib/cl_async_proc_h.html new file mode 100644 index 00000000..933285ab --- /dev/null +++ b/trunk/docs/complib/cl_async_proc_h.html @@ -0,0 +1,309 @@ + + + + +./inc_doc/complib/cl_async_proc_h.html + + + + +Generated from ./inc/complib/cl_async_proc.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Modules] +Component Library/Asynchronous Processor

+ +

[top][index]

+

NAME

+
       Asynchronous Processor
+
+

DESCRIPTION

+
       The asynchronous processor provides threads for executing queued callbacks.
+
+       The threads in the asynchronous processor wait for callbacks to be queued.
+
+       The asynchronous processor functions operate on a cl_async_proc_t structure
+       which should be treated as opaque and manipulated only through the provided
+       functions.
+
+

SEE ALSO

+
       Structures:
+               cl_async_proc_t, cl_async_proc_item_t
+
+       Initialization:
+               cl_async_proc_construct, cl_async_proc_init, cl_async_proc_destroy
+
+       Manipulation:
+               cl_async_proc_queue
+
+
+
+ +

[Functions] +Component Library: Asynchronous Processor/cl_async_proc_construct

+ +

[top][index]

+

NAME

+
       cl_async_proc_construct
+
+

DESCRIPTION

+
       The cl_async_proc_construct function initializes the state of a
+       thread pool.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_async_proc_construct(
+        IN      cl_async_proc_t* const  p_async_proc );
+
+

PARAMETERS

+
       p_async_proc
+               [in] Pointer to an asynchronous processor structure.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_async_proc_destroy without first calling
+       cl_async_proc_init.
+
+       Calling cl_async_proc_construct is a prerequisite to calling any other
+       thread pool function except cl_async_proc_init.
+
+

SEE ALSO

+
       Asynchronous Processor, cl_async_proc_init, cl_async_proc_destroy
+
+
+
+ +

[Functions] +Component Library: Asynchronous Processor/cl_async_proc_destroy

+ +

[top][index]

+

NAME

+
       cl_async_proc_destroy
+
+

DESCRIPTION

+
       The cl_async_proc_destroy function performs any necessary cleanup
+       for a thread pool.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_async_proc_destroy(
+        IN      cl_async_proc_t* const  p_async_proc );
+
+

PARAMETERS

+
       p_async_proc
+               [in] Pointer to an asynchronous processor structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function blocks until all threads exit, and must therefore not
+       be called from any of the asynchronous processor's threads. Because of
+       its blocking nature, callers of cl_async_proc_destroy must ensure that
+       entering a wait state is valid from the calling thread context.
+
+       This function should only be called after a call to
+       cl_async_proc_construct or cl_async_proc_init.
+
+

SEE ALSO

+
       Asynchronous Processor, cl_async_proc_construct, cl_async_proc_init
+
+
+
+ +

[Functions] +Component Library: Asynchronous Processor/cl_async_proc_init

+ +

[top][index]

+

NAME

+
       cl_async_proc_init
+
+

DESCRIPTION

+
       The cl_async_proc_init function initialized an asynchronous processor
+       for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_async_proc_init(
+        IN      cl_async_proc_t* const  p_async_proc,
+        IN      const uint32_t                  thread_count,
+        IN      const char* const               name );
+
+

PARAMETERS

+
       p_async_proc
+               [in] Pointer to an asynchronous processor structure to initialize.
+
+       thread_count
+               [in] Number of threads to be managed by the asynchronous processor.
+
+       name
+               [in] Name to associate with the threads.  The name may be up to 16
+               characters, including a terminating null character.  All threads
+               created in the asynchronous processor have the same name.
+
+ RETURN VALUES
+       CL_SUCCESS if the asynchronous processor creation succeeded.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to inititalize
+       the asynchronous processor.
+
+       CL_ERROR if the threads could not be created.
+
+

NOTES

+
       cl_async_proc_init creates and starts the specified number of threads.
+       If thread_count is zero, the asynchronous processor creates as many
+       threads as there are processors in the system.
+
+

SEE ALSO

+
       Asynchronous Processor, cl_async_proc_construct, cl_async_proc_destroy,
+       cl_async_proc_queue
+
+
+
+ +

[Structures] +Component Library: Asynchronous Processor/cl_async_proc_item_t

+ +

[top][index]

+

NAME

+
       cl_async_proc_item_t
+
+

DESCRIPTION

+
       Asynchronous processor item structure passed to the cl_async_proc_queue
+       function to queue a callback for execution.
+
+

SYNOPSIS

+
typedef struct _cl_async_proc_item
+{
+        cl_pool_item_t                  pool_item;
+        cl_pfn_async_proc_cb_t  pfn_callback;
+
+} cl_async_proc_item_t;
+
+

FIELDS

+
       pool_item
+               Pool item for queuing the item to be invoked by the asynchronous
+               processor's threads.  This field is defined as a pool item to
+               allow items to be managed by a pool.
+
+       pfn_callback
+               Pointer to a callback function to invoke when the item is dequeued.
+
+

SEE ALSO

+
       Asynchronous Processor, cl_async_proc_queue, cl_pfn_async_proc_cb_t
+
+
+
+ +

[Functions] +Component Library: Asynchronous Processor/cl_async_proc_queue

+ +

[top][index]

+

NAME

+
       cl_async_proc_queue
+
+

DESCRIPTION

+
       The cl_async_proc_queue function queues a callback to an asynchronous
+       processor.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_async_proc_queue(
+        IN      cl_async_proc_t* const          p_async_proc,
+        IN      cl_async_proc_item_t* const     p_item );
+
+

PARAMETERS

+
       p_async_proc
+               [in] Pointer to an asynchronous processor structure to initialize.
+
+       p_item
+               [in] Pointer to an asynchronous processor item to queue for execution.
+               The callback and context fields of the item must be valid.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       Asynchronous Processor, cl_async_proc_init, cl_pfn_async_proc_cb_t
+
+
+
+ +

[Structures] +Component Library: Asynchronous Processor/cl_async_proc_t

+ +

[top][index]

+

NAME

+
       cl_async_proc_t
+
+

DESCRIPTION

+
       Asynchronous processor structure.
+
+       The cl_async_proc_t structure should be treated as opaque, and should be
+       manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_async_proc
+{
+        cl_thread_pool_t        thread_pool;
+        cl_qlist_t                      item_queue;
+        cl_spinlock_t           lock;
+        cl_state_t                      state;
+
+} cl_async_proc_t;
+
+

FIELDS

+
       item_pool
+               Pool of items storing the callback function and contexts to be invoked
+               by the asynchronous processor's threads.
+
+       thread_pool
+               Thread pool that will invoke the callbacks.
+
+       item_queue
+               Queue of items that the threads should process.
+
+       lock
+               Lock used to synchronize access to the item pool and queue.
+
+

SEE ALSO

+
       Asynchronous Processor
+
+
+
+ +

[Definitions] +Component Library: Asynchronous Processor/cl_pfn_async_proc_cb_t

+ +

[top][index]

+

NAME

+
       cl_pfn_async_proc_cb_t
+
+

DESCRIPTION

+
       The cl_pfn_async_proc_cb_t function type defines the prototype for
+       callbacks queued to and invoked by the asynchronous processor.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_async_proc_cb_t)(
+        IN      struct _cl_async_proc_item      *p_item );
+
+

PARAMETERS

+
       p_item
+               Pointer to the cl_async_proc_item_t structure that was queued in
+               a call to cl_async_proc_queue.
+
+

NOTES

+
       This function type is provided as function prototype reference for the
+       function provided by users as a parameter to the cl_async_proc_queue
+       function.
+
+

SEE ALSO

+
       Asynchronous Processor, cl_async_proc_item_t
+
+
+ + diff --git a/trunk/docs/complib/cl_atomic_h.html b/trunk/docs/complib/cl_atomic_h.html new file mode 100644 index 00000000..eaf891f7 --- /dev/null +++ b/trunk/docs/complib/cl_atomic_h.html @@ -0,0 +1,272 @@ + + + + +./inc_doc/complib/cl_atomic_h.html + + + + +Generated from ./inc/complib/cl_atomic.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Modules] +Component Library/Atomic Operations

+ +

[top][index]

+

NAME

+
       Atomic Operations
+
+

DESCRIPTION

+
       The Atomic Operations functions allow callers to operate on
+       32-bit signed integers in an atomic fashion.
+
+
+
+ +

[Functions] +Component Library: Atomic Operations/cl_atomic_add

+ +

[top][index]

+

NAME

+
       cl_atomic_add
+
+

DESCRIPTION

+
       The cl_atomic_add function atomically adds a value to a
+       32-bit signed integer and returns the resulting value.
+
+

SYNOPSIS

+
CL_EXPORT int32_t CL_API
+cl_atomic_add(
+        IN      atomic32_t* const       p_value,
+        IN      const int32_t           increment );
+
+

PARAMETERS

+
       p_value
+               [in] Pointer to a 32-bit integer that will be added to.
+
+       increment
+               [in] Value by which to increment the integer pointed to by p_value.
+
+

RETURN VALUE

+
       Returns the value pointed to by p_value after the addition.
+
+

NOTES

+
       The provided increment is added to the value and the result returned in
+       one atomic operation.
+
+       cl_atomic_add maintains data consistency without requiring additional
+       synchronization mechanisms in multi-threaded environments.
+
+

SEE ALSO

+
       Atomic Operations, cl_atomic_inc, cl_atomic_dec, cl_atomic_sub,
+       cl_atomic_xchg, cl_atomic_comp_xchg
+
+
+
+ +

[Functions] +Component Library: Atomic Operations/cl_atomic_comp_xchg

+ +

[top][index]

+

NAME

+
       cl_atomic_comp_xchg
+
+

DESCRIPTION

+
       The cl_atomic_comp_xchg function atomically compares a 32-bit signed
+       integer to a desired value, sets that integer to the
+       specified value if equal, and returns the initial value.
+
+

SYNOPSIS

+
CL_EXPORT int32_t CL_API
+cl_atomic_comp_xchg(
+        IN      atomic32_t* const       p_value,
+        IN      const int32_t           compare,
+        IN      const int32_t           new_value );
+
+

PARAMETERS

+
       p_value
+               [in] Pointer to a 32-bit integer to exchange with new_value.
+
+       compare
+               [in] Value to compare to the value pointed to by p_value.
+
+       new_value
+               [in] Value to assign if the value pointed to by p_value is equal to
+               the value specified by the compare parameter.
+
+

RETURN VALUE

+
       Returns the initial value of the variable pointed to by p_value.
+
+

NOTES

+
       The value pointed to by p_value is compared to the value specified by the
+       compare parameter.  If the two values are equal, the p_value variable is
+       set to new_value.  The initial value pointed to by p_value is returned.
+
+       cl_atomic_comp_xchg maintains data consistency without requiring additional
+       synchronization mechanisms in multi-threaded environments.
+
+

SEE ALSO

+
       Atomic Operations, cl_atomic_inc, cl_atomic_dec, cl_atomic_add,
+       cl_atomic_sub, cl_atomic_xchg
+
+
+
+ +

[Functions] +Component Library: Atomic Operations/cl_atomic_dec

+ +

[top][index]

+

NAME

+
       cl_atomic_dec
+
+

DESCRIPTION

+
       The cl_atomic_dec function atomically decrements a 32-bit signed
+       integer and returns the decremented value.
+
+

SYNOPSIS

+
CL_EXPORT int32_t CL_API
+cl_atomic_dec(
+        IN      atomic32_t* const       p_value );
+
+

PARAMETERS

+
       p_value
+               [in] Pointer to a 32-bit integer to decrement.
+
+

RETURN VALUE

+
       Returns the decremented value pointed to by p_value.
+
+

NOTES

+
       The provided value is decremented and its value returned in one atomic
+       operation.
+
+       cl_atomic_dec maintains data consistency without requiring additional
+       synchronization mechanisms in multi-threaded environments.
+
+

SEE ALSO

+
       Atomic Operations, cl_atomic_inc, cl_atomic_add, cl_atomic_sub,
+       cl_atomic_xchg, cl_atomic_comp_xchg
+
+
+
+ +

[Functions] +Component Library: Atomic Operations/cl_atomic_inc

+ +

[top][index]

+

NAME

+
       cl_atomic_inc
+
+

DESCRIPTION

+
       The cl_atomic_inc function atomically increments a 32-bit signed
+       integer and returns the incremented value.
+
+

SYNOPSIS

+
CL_EXPORT int32_t CL_API
+cl_atomic_inc(
+        IN      atomic32_t* const       p_value );
+
+

PARAMETERS

+
       p_value
+               [in] Pointer to a 32-bit integer to increment.
+
+

RETURN VALUE

+
       Returns the incremented value pointed to by p_value.
+
+

NOTES

+
       The provided value is incremented and its value returned in one atomic
+       operation.
+
+       cl_atomic_inc maintains data consistency without requiring additional
+       synchronization mechanisms in multi-threaded environments.
+
+

SEE ALSO

+
       Atomic Operations, cl_atomic_dec, cl_atomic_add, cl_atomic_sub,
+       cl_atomic_xchg, cl_atomic_comp_xchg
+
+
+
+ +

[Functions] +Component Library: Atomic Operations/cl_atomic_sub

+ +

[top][index]

+

NAME

+
       cl_atomic_sub
+
+

DESCRIPTION

+
       The cl_atomic_sub function atomically subtracts a value from a
+       32-bit signed integer and returns the resulting value.
+
+

SYNOPSIS

+
CL_EXPORT int32_t CL_API
+cl_atomic_sub(
+        IN      atomic32_t* const       p_value,
+        IN      const int32_t           decrement );
+
+

PARAMETERS

+
       p_value
+               [in] Pointer to a 32-bit integer that will be subtracted from.
+
+       decrement
+               [in] Value by which to decrement the integer pointed to by p_value.
+
+

RETURN VALUE

+
       Returns the value pointed to by p_value after the subtraction.
+
+

NOTES

+
       The provided decrement is subtracted from the value and the result
+       returned in one atomic operation.
+
+       cl_atomic_sub maintains data consistency without requiring additional
+       synchronization mechanisms in multi-threaded environments.
+
+

SEE ALSO

+
       Atomic Operations, cl_atomic_inc, cl_atomic_dec, cl_atomic_add,
+       cl_atomic_xchg, cl_atomic_comp_xchg
+
+
+
+ +

[Functions] +Component Library: Atomic Operations/cl_atomic_xchg

+ +

[top][index]

+

NAME

+
       cl_atomic_xchg
+
+

DESCRIPTION

+
       The cl_atomic_xchg function atomically sets a value of a
+       32-bit signed integer and returns the initial value.
+
+

SYNOPSIS

+
CL_EXPORT int32_t CL_API
+cl_atomic_xchg(
+        IN      atomic32_t* const       p_value,
+        IN      const int32_t           new_value );
+
+

PARAMETERS

+
       p_value
+               [in] Pointer to a 32-bit integer to exchange with new_value.
+
+       new_value
+               [in] Value to assign.
+
+

RETURN VALUE

+
       Returns the initial value pointed to by p_value.
+
+

NOTES

+
       The provided value is exchanged with new_value and its initial value
+       returned in one atomic operation.
+
+       cl_atomic_xchg maintains data consistency without requiring additional
+       synchronization mechanisms in multi-threaded environments.
+
+

SEE ALSO

+
       Atomic Operations, cl_atomic_inc, cl_atomic_dec, cl_atomic_add,
+       cl_atomic_sub, cl_atomic_comp_xchg
+
+
+ + diff --git a/trunk/docs/complib/cl_byteswap_h.html b/trunk/docs/complib/cl_byteswap_h.html new file mode 100644 index 00000000..8a6bab87 --- /dev/null +++ b/trunk/docs/complib/cl_byteswap_h.html @@ -0,0 +1,500 @@ + + + + +./inc_doc/complib/cl_byteswap_h.html + + + + +Generated from ./inc/complib/cl_byteswap.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Modules] +Component Library/Byte Swapping

+ +

[top][index]

+

NAME

+
       Byte Swapping
+
+

DESCRIPTION

+
       The byte swapping functions and macros allow swapping bytes from network
+       byte order to host byte order.
+
+       All data transmitted between systems should be in network byte order.
+       In order to utilize such data, it must be converted to host byte order
+       before use.
+
+

SEE ALSO

+
       Functions:
+               cl_ntoh16, cl_hton16, cl_ntoh32, cl_hton32, cl_ntoh64, cl_hton64,
+               cl_ntoh
+
+       Macros:
+               CL_NTOH16, CL_HTON16, CL_NTOH32, CL_HTON32, CL_NTOH64, CL_HTON64
+
+
+
+ +

[Definitions] +Component Library: Byte Swapping/CL_HTON16

+ +

[top][index]

+

NAME

+
       CL_HTON16
+
+

DESCRIPTION

+
       The CL_HTON16 macro converts a 16-bit value from host byte order to
+       network byte order.  The CL_HTON16 macro will cause constant values to be
+       swapped by the pre-processor.  For variables, CL_HTON16 is less efficient
+       than the cl_hton16 function.
+
+

SYNOPSIS

+
*       CL_HTON16( val );
+
+

PARAMETERS

+
       val
+               [in] 16-bit value to swap from host byte order to network byte order.
+
+

RESULT

+
       Value of val converted to network byte order.
+
+

NOTES

+
       This macro is analogous to CL_NTOH16.
+
+

SEE ALSO

+
       Byte Swapping, CL_NTOH16, CL_HTON32, CL_HTON64,
+       cl_hton16, cl_hton32, cl_hton64, cl_ntoh
+
+
+
+ +

[Functions] +Component Library: Byte Swapping/cl_hton16

+ +

[top][index]

+

NAME

+
       cl_hton16
+
+

DESCRIPTION

+
       The cl_hton16 function converts a 16-bit value from host byte order to
+       network byte order.
+
+

SYNOPSIS

+
*       uint16_t
+*       cl_hton16(
+*               IN      const uint16_t  val );
+
+

PARAMETERS

+
       val
+               [in] Value to swap from host byte order to network byte order .
+
+

RETURN VALUE

+
       Value of val converted to network byte order.
+
+

NOTES

+
       This function is analogous to cl_ntoh16.
+
+

SEE ALSO

+
       Byte Swapping, cl_ntoh16, cl_hton32, cl_hton64, cl_ntoh
+
+
+
+ +

[Definitions] +Component Library: Byte Swapping/CL_HTON32

+ +

[top][index]

+

NAME

+
       CL_HTON32
+
+

DESCRIPTION

+
       The CL_HTON32 macro converts a 32-bit value from host byte order to
+       network byte order.  The CL_HTON32 macro will cause constant values to be
+       swapped by the pre-processor.  For variables, CL_HTON32 is less efficient
+       than the cl_hton32 function.
+
+

SYNOPSIS

+
*       CL_HTON32( val );
+
+

PARAMETERS

+
       val
+               [in] 32-bit value to swap from host byte order to network byte order.
+
+

RESULT

+
       Value of val converted to network byte order.
+
+

NOTES

+
       This macro is analogous to CL_NTOH32.
+
+

SEE ALSO

+
       Byte Swapping, CL_NTOH32, CL_HTON16, CL_HTON64,
+       cl_hton16, cl_hton32, cl_hton64, cl_ntoh
+
+
+
+ +

[Functions] +Component Library: Byte Swapping/cl_hton32

+ +

[top][index]

+

NAME

+
       cl_hton32
+
+

DESCRIPTION

+
       The cl_hton32 function converts a 32-bit value from host byte order to
+       network byte order.
+
+

SYNOPSIS

+
*       uint32_t
+*       cl_hton32(
+*               IN      const uint32_t  val );
+
+

PARAMETERS

+
       val
+               [in] Value to swap from host byte order to network byte order .
+
+

RETURN VALUE

+
       Value of val converted to network byte order.
+
+

NOTES

+
       This function is analogous to cl_ntoh32.
+
+

SEE ALSO

+
       Byte Swapping, cl_ntoh32, cl_hton16, cl_hton64, cl_ntoh
+
+
+
+ +

[Definitions] +Component Library: Byte Swapping/CL_HTON64

+ +

[top][index]

+

NAME

+
       CL_HTON64
+
+

DESCRIPTION

+
       The CL_HTON64 macro converts a 64-bit value from host byte order to
+       network byte order.  The CL_HTON64 macro will cause constant values to be
+       swapped by the pre-processor.  For variables, CL_HTON64 is less efficient
+       than the cl_hton64 function.
+
+

SYNOPSIS

+
*       CL_HTON64( val );
+
+

PARAMETERS

+
       val
+               [in] 64-bit value to swap from host byte order to network byte order.
+
+

RESULT

+
       Value of val converted to network byte order.
+
+

NOTES

+
       This macro is analogous to CL_NTOH64.
+
+

SEE ALSO

+
       Byte Swapping, CL_NTOH64, CL_HTON16, CL_HTON32,
+       cl_hton16, cl_hton32, cl_hton64, cl_ntoh
+
+
+
+ +

[Functions] +Component Library: Byte Swapping/cl_hton64

+ +

[top][index]

+

NAME

+
       cl_hton64
+
+

DESCRIPTION

+
       The cl_hton64 function converts a 64-bit value from host byte order to
+       network byte order.
+
+

SYNOPSIS

+
*       uint64_t
+*       cl_hton64(
+*               IN      const uint64_t  val );
+
+

PARAMETERS

+
       val
+               [in] Value to swap from host byte order to network byte order .
+
+

RETURN VALUE

+
       Value of val converted to network byte order.
+
+

NOTES

+
       This function is analogous to cl_ntoh64.
+
+

SEE ALSO

+
       Byte Swapping, cl_ntoh64, cl_hton16, cl_hton32, cl_ntoh
+
+
+
+ +

[Functions] +Component Library: Byte Swapping/cl_ntoh

+ +

[top][index]

+

NAME

+
       cl_ntoh
+
+

DESCRIPTION

+
       The cl_ntoh function converts a value from network byte order to
+       host byte order.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_ntoh(
+        OUT     char* const                     p_dest,
+        IN      const char* const       p_src,
+        IN      const uint8_t           size )
+{
+#if CPU_LE
+        uint8_t i;
+        char    temp;
+
+        if( p_src == p_dest )
+        {
+                /* Swap in place if source and destination are the same. */
+                for( i = 0; i < size / 2; i++ )
+                {
+                        temp = p_dest[i];
+                        p_dest[i] = p_src[size - 1 - i];
+                        p_dest[size - 1 - i] = temp;
+                }
+        }
+        else
+        {
+                for( i = 0; i < size; i++ )
+                        p_dest[i] = p_src[size - 1 - i];
+        }
+#else
+        /*
+         * If the source and destination are not the same, copy the source to
+         * the destination.
+         */
+        if( p_src != p_dest )
+                cl_memcpy( p_dest, p_src, size );
+#endif
+}
+
+

PARAMETERS

+
       p_dest
+               [in] Pointer to a byte array to contain the converted value of p_src.
+
+       p_src
+               [in] Pointer to a byte array to be converted from network byte
+               ordering.
+
+       size
+               [in] Number of bytes to swap.p_dest
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_ntoh can perform in place swapping if both p_src and p_dest point to
+       the same buffer.
+
+

SEE ALSO

+
       Byte Swapping, cl_ntoh16, cl_ntoh32, cl_ntoh64
+
+
+
+ +

[Definitions] +Component Library: Byte Swapping/CL_NTOH16

+ +

[top][index]

+

NAME

+
       CL_NTOH16
+
+

DESCRIPTION

+
       The CL_NTOH16 macro converts a 16-bit value from network byte order to
+       host byte order.  The CL_NTOH16 macro will cause constant values to be
+       swapped by the pre-processor.  For variables, CL_NTOH16 is less efficient
+       than the cl_ntoh16 function.
+
+

SYNOPSIS

+
*       CL_NTOH16( val );
+
+

PARAMETERS

+
       val
+               [in] 16-bit value to swap from network byte order to host byte order.
+
+

RESULT

+
       Value of val converted to host byte order.
+
+

NOTES

+
       This macro is analogous to CL_HTON16.
+
+

SEE ALSO

+
       Byte Swapping, CL_HTON16, CL_NTOH32, CL_NTOH64,
+       cl_ntoh16, cl_ntoh32, cl_ntoh64, cl_ntoh
+
+
+
+ +

[Functions] +Component Library: Byte Swapping/cl_ntoh16

+ +

[top][index]

+

NAME

+
       cl_ntoh16
+
+

DESCRIPTION

+
       The cl_ntoh16 function converts a 16-bit value from network byte order to
+       host byte order.
+
+

SYNOPSIS

+
*       uint16_t
+*       cl_ntoh16(
+*               IN      const uint16_t  val );
+
+

PARAMETERS

+
       val
+               [in] Value to swap from network byte order to host byte order.
+
+

RETURN VALUE

+
       Value of val converted to host byte order.
+
+

NOTES

+
       This function is analogous to cl_hton16.
+
+

SEE ALSO

+
       Byte Swapping, cl_hton16, cl_ntoh32, cl_ntoh64, cl_ntoh
+
+
+
+ +

[Functions] +Component Library: Byte Swapping/cl_ntoh32

+ +

[top][index]

+

NAME

+
       cl_ntoh32
+
+

DESCRIPTION

+
       The cl_ntoh32 function converts a 32-bit value from network byte order to
+       host byte order.
+
+

SYNOPSIS

+
*       uint32_t
+*       cl_ntoh32(
+*               IN      const uint32_t  val );
+
+

PARAMETERS

+
       val
+               [in] Value to swap from network byte order to host byte order.
+
+

RETURN VALUE

+
       Value of val converted in host byte order.
+
+

NOTES

+
       This function is analogous to cl_hton32.
+
+

SEE ALSO

+
       Byte Swapping, cl_hton32, cl_ntoh16, cl_ntoh64, cl_ntoh
+
+
+
+ +

[Definitions] +Component Library: Byte Swapping/CL_NTOH32

+ +

[top][index]

+

NAME

+
       CL_NTOH32
+
+

DESCRIPTION

+
       The CL_NTOH32 macro converts a 32-bit value from network byte order to
+       host byte order.  The CL_NTOH32 macro will cause constant values to be
+       swapped by the pre-processor.  For variables, CL_NTOH32 is less efficient
+       than the cl_ntoh32 function.
+
+

SYNOPSIS

+
*       CL_NTOH32( val );
+
+

PARAMETERS

+
       val
+               [in] 32-bit value to swap from network byte order to host byte order.
+
+

RESULT

+
       Value of val converted to host byte order.
+
+

NOTES

+
       This macro is analogous to CL_HTON32.
+
+

SEE ALSO

+
       Byte Swapping, CL_HTON32, CL_NTOH16, CL_NTOH64,
+       cl_ntoh16, cl_ntoh32, cl_ntoh64, cl_ntoh
+
+
+
+ +

[Definitions] +Component Library: Byte Swapping/CL_NTOH64

+ +

[top][index]

+

NAME

+
       CL_NTOH64
+
+

DESCRIPTION

+
       The CL_NTOH64 macro converts a 64-bit value from network byte order to
+       host byte order.  The CL_NTOH64 macro will cause constant values to be
+       swapped by the pre-processor.  For variables, CL_NTOH64 is less efficient
+       than the cl_ntoh64 function.
+
+

SYNOPSIS

+
*       CL_NTOH64( val );
+
+

PARAMETERS

+
       val
+               [in] 64-bit value to swap from network byte order to host byte order.
+
+

RESULT

+
       Value of val converted to host byte order.
+
+

NOTES

+
       This macro is analogous to CL_HTON64.
+
+

SEE ALSO

+
       Byte Swapping, CL_HTON64, CL_NTOH16, CL_NTOH32,
+       cl_ntoh16, cl_ntoh32, cl_ntoh64, cl_ntoh
+
+
+
+ +

[Functions] +Component Library: Byte Swapping/cl_ntoh64

+ +

[top][index]

+

NAME

+
       cl_ntoh64
+
+

DESCRIPTION

+
       The cl_ntoh64 function converts a 64-bit value from network byte order to
+       host byte order.
+
+

SYNOPSIS

+
*       uint64_t
+*       cl_ntoh64(
+*               IN      const uint64_t  val );
+
+

PARAMETERS

+
       val
+               [in] Value to swap from network byte order to host byte order.
+
+

RETURN VALUE

+
       Value of val converted in host byte order.
+
+

NOTES

+
       This function is analogous to cl_hton64.
+
+

SEE ALSO

+
       Byte Swapping, cl_hton64, cl_ntoh16, cl_ntoh32, cl_ntoh
+
+
+ + diff --git a/trunk/docs/complib/cl_comppool_h.html b/trunk/docs/complib/cl_comppool_h.html new file mode 100644 index 00000000..976452f9 --- /dev/null +++ b/trunk/docs/complib/cl_comppool_h.html @@ -0,0 +1,604 @@ + + + + +./inc_doc/complib/cl_comppool_h.html + + + + +Generated from ./inc/complib/cl_comppool.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Modules] +Component Library/Composite Pool

+ +

[top][index]

+

NAME

+
       Composite Pool
+
+

DESCRIPTION

+
       The Composite Pool provides a self-contained and self-sustaining pool of
+       user defined composite objects.
+
+       A composite object is an object that is composed of one or more
+       sub-objects, each of which needs to be treated separately for
+       initialization. Objects can be retrieved from the pool as long as there
+       is memory in the system.
+
+       To aid in object oriented design, the composite pool provides the user
+       the ability to specify callbacks that are invoked for each object for
+       construction, initialization, and destruction. Constructor and destructor
+       callback functions may not fail.
+
+       A composite pool does not return memory to the system as the user returns
+       objects to the pool. The only method of returning memory to the system is
+       to destroy the pool.
+
+       The composite pool functions operates on a cl_cpool_t structure which
+       should be treated as opaque and should be manipulated only through the
+       provided functions.
+
+

SEE ALSO

+
       Structures:
+               cl_cpool_t
+
+       Callbacks:
+               cl_pfn_cpool_init_t, cl_pfn_cpool_dtor_t
+
+       Initialization/Destruction:
+               cl_cpool_construct, cl_cpool_init, cl_cpool_destroy
+
+       Manipulation:
+               cl_cpool_get, cl_cpool_put, cl_cpool_grow
+
+       Attributes:
+               cl_is_cpool_inited, cl_cpool_count
+
+
+
+ +

[Functions] +Component Library: Composite Pool/cl_cpool_construct

+ +

[top][index]

+

NAME

+
       cl_cpool_construct
+
+

DESCRIPTION

+
       The cl_cpool_construct function constructs a composite pool.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_cpool_construct(
+        IN      cl_cpool_t* const       p_pool );
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_cpool_t structure whose state to initialize.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_pool_init, cl_cpool_destroy, cl_is_cpool_inited.
+
+       Calling cl_cpool_construct is a prerequisite to calling any other
+       composite pool function except cl_cpool_init.
+
+

SEE ALSO

+
       Composite Pool, cl_cpool_init, cl_cpool_destroy, cl_is_cpool_inited
+
+
+
+ +

[Functions] +Component Library: Composite Pool/cl_cpool_count

+ +

[top][index]

+

NAME

+
       cl_cpool_count
+
+

DESCRIPTION

+
       The cl_cpool_count function returns the number of available objects
+       in a composite pool.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_cpool_count(
+        IN      cl_cpool_t* const       p_pool )
+{
+        CL_ASSERT( p_pool );
+        return( cl_qcpool_count( &p_pool->qcpool ) );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_cpool_t structure for which the number of
+               available objects is requested.
+
+

RETURN VALUE

+
       Returns the number of objects available in the specified
+       composite pool.
+
+

SEE ALSO

+
       Composite Pool
+
+
+
+ +

[Functions] +Component Library: Composite Pool/cl_cpool_destroy

+ +

[top][index]

+

NAME

+
       cl_cpool_destroy
+
+

DESCRIPTION

+
       The cl_cpool_destroy function destroys a composite pool.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_cpool_destroy(
+        IN      cl_cpool_t* const       p_pool )
+{
+        CL_ASSERT( p_pool );
+
+        cl_qcpool_destroy( &p_pool->qcpool );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_cpool_t structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       All memory allocated for composite objects is freed. The destructor
+       callback, if any, will be invoked for every allocated object. Further
+       operations on the composite pool should not be attempted after
+       cl_cpool_destroy is invoked.
+
+       This function should only be called after a call to cl_cpool_construct.
+
+       In a debug build, cl_cpool_destroy asserts that all objects are in
+       the pool.
+
+

SEE ALSO

+
       Composite Pool, cl_cpool_construct, cl_cpool_init
+
+
+
+ +

[Functions] +Component Library: Composite Pool/cl_cpool_get

+ +

[top][index]

+

NAME

+
       cl_cpool_get
+
+

DESCRIPTION

+
       The cl_cpool_get function retrieves an object from a
+       composite pool.
+
+

SYNOPSIS

+
CL_INLINE void* CL_API
+cl_cpool_get(
+        IN      cl_cpool_t* const       p_pool )
+{
+        cl_pool_obj_t   *p_pool_obj;
+
+        CL_ASSERT( p_pool );
+
+        p_pool_obj = (cl_pool_obj_t*)cl_qcpool_get( &p_pool->qcpool );
+        if( !p_pool_obj )
+                return( NULL );
+
+        CL_ASSERT( p_pool_obj->list_obj.p_object );
+        return( (void*)p_pool_obj->list_obj.p_object );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_cpool_t structure from which to retrieve
+               an object.
+
+ RETURN VALUES
+       Returns a pointer to the first component of a composite object.
+
+       Returns NULL if the pool is empty and can not be grown automatically.
+
+

NOTES

+
       cl_cpool_get returns the object at the head of the pool. If the pool is
+       empty, it is automatically grown to accommodate this request unless the
+       grow_size parameter passed to the cl_cpool_init function was zero.
+
+

SEE ALSO

+
       Composite Pool, cl_cpool_get_tail, cl_cpool_put, cl_cpool_grow,
+       cl_cpool_count
+
+
+
+ +

[Functions] +Component Library: Composite Pool/cl_cpool_grow

+ +

[top][index]

+

NAME

+
       cl_cpool_grow
+
+

DESCRIPTION

+
       The cl_cpool_grow function grows a composite pool by
+       the specified number of objects.
+
+

SYNOPSIS

+
CL_INLINE cl_status_t CL_API
+cl_cpool_grow(
+        IN      cl_cpool_t* const       p_pool,
+        IN      const size_t            obj_count )
+{
+        CL_ASSERT( p_pool );
+        return( cl_qcpool_grow( &p_pool->qcpool, obj_count ) );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_cpool_t structure whose capacity to grow.
+
+       obj_count
+               [in] Number of objects by which to grow the pool.
+
+ RETURN VALUES
+       CL_SUCCESS if the composite pool grew successfully.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to grow the
+       composite pool.
+
+       cl_status_t value returned by optional initialization callback function
+       specified by the pfn_initializer parameter passed to the
+       cl_cpool_init function.
+
+

NOTES

+
       It is not necessary to call cl_cpool_grow if the pool is
+       configured to grow automatically.
+
+

SEE ALSO

+
       Composite Pool
+
+
+
+ +

[Functions] +Component Library: Composite Pool/cl_cpool_init

+ +

[top][index]

+

NAME

+
       cl_cpool_init
+
+

DESCRIPTION

+
       The cl_cpool_init function initializes a composite pool for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_cpool_init(
+        IN      cl_cpool_t* const               p_pool,
+        IN      const size_t                    min_size,
+        IN      const size_t                    max_size,
+        IN      const size_t                    grow_size,
+        IN      size_t* const                   component_sizes,
+        IN      const uint32_t                  num_components,
+        IN      cl_pfn_cpool_init_t             pfn_initializer OPTIONAL,
+        IN      cl_pfn_cpool_dtor_t             pfn_destructor OPTIONAL,
+        IN      const void* const               context );
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_cpool_t structure to initialize.
+
+       min_size
+               [in] Minimum number of objects that the pool should support. All
+               necessary allocations to allow storing the minimum number of items
+               are performed at initialization time, and all necessary callbacks
+               successfully invoked.
+
+       max_size
+               [in] Maximum number of objects to which the pool is allowed to grow.
+               A value of zero specifies no maximum.
+
+       grow_size
+               [in] Number of objects to allocate when incrementally growing the pool.
+               A value of zero disables automatic growth.
+
+       component_sizes
+               [in] Pointer to the first entry in an array of sizes describing,
+               in order, the sizes of the components that make up a composite object.
+
+       num_components
+               [in] Number of components that make up a composite object.
+
+       pfn_initializer
+               [in] Initialization callback to invoke for every new object when
+               growing the pool. This parameter may be NULL only if the objects
+               stored in the composite pool consist of only one component.
+               See the cl_pfn_cpool_init function type declaration for details
+               about the callback function.
+
+       pfn_destructor
+               [in] Destructor callback to invoke for every object before memory for
+               that object is freed. This parameter is optional and may be NULL.
+               See the cl_pfn_cpool_dtor function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context.
+
+ RETURN VALUES
+       CL_SUCCESS if the composite pool was initialized successfully.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize the
+       composite pool.
+
+       CL_INVALID_SETTING if a NULL constructor was provided for composite objects
+       consisting of more than one component.  Also returns CL_INVALID_SETTING if
+       the maximum size is non-zero and less than the minimum size.
+
+       Other cl_status_t value returned by optional initialization callback function
+       specified by the pfn_initializer parameter.
+
+

NOTES

+
       cl_cpool_init initializes, and if necessary, grows the pool to
+       the capacity desired.
+
+

SEE ALSO

+
       Composite Pool, cl_cpool_construct, cl_cpool_destroy,
+       cl_cpool_get, cl_cpool_put, cl_cpool_grow,
+       cl_cpool_count, cl_pfn_cpool_ctor_t, cl_pfn_cpool_init_t,
+       cl_pfn_cpool_dtor_t
+
+
+
+ +

[Functions] +Component Library: Composite Pool/cl_cpool_put

+ +

[top][index]

+

NAME

+
       cl_cpool_put
+
+

DESCRIPTION

+
       The cl_cpool_put function returns an object to a composite pool.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_cpool_put(
+        IN      cl_cpool_t* const       p_pool,
+        IN      void* const                     p_object )
+{
+        cl_pool_obj_t   *p_pool_obj;
+
+        CL_ASSERT( p_pool );
+        CL_ASSERT( p_object );
+
+        /* Calculate the offset to the list object representing this object. */
+        p_pool_obj = (cl_pool_obj_t*)
+                (((uint8_t*)p_object) - sizeof(cl_pool_obj_t));
+
+        /* good sanity check */
+        CL_ASSERT( p_pool_obj->list_obj.p_object == p_object );
+
+        cl_qcpool_put( &p_pool->qcpool, (cl_pool_item_t*)p_pool_obj );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_cpool_t structure to which to return
+               an object.
+
+       p_object
+               [in] Pointer to the first component of an object to return to the pool.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_cpool_put places the returned object at the head of the pool.
+
+       The object specified by the p_object parameter must have been
+       retrieved from the pool by a previous call to cl_cpool_get.
+
+

SEE ALSO

+
       Composite Pool, cl_cpool_put_tail, cl_cpool_get
+
+
+
+ +

[Structures] +Component Library: Composite Pool/cl_cpool_t

+ +

[top][index]

+

NAME

+
       cl_cpool_t
+
+

DESCRIPTION

+
       Composite pool structure.
+
+       The cl_cpool_t structure should be treated as opaque and should be
+       manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_cpool
+{
+        cl_qcpool_t                             qcpool;
+        cl_pfn_cpool_init_t             pfn_init;
+        cl_pfn_cpool_dtor_t             pfn_dtor;
+        const void                              *context;
+
+} cl_cpool_t;
+
+

FIELDS

+
       qcpool
+               Quick composite pool that manages all objects.
+
+       pfn_init
+               Pointer to the user's initializer callback, used by the pool
+               to translate the quick composite pool's initializer callback to
+               a composite pool initializer callback.
+
+       pfn_dtor
+               Pointer to the user's destructor callback, used by the pool
+               to translate the quick composite pool's destructor callback to
+               a composite pool destructor callback.
+
+       context
+               User's provided context for callback functions, used by the pool
+               to when invoking callbacks.
+
+

SEE ALSO

+
       Composite Pool
+
+
+
+ +

[Functions] +Component Library: Composite Pool/cl_is_cpool_inited

+ +

[top][index]

+

NAME

+
       cl_is_cpool_inited
+
+

DESCRIPTION

+
       The cl_is_cpool_inited function returns whether a composite pool was
+       successfully initialized.
+
+

SYNOPSIS

+
CL_INLINE boolean_t CL_API
+cl_is_cpool_inited(
+        IN      const cl_cpool_t* const p_pool )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_pool );
+        return( cl_is_qcpool_inited( &p_pool->qcpool ) );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_cpool_t structure whose initialization state
+               to check.
+
+ RETURN VALUES
+       TRUE if the composite pool was initialized successfully.
+
+       FALSE otherwise.
+
+

NOTES

+
       Allows checking the state of a composite pool to determine if invoking
+       member functions is appropriate.
+
+

SEE ALSO

+
       Composite Pool
+
+
+
+ +

[Definitions] +Component Library: Composite Pool/cl_pfn_cpool_dtor_t

+ +

[top][index]

+

NAME

+
       cl_pfn_cpool_dtor_t
+
+

DESCRIPTION

+
       The cl_pfn_cpool_dtor_t function type defines the prototype for
+       functions used as destructor for objects being deallocated by a
+       composite pool.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_cpool_dtor_t)(
+        IN      void* const                     p_object,
+        IN      void*                           context );
+
+

PARAMETERS

+
       p_object
+               [in] Pointer to an object to destruct.
+
+       context
+               [in] Context provided in the call to cl_cpool_init.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the function provided by the user as an optional parameter to the
+       cl_cpool_init function.
+
+       The destructor is invoked once per allocated object, allowing the user
+       to perform any necessary cleanup. Users should not attempt to deallocate
+       the memory for the composite object, as the composite pool manages
+       object allocation and deallocation.
+
+

SEE ALSO

+
       Composite Pool, cl_cpool_init
+
+
+
+ +

[Definitions] +Component Library: Composite Pool/cl_pfn_cpool_init_t

+ +

[top][index]

+

NAME

+
       cl_pfn_cpool_init_t
+
+

DESCRIPTION

+
       The cl_pfn_cpool_init_t function type defines the prototype for
+       functions used as initializers for objects being allocated by a
+       composite pool.
+
+

SYNOPSIS

+
typedef cl_status_t
+(CL_API *cl_pfn_cpool_init_t)(
+        IN      void** const            p_comp_array,
+        IN      const uint32_t          num_components,
+        IN      void*                           context );
+
+

PARAMETERS

+
       p_object
+               [in] Pointer to an object to initialize.
+
+       context
+               [in] Context provided in a call to cl_cpool_init.
+
+ RETURN VALUES
+       Return CL_SUCCESS to indicates that initialization of the object
+       was successful and that initialization of further objects may continue.
+
+       Other cl_status_t values will be returned by cl_cpool_init
+       and cl_cpool_grow.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the function provided by the user as an optional parameter to the
+       cl_cpool_init function.
+
+       The initializer is invoked once per allocated object, allowing the user
+       to chain components to form a composite object and perform any necessary
+       initialization.  Returning a status other than CL_SUCCESS aborts a grow
+       operation, initiated either through cl_cpool_init or cl_cpool_grow, and
+       causes the initiating function to fail.  Any non-CL_SUCCESS status will
+       be returned by the function that initiated the grow operation.
+
+       All memory for the requested number of components is pre-allocated.
+
+       When later performing a cl_cpool_get call, the return value is a pointer
+       to the first component.
+
+

SEE ALSO

+
       Composite Pool, cl_cpool_init, cl_cpool_grow
+
+
+ + diff --git a/trunk/docs/complib/cl_debug_h.html b/trunk/docs/complib/cl_debug_h.html new file mode 100644 index 00000000..74edd5bf --- /dev/null +++ b/trunk/docs/complib/cl_debug_h.html @@ -0,0 +1,534 @@ + + + + +./inc_doc/complib/cl_debug_h.html + + + + +Generated from ./inc/complib/cl_debug.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Modules] +Component Library/Debug Output

+ +

[top][index]

+

NAME

+
       Debug Output
+
+

DESCRIPTION

+
       The debug output functions and macros send debug messages to the current
+       debug target.
+
+
+
+ +

[Definitions] +Component Library: Debug Output/64-bit Print Format

+ +

[top][index]

+

NAME

+
       64-bit Print Format
+
+

DESCRIPTION

+
       The 64-bit print keywords allow users to use 64-bit values in debug or
+       console output.
+
+       Different platforms define 64-bit print formats differently. The 64-bit
+       print formats exposed by the component library are supported in all
+       platforms.
+
+

VALUES

+
       PRId64
+               Print a 64-bit integer in signed decimal format.
+       PRIx64
+               Print a 64-bit integer in hexadecimal format.
+       PRIo64
+               Print a 64-bit integer in octal format.
+       PRIu64
+               Print a 64-bit integer in unsigned decimal format.
+
+

EXAMPLE

+
       uint64 MyVal = 2;
+       // Print a 64-bit integer in hexadecimal format.
+       cl_dbg_out( "MyVal: 0x%" PRIx64 "\n", MyVal );
+
+

NOTES

+
       Standard print flags to specify padding and precision can still be used
+       following the '%' sign in the string preceding the 64-bit print keyword.
+
+       The above keywords are strings and make use of compilers' string
+       concatenation ability.
+
+
+
+ +

[Functions] +Component Library: Debug Output/cl_break

+ +

[top][index]

+

NAME

+
       cl_break
+
+

DESCRIPTION

+
       The cl_break function halts execution.
+
+

SYNOPSIS

+
*       void
+*       cl_break();
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       In a release build, cl_break has no effect.
+
+
+
+ +

[Functions] +Component Library: Debug Output/cl_dbg_out

+ +

[top][index]

+

NAME

+
       cl_dbg_out
+
+

DESCRIPTION

+
       The cl_dbg_out function sends a debug message to the debug target in
+       debug builds only.
+
+

SYNOPSIS

+
CL_EXPORT void
+cl_dbg_out(
+        IN      const char* const       debug_message,
+        IN      ... );
+
+

PARAMETERS

+
       debug_message
+               [in] ANSI string formatted identically as for a call to the standard C
+               function printf.
+
+       ...
+               [in] Extra parameters for string formatting, as defined for the
+               standard C function printf.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       In a release build, cl_dbg_out has no effect.
+
+       The formatting of the debug_message string is the same as for printf
+
+       cl_dbg_out sends the debug message to the current debug target.
+
+

SEE ALSO

+
       Debug Output, cl_msg_out
+
+
+
+ +

[Definitions] +Component Library: Debug Output/CL_ENTER

+ +

[top][index]

+

NAME

+
       CL_ENTER
+
+

DESCRIPTION

+
       The CL_ENTER macro marks the entrance into a function by sending a
+       string to the current debug target if the requested debug level matches
+       the current debug level.
+
+

SYNOPSIS

+
*       CL_ENTER( DBG_LVL, CHK_LVL );
+
+

PARAMETERS

+
       DBG_LVL
+               [in] Debug level for the string to output
+
+       CHK_LVL
+               [in] Current debug level against which to check DBG_LVL
+
+

RETURN VALUE

+
       This macro does not return a value.
+
+

EXAMPLE

+
       #define __MODULE__      "my_module"
+       #define MY_FUNC_DBG_LVL 1
+
+       uint32_t        my_dbg_lvl = CL_DBG_ALL;
+
+       void
+       my_func()
+       {
+               CL_ENTER( MY_FUNC_DBG_LVL, my_dbg_lvl );
+               CL_EXIT( MY_FUNC_DBG_LVL, my_dbg_lvl );
+       }
+
+

RESULT

+
       my_module:my_func() [
+       my_module:my_func() ]
+
+

NOTES

+
       The function entrance notification is printed only if all bits set
+       in DBG_LVL are also set in CHK_LVL.  CHK_LVL may have additional bits set.
+
+       If the __MODULE__ preprocessor keyword is defined, that keyword will be
+       prepended to the function name, separated with a colon.
+
+       In multi-processor environments where the current processor can be
+       determined, the zero-based number of the processor on which the output
+       is generated is prepended to the output.
+
+

SEE ALSO

+
       Debug Output, Debug Levels, CL_PRINT, CL_EXIT, CL_TRACE, CL_TRACE_EXIT
+
+
+
+ +

[Definitions] +Component Library: Debug Output/CL_EXIT

+ +

[top][index]

+

NAME

+
       CL_EXIT
+
+

DESCRIPTION

+
       The CL_EXIT macro marks the exit from a function by sending a string
+       to the current debug target if the requested debug level matches the
+       current debug level.
+
+

SYNOPSIS

+
*       CL_EXIT( DBG_LVL, CHK_LVL );
+
+

PARAMETERS

+
       DBG_LVL
+               [in] Debug level for the string to output
+
+       CHK_LVL
+               [in] Current debug level against which to check DBG_LVL
+
+

RETURN VALUE

+
       This macro does not return a value.
+
+

EXAMPLE

+
       #define __MODULE__      "my_module"
+       #define MY_FUNC_DBG_LVL 1
+
+       uint32_t        my_dbg_lvl = CL_DBG_ALL;
+
+       void
+       my_func()
+       {
+               CL_ENTER( MY_FUNC_DBG_LVL, my_dbg_lvl );
+               CL_EXIT( MY_FUNC_DBG_LVL, my_dbg_lvl );
+       }
+
+

RESULT

+
       my_module:my_func() [
+       my_module:my_func() ]
+
+

NOTES

+
       The exit notification is printed only if all bits set in DBG_LVL are also
+       set in CHK_LVL.  CHK_LVL may have additional bits set.
+
+       The CL_EXIT macro must only be used after the CL_ENTRY macro as it
+       depends on that macro's implementation.
+
+       If the __MODULE__ preprocessor keyword is defined, that keyword will be
+       prepended to the function name, separated with a colon.
+
+       In multi-processor environments where the current processor can be
+       determined, the zero-based number of the processor on which the output
+       is generated is prepended to the output.
+
+

SEE ALSO

+
       Debug Output, Debug Levels, CL_PRINT, CL_ENTER, CL_TRACE, CL_TRACE_EXIT
+
+
+
+ +

[Functions] +Component Library: Debug Output/cl_msg_out

+ +

[top][index]

+

NAME

+
       cl_msg_out
+
+

DESCRIPTION

+
       The cl_msg_out function sends a debug message to the message log target.
+
+

SYNOPSIS

+
CL_EXPORT void
+cl_msg_out(
+        IN      const char* const       message,
+        IN      ... );
+
+

PARAMETERS

+
       message
+               [in] ANSI string formatted identically as for a call to the standard C
+               function printf.
+
+       ...
+               [in] Extra parameters for string formatting, as defined for the
+               standard C function printf.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_msg_out is available in both debug and release builds.
+
+       The formatting of the message string is the same as for printf
+
+       cl_msg_out sends the message to the current message logging target.
+
+

SEE ALSO

+
       Debug Output, cl_dbg_out
+
+
+
+ +

[Definitions] +Component Library: Debug Output/CL_PRINT

+ +

[top][index]

+

NAME

+
       CL_PRINT
+
+

DESCRIPTION

+
       The CL_PRINT macro sends a string to the current debug target if
+       the requested debug level matches the current debug level.
+
+

SYNOPSIS

+
*       CL_PRINT( DBG_LVL, CHK_LVL, STRING );
+
+

PARAMETERS

+
       DBG_LVL
+               [in] Debug level for the string to output
+
+       CHK_LVL
+               [in] Current debug level against which to check DBG_LVL
+
+       STRING
+               [in] String to send to the current debug target.  The string includes
+               parentheses in order to allow additional parameters.
+
+

RETURN VALUE

+
       This macro does not return a value.
+
+

EXAMPLE

+
       #define MY_FUNC_DBG_LVL 1
+
+       uint32_t        my_dbg_lvl = CL_DBG_ALL;
+
+       void
+       my_func()
+       {
+               CL_PRINT( MY_FUNC_DBG_LVL, my_dbg_lvl, ("Hello %s!\n", "world") );
+       }
+
+

RESULT

+
       Hello world!
+
+

NOTES

+
       The requested string is printed only if all bits set in DBG_LVL are also
+       set in CHK_LVL unless the most significant bit is set (indicating an
+       error), in which case the lower bits are ignored.  CHK_LVL may have
+       additional bits set.
+
+       In multi-processor environments where the current processor can be
+       determined, the zero-based number of the processor on which the output
+       is generated is prepended to the output.
+
+

SEE ALSO

+
       Debug Output, Debug Levels, CL_ENTER, CL_EXIT, CL_TRACE, CL_TRACE_EXIT
+
+
+
+ +

[Definitions] +Component Library: Debug Output/CL_TRACE

+ +

[top][index]

+

NAME

+
       CL_TRACE
+
+

DESCRIPTION

+
       The CL_TRACE macro sends a string to the current debug target if
+       the requested debug level matches the current debug level.  The
+       output is prepended with the function name and, depending on the
+       debug level requested, an indication of the severity of the message.
+
+

SYNOPSIS

+
*       CL_TRACE( DBG_LVL, CHK_LVL, STRING );
+
+

PARAMETERS

+
       DBG_LVL
+               [in] Debug level for the string to output
+
+       CHK_LVL
+               [in] Current debug level against which to check DBG_LVL
+
+       STRING
+               [in] String to send to the current debug target.  The string includes
+               parentheses in order to allow additional parameters.
+
+

RETURN VALUE

+
       This macro does not return a value.
+
+

EXAMPLE

+
       #define __MODULE__      "my_module"
+       #define MY_FUNC_DBG_LVL 1
+
+       uint32_t        my_dbg_lvl = CL_DBG_ALL;
+
+       void
+       my_func()
+       {
+               CL_ENTER( MY_FUNC_DBG_LVL, my_dbg_lvl );
+               CL_TRACE( MY_FUNC_DBG_LVL, my_dbg_lvl, ("Hello %s!\n", "world") );
+               CL_EXIT( MY_FUNC_DBG_LVL, my_dbg_lvl );
+       }
+
+

RESULT

+
       my_module:my_func() [
+       my_module:my_func(): Hello world!
+       my_module:my_func() ]
+
+

NOTES

+
       The requested string is printed only if all bits set in DBG_LVL are also
+       set in CHK_LVL.  CHK_LVL may have additional bits set.
+
+       The CL_TRACE macro must only be used after the CL_ENTRY macro as it
+       depends on that macro's implementation.
+
+       If the DBG_LVL has the upper bit set, the output will contain
+       an "!ERROR!" statement between the function name and STRING.
+
+       If the __MODULE__ preprocessor keyword is defined, that keyword will be
+       prepended to the function name, separated with a colon.
+
+       In multi-processor environments where the current processor can be
+       determined, the zero-based number of the processor on which the output
+       is generated is prepended to the output.
+
+

SEE ALSO

+
       Debug Output, Debug Levels, CL_PRINT, CL_ENTER, CL_EXIT, CL_TRACE_EXIT
+
+
+
+ +

[Definitions] +Component Library: Debug Output/CL_TRACE_EXIT

+ +

[top][index]

+

NAME

+
       CL_TRACE_EXIT
+
+

DESCRIPTION

+
       The CL_TRACE_EXIT macro combines the functionality of the CL_TRACE and
+       CL_EXIT macros, in that order.
+
+

SYNOPSIS

+
*       CL_TRACE_EXIT(  DBG_LVL, CHK_LVL, STRING );
+
+

PARAMETERS

+
       DBG_LVL
+               [in] Debug level for the string to output
+
+       CHK_LVL
+               [in] Current debug level against which to check DBG_LVL
+
+       STRING
+               [in] String to send to the current debug target.  The string includes
+               parentheses in order to allow additional parameters.
+
+

RETURN VALUE

+
       This macro does not return a value.
+
+

EXAMPLE

+
       #define __MODULE__      "my_module"
+       #define MY_FUNC_DBG_LVL 1
+
+       uint32_t        my_dbg_lvl = CL_DBG_ALL;
+
+       void
+       my_func()
+       {
+               CL_ENTER( MY_FUNC_DBG_LVL, my_dbg_lvl );
+               CL_TRACE_EXIT( MY_FUNC_DBG_LVL, my_dbg_lvl, ("Hello %s!\n", "world") );
+       }
+
+

RESULT

+
       my_module:my_func() [
+       my_module:my_func(): Hello world!
+       my_module:my_func() ]
+
+

NOTES

+
       The requested string is printed only if all bits set in DBG_LVL are also
+       set in CHK_LVL.  CHK_LVL may have additional bits set.
+
+       The CL_TRACE_EXIT macro must only be used after the CL_ENTRY macro as it
+       depends on that macro's implementation.
+
+       If the DBG_LVL has the upper bit set, the output will contain
+       an "!ERROR!" statement between the function name and STRING.
+
+       If the __MODULE__ preprocessor keyword is defined, that keyword will be
+       prepended to the function name, separated with a colon.
+
+       In multi-processor environments where the current processor can be
+       determined, the zero-based number of the processor on which the output
+       is generated is prepended to the output.
+
+

SEE ALSO

+
       Debug Output, Debug Levels, CL_PRINT, CL_ENTER, CL_EXIT, CL_TRACE
+
+
+
+ +

[Definitions] +Component Library: Debug Output/Debug Levels

+ +

[top][index]

+

NAME

+
       Debug Levels
+
+

DESCRIPTION

+
       The debug output macros reserve the upper bit of the debug level to
+       convey an error.
+
+

SYNOPSIS

+
#define CL_DBG_DISABLE          0
+#define CL_DBG_ERROR            0x80000000
+#define CL_DBG_ALL                      0xFFFFFFFF
+
+

VALUES

+
       CL_DBG_DISABLE
+               Disable all debug output, including errors.
+
+       CL_DBG_ERROR
+               Enable error debug output.
+
+       CL_DBG_ALL
+               Enbale all debug output.
+
+

NOTES

+
       Users can define custom debug levels using the lower 31 bits of their
+       debug level to control non-error debug output.  Error messages are
+       always displayed, regardless of the lower bit definition.
+
+       When specifying the debug output desired for non-error messages
+       (the CHK_LVL parameter in the debug output macros), users must define
+       all bits whose output they are interested in.
+
+

SEE ALSO

+
       Debug Output, CL_PRINT, CL_ENTER, CL_EXIT, CL_TRACE, CL_TRACE_EXIT
+
+
+ + diff --git a/trunk/docs/complib/cl_event_h.html b/trunk/docs/complib/cl_event_h.html new file mode 100644 index 00000000..986d418e --- /dev/null +++ b/trunk/docs/complib/cl_event_h.html @@ -0,0 +1,274 @@ + + + + +./inc_doc/complib/cl_event_h.html + + + + +Generated from ./inc/complib/cl_event.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Modules] +Component Library/Event

+ +

[top][index]

+

NAME

+
       Event
+
+

DESCRIPTION

+
       The Event provides the ability to suspend and wakeup a thread.
+
+       The event functions operates on a cl_event_t structure which should be
+       treated as opaque and should be manipulated only through the provided
+       functions.
+
+

SEE ALSO

+
       Structures:
+               cl_event_t
+
+       Initialization/Destruction:
+               cl_event_construct, cl_event_init, cl_event_destroy
+
+       Manipulation:
+               cl_event_signal, cl_event_reset, cl_event_wait_on
+
+
+
+ +

[Functions] +Component Library: Event/cl_event_construct

+ +

[top][index]

+

NAME

+
       cl_event_construct
+
+

DESCRIPTION

+
       The cl_event_construct function constructs an event.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_event_construct(
+        IN      cl_event_t* const       p_event );
+
+

PARAMETERS

+
       p_event
+               [in] Pointer to an cl_event_t structure to construct.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_event_destroy without first calling cl_event_init.
+
+       Calling cl_event_construct is a prerequisite to calling any other event
+       function except cl_event_init.
+
+

SEE ALSO

+
       Event, cl_event_init, cl_event_destroy
+
+
+
+ +

[Functions] +Component Library: Event/cl_event_destroy

+ +

[top][index]

+

NAME

+
       cl_event_destroy
+
+

DESCRIPTION

+
       The cl_event_destroy function performs any necessary cleanup of an event.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_event_destroy(
+        IN      cl_event_t* const       p_event );
+
+

PARAMETERS

+
       p_event
+               [in] Pointer to an cl_event_t structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function should only be called after a call to cl_event_construct
+       or cl_event_init.
+
+

SEE ALSO

+
       Event, cl_event_construct, cl_event_init
+
+
+
+ +

[Functions] +Component Library: Event/cl_event_init

+ +

[top][index]

+

NAME

+
       cl_event_init
+
+

DESCRIPTION

+
       The cl_event_init function initializes an event for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_event_init(
+        IN      cl_event_t* const       p_event,
+        IN      const boolean_t         manual_reset );
+
+

PARAMETERS

+
       p_event
+               [in] Pointer to an cl_event_t structure to initialize.
+
+       manual_reset
+               [in] If FALSE, indicates that the event resets itself after releasing
+               a single waiter.  If TRUE, the event remains in the signalled state
+               until explicitly reset by a call to cl_event_reset.
+
+ RETURN VALUES
+       CL_SUCCESS if event initialization succeeded.
+
+       CL_ERROR otherwise.
+
+

NOTES

+
       Allows calling event manipulation functions, such as cl_event_signal,
+       cl_event_reset, and cl_event_wait_on.
+
+       The event is initially in a reset state.
+
+

SEE ALSO

+
       Event, cl_event_construct, cl_event_destroy, cl_event_signal,
+       cl_event_reset, cl_event_wait_on
+
+
+
+ +

[Functions] +Component Library: Event/cl_event_reset

+ +

[top][index]

+

NAME

+
       cl_event_reset
+
+

DESCRIPTION

+
       The cl_event_reset function sets an event to the non-signalled state.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_event_reset(
+        IN      cl_event_t* const       p_event );
+
+

PARAMETERS

+
       p_event
+               [in] Pointer to an cl_event_t structure to reset.
+
+ RETURN VALUES
+       CL_SUCCESS if the event was successfully reset.
+
+       CL_ERROR otherwise.
+
+

SEE ALSO

+
       Event, cl_event_signal, cl_event_wait_on
+
+
+
+ +

[Functions] +Component Library: Event/cl_event_signal

+ +

[top][index]

+

NAME

+
       cl_event_signal
+
+

DESCRIPTION

+
       The cl_event_signal function sets an event to the signalled state and
+       releases one or more waiting threads.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_event_signal(
+        IN      cl_event_t* const       p_event );
+
+

PARAMETERS

+
       p_event
+               [in] Pointer to an cl_event_t structure to set.
+
+ RETURN VALUES
+       CL_SUCCESS if the event was successfully signalled.
+
+       CL_ERROR otherwise.
+
+

NOTES

+
       For auto-reset events, the event is reset automatically once a wait
+       operation is satisfied.
+
+       Triggering the event multiple times does not guarantee that the same
+       number of wait operations are satisfied. This is because events are
+       either in a signalled on non-signalled state, and triggering an event
+       that is already in the signalled state has no effect.
+
+

SEE ALSO

+
       Event, cl_event_reset, cl_event_wait_on
+
+
+
+ +

[Functions] +Component Library: Event/cl_event_wait_on

+ +

[top][index]

+

NAME

+
       cl_event_wait_on
+
+

DESCRIPTION

+
       The cl_event_wait_on function waits for the specified event to be
+       triggered for a minimum amount of time.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_event_wait_on(
+        IN      cl_event_t* const       p_event,
+        IN      const uint32_t          wait_us,
+        IN      const boolean_t         interruptible );
+
+

PARAMETERS

+
       p_event
+               [in] Pointer to an cl_event_t structure on which to wait.
+
+       wait_us
+               [in] Number of microseconds to wait.
+
+       interruptible
+               [in] Indicates whether the wait operation can be interrupted
+               by external signals.
+
+ RETURN VALUES
+       CL_SUCCESS if the wait operation succeeded in response to the event
+       being set.
+
+       CL_TIMEOUT if the specified time period elapses.
+
+       CL_NOT_DONE if the wait was interrupted by an external signal.
+
+       CL_ERROR if the wait operation failed.
+
+

NOTES

+
       If wait_us is set to EVENT_NO_TIMEOUT, the function will wait until the
+       event is triggered and never timeout.
+
+       If the timeout value is zero, this function simply tests the state of
+       the event.
+
+       If the event is already in the signalled state at the time of the call
+       to cl_event_wait_on, the call completes immediately with CL_SUCCESS.
+
+

SEE ALSO

+
       Event, cl_event_signal, cl_event_reset
+
+
+ + diff --git a/trunk/docs/complib/cl_fleximap_h.html b/trunk/docs/complib/cl_fleximap_h.html new file mode 100644 index 00000000..bc7b647b --- /dev/null +++ b/trunk/docs/complib/cl_fleximap_h.html @@ -0,0 +1,948 @@ + + + + +./inc_doc/complib/cl_fleximap_h.html + + + + +Generated from ./inc/complib/cl_fleximap.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Modules] +Component Library/Flexi Map

+ +

[top][index]

+

NAME

+
       Flexi Map
+
+

DESCRIPTION

+
       Flexi map implements a binary tree that stores user provided cl_fmap_item_t
+       structures.  Each item stored in a flexi map has a unique user defined key
+       (duplicates are not allowed).  Flexi map provides the ability to
+       efficiently search for an item given a key.  Flexi map allows user defined
+       keys of any size.  Storage for keys and a comparisson function are provided
+       by users to allow flexi map to store items with arbitrary key values.
+
+       Flexi map does not allocate any memory, and can therefore not fail
+       any operations due to insufficient memory.  Flexi map can thus be useful
+       in minimizing the error paths in code.
+
+       Flexi map is not thread safe, and users must provide serialization when
+       adding and removing items from the map.
+
+       The flexi map functions operate on a cl_fmap_t structure which should
+       be treated as opaque and should be manipulated only through the provided
+       functions.
+
+

SEE ALSO

+
       Structures:
+               cl_fmap_t, cl_fmap_item_t
+
+       Callbacks:
+               cl_pfn_fmap_apply_t
+
+       Item Manipulation:
+               cl_fmap_key
+
+       Initialization:
+               cl_fmap_init
+
+       Iteration:
+               cl_fmap_end, cl_fmap_head, cl_fmap_tail, cl_fmap_next, cl_fmap_prev
+
+       Manipulation:
+               cl_fmap_insert, cl_fmap_get, cl_fmap_remove_item, cl_fmap_remove,
+               cl_fmap_remove_all, cl_fmap_merge, cl_fmap_delta
+
+       Search:
+               cl_fmap_apply_func
+
+       Attributes:
+               cl_fmap_count, cl_is_fmap_empty,
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_apply_func

+ +

[top][index]

+

NAME

+
       cl_fmap_apply_func
+
+

DESCRIPTION

+
       The cl_fmap_apply_func function executes a specified function
+       for every item stored in a flexi map.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_fmap_apply_func(
+        IN      const cl_fmap_t* const  p_map,
+        IN      cl_pfn_fmap_apply_t             pfn_func,
+        IN      const void* const               context );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_fmap_t structure.
+
+       pfn_func
+               [in] Function invoked for every item in the flexi map.
+               See the cl_pfn_fmap_apply_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       The function provided must not perform any map operations, as these
+       would corrupt the flexi map.
+
+

SEE ALSO

+
       Flexi Map, cl_pfn_fmap_apply_t
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_count

+ +

[top][index]

+

NAME

+
       cl_fmap_count
+
+

DESCRIPTION

+
       The cl_fmap_count function returns the number of items stored
+       in a flexi map.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_fmap_count(
+        IN      const cl_fmap_t* const  p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+        return( p_map->count );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_fmap_t structure whose item count to return.
+
+

RETURN VALUE

+
       Returns the number of items stored in the map.
+
+

SEE ALSO

+
       Flexi Map, cl_is_fmap_empty
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_delta

+ +

[top][index]

+

NAME

+
       cl_fmap_delta
+
+

DESCRIPTION

+
       The cl_fmap_delta function computes the differences between two maps.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_fmap_delta(
+        IN OUT  cl_fmap_t* const        p_map1,
+        IN OUT  cl_fmap_t* const        p_map2,
+        OUT             cl_fmap_t* const        p_new,
+        OUT             cl_fmap_t* const        p_old );
+
+

PARAMETERS

+
       p_map1
+               [in/out] Pointer to the first of two cl_fmap_t structures whose
+               differences to compute.
+
+       p_map2
+               [in/out] Pointer to the second of two cl_fmap_t structures whose
+               differences to compute.
+
+       p_new
+               [out] Pointer to an empty cl_fmap_t structure that contains the items
+               unique to p_map2 upon return from the function.
+
+       p_old
+               [out] Pointer to an empty cl_fmap_t structure that contains the items
+               unique to p_map1 upon return from the function.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

NOTES

+
       Items are evaluated based on their keys.  Items that exist in both
+       p_map1 and p_map2 remain in their respective maps.  Items that
+       exist only p_map1 are moved to p_old.  Likewise, items that exist only
+       in p_map2 are moved to p_new.  This function can be usefull in evaluating
+       changes between two maps.
+
+       Both maps pointed to by p_new and p_old must be empty on input.  This
+       requirement removes the possibility of failures.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_merge
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_end

+ +

[top][index]

+

NAME

+
       cl_fmap_end
+
+

DESCRIPTION

+
       The cl_fmap_end function returns the end of a flexi map.
+
+

SYNOPSIS

+
CL_INLINE const cl_fmap_item_t* const CL_API
+cl_fmap_end(
+        IN      const cl_fmap_t* const  p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+        /* Nil is the end of the map. */
+        return( &p_map->nil );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_fmap_t structure whose end to return.
+
+

RETURN VALUE

+
       Pointer to the end of the map.
+
+

NOTES

+
       cl_fmap_end is useful for determining the validity of map items returned
+       by cl_fmap_head, cl_fmap_tail, cl_fmap_next, or cl_fmap_prev.  If the map
+       item pointer returned by any of these functions compares to the end, the
+       end of the map was encoutered.
+       When using cl_fmap_head or cl_fmap_tail, this condition indicates that
+       the map is empty.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_head, cl_fmap_tail, cl_fmap_next, cl_fmap_prev
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_get

+ +

[top][index]

+

NAME

+
       cl_fmap_get
+
+

DESCRIPTION

+
       The cl_fmap_get function returns the map item associated with a key.
+
+

SYNOPSIS

+
CL_EXPORT cl_fmap_item_t* CL_API
+cl_fmap_get(
+        IN      const cl_fmap_t* const  p_map,
+        IN      const void* const               p_key );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_fmap_t structure from which to retrieve the
+               item with the specified key.
+
+       p_key
+               [in] Pointer to a key value used to search for the desired map item.
+
+ RETURN VALUES
+       Pointer to the map item with the desired key value.
+
+       Pointer to the map end if there was no item with the desired key value
+       stored in the flexi map.
+
+

NOTES

+
       cl_fmap_get does not remove the item from the flexi map.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_remove
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_head

+ +

[top][index]

+

NAME

+
       cl_fmap_head
+
+

DESCRIPTION

+
       The cl_fmap_head function returns the map item with the lowest key
+       value stored in a flexi map.
+
+

SYNOPSIS

+
CL_INLINE cl_fmap_item_t* CL_API
+cl_fmap_head(
+        IN      const cl_fmap_t* const  p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+        return( (cl_fmap_item_t*)p_map->nil.pool_item.list_item.p_next );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_fmap_t structure whose item with the lowest key
+               is returned.
+
+ RETURN VALUES
+       Pointer to the map item with the lowest key in the flexi map.
+
+       Pointer to the map end if the flexi map was empty.
+
+

NOTES

+
       cl_fmap_head does not remove the item from the map.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_tail, cl_fmap_next, cl_fmap_prev, cl_fmap_end,
+       cl_fmap_item_t
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_init

+ +

[top][index]

+

NAME

+
       cl_fmap_init
+
+

DESCRIPTION

+
       The cl_fmap_init function initialized a flexi map for use.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_fmap_init(
+        IN      cl_fmap_t* const        p_map,
+        IN      cl_pfn_fmap_cmp_t       pfn_compare );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_fmap_t structure to initialize.
+
+       pfn_compare
+               [in] Pointer to the compare function used to compare keys.
+               See the cl_pfn_fmap_cmp_t function type declaration for details
+               about the callback function.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

NOTES

+
       Allows calling flexi map manipulation functions.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_insert, cl_fmap_remove
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_insert

+ +

[top][index]

+

NAME

+
       cl_fmap_insert
+
+

DESCRIPTION

+
       The cl_fmap_insert function inserts a map item into a flexi map.
+
+

SYNOPSIS

+
CL_EXPORT cl_fmap_item_t* CL_API
+cl_fmap_insert(
+        IN      cl_fmap_t* const                p_map,
+        IN      const void* const               p_key,
+        IN      cl_fmap_item_t* const   p_item );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_fmap_t structure into which to add the item.
+
+       p_key
+               [in] Pointer to the key value to assign to the item.  Storage for
+               the key must be persistant, as only the pointer is stored.  Users
+               are responsible for maintaining the validity of key pointers while
+               they are in use.
+
+       p_item
+               [in] Pointer to a cl_fmap_item_t stucture to insert into the flexi map.
+
+

RETURN VALUE

+
       Pointer to the item in the map with the specified key.  If insertion
+       was successful, this is the pointer to the item.  If an item with the
+       specified key already exists in the map, the pointer to that item is
+       returned.
+
+

NOTES

+
       Insertion operations may cause the flexi map to rebalance.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_remove, cl_fmap_item_t
+
+
+
+ +

[Structures] +Component Library: Flexi Map/cl_fmap_item_t

+ +

[top][index]

+

NAME

+
       cl_fmap_item_t
+
+

DESCRIPTION

+
       The cl_fmap_item_t structure is used by maps to store objects.
+
+       The cl_fmap_item_t structure should be treated as opaque and should
+       be manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_fmap_item
+{
+        /* Must be first to allow casting. */
+        cl_pool_item_t                  pool_item;
+        struct _cl_fmap_item    *p_left;
+        struct _cl_fmap_item    *p_right;
+        struct _cl_fmap_item    *p_up;
+        cl_map_color_t                  color;
+        const void* __ptr64             p_key;
+#ifdef _DEBUG_
+        struct _cl_fmap                 *p_map;
+#endif
+
+} cl_fmap_item_t;
+
+

FIELDS

+
       pool_item
+               Used to store the item in a doubly linked list, allowing more
+               efficient map traversal.
+
+       p_left
+               Pointer to the map item that is a child to the left of the node.
+
+       p_right
+               Pointer to the map item that is a child to the right of the node.
+
+       p_up
+               Pointer to the map item that is the parent of the node.
+
+       p_nil
+               Pointer to the map's NIL item, used as a terminator for leaves.
+               The NIL sentinel is in the cl_fmap_t structure.
+
+       color
+               Indicates whether a node is red or black in the map.
+
+       p_key
+               Pointer to the value that uniquely represents a node in a map.  This
+               pointer is set by calling cl_fmap_insert and can be retrieved by
+               calling cl_fmap_key.
+
+

NOTES

+
       None of the fields of this structure should be manipulated by users, as
+       they are crititcal to the proper operation of the map in which they
+       are stored.
+
+       To allow storing items in either a quick list, a quick pool, or a flexi
+       map, the map implementation guarantees that the map item can be safely
+       cast to a pool item used for storing an object in a quick pool, or cast to
+       a list item used for storing an object in a quick list.  This removes the
+       need to embed a flexi map item, a list item, and a pool item in objects
+       that need to be stored in a quick list, a quick pool, and a flexi map.
+
+       The flexi map item is defined to be identical in layout as a map item.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_insert, cl_fmap_key, cl_pool_item_t, cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_key

+ +

[top][index]

+

NAME

+
       cl_fmap_key
+
+

DESCRIPTION

+
       The cl_fmap_key function retrieves the key value of a map item.
+
+

SYNOPSIS

+
#pragma warning (push)
+#pragma warning (disable :4244)
+CL_INLINE const void* CL_API
+cl_fmap_key(
+        IN      const cl_fmap_item_t* const     p_item )
+{
+        CL_ASSERT( p_item );
+        return( p_item->p_key );
+}
+#pragma warning (pop )
+
+

PARAMETERS

+
       p_item
+               [in] Pointer to a map item whose key value to return.
+
+

RETURN VALUE

+
       Returns the a pointer to the key value for the specified map item.
+       The key value should not be modified to insure proper flexi map operation.
+
+

NOTES

+
       The key value is set in a call to cl_fmap_insert.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_insert
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_merge

+ +

[top][index]

+

NAME

+
       cl_fmap_merge
+
+

DESCRIPTION

+
       The cl_fmap_merge function moves all items from one map to another,
+       excluding duplicates.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_fmap_merge(
+        OUT             cl_fmap_t* const        p_dest_map,
+        IN OUT  cl_fmap_t* const        p_src_map );
+
+

PARAMETERS

+
       p_dest_map
+               [out] Pointer to a cl_fmap_t structure to which items should be added.
+
+       p_src_map
+               [in/out] Pointer to a cl_fmap_t structure whose items to add
+               to p_dest_map.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

NOTES

+
       Items are evaluated based on their keys only.
+
+       Upon return from cl_fmap_merge, the flexi map referenced by p_src_map
+       contains all duplicate items.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_delta
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_next

+ +

[top][index]

+

NAME

+
       cl_fmap_next
+
+

DESCRIPTION

+
       The cl_fmap_next function returns the map item with the next higher
+       key value than a specified map item.
+
+

SYNOPSIS

+
CL_INLINE cl_fmap_item_t* CL_API
+cl_fmap_next(
+        IN      const cl_fmap_item_t* const     p_item )
+{
+        CL_ASSERT( p_item );
+        return( (cl_fmap_item_t*)p_item->pool_item.list_item.p_next );
+}
+
+

PARAMETERS

+
       p_item
+               [in] Pointer to a map item whose successor to return.
+
+ RETURN VALUES
+       Pointer to the map item with the next higher key value in a flexi map.
+
+       Pointer to the map end if the specified item was the last item in
+       the flexi map.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_head, cl_fmap_tail, cl_fmap_prev, cl_fmap_end,
+       cl_fmap_item_t
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_prev

+ +

[top][index]

+

NAME

+
       cl_fmap_prev
+
+

DESCRIPTION

+
       The cl_fmap_prev function returns the map item with the next lower
+       key value than a precified map item.
+
+

SYNOPSIS

+
CL_INLINE cl_fmap_item_t* CL_API
+cl_fmap_prev(
+        IN      const cl_fmap_item_t* const     p_item )
+{
+        CL_ASSERT( p_item );
+        return( (cl_fmap_item_t*)p_item->pool_item.list_item.p_prev );
+}
+
+

PARAMETERS

+
       p_item
+               [in] Pointer to a map item whose predecessor to return.
+
+ RETURN VALUES
+       Pointer to the map item with the next lower key value in a flexi map.
+
+       Pointer to the map end if the specifid item was the first item in
+       the flexi map.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_head, cl_fmap_tail, cl_fmap_next, cl_fmap_end,
+       cl_fmap_item_t
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_remove

+ +

[top][index]

+

NAME

+
       cl_fmap_remove
+
+

DESCRIPTION

+
       The cl_fmap_remove function removes the map item with the specified key
+       from a flexi map.
+
+

SYNOPSIS

+
CL_EXPORT cl_fmap_item_t* CL_API
+cl_fmap_remove(
+        IN      cl_fmap_t* const        p_map,
+        IN      const void* const       p_key );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_fmap_t structure from which to remove the item
+               with the specified key.
+
+       p_key
+               [in] Pointer to the key value used to search for the map item
+               to remove.
+
+ RETURN VALUES
+       Pointer to the removed map item if it was found.
+
+       Pointer to the map end if no item with the specified key exists in the
+       flexi map.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_remove_item, cl_fmap_remove_all, cl_fmap_insert
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_remove_all

+ +

[top][index]

+

NAME

+
       cl_fmap_remove_all
+
+

DESCRIPTION

+
       The cl_fmap_remove_all function removes all items in a flexi map,
+       leaving it empty.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_fmap_remove_all(
+        IN      cl_fmap_t* const        p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+
+        p_map->root.p_left = &p_map->nil;
+        p_map->nil.pool_item.list_item.p_next = &p_map->nil.pool_item.list_item;
+        p_map->nil.pool_item.list_item.p_prev = &p_map->nil.pool_item.list_item;
+        p_map->count = 0;
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_fmap_t structure to empty.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_remove, cl_fmap_remove_item
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_remove_item

+ +

[top][index]

+

NAME

+
       cl_fmap_remove_item
+
+

DESCRIPTION

+
       The cl_fmap_remove_item function removes the specified map item
+       from a flexi map.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_fmap_remove_item(
+        IN      cl_fmap_t* const                p_map,
+        IN      cl_fmap_item_t* const   p_item );
+
+

PARAMETERS

+
       p_item
+               [in] Pointer to a map item to remove from its flexi map.
+
+ RETURN VALUES
+       This function does not return a value.
+
+       In a debug build, cl_fmap_remove_item asserts that the item being removed
+       is in the specified map.
+
+

NOTES

+
       Removes the map item pointed to by p_item from its flexi map.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_remove, cl_fmap_remove_all, cl_fmap_insert
+
+
+
+ +

[Structures] +Component Library: Flexi Map/cl_fmap_t

+ +

[top][index]

+

NAME

+
       cl_fmap_t
+
+

DESCRIPTION

+
       Flexi map structure.
+
+       The cl_fmap_t structure should be treated as opaque and should
+       be manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_fmap
+{
+        cl_fmap_item_t          root;
+        cl_fmap_item_t          nil;
+        cl_state_t                      state;
+        size_t                          count;
+        cl_pfn_fmap_cmp_t       pfn_compare;
+
+} cl_fmap_t;
+
+

PARAMETERS

+
       root
+               Map item that serves as root of the map.  The root is set up to
+               always have itself as parent.  The left pointer is set to point to
+               the item at the root.
+
+       nil
+               Map item that serves as terminator for all leaves, as well as providing
+               the list item used as quick list for storing map items in a list for
+               faster traversal.
+
+       state
+               State of the map, used to verify that operations are permitted.
+
+       count
+               Number of items in the map.
+
+       pfn_compare
+               Pointer to a compare function to invoke to compare the keys of
+               items in the map.
+
+

SEE ALSO

+
       Flexi Map, cl_pfn_fmap_cmp_t
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_fmap_tail

+ +

[top][index]

+

NAME

+
       cl_fmap_tail
+
+

DESCRIPTION

+
       The cl_fmap_tail function returns the map item with the highest key
+       value stored in a flexi map.
+
+

SYNOPSIS

+
CL_INLINE cl_fmap_item_t* CL_API
+cl_fmap_tail(
+        IN      const cl_fmap_t* const  p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+        return( (cl_fmap_item_t*)p_map->nil.pool_item.list_item.p_prev );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_fmap_t structure whose item with the highest key
+               is returned.
+
+ RETURN VALUES
+       Pointer to the map item with the highest key in the flexi map.
+
+       Pointer to the map end if the flexi map was empty.
+
+

NOTES

+
       cl_fmap_end does not remove the item from the map.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_head, cl_fmap_next, cl_fmap_prev, cl_fmap_end,
+       cl_fmap_item_t
+
+
+
+ +

[Functions] +Component Library: Flexi Map/cl_is_fmap_empty

+ +

[top][index]

+

NAME

+
       cl_is_fmap_empty
+
+

DESCRIPTION

+
       The cl_is_fmap_empty function returns whether a flexi map is empty.
+
+

SYNOPSIS

+
CL_INLINE boolean_t CL_API
+cl_is_fmap_empty(
+        IN      const cl_fmap_t* const  p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+
+        return( p_map->count == 0 );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_fmap_t structure to test for emptiness.
+
+ RETURN VALUES
+       TRUE if the flexi map is empty.
+
+       FALSE otherwise.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_count, cl_fmap_remove_all
+
+
+
+ +

[Definitions] +Component Library: Flexi Map/cl_pfn_fmap_apply_t

+ +

[top][index]

+

NAME

+
       cl_pfn_fmap_apply_t
+
+

DESCRIPTION

+
       The cl_pfn_fmap_apply_t function type defines the prototype for functions
+       used to iterate items in a flexi map.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_fmap_apply_t)(
+        IN      cl_fmap_item_t* const   p_map_item,
+        IN      void*                                   context );
+
+

PARAMETERS

+
       p_map_item
+               [in] Pointer to a cl_fmap_item_t structure.
+
+       context
+               [in] Value passed to the callback function.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for the
+       function provided by users as a parameter to the cl_fmap_apply_func
+       function.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_apply_func
+
+
+
+ +

[Definitions] +Component Library: Flexi Map/cl_pfn_fmap_cmp_t

+ +

[top][index]

+

NAME

+
       cl_pfn_fmap_cmp_t
+
+

DESCRIPTION

+
       The cl_pfn_fmap_cmp_t function type defines the prototype for functions
+       used to compare item keys in a flexi map.
+
+

SYNOPSIS

+
typedef intn_t
+(CL_API *cl_pfn_fmap_cmp_t)(
+        IN      const void* const               p_key1,
+        IN      const void*     const           p_key2 );
+
+

PARAMETERS

+
       p_key1
+               [in] Pointer to the first of two keys to compare.
+
+       p_key2
+               [in] Pointer to the second of two keys to compare.
+
+

RETURN VALUE

+
       Returns 0 if the keys match.
+       Returns less than 0 if p_key1 is less than p_key2.
+       Returns greater than 0 if p_key1 is greater than p_key2.
+
+

NOTES

+
       This function type is provided as function prototype reference for the
+       function provided by users as a parameter to the cl_fmap_init function.
+
+

SEE ALSO

+
       Flexi Map, cl_fmap_init
+
+
+ + diff --git a/trunk/docs/complib/cl_ioctl_h.html b/trunk/docs/complib/cl_ioctl_h.html new file mode 100644 index 00000000..c2ed4805 --- /dev/null +++ b/trunk/docs/complib/cl_ioctl_h.html @@ -0,0 +1,609 @@ + + + + +./inc_doc/complib/cl_ioctl_h.html + + + + +Generated from ./inc/complib/cl_ioctl.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Modules] +Component Library/IOCTL Object

+ +

[top][index]

+

NAME

+
       IOCTL Object
+
+

DESCRIPTION

+
       The IOCTL object provides functionality for handling IOCTL requests.
+
+       The IOCTL object is only available in kernel mode and provides
+       functionality for accessing information about IO requests initiated
+       by a user-mode application.  The IOCTL_CODE macro is used in both
+       user and kernel mode to initiate and dispatch IOCTL requests, respectively.
+
+       In Linux, in order for the IOCTL object to be used, requests must be
+       initiated and handled using the Device Framework abstraction.
+
+

SEE ALSO

+
       Structures:
+               cl_ioctl_handle_t
+
+       Callbacks:
+               cl_pfn_ioctl_handler_t
+
+       Control Code Generation
+               IOCTL_CODE
+
+       Kernel Mode Access
+               cl_ioctl_process
+               cl_ioctl_complete
+               cl_ioctl_type
+               cl_ioctl_cmd
+               cl_ioctl_ctl_code
+               cl_ioctl_in_buf
+               cl_ioctl_in_size
+               cl_ioctl_out_buf
+               cl_ioctl_out_size
+
+       User Mode Access
+               cl_ioctl_request
+               cl_ioctl_result
+
+
+
+ +

[Functions] +Component Library: IOCTL Object/cl_ioctl_cmd

+ +

[top][index]

+

NAME

+
       cl_ioctl_cmd
+
+

DESCRIPTION

+
       Returns the command of an IOCTL
+
+

SYNOPSIS

+
CL_EXPORT uint16_t CL_API
+cl_ioctl_cmd(
+        IN      cl_ioctl_handle_t       h_ioctl );
+
+

PARAMETERS

+
       h_ioctl
+               [in] Handle to an IOCTL
+
+

RETURN VALUE

+
       Returns the command of the specified IOCTL request, as defined using
+       the IOCTL_CMD macro.
+
+

NOTES

+
       The cl_ioctl_cmd function is only available in the kernel.
+
+

SEE ALSO

+
       IOCTL Object, cl_ioctl_handle_t, cl_ioctl_type, cl_ioctl_ctl_code
+
+
+
+ +

[Functions] +Component Library: IOCTL Object/cl_ioctl_complete

+ +

[top][index]

+

NAME

+
       cl_ioctl_complete
+
+

DESCRIPTION

+
       Fills in completion information for an IOCTL and releases the IOCTL request
+       for completion.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_ioctl_complete(
+        IN      cl_ioctl_handle_t       h_ioctl,
+        IN      cl_status_t                     io_status,
+        IN      size_t                          ret_bytes );
+
+

PARAMETERS

+
       h_ioctl
+               Handle to the IOCTL being completed.  This handle was provided to
+               the IOCTL handler.
+
+       io_status
+               Status of the IOCTL request.
+
+       ret_bytes
+               Number of bytes written to the output buffer.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       IOCTL Object, cl_ioctl_handle_t, cl_ioctl_process
+
+
+
+ +

[Functions] +Component Library: IOCTL Object/cl_ioctl_ctl_code

+ +

[top][index]

+

NAME

+
       cl_ioctl_ctl_code
+
+

DESCRIPTION

+
       Returns the 32-bit control code of an IOCTL
+
+

SYNOPSIS

+
CL_EXPORT uint32_t CL_API
+cl_ioctl_ctl_code(
+        IN      cl_ioctl_handle_t       h_ioctl );
+
+

PARAMETERS

+
       h_ioctl
+               [in] Handle to an IOCTL
+
+

RETURN VALUE

+
       Returns the 32-bit control code of the specified IOCTL request,
+       as defined using the IOCTL_CMD macro.
+
+

NOTES

+
       The cl_ioctl_ctl_code function is only available in the kernel.
+
+

SEE ALSO

+
       IOCTL Object, cl_ioctl_handle_t, cl_ioctl_type, cl_ioctl_cmd
+
+
+
+ +

[Definitions] +Component Library: IOCTL Object/cl_ioctl_handle_t

+ +

[top][index]

+

NAME

+
       cl_ioctl_handle_t
+
+

DESCRIPTION

+
       Opaque handle representing an IO request.
+
+

NOTES

+
       The cl_ioctl_handle_t type is only available in the kernel.
+       The cl_ioctl_handle_t type should be treated as opaque, as it
+       varies from environment to environment.
+
+

SEE ALSO

+
       IOCTL Object, cl_ioctl_type, cl_ioctl_cmd, cl_ioctl_in_buf,
+       cl_ioctl_in_size, cl_ioctl_out_buf, cl_ioctl_out_size,
+       cl_ioctl_set_status, cl_ioctl_set_ret_bytes
+
+
+
+ +

[Functions] +Component Library: IOCTL Object/cl_ioctl_in_buf

+ +

[top][index]

+

NAME

+
       cl_ioctl_in_buf
+
+

DESCRIPTION

+
       Returns a pointer to the input buffer of an IOCTL.
+
+

SYNOPSIS

+
CL_EXPORT void* CL_API
+cl_ioctl_in_buf(
+        IN      cl_ioctl_handle_t       h_ioctl );
+
+

PARAMETERS

+
       h_ioctl
+               [in] Handle to an IOCTL
+
+

RETURN VALUE

+
       Returns the input buffer of the specified IOCTL request.
+
+

NOTES

+
       The cl_ioctl_in_buf function is only available in the kernel.
+
+       In Windows, for IOCTL operations defined as METHOD_IN_DIRECT, the
+       returned pointer points to the MDL describing the input buffer.
+
+

SEE ALSO

+
       IOCTL Object, cl_ioctl_handle_t, cl_ioctl_in_size,
+       cl_ioctl_out_buf, cl_ioctl_out_size
+
+
+
+ +

[Functions] +Component Library: IOCTL Object/cl_ioctl_in_size

+ +

[top][index]

+

NAME

+
       cl_ioctl_in_size
+
+

DESCRIPTION

+
       Returns the size of the input buffer of an IOCTL.
+
+

SYNOPSIS

+
CL_EXPORT size_t CL_API
+cl_ioctl_in_size(
+        IN      cl_ioctl_handle_t       h_ioctl );
+
+

PARAMETERS

+
       h_ioctl
+               [in] Handle to an IOCTL
+
+

RETURN VALUE

+
       Returns the size, in bytes, of the input buffer of the specified
+       IOCTL request.
+
+

NOTES

+
       The cl_ioctl_in_size function is only available in the kernel.
+
+

SEE ALSO

+
       IOCTL Object, cl_ioctl_handle_t, cl_ioctl_in_buf,
+       cl_ioctl_out_buf, cl_ioctl_out_size
+
+
+
+ +

[Functions] +Component Library: IOCTL Object/cl_ioctl_out_buf

+ +

[top][index]

+

NAME

+
       cl_ioctl_out_buf
+
+

DESCRIPTION

+
       Returns a pointer to the output buffer of an IOCTL.
+
+

SYNOPSIS

+
CL_EXPORT void* CL_API
+cl_ioctl_out_buf(
+        IN      cl_ioctl_handle_t       h_ioctl );
+
+

PARAMETERS

+
       h_ioctl
+               [in] Handle to an IOCTL
+
+

RETURN VALUE

+
       Returns a pointer to the output buffer of the specified IOCTL request.
+
+

NOTES

+
       The cl_ioctl_out_buf function is only available in the kernel.
+
+       In Windows, for IOCTL operations defined as METHOD_IN_DIRECT or
+       METHOD_OUT_DIRECT, the returned pointer points to the MDL describing
+       the input buffer.
+
+

SEE ALSO

+
       IOCTL Object, cl_ioctl_handle_t, cl_ioctl_out_size,
+       cl_ioctl_in_buf, cl_ioctl_in_size
+
+
+
+ +

[Functions] +Component Library: IOCTL Object/cl_ioctl_out_size

+ +

[top][index]

+

NAME

+
       cl_ioctl_out_size
+
+

DESCRIPTION

+
       Returns the size of the output buffer of an IOCTL.
+
+

SYNOPSIS

+
CL_EXPORT size_t CL_API
+cl_ioctl_out_size(
+        IN      cl_ioctl_handle_t       h_ioctl );
+
+

PARAMETERS

+
       h_ioctl
+               [in] Handle to an IOCTL
+
+

RETURN VALUE

+
       Returns the size, in bytes, of the input buffer of the specified
+       IOCTL request.
+
+

NOTES

+
       The cl_ioctl_out_size function is only available in the kernel.
+
+

SEE ALSO

+
       IOCTL Object, cl_ioctl_handle_t, cl_ioctl_out_buf,
+       cl_ioctl_in_buf, cl_ioctl_in_size
+
+
+
+ +

[Functions] +Component Library: IOCTL Object/cl_ioctl_process

+ +

[top][index]

+

NAME

+
       cl_ioctl_process
+
+

DESCRIPTION

+
       The cl_ioctl_process function unpacks information initiated by a call to
+       cl_ioctl_request function and invokes a user-supplied callback.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_ioctl_process(
+        IN      void                                    *p_ioctl,
+        IN      cl_pfn_ioctl_handler_t  pfn_ioctl_handler,
+        IN      void                                    *context_1,
+        IN      void                                    *context_2 );
+
+

PARAMETERS

+
       p_ioctl
+               [in] Pointer to an OS specific IOCTL information.  In Linux,
+               this parameter depends on whether the IOCTL is handled synchronously
+               or asynchronously.  See the notes for further detail.
+               In Windows, this is a pointer to an IRP.
+
+       pfn_ioctl_handler
+               [in] Pointer to the callback function to invoke for handling the IOCTL.
+               This callback is independent of the IOCTL command.
+
+       context_1
+               [in] First of two context parameters to pass to the handler.
+
+       context_2
+               [in] Second of two context parameters to pass to the handler.
+
+ RETURN VALUES
+       CL_SUCCESS if the IOCTL was processed successfully.
+
+       Other values to indicate various failures.
+
+

NOTES

+
       Users must call cl_ioctl_complete from within the handler if completing
+       the IOCTL request synchronously.  If the IOCTL request's control code is
+       invalid, the handler should return CL_INVALID_REQUEST.
+
+       In Linux, the p_ioctl parameter is a copy of the argp parameter on input,
+       and on output points to the IOCTL request object passed to the IOCTL
+       handler if and only if the IOCTL handler returned CL_PENDING.
+       This allows the user to cancel the request by passing the same
+       handle to the cancel routine that was passed to the IOCTL handler.
+       If all IOCTLs are handled synchronously, it is acceptable to pass the argp
+       parameter of the IOCTL entry point instead of a copy.
+
+

SEE ALSO

+
       IOCTL Object, cl_ioctl_handle_t, cl_pfn_ioctl_handler_t, cl_ioctl_complete
+
+
+
+ +

[Functions] +Component Library: IOCTL Object/cl_ioctl_request

+ +

[top][index]

+

NAME

+
       cl_ioctl_request
+
+

DESCRIPTION

+
       The cl_ioctl_request is used by user-mode clients to initiate IOCTL
+       requests to a device.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_ioctl_request(
+        IN              void                    *h_dev,
+        IN              uint32_t                ioctl_code,
+        IN              void                    *p_in_buf,
+        IN              size_t                  in_size,
+                OUT     void                    *p_out_buf,
+        IN              size_t                  out_size,
+                OUT     size_t                  *p_ret_bytes OPTIONAL,
+        IN              void                    *p_async_info OPTIONAL );
+
+

PARAMETERS

+
       h_dev
+               [in] Handle to the device to which the IOCTL request is targetted.
+               In Linux, this is a file descriptor.  In Windows, this is a file
+               handle.
+
+       ioctl_code
+               [in] Control code for the IOCTL request.
+
+       p_in_buf
+               [in] Pointer to the input buffer.
+
+       in_size
+               [in] Size, in bytes, of the input buffer.
+
+       p_out_buf
+               [out] Pointer to the output buffer.
+
+       out_size
+               [in] Size, in bytes, of the output buffer.
+
+       p_ret_bytes
+               [out] Number of bytes written to the output buffer.  This parameter is
+               mutually exclusive of the p_async_info parameter.
+
+       p_async_info
+               [in] For platforms that support asynchronous I/O, supplies a pointer
+               to that platform's async I/O structure, if any.  For Windows, this
+               is a pointer to an OVERLAPPED structure.  This parameter is mutually
+               exclusive of the p_ret_bytes parameter.
+
+

SEE ALSO

+
       IOCTL Object, cl_ioctl_result
+
+
+
+ +

[Functions] +Component Library: IOCTL Object/cl_ioctl_result

+ +

[top][index]

+

NAME

+
       cl_ioctl_result
+
+

DESCRIPTION

+
       Checks the status of an asynchronous IOCTL request.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_ioctl_result(
+        IN      void            *h_dev,
+        IN      void            *p_async_info,
+        OUT     size_t          *p_ret_bytes,
+        IN      boolean_t       blocking );
+
+

PARAMETERS

+
       h_dev
+               [in] Handle to the device to which the IOCTL request is targetted.
+               In Linux, this is a file descriptor.  In Windows, this is a file
+               handle.
+
+       p_async_info
+               [in] For platforms that support asynchronous I/O, supplies a pointer
+               to that platform's async I/O structure, if any.  For Windows, this
+               is a pointer to an OVERLAPPED structure.  This must be the same
+               as that provided in the cl_ioctl_request function.
+
+       p_ret_bytes
+               [out] Number of bytes written to the output buffer.
+
+       blocking
+               [in] If TRUE, indicates that the call should wait until the
+               specified IOCTL request is complete.
+
+ RETURN VALUES
+       CL_SUCCESS if the IOCTL request was successful.  p_ret_bytes contains
+       the number bytes written to the output buffer.
+
+       CL_PENDING if the IOCTL request is not yet complete.
+
+       Other status values to indicate errors.
+
+

SEE ALSO

+
       IOCTL Object, cl_ioctl_request
+
+
+
+ +

[Functions] +Component Library: IOCTL Object/cl_ioctl_type

+ +

[top][index]

+

NAME

+
       cl_ioctl_type
+
+

DESCRIPTION

+
       Returns the type of an IOCTL.
+
+

SYNOPSIS

+
CL_EXPORT uint16_t CL_API
+cl_ioctl_type(
+        IN      cl_ioctl_handle_t       h_ioctl );
+
+

PARAMETERS

+
       h_ioctl
+               [in] Handle to an IOCTL
+
+

RETURN VALUE

+
       Returns the type of the specified IOCTL request, as defined using
+       the IOCTL_CMD macro.
+
+

NOTES

+
       The cl_ioctl_type function is only available in the kernel.
+
+

SEE ALSO

+
       IOCTL Object, cl_ioctl_handle_t, cl_ioctl_cmd, cl_ioctl_ctl_code
+
+
+
+ +

[Definitions] +Component Library: IOCTL Object/cl_pfn_ioctl_handler_t

+ +

[top][index]

+

NAME

+
       cl_pfn_ioctl_handler_t
+
+

DESCRIPTION

+
       The cl_pfn_ioctl_handler_t function type defines the prototype for
+       IOCTL handlers used when handling IOCTL requests initiated by
+       cl_ioctl_request.
+
+

SYNOPSIS

+
typedef cl_status_t
+(CL_API *cl_pfn_ioctl_handler_t)(
+        IN      cl_ioctl_handle_t       h_ioctl,
+        IN      void                            *context_1,
+        IN      void                            *context_2 );
+
+

PARAMETERS

+
       h_ioctl
+               [in] Handle to the IOCTL request.
+
+       context_1
+               [in] First context parameters, as provided to cl_ioctl_process.
+
+       context_2
+               [in] Second context parameters, as provided to cl_ioctl_process.
+
+ RETURN VALUES
+       CL_SUCCESS if the IOCTL was completed successfully.
+
+       CL_PENDING if the IOCTL is being processed asynchronously.
+
+       Other return values in case of errors.
+
+

NOTES

+
       It is acceptable to complete the IOCTL successfully to report an error
+       status in the output buffer.
+
+

SEE ALSO

+
       IOCTL Object, cl_ioctl_handle_t, cl_ioctl_process
+
+
+
+ +

[Definitions] +Component Library: IOCTL Object/IOCTL_CODE

+ +

[top][index]

+

NAME

+
       IOCTL_CODE
+
+

DESCRIPTION

+
       Macro for defining IO control command codes.
+
+

SYNOPSIS

+
*       uint32_t IOCTL_CODE( uint16_t type, uint16_t cmd )
+
+

PARAMETERS

+
       type
+               [in] user-defined type representing the type of command.  For Linux,
+               the type is truncated to 8-bits.  For Windows, the type is a 16-bit
+               value, as described in "Specifying Device Types" in the DDK docs.
+
+       cmd
+               [in] User-defined command.  For Linux, the command field is truncated
+               to 8-bits.  For Windows, the command can be 12-bits, with values
+               below 0x800 reserved by Microsoft for system defined commands.
+
+

RETURN VALUE

+
       A 32-bit control code.  User-mode clients use the control code to initiate
+       requests.  Kernel-mode clients use the control code to distinguish between
+       different requests.
+
+

NOTE

+
       In Windows, all IOCTL command codes defined with the IOCTL_CODE command
+       result in FILE_ANY_ACCESS and METHOD_BUFFERED being specified.
+
+

SEE ALSO

+
       IOCTL Object, cl_dev_ioctl, cl_ioctl_type, cl_ioctl_cmd
+
+
+ + diff --git a/trunk/docs/complib/cl_irqlock_h.html b/trunk/docs/complib/cl_irqlock_h.html new file mode 100644 index 00000000..899e62b7 --- /dev/null +++ b/trunk/docs/complib/cl_irqlock_h.html @@ -0,0 +1,221 @@ + + + + +./inc_doc/complib/cl_irqlock_h.html + + + + +Generated from ./inc/complib/cl_irqlock.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Modules] +Component Library/Irqlock

+ +

[top][index]

+

NAME

+
       Irqlock
+
+

DESCRIPTION

+
       Irqlock provides synchronization at interrupt level between threads for 
+       exclusive access to a resource.
+
+       The irqlock functions manipulate a cl_irqlock_t structure which should 
+       be treated as opaque and should be manipulated only through the provided 
+       functions.
+
+

SEE ALSO

+
       Structures:
+               cl_irqlock_t
+
+       Initialization:
+               cl_irqlock_construct, cl_irqlock_init, cl_irqlock_destroy
+
+       Manipulation
+               cl_irqlock_acquire, cl_irqlock_release
+
+
+
+ +

[Functions] +Component Library: Irqlock/cl_irqlock_acquire

+ +

[top][index]

+

NAME

+
       cl_irqlock_acquire
+
+

DESCRIPTION

+
       The cl_irqlock_acquire function acquires a IRQ lock.
+       This version of lock does not prevent an interrupt from 
+       occuring on the processor on which the code is being
+       executed. To protect from an interrupt level resource
+       use the cl_irqlock_acquire_irq function.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_irqlock_acquire( 
+        IN      cl_irqlock_t* const             p_irqlock );
+
+

PARAMETERS

+
       p_irqlock 
+               [in] Pointer to a IRQ lock structure to acquire.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Irqlock, cl_irqlock_release
+
+
+
+ +

[Functions] +Component Library: Irqlock/cl_irqlock_construct

+ +

[top][index]

+

NAME

+
       cl_irqlock_construct
+
+

DESCRIPTION

+
       The cl_irqlock_construct function initializes the state of a 
+       IRQ lock.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_irqlock_construct( 
+        IN      cl_irqlock_t* const             p_irqlock );
+
+

PARAMETERS

+
       p_irqlock 
+               [in] Pointer to a IRQ lock structure whose state to initialize.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_irqlock_destroy without first calling 
+       cl_irqlock_init.
+
+       Calling cl_irqlock_construct is a prerequisite to calling any other
+       IRQ lock function except cl_irqlock_init.
+
+

SEE ALSO

+
       Irqlock, cl_irqlock_init, cl_irqlock_destroy
+
+
+
+ +

[Functions] +Component Library: Irqlock/cl_irqlock_destroy

+ +

[top][index]

+

NAME

+
       cl_irqlock_destroy
+
+

DESCRIPTION

+
       The cl_irqlock_destroy function performs all necessary cleanup of a 
+       IRQ lock.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_irqlock_destroy( 
+        IN      cl_irqlock_t* const             p_irqlock );
+
+

PARAMETERS

+
       p_irqlock 
+               [in] Pointer to a IRQ lock structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Performs any necessary cleanup of a IRQ lock. This function must only 
+       be called if either cl_irqlock_construct or cl_irqlock_init has been 
+       called.
+
+

SEE ALSO

+
       Irqlock, cl_irqlock_construct, cl_irqlock_init
+
+
+
+ +

[Functions] +Component Library: Irqlock/cl_irqlock_init

+ +

[top][index]

+

NAME

+
       cl_irqlock_init
+
+

DESCRIPTION

+
       The cl_irqlock_init function initializes a IRQ lock for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_irqlock_init( 
+        IN      cl_irqlock_t* const             p_irqlock,
+        IN      cl_interrupt_t* const   p_interrupt );
+
+

PARAMETERS

+
       p_irqlock 
+               [in] Pointer to a IRQ lock structure to initialize.
+
+       p_interrupt
+               [in] Platform specific pointer conveying information about the
+               interrupt vector and level with which to synchronize.
+
+ RETURN VALUES
+       CL_SUCCESS if initialization succeeded.
+
+       CL_ERROR if initialization failed. Callers should call 
+       cl_irqlock_destroy to clean up any resources allocated during 
+       initialization.
+
+

NOTES

+
       Initialize the IRQ lock structure. Allows calling cl_irqlock_aquire 
+       and cl_irqlock_release.
+
+       In Linux, the p_interrupt parameter is currently ignored.
+
+       In Windows, the p_interrupt parameter is a pointer to a KINTERRUPT object,
+       the value of which is supplied by a call to IoConnectInterrupt.
+
+

SEE ALSO

+
       Irqlock, cl_irqlock_construct, cl_irqlock_destroy, 
+       cl_irqlock_acquire, cl_irqlock_release
+
+
+
+ +

[Functions] +Component Library: Irqlock/cl_irqlock_release

+ +

[top][index]

+

NAME

+
       cl_irqlock_release
+
+

DESCRIPTION

+
       The cl_irqlock_release function releases a IRQ lock object.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_irqlock_release(
+        IN      cl_irqlock_t* const             p_irqlock );
+
+

PARAMETERS

+
       p_irqlock 
+               [in] Pointer to a IRQ lock structure to release.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Releases a IRQ lock after a call to cl_irqlock_acquire.
+
+

SEE ALSO

+
       Irqlock, cl_irqlock_acquire
+
+
+ + diff --git a/trunk/docs/complib/cl_list_h.html b/trunk/docs/complib/cl_list_h.html new file mode 100644 index 00000000..90eeb582 --- /dev/null +++ b/trunk/docs/complib/cl_list_h.html @@ -0,0 +1,1412 @@ + + + + +./inc_doc/complib/cl_list_h.html + + + + +Generated from ./inc/complib/cl_list.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Modules] +Component Library/List

+ +

[top][index]

+

NAME

+
       List
+
+

DESCRIPTION

+
       List stores objects in a doubly linked list.
+
+       Unlike quick list, users pass pointers to the object being stored, rather
+       than to a cl_list_item_t structure.  Insertion operations on a list can
+       fail, and callers should trap for such failures.
+
+       Use quick list in situations where insertion failures cannot be tolerated.
+
+       List is not thread safe, and users must provide serialization.
+
+       The list functions operates on a cl_list_t structure which should be
+       treated as opaque and should be manipulated only through the provided
+       functions.
+
+

SEE ALSO

+
       Types:
+               cl_list_iterator_t
+
+       Structures:
+               cl_list_t
+
+       Callbacks:
+               cl_pfn_list_apply_t, cl_pfn_list_find_t
+
+       Initialization/Destruction:
+               cl_list_construct, cl_list_init, cl_list_destroy
+
+       Iteration:
+               cl_list_next, cl_list_prev, cl_list_head, cl_list_tail,
+               cl_list_end
+
+       Manipulation:
+               cl_list_insert_head, cl_list_insert_tail,
+               cl_list_insert_array_head, cl_list_insert_array_tail,
+               cl_list_insert_prev, cl_list_insert_next,
+               cl_list_remove_head, cl_list_remove_tail,
+               cl_list_remove_object, cl_list_remove_item, cl_list_remove_all
+
+       Search:
+               cl_is_object_in_list, cl_list_find_from_head, cl_list_find_from_tail,
+               cl_list_apply_func
+
+       Attributes:
+               cl_list_count, cl_is_list_empty, cl_is_list_inited
+
+
+
+ +

[Functions] +Component Library: List/cl_is_list_empty

+ +

[top][index]

+

NAME

+
       cl_is_list_empty
+
+

DESCRIPTION

+
       The cl_is_list_empty function returns whether a list is empty.
+
+

SYNOPSIS

+
CL_INLINE boolean_t CL_API
+cl_is_list_empty(
+        IN      const cl_list_t* const  p_list )
+{
+        CL_ASSERT( p_list );
+        CL_ASSERT( cl_is_qpool_inited( &p_list->list_item_pool ) );
+        return( cl_is_qlist_empty( &p_list->list ) );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure.
+
+ RETURN VALUES
+       TRUE if the specified list is empty.
+
+       FALSE otherwise.
+
+

SEE ALSO

+
       List, cl_list_count, cl_list_remove_all
+
+
+
+ +

[Functions] +Component Library: List/cl_is_list_inited

+ +

[top][index]

+

NAME

+
       cl_is_list_inited
+
+

DESCRIPTION

+
       The cl_is_list_inited function returns whether a list was
+       initialized successfully.
+
+

SYNOPSIS

+
CL_INLINE boolean_t CL_API
+cl_is_list_inited(
+        IN      const cl_list_t* const  p_list )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /*
+         * The pool is the last thing initialized.  If it is initialized, the
+         * list is initialized too.
+         */
+        return( cl_is_qpool_inited( &p_list->list_item_pool ) );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure whose initilization state
+               to check.
+
+ RETURN VALUES
+       TRUE if the list was initialized successfully.
+
+       FALSE otherwise.
+
+

NOTES

+
       Allows checking the state of a list to determine if invoking
+       member functions is appropriate.
+
+

SEE ALSO

+
       List
+
+
+
+ +

[Functions] +Component Library: List/cl_is_object_in_list

+ +

[top][index]

+

NAME

+
       cl_is_object_in_list
+
+

DESCRIPTION

+
       The cl_is_object_in_list function returns whether an object
+       is stored in a list.
+
+

SYNOPSIS

+
CL_EXPORT boolean_t CL_API
+cl_is_object_in_list(
+        IN      const cl_list_t* const  p_list,
+        IN      const void* const               p_object );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure in which to look for the object.
+
+       p_object
+               [in] Pointer to an object stored in a list.
+
+ RETURN VALUES
+       TRUE if p_object was found in the list.
+
+       FALSE otherwise.
+
+

SEE ALSO

+
       List
+
+
+
+ +

[Functions] +Component Library: List/cl_list_apply_func

+ +

[top][index]

+

NAME

+
       cl_list_apply_func
+
+

DESCRIPTION

+
       The cl_list_apply_func function executes a specified function for every
+       object stored in a list.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_list_apply_func(
+        IN      const cl_list_t* const  p_list,
+        IN      cl_pfn_list_apply_t             pfn_func,
+        IN      const void* const               context );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure to iterate.
+
+       pfn_func
+               [in] Function invoked for every item in a list.
+               See the cl_pfn_list_apply_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_list_apply_func invokes the specified callback function for every
+       object stored in the list, starting from the head.  The function specified
+       by the pfn_func parameter must not perform any list operations as these
+       would corrupt the list.
+
+

SEE ALSO

+
       List, cl_list_find_from_head, cl_list_find_from_tail,
+       cl_pfn_list_apply_t
+
+
+
+ +

[Functions] +Component Library: List/cl_list_construct

+ +

[top][index]

+

NAME

+
       cl_list_construct
+
+

DESCRIPTION

+
       The cl_list_construct function constructs a list.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_list_construct(
+        IN      cl_list_t* const        p_list );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to cl_list_t object whose state to initialize.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_list_init, cl_list_destroy and cl_is_list_inited.
+
+       Calling cl_list_construct is a prerequisite to calling any other
+       list function except cl_list_init.
+
+

SEE ALSO

+
       List, cl_list_init, cl_list_destroy, cl_is_list_inited
+
+
+
+ +

[Functions] +Component Library: List/cl_list_count

+ +

[top][index]

+

NAME

+
       cl_list_count
+
+

DESCRIPTION

+
       The cl_list_count function returns the number of objects stored in a list.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_list_count(
+        IN      const cl_list_t* const  p_list )
+{
+        CL_ASSERT( p_list );
+        CL_ASSERT( cl_is_qpool_inited( &p_list->list_item_pool ) );
+
+        return( cl_qlist_count( &p_list->list ) );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure whose object to count.
+
+ RETURN VALUES
+       Number of objects stored in the specified list.
+
+

SEE ALSO

+
       List
+
+
+
+ +

[Functions] +Component Library: List/cl_list_destroy

+ +

[top][index]

+

NAME

+
       cl_list_destroy
+
+

DESCRIPTION

+
       The cl_list_destroy function destroys a list.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_list_destroy(
+        IN      cl_list_t* const        p_list );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to cl_list_t structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_list_destroy does not affect any of the objects stored in the list,
+       but does release all memory allocated internally.  Further operations
+       should not be attempted on the list after cl_list_destroy is invoked.
+
+       This function should only be called after a call to cl_list_construct
+       or cl_list_init.
+
+       In debug builds, cl_list_destroy asserts if the list is not empty.
+
+

SEE ALSO

+
       List, cl_list_construct, cl_list_init
+
+
+
+ +

[Functions] +Component Library: List/cl_list_end

+ +

[top][index]

+

NAME

+
       cl_list_end
+
+

DESCRIPTION

+
       The cl_list_end function returns returns the list iterator for
+       the end of a list.
+
+

SYNOPSIS

+
CL_INLINE const cl_list_iterator_t CL_API
+cl_list_end(
+        IN      const cl_list_t* const  p_list )
+{
+        CL_ASSERT( p_list );
+        CL_ASSERT( cl_is_qpool_inited( &p_list->list_item_pool ) );
+
+        return( cl_qlist_end( &p_list->list ) );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure for which the iterator for the
+               object at the head is to be returned.
+
+

RETURN VALUE

+
       cl_list_iterator_t for the end of the list.
+
+

NOTES

+
       Use cl_list_obj to retrieve the object associated with the
+       returned cl_list_iterator_t.
+
+

SEE ALSO

+
       List, cl_list_head, cl_list_tail, cl_list_next, cl_list_prev,
+       cl_list_obj
+
+
+
+ +

[Functions] +Component Library: List/cl_list_find_from_head

+ +

[top][index]

+

NAME

+
       cl_list_find_from_head
+
+

DESCRIPTION

+
       The cl_list_find_from_head function uses a specified function
+       to search for an object starting from the head of a list.
+
+

SYNOPSIS

+
CL_EXPORT const cl_list_iterator_t CL_API
+cl_list_find_from_head(
+        IN      const cl_list_t* const  p_list,
+        IN      cl_pfn_list_find_t              pfn_func,
+        IN      const void* const               context );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure to search.
+
+       pfn_func
+               [in] Function invoked to determine if a match was found.
+               See the cl_pfn_list_find_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context.
+
+ RETURN VALUES
+       Returns the iterator for the object if found.
+
+       Returns the iterator for the list end otherwise.
+
+

NOTES

+
       cl_list_find_from_head does not remove the found object from
+       the list.  The iterator for the object is returned when the function
+       provided by the pfn_func parameter returns CL_SUCCESS.  The function
+       specified by the pfn_func parameter must not perform any list
+       operations as these would corrupt the list.
+
+

SEE ALSO

+
       List, cl_list_find_from_tail, cl_list_apply_func,
+       cl_pfn_list_find_t
+
+
+
+ +

[Functions] +Component Library: List/cl_list_find_from_tail

+ +

[top][index]

+

NAME

+
       cl_list_find_from_tail
+
+

DESCRIPTION

+
       The cl_list_find_from_tail function uses a specified function
+       to search for an object starting from the tail of a list.
+
+

SYNOPSIS

+
CL_EXPORT const cl_list_iterator_t CL_API
+cl_list_find_from_tail(
+        IN      const cl_list_t* const  p_list,
+        IN      cl_pfn_list_find_t              pfn_func,
+        IN      const void* const               context );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure to search.
+
+       pfn_func
+               [in] Function invoked to determine if a match was found.
+               See the cl_pfn_list_find_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context.
+
+ RETURN VALUES
+       Returns the iterator for the object if found.
+
+       Returns the iterator for the list end otherwise.
+
+

NOTES

+
       cl_list_find_from_tail does not remove the found object from
+       the list.  The iterator for the object is returned when the function
+       provided by the pfn_func parameter returns CL_SUCCESS.  The function
+       specified by the pfn_func parameter must not perform any list
+       operations as these would corrupt the list.
+
+

SEE ALSO

+
       List, cl_list_find_from_head, cl_list_apply_func,
+       cl_pfn_list_find_t
+
+
+
+ +

[Functions] +Component Library: List/cl_list_head

+ +

[top][index]

+

NAME

+
       cl_list_head
+
+

DESCRIPTION

+
       The cl_list_head function returns returns a list iterator for
+       the head of a list.
+
+

SYNOPSIS

+
CL_INLINE const cl_list_iterator_t CL_API
+cl_list_head(
+        IN      const cl_list_t* const  p_list )
+{
+        CL_ASSERT( p_list );
+        CL_ASSERT( cl_is_qpool_inited( &p_list->list_item_pool ) );
+
+        return( cl_qlist_head( &p_list->list ) );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure for which the iterator for the
+               object at the head is to be returned.
+
+ RETURN VALUES
+       cl_list_iterator_t for the head of the list.
+
+       cl_list_iterator_t for the end of the list if the list is empty.
+
+

NOTES

+
       Use cl_list_obj to retrieve the object associated with the
+       returned cl_list_iterator_t.
+
+

SEE ALSO

+
       List, cl_list_tail, cl_list_next, cl_list_prev, cl_list_end,
+       cl_list_obj
+
+
+
+ +

[Functions] +Component Library: List/cl_list_init

+ +

[top][index]

+

NAME

+
       cl_list_init
+
+

DESCRIPTION

+
       The cl_list_init function initializes a list for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_list_init(
+        IN      cl_list_t* const        p_list,
+        IN      const size_t            min_items );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to cl_list_t structure to initialize.
+
+       min_items
+               [in] Minimum number of items that can be stored.  All necessary
+               allocations to allow storing the minimum number of items is performed
+               at initialization time.
+
+ RETURN VALUES
+       CL_SUCCESS if the list was initialized successfully.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for initialization.
+
+

NOTES

+
       The list will always be able to store at least as many items as specified
+       by the min_items parameter.
+
+

SEE ALSO

+
       List, cl_list_construct, cl_list_destroy, cl_list_insert_head,
+       cl_list_insert_tail, cl_list_remove_head, cl_list_remove_tail
+
+
+
+ +

[Functions] +Component Library: List/cl_list_insert_array_head

+ +

[top][index]

+

NAME

+
       cl_list_insert_array_head
+
+ DESCRIPTION:
+       The cl_list_insert_array_head function inserts an array of objects
+       at the head of a list.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_list_insert_array_head(
+        IN      cl_list_t* const        p_list,
+        IN      const void* const       p_array,
+        IN      uint32_t                        item_count,
+        IN      const uint32_t          item_size );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure into which to insert the objects.
+
+       p_array
+               [in] Pointer to the first object in an array.
+
+       item_count
+               [in] Number of objects in the array.
+
+       item_size
+               [in] Size of the objects added to the list.  This is the stride in the
+               array from one object to the next.
+
+ RETURN VALUES
+       CL_SUCCESS if the insertion was successful.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the insertion.
+
+

NOTES

+
       Inserts all objects in the array to the head of the list, preserving the
+       ordering of the objects.  If not successful, no items are added.
+       List insertion operations are guaranteed to work for the minimum number
+       of items as specified in cl_list_init by the min_items parameter.
+
+

SEE ALSO

+
       List, cl_list_insert_array_tail, cl_list_insert_head, cl_list_insert_tail,
+       cl_list_insert_prev, cl_list_insert_next
+
+
+
+ +

[Functions] +Component Library: List/cl_list_insert_array_tail

+ +

[top][index]

+

NAME

+
       cl_list_insert_array_tail
+
+

DESCRIPTION

+
       The cl_list_insert_array_tail function inserts an array of objects
+       at the tail of a list.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_list_insert_array_tail(
+        IN      cl_list_t* const        p_list,
+        IN      const void* const       p_array,
+        IN      uint32_t                        item_count,
+        IN      const uint32_t          item_size);
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure into which to insert the objects.
+
+       p_array
+               [in] Pointer to the first object in an array.
+
+       item_count
+               [in] Number of objects in the array.
+
+       item_size
+               [in] Size of the objects added to the list.  This is the stride in the
+               array from one object to the next.
+
+ RETURN VALUES
+       CL_SUCCESS if the insertion was successful.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the insertion.
+
+

NOTES

+
       Inserts all objects in the array to the tail of the list, preserving the
+       ordering of the objects.  If not successful, no items are added.
+       List insertion operations are guaranteed to work for the minimum number
+       of items as specified in cl_list_init by the min_items parameter.
+
+

SEE ALSO

+
       List, cl_list_insert_array_head, cl_list_insert_head, cl_list_insert_tail,
+       cl_list_insert_prev, cl_list_insert_next
+
+
+
+ +

[Functions] +Component Library: List/cl_list_insert_head

+ +

[top][index]

+

NAME

+
       cl_list_insert_head
+
+

DESCRIPTION

+
       The cl_list_insert_head function inserts an object at the head of a list.
+
+

SYNOPSIS

+
CL_INLINE cl_status_t CL_API
+cl_list_insert_head(
+        IN      cl_list_t* const        p_list,
+        IN      const void* const       p_object )
+{
+        cl_pool_obj_t   *p_pool_obj;
+
+        CL_ASSERT( p_list );
+        CL_ASSERT( cl_is_qpool_inited( &p_list->list_item_pool ) );
+
+        /* Get a list item to add to the list. */
+        p_pool_obj = (cl_pool_obj_t*)cl_qpool_get( &p_list->list_item_pool );
+        if( !p_pool_obj )
+                return( CL_INSUFFICIENT_MEMORY );
+
+        p_pool_obj->list_obj.p_object = p_object;
+        cl_qlist_insert_head( &p_list->list, &p_pool_obj->list_obj.list_item );
+        return( CL_SUCCESS );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure into which to insert the object.
+
+       p_object
+               [in] Pointer to an object to insert into the list.
+
+ RETURN VALUES
+       CL_SUCCESS if the insertion was successful.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the insertion.
+
+

NOTES

+
       Inserts the specified object at the head of the list.  List insertion
+       operations are guaranteed to work for the minimum number of items as
+       specified in cl_list_init by the min_items parameter.
+
+

SEE ALSO

+
       List, cl_list_insert_tail, cl_list_insert_array_head,
+       cl_list_insert_array_tail, cl_list_insert_prev, cl_list_insert_next,
+       cl_list_remove_head
+
+
+
+ +

[Functions] +Component Library: List/cl_list_insert_next

+ +

[top][index]

+

NAME

+
       cl_list_insert_next
+
+

DESCRIPTION

+
       The cl_list_insert_next function inserts an object in a list after
+       the object associated with a given iterator.
+
+

SYNOPSIS

+
CL_INLINE cl_status_t CL_API
+cl_list_insert_next(
+        IN      cl_list_t* const                        p_list,
+        IN      const cl_list_iterator_t        iterator,
+        IN      const void* const                       p_object )
+{
+        cl_pool_obj_t   *p_pool_obj;
+
+        CL_ASSERT( p_list );
+        CL_ASSERT( cl_is_qpool_inited( &p_list->list_item_pool ) );
+
+        /* Get a list item to add to the list. */
+        p_pool_obj = (cl_pool_obj_t*)cl_qpool_get( &p_list->list_item_pool );
+        if( !p_pool_obj )
+                return( CL_INSUFFICIENT_MEMORY );
+
+        p_pool_obj->list_obj.p_object = p_object;
+        cl_qlist_insert_next( &p_list->list, (cl_list_item_t*)iterator,
+                &p_pool_obj->list_obj.list_item );
+        return( CL_SUCCESS );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure into which to insert the object.
+
+       iterator
+               [in] cl_list_iterator_t returned by a previous call to cl_list_head,
+               cl_list_tail, cl_list_next, or cl_list_prev.
+
+       p_object
+               [in] Pointer to an object to insert into the list.
+
+ RETURN VALUES
+       CL_SUCCESS if the insertion was successful.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the insertion.
+
+

SEE ALSO

+
       List, cl_list_insert_prev, cl_list_insert_head, cl_list_insert_tail,
+       cl_list_insert_array_head, cl_list_insert_array_tail
+
+
+
+ +

[Functions] +Component Library: List/cl_list_insert_prev

+ +

[top][index]

+

NAME

+
       cl_list_insert_prev
+
+

DESCRIPTION

+
       The cl_list_insert_prev function inserts an object in a list before
+       the object associated with a given iterator.
+
+

SYNOPSIS

+
CL_INLINE cl_status_t CL_API
+cl_list_insert_prev(
+        IN      cl_list_t* const                        p_list,
+        IN      const cl_list_iterator_t        iterator,
+        IN      const void* const                       p_object )
+{
+        cl_pool_obj_t   *p_pool_obj;
+
+        CL_ASSERT( p_list );
+        CL_ASSERT( cl_is_qpool_inited( &p_list->list_item_pool ) );
+
+        /* Get a list item to add to the list. */
+        p_pool_obj = (cl_pool_obj_t*)cl_qpool_get( &p_list->list_item_pool );
+        if( !p_pool_obj )
+                return( CL_INSUFFICIENT_MEMORY );
+
+        p_pool_obj->list_obj.p_object = p_object;
+        cl_qlist_insert_prev( &p_list->list, (cl_list_item_t*)iterator,
+                &p_pool_obj->list_obj.list_item );
+        return( CL_SUCCESS );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure into which to insert the object.
+
+       iterator
+               [in] cl_list_iterator_t returned by a previous call to cl_list_head,
+               cl_list_tail, cl_list_next, or cl_list_prev.
+
+       p_object
+               [in] Pointer to an object to insert into the list.
+
+ RETURN VALUES
+       CL_SUCCESS if the insertion was successful.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the insertion.
+
+

SEE ALSO

+
       List, cl_list_insert_next, cl_list_insert_head, cl_list_insert_tail,
+       cl_list_insert_array_head, cl_list_insert_array_tail
+
+
+
+ +

[Functions] +Component Library: List/cl_list_insert_tail

+ +

[top][index]

+

NAME

+
       cl_list_insert_tail
+
+

DESCRIPTION

+
       The cl_list_insert_tail function inserts an object at the head of a list.
+
+

SYNOPSIS

+
CL_INLINE cl_status_t CL_API
+cl_list_insert_tail(
+        IN      cl_list_t* const        p_list,
+        IN      const void* const       p_object )
+{
+        cl_pool_obj_t   *p_pool_obj;
+
+        CL_ASSERT( p_list );
+        CL_ASSERT( cl_is_qpool_inited( &p_list->list_item_pool ) );
+
+        /* Get a list item to add to the list. */
+        p_pool_obj = (cl_pool_obj_t*)cl_qpool_get( &p_list->list_item_pool );
+        if( !p_pool_obj )
+                return( CL_INSUFFICIENT_MEMORY );
+
+        p_pool_obj->list_obj.p_object = p_object;
+        cl_qlist_insert_tail( &p_list->list, &p_pool_obj->list_obj.list_item );
+        return( CL_SUCCESS );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure into which to insert the object.
+
+       p_object
+               [in] Pointer to an object to insert into the list.
+
+ RETURN VALUES
+       CL_SUCCESS if the insertion was successful.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the insertion.
+
+

NOTES

+
       Inserts the specified object at the tail of the list.  List insertion
+       operations are guaranteed to work for the minimum number of items as
+       specified in cl_list_init by the min_items parameter.
+
+

SEE ALSO

+
       List, cl_list_insert_head, cl_list_insert_array_head,
+       cl_list_insert_array_tail, cl_list_insert_prev, cl_list_insert_next,
+       cl_list_remove_tail
+
+
+
+ +

[Definitions] +Component Library: List/cl_list_iterator_t

+ +

[top][index]

+

NAME

+
       cl_list_iterator_t
+
+

DESCRIPTION

+
       Iterator type used to walk a list.
+
+

SYNOPSIS

+
typedef const cl_list_item_t *cl_list_iterator_t;
+
+

NOTES

+
       The iterator should be treated as opaque to prevent corrupting the list.
+
+

SEE ALSO

+
       List, cl_list_head, cl_list_tail, cl_list_next, cl_list_prev,
+       cl_list_obj
+
+
+
+ +

[Functions] +Component Library: List/cl_list_next

+ +

[top][index]

+

NAME

+
       cl_list_next
+
+

DESCRIPTION

+
       The cl_list_next function returns a list iterator for the object stored
+       in a list after the object associated with a given list iterator.
+
+

SYNOPSIS

+
CL_INLINE const cl_list_iterator_t CL_API
+cl_list_next(
+        IN      const cl_list_iterator_t        iterator )
+{
+        CL_ASSERT( iterator );
+
+        return( cl_qlist_next( iterator ) );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure for which the iterator for the
+               next object is to be returned.
+
+       iterator
+               [in] cl_list_iterator_t returned by a previous call to cl_list_head,
+               cl_list_tail, cl_list_next, or cl_list_prev.
+
+ RETURN VALUES
+       cl_list_iterator_t for the object following the object associated with
+       the list iterator specified by the iterator parameter.
+
+       cl_list_iterator_t for the end of the list if the list is empty.
+
+

NOTES

+
       Use cl_list_obj to retrieve the object associated with the
+       returned cl_list_iterator_t.
+
+

SEE ALSO

+
       List, cl_list_prev, cl_list_head, cl_list_tail, cl_list_end,
+       cl_list_obj
+
+
+
+ +

[Functions] +Component Library: List/cl_list_obj

+ +

[top][index]

+

NAME

+
       cl_list_obj
+
+

DESCRIPTION

+
       The cl_list_obj function returns the object associated
+       with a list iterator.
+
+

SYNOPSIS

+
CL_INLINE void* CL_API
+cl_list_obj(
+        IN      const cl_list_iterator_t        iterator )
+{
+        CL_ASSERT( iterator );
+
+        return( (void*)((cl_pool_obj_t*)iterator)->list_obj.p_object );
+}
+
+

PARAMETERS

+
       iterator
+               [in] cl_list_iterator_t returned by a previous call to cl_list_head,
+               cl_list_tail, cl_list_next, or cl_list_prev whose object is requested.
+
+

RETURN VALUE

+
       Pointer to the object associated with the list iterator specified
+       by the iterator parameter.
+
+

SEE ALSO

+
       List, cl_list_head, cl_list_tail, cl_list_next, cl_list_prev
+
+
+
+ +

[Functions] +Component Library: List/cl_list_prev

+ +

[top][index]

+

NAME

+
       cl_list_prev
+
+

DESCRIPTION

+
       The cl_list_prev function returns a list iterator for the object stored
+       in a list before the object associated with a given list iterator.
+
+

SYNOPSIS

+
CL_INLINE const cl_list_iterator_t CL_API
+cl_list_prev(
+        IN      const cl_list_iterator_t        iterator )
+{
+        CL_ASSERT( iterator );
+
+        return( cl_qlist_prev( iterator ) );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure for which the iterator for the
+               next object is to be returned.
+
+       iterator
+               [in] cl_list_iterator_t returned by a previous call to cl_list_head,
+               cl_list_tail, cl_list_next, or cl_list_prev.
+
+ RETURN VALUES
+       cl_list_iterator_t for the object preceding the object associated with
+       the list iterator specified by the iterator parameter.
+
+       cl_list_iterator_t for the end of the list if the list is empty.
+
+

NOTES

+
       Use cl_list_obj to retrieve the object associated with the
+       returned cl_list_iterator_t.
+
+

SEE ALSO

+
       List, cl_list_next, cl_list_head, cl_list_tail, cl_list_end,
+       cl_list_obj
+
+
+
+ +

[Functions] +Component Library: List/cl_list_remove_all

+ +

[top][index]

+

NAME

+
       cl_list_remove_all
+
+

DESCRIPTION

+
       The cl_list_remove_all function removes all objects from a list,
+       leaving it empty.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_list_remove_all(
+        IN      cl_list_t* const        p_list )
+{
+        CL_ASSERT( p_list );
+        CL_ASSERT( cl_is_qpool_inited( &p_list->list_item_pool ) );
+
+        /* Return all the list items to the pool. */
+        cl_qpool_put_list( &p_list->list_item_pool, &p_list->list );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure from which to remove all objects.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       List, cl_list_remove_head, cl_list_remove_tail, cl_list_remove_object,
+       cl_list_remove_item
+
+
+
+ +

[Functions] +Component Library: List/cl_list_remove_head

+ +

[top][index]

+

NAME

+
       cl_list_remove_head
+
+

DESCRIPTION

+
       The cl_list_remove_head function removes an object from the head of a list.
+
+

SYNOPSIS

+
CL_INLINE void* CL_API
+cl_list_remove_head(
+        IN      cl_list_t* const        p_list )
+{
+        cl_pool_obj_t   *p_pool_obj;
+
+        CL_ASSERT( p_list );
+        CL_ASSERT( cl_is_qpool_inited( &p_list->list_item_pool ) );
+
+        /* See if the list is empty. */
+        if( cl_is_qlist_empty( &p_list->list ) )
+                return( NULL );
+
+        /* Get the item at the head of the list. */
+        p_pool_obj = (cl_pool_obj_t*)cl_qlist_remove_head( &p_list->list );
+
+        /* Place the pool item back into the pool. */
+        cl_qpool_put( &p_list->list_item_pool, (cl_pool_item_t*)p_pool_obj );
+
+        return( (void*)p_pool_obj->list_obj.p_object );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure from which to remove an object.
+
+ RETURN VALUES
+       Returns the pointer to the object formerly at the head of the list.
+
+       NULL if the list was empty.
+
+

SEE ALSO

+
       List, cl_list_remove_tail, cl_list_remove_all, cl_list_remove_object,
+       cl_list_remove_item, cl_list_insert_head
+
+
+
+ +

[Functions] +Component Library: List/cl_list_remove_item

+ +

[top][index]

+

NAME

+
       cl_list_remove_item
+
+

DESCRIPTION

+
       The cl_list_remove_item function removes an object from the head of a list.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_list_remove_item(
+        IN      cl_list_t* const                        p_list,
+        IN      const cl_list_iterator_t        iterator )
+{
+        CL_ASSERT( p_list );
+        CL_ASSERT( cl_is_qpool_inited( &p_list->list_item_pool ) );
+
+        cl_qlist_remove_item( &p_list->list, (cl_list_item_t*)iterator );
+
+        /* Place the list item back into the pool. */
+        cl_qpool_put( &p_list->list_item_pool, (cl_pool_item_t*)iterator );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure from which to remove the item.
+
+       iterator
+               [in] cl_list_iterator_t returned by a previous call to cl_list_head,
+               cl_list_tail, cl_list_next, or cl_list_prev.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       List, cl_list_remove_object, cl_list_remove_head, cl_list_remove_tail,
+       cl_list_remove_all
+
+
+
+ +

[Functions] +Component Library: List/cl_list_remove_object

+ +

[top][index]

+

NAME

+
       cl_list_remove_object
+
+

DESCRIPTION

+
       The cl_list_remove_object function removes a specific object from a list.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_list_remove_object(
+        IN      cl_list_t* const        p_list,
+        IN      const void* const       p_object );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure from which to remove the object.
+
+       p_object
+               [in] Pointer to an object to remove from the list.
+
+ RETURN VALUES
+       CL_SUCCESS if the object was removed.
+
+       CL_NOT_FOUND if the object was not found in the list.
+
+

NOTES

+
       Removes the first occurrence of an object from a list.
+
+

SEE ALSO

+
       List, cl_list_remove_item, cl_list_remove_head, cl_list_remove_tail,
+       cl_list_remove_all
+
+
+
+ +

[Functions] +Component Library: List/cl_list_remove_tail

+ +

[top][index]

+

NAME

+
       cl_list_remove_tail
+
+

DESCRIPTION

+
       The cl_list_remove_tail function removes an object from the tail of a list.
+
+

SYNOPSIS

+
CL_INLINE void* CL_API
+cl_list_remove_tail(
+        IN      cl_list_t* const        p_list )
+{
+        cl_pool_obj_t   *p_pool_obj;
+
+        CL_ASSERT( p_list );
+        CL_ASSERT( cl_is_qpool_inited( &p_list->list_item_pool ) );
+
+        /* See if the list is empty. */
+        if( cl_is_qlist_empty( &p_list->list ) )
+                return( NULL );
+
+        /* Get the item at the head of the list. */
+        p_pool_obj = (cl_pool_obj_t*)cl_qlist_remove_tail( &p_list->list );
+
+        /* Place the list item back into the pool. */
+        cl_qpool_put( &p_list->list_item_pool, (cl_pool_item_t*)p_pool_obj );
+
+        return( (void*)p_pool_obj->list_obj.p_object );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure from which to remove an object.
+
+ RETURN VALUES
+       Returns the pointer to the object formerly at the tail of the list.
+
+       NULL if the list was empty.
+
+

SEE ALSO

+
       List, cl_list_remove_head, cl_list_remove_all, cl_list_remove_object,
+       cl_list_remove_item, cl_list_insert_head
+
+
+
+ +

[Structures] +Component Library: List/cl_list_t

+ +

[top][index]

+

NAME

+
       cl_list_t
+
+

DESCRIPTION

+
       List structure.
+
+       The cl_list_t structure should be treated as opaque and should be
+       manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_list
+{
+        cl_qlist_t                      list;
+        cl_qpool_t                      list_item_pool;
+
+} cl_list_t;
+
+

FIELDS

+
       list
+               Quick list of items stored in the list.
+
+       list_item_pool
+               Quick pool of list objects for storing objects in the quick list.
+
+

SEE ALSO

+
       List
+
+
+
+ +

[Functions] +Component Library: List/cl_list_tail

+ +

[top][index]

+

NAME

+
       cl_list_tail
+
+

DESCRIPTION

+
       The cl_list_tail function returns returns a list iterator for
+       the tail of a list.
+
+

SYNOPSIS

+
CL_INLINE const cl_list_iterator_t CL_API
+cl_list_tail(
+        IN      const cl_list_t* const  p_list )
+{
+        CL_ASSERT( p_list );
+        CL_ASSERT( cl_is_qpool_inited( &p_list->list_item_pool ) );
+
+        return( cl_qlist_tail( &p_list->list ) );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_list_t structure for which the iterator for the
+               object at the tail is to be returned.
+
+ RETURN VALUES
+       cl_list_iterator_t for the tail of the list.
+
+       cl_list_iterator_t for the end of the list if the list is empty.
+
+

NOTES

+
       Use cl_list_obj to retrieve the object associated with the
+
+       returned cl_list_iterator_t.
+
+

SEE ALSO

+
       List, cl_list_head, cl_list_next, cl_list_prev, cl_list_end,
+       cl_list_obj
+
+
+
+ +

[Definitions] +Component Library: List/cl_pfn_list_apply_t

+ +

[top][index]

+

NAME

+
       cl_pfn_list_apply_t
+
+

DESCRIPTION

+
       The cl_pfn_list_apply_t function type defines the prototype for functions
+       used to iterate objects in a list.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_list_apply_t)(
+        IN      void* const                     p_object,
+        IN      void*                           context );
+
+

PARAMETERS

+
       p_object
+               [in] Pointer to an object stored in a list.
+
+       context
+               [in] Context provided in a call to cl_list_apply_func.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for the
+       function provided by users as a parameter to the cl_list_apply_func
+       function.
+
+

SEE ALSO

+
       List, cl_list_apply_func
+
+
+
+ +

[Definitions] +Component Library: List/cl_pfn_list_find_t

+ +

[top][index]

+

NAME

+
       cl_pfn_list_find_t
+
+

DESCRIPTION

+
       The cl_pfn_list_find_t function type defines the prototype for functions
+       used to find objects in a list.
+
+

SYNOPSIS

+
typedef cl_status_t
+(CL_API *cl_pfn_list_find_t)(
+        IN      const void* const       p_object,
+        IN      void*                           context );
+
+

PARAMETERS

+
       p_object
+               [in] Pointer to an object stored in a list.
+
+       context
+               [in] Context provided in a call to ListFindFromHead or ListFindFromTail.
+
+ RETURN VALUES
+       Return CL_SUCCESS if the desired item was found.  This stops list iteration.
+
+       Return CL_NOT_FOUND to continue the list iteration.
+
+

NOTES

+
       This function type is provided as function prototype reference for the
+       function provided by users as a parameter to the cl_list_find_from_head
+       and cl_list_find_from_tail functions.
+
+

SEE ALSO

+
       List, cl_list_find_from_head, cl_list_find_from_tail
+
+
+ + diff --git a/trunk/docs/complib/cl_log_h.html b/trunk/docs/complib/cl_log_h.html new file mode 100644 index 00000000..a2bce531 --- /dev/null +++ b/trunk/docs/complib/cl_log_h.html @@ -0,0 +1,117 @@ + + + + +./inc_doc/complib/cl_log_h.html + + + + +Generated from ./inc/complib/cl_log.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Modules] +Component Library/Log Provider

+ +

[top][index]

+

NAME

+
       Log Provider
+
+

DESCRIPTION

+
       The log provider allows users to log information in a system log instead of
+       the console or debugger target.
+
+
+
+ +

[Functions] +Component Library: Log Provider/cl_log_event

+ +

[top][index]

+

NAME

+
       cl_log_event
+
+

DESCRIPTION

+
       The cl_log_event function adds a new entry to the system log.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_log_event(
+        IN      const char* const       name,
+        IN      const cl_log_type_t     type,
+        IN      const char* const       message,
+        IN      const void* const       p_data OPTIONAL,
+        IN      const uint32_t          data_len );
+
+

PARAMETERS

+
       name
+               [in] Pointer to an ANSI string containing the name of the source for
+               the log entry.
+
+       type
+               [in] Defines the type of log entry to add to the system log.
+               See the definition of cl_log_type_t for acceptable values.
+
+       message
+               [in] Pointer to an ANSI string containing the text for the log entry.
+               The message should not be terminated with a new line, as the log
+               provider appends a new line to all log entries.
+
+       p_data
+               [in] Optional pointer to data providing context for the log entry.
+               At most 256 bytes of data can be successfully logged.
+
+       data_len
+               [in] Length of the buffer pointed to by the p_data parameter.  Ignored
+               if p_data is NULL.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       If the data length exceeds the maximum supported, the event is logged
+       without its accompanying data.
+
+

SEE ALSO

+
       Log Provider, cl_log_type_t
+
+
+
+ +

[Definitions] +Component Library: Log Provider/cl_log_type_t

+ +

[top][index]

+

NAME

+
       cl_log_type_t
+
+

DESCRIPTION

+
       The cl_log_type_t enumerated type is used to differentiate between
+       different types of log entries.
+
+

SYNOPSIS

+
typedef enum _cl_log_type
+{
+        CL_LOG_INFO,
+        CL_LOG_WARN,
+        CL_LOG_ERROR
+
+} cl_log_type_t;
+
+

VALUES

+
       CL_LOG_INFO
+               Indicates a log entry is purely informational.
+
+       CL_LOG_WARN
+               Indicates a log entry is a warning but non-fatal.
+
+       CL_LOG_ERROR
+               Indicates a log entry is a fatal error.
+
+

SEE ALSO

+
       Log Provider, cl_log_event
+
+
+ + diff --git a/trunk/docs/complib/cl_map_h.html b/trunk/docs/complib/cl_map_h.html new file mode 100644 index 00000000..979472e7 --- /dev/null +++ b/trunk/docs/complib/cl_map_h.html @@ -0,0 +1,898 @@ + + + + +./inc_doc/complib/cl_map_h.html + + + + +Generated from ./inc/complib/cl_map.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Modules] +Component Library/Map

+ +

[top][index]

+

NAME

+
       Map
+
+

DESCRIPTION

+
       Map implements a binary tree that stores user objects.  Each item stored
+       in a map has a unique 64-bit key (duplicates are not allowed).  Map
+       provides the ability to efficiently search for an item given a key.
+
+       Map may allocate memory when inserting objects, and can therefore fail
+       operations due to insufficient memory.  Use quick map in situations where
+       such insertion failures cannot be tolerated.
+
+       Map is not thread safe, and users must provide serialization when adding
+       and removing items from the map.
+
+       The map functions operates on a cl_map_t structure which should be treated
+       as opaque and should be manipulated only through the provided functions.
+
+

SEE ALSO

+
       Types:
+               cl_map_iterator_t
+
+       Structures:
+               cl_map_t, cl_map_item_t, cl_map_obj_t
+
+       Item Manipulation:
+               cl_map_obj, cl_map_key
+
+       Initialization:
+               cl_map_construct, cl_map_init, cl_map_destroy
+
+       Iteration:
+               cl_map_end, cl_map_head, cl_map_tail, cl_map_next, cl_map_prev
+
+       Manipulation
+               cl_map_insert, cl_map_get, cl_map_remove_item, cl_map_remove,
+               cl_map_remove_all, cl_map_merge, cl_map_delta
+
+       Attributes:
+               cl_map_count, cl_is_map_empty, cl_is_map_inited
+
+
+
+ +

[Functions] +Component Library: Event/cl_is_map_inited

+ +

[top][index]

+

NAME

+
       cl_is_map_inited
+
+

DESCRIPTION

+
       The cl_is_map_inited function returns whether a map was
+       successfully initialized.
+
+

SYNOPSIS

+
CL_INLINE boolean_t CL_API
+cl_is_map_inited(
+        IN      const cl_map_t* const   p_map )
+{
+        /*
+         * The map's pool of map items is the last thing initialized.
+         * We can therefore use it to test for initialization.
+         */
+        return( cl_is_qpool_inited( &p_map->pool ) );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_map_t structure whose initialization state
+               to check.
+
+ RETURN VALUES
+       TRUE if the map was initialized successfully.
+
+       FALSE otherwise.
+
+

NOTES

+
       Allows checking the state of a map to determine if invoking
+       member functions is appropriate.
+
+

SEE ALSO

+
       Map
+
+
+
+ +

[Functions] +Component Library: Map/cl_is_map_empty

+ +

[top][index]

+

NAME

+
       cl_is_map_empty
+
+

DESCRIPTION

+
       The cl_is_map_empty function returns whether a map is empty.
+
+

SYNOPSIS

+
CL_INLINE boolean_t CL_API
+cl_is_map_empty(
+        IN      const cl_map_t* const   p_map )
+{
+        CL_ASSERT( p_map );
+        return( cl_is_qmap_empty( &p_map->qmap ) );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a map to test for emptiness.
+
+ RETURN VALUES
+       TRUE if the map is empty.
+
+       FALSE otherwise.
+
+

SEE ALSO

+
       Map, cl_map_count, cl_map_remove_all
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_construct

+ +

[top][index]

+

NAME

+
       cl_map_construct
+
+

DESCRIPTION

+
       The cl_map_construct function constructs a map.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_map_construct(
+        IN      cl_map_t* const p_map );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_map_t structure to construct.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_map_init, cl_map_destroy, and cl_is_map_inited.
+
+       Calling cl_map_construct is a prerequisite to calling any other
+       map function except cl_map_init.
+
+

SEE ALSO

+
       Map, cl_map_init, cl_map_destroy, cl_is_map_inited
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_count

+ +

[top][index]

+

NAME

+
       cl_map_count
+
+

DESCRIPTION

+
       The cl_map_count function returns the number of items stored
+       in a map.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_map_count(
+        IN      const cl_map_t* const   p_map )
+{
+        CL_ASSERT( p_map );
+        return( cl_qmap_count( &p_map->qmap ) );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a map whose item count to return.
+
+

RETURN VALUE

+
       Returns the number of items stored in the map.
+
+

SEE ALSO

+
       Map, cl_is_map_empty
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_delta

+ +

[top][index]

+

NAME

+
       cl_map_delta
+
+

DESCRIPTION

+
       The cl_map_delta function computes the differences between two maps.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_map_delta(
+        IN OUT  cl_map_t* const p_map1,
+        IN OUT  cl_map_t* const p_map2,
+        OUT             cl_map_t* const p_new,
+        OUT             cl_map_t* const p_old );
+
+

PARAMETERS

+
       p_map1
+               [in/out] Pointer to the first of two cl_map_t structures whose
+               differences to compute.
+
+       p_map2
+               [in/out] Pointer to the second of two cl_map_t structures whose
+               differences to compute.
+
+       p_new
+               [out] Pointer to an empty cl_map_t structure that contains the items
+               unique to p_map2 upon return from the function.
+
+       p_old
+               [out] Pointer to an empty cl_map_t structure that contains the items
+               unique to p_map1 upon return from the function.
+
+ RETURN VALUES
+       CL_SUCCESS if the operation succeeded.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the operation
+       to succeed.
+
+

NOTES

+
       Items are evaluated based on their keys.  Items that exist in both
+       p_map1 and p_map2 remain in their respective maps.  Items that
+       exist only p_map1 are moved to p_old.  Likewise, items that exist only
+       in p_map2 are moved to p_new.  This function can be usefull in evaluating
+       changes between two maps.
+
+       Both maps pointed to by p_new and p_old must be empty on input.
+
+       Upon failure, all input maps are restored to their original state.
+
+

SEE ALSO

+
       Map, cl_map_merge
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_destroy

+ +

[top][index]

+

NAME

+
       cl_map_destroy
+
+

DESCRIPTION

+
       The cl_map_destroy function destroys a map.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_map_destroy(
+        IN      cl_map_t* const p_map );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a map to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Performs any necessary cleanup of the specified map. Further
+       operations should not be attempted on the map. cl_map_destroy does
+       not affect any of the objects stored in the map.
+       This function should only be called after a call to cl_map_construct.
+
+       In debug builds, cl_map_destroy asserts that the map is empty.
+
+

SEE ALSO

+
       Map, cl_map_construct, cl_map_init
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_end

+ +

[top][index]

+

NAME

+
       cl_map_end
+
+

DESCRIPTION

+
       The cl_map_end function returns the iterator for the end of a map.
+
+

SYNOPSIS

+
CL_INLINE const cl_map_iterator_t CL_API
+cl_map_end(
+        IN      const cl_map_t* const   p_map )
+{
+        CL_ASSERT( p_map );
+        return( cl_qmap_end( &p_map->qmap ) );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_map_t structure whose end to return.
+
+

RETURN VALUE

+
       Iterator for the end of the map.
+
+

NOTES

+
       cl_map_end is useful for determining the validity of map items returned
+       by cl_map_head, cl_map_tail, cl_map_next, cl_map_prev.  If the iterator
+       by any of these functions compares to the end, the end of the map was
+       encoutered.
+       When using cl_map_head or cl_map_tail, this condition indicates that
+       the map is empty.
+
+

SEE ALSO

+
       Map, cl_qmap_head, cl_qmap_tail, cl_qmap_next, cl_qmap_prev
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_get

+ +

[top][index]

+

NAME

+
       cl_map_get
+
+

DESCRIPTION

+
       The cl_map_get function returns the object associated with a key.
+
+

SYNOPSIS

+
CL_EXPORT void* CL_API
+cl_map_get(
+        IN      const cl_map_t* const   p_map,
+        IN      const uint64_t                  key );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a map from which to retrieve the object with
+               the specified key.
+
+       key
+               [in] Key value used to search for the desired object.
+
+ RETURN VALUES
+       Pointer to the object with the desired key value.
+
+       NULL if there was no item with the desired key value stored in
+       the map.
+
+

NOTES

+
       cl_map_get does not remove the item from the map.
+
+

SEE ALSO

+
       Map, cl_map_remove
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_head

+ +

[top][index]

+

NAME

+
       cl_map_head
+
+

DESCRIPTION

+
       The cl_map_head function returns the map item with the lowest key
+       value stored in a map.
+
+

SYNOPSIS

+
CL_INLINE cl_map_iterator_t CL_API
+cl_map_head(
+        IN      const cl_map_t* const   p_map )
+{
+        CL_ASSERT( p_map );
+        return( cl_qmap_head( &p_map->qmap ) );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a map whose item with the lowest key is returned.
+
+ RETURN VALUES
+       Iterator for the object with the lowest key in the map.
+
+       Iterator for the map end if the map was empty.
+
+

NOTES

+
       cl_map_head does not remove the object from the map.
+
+

SEE ALSO

+
       Map, cl_map_tail, cl_map_next, cl_map_prev, cl_map_end
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_init

+ +

[top][index]

+

NAME

+
       cl_map_init
+
+

DESCRIPTION

+
       The cl_map_init function initialized a map for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_map_init(
+        IN      cl_map_t* const p_map,
+        IN      const size_t    min_items );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_map_t structure to initialize.
+
+       min_items
+               [in] Minimum number of items that can be stored.  All necessary
+               allocations to allow storing the minimum number of items is performed
+               at initialization time.
+
+ RETURN VALUES
+       CL_SUCCESS if the map was initialized successfully.
+
+

NOTES

+
       Allows calling map manipulation functions.
+
+

SEE ALSO

+
       Map, cl_map_destroy, cl_map_insert, cl_map_remove
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_insert

+ +

[top][index]

+

NAME

+
       cl_map_insert
+
+

DESCRIPTION

+
       The cl_map_insert function inserts a map item into a map.
+
+

SYNOPSIS

+
CL_EXPORT void* CL_API
+cl_map_insert(
+        IN      cl_map_t* const         p_map,
+        IN      const uint64_t          key,
+        IN      const void* const       p_object );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a map into which to add the item.
+
+       key
+               [in] Value to associate with the object.
+
+       p_object
+               [in] Pointer to an object to insert into the map.
+
+ RETURN VALUES
+       Pointer to the object in the map with the specified key after the call
+       completes.
+
+       NULL if there was not enough memory to insert the desired item.
+
+

NOTES

+
       Insertion operations may cause the map to rebalance.
+
+       If the map already contains an object already with the specified key,
+       that object will not be replaced and the pointer to that object is
+       returned.
+
+

SEE ALSO

+
       Map, cl_map_remove, cl_map_item_t
+
+
+
+ +

[Definitions] +Component Library: Map/cl_map_iterator_t

+ +

[top][index]

+

NAME

+
       cl_map_iterator_t
+
+

DESCRIPTION

+
       Iterator type used to walk a map.
+
+

SYNOPSIS

+
typedef const cl_map_item_t *cl_map_iterator_t;
+
+

NOTES

+
       The iterator should be treated as opaque to prevent corrupting the map.
+
+

SEE ALSO

+
       Map, cl_map_head, cl_map_tail, cl_map_next, cl_map_prev, cl_map_key
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_key

+ +

[top][index]

+

NAME

+
       cl_map_key
+
+

DESCRIPTION

+
       The cl_map_key function retrieves the key value of a map item.
+
+

SYNOPSIS

+
CL_INLINE uint64_t CL_API
+cl_map_key(
+        IN      const cl_map_iterator_t itor )
+{
+        return( cl_qmap_key( itor ) );
+}
+
+

PARAMETERS

+
       itor
+               [in] Iterator for the item whose key to return.
+
+

RETURN VALUE

+
       Returns the 64-bit key value for the specified iterator.
+
+

NOTES

+
       The iterator specified by the itor parameter must have been retrived by
+       a previous call to cl_map_head, cl_map_tail, cl_map_next, or cl_map_prev.
+
+       The key value is set in a call to cl_map_insert.
+
+

SEE ALSO

+
       Map, cl_map_insert, cl_map_head, cl_map_tail, cl_map_next, cl_map_prev
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_merge

+ +

[top][index]

+

NAME

+
       cl_map_merge
+
+

DESCRIPTION

+
       The cl_map_merge function moves all items from one map to another,
+       excluding duplicates.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_map_merge(
+        OUT             cl_map_t* const p_dest_map,
+        IN OUT  cl_map_t* const p_src_map );
+
+

PARAMETERS

+
       p_dest_map
+               [out] Pointer to a cl_map_t structure to which items should be added.
+
+       p_src_map
+               [in/out] Pointer to a cl_map_t structure whose items to add
+               to p_dest_map.
+
+ RETURN VALUES
+       CL_SUCCESS if the operation succeeded.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory for the operation
+       to succeed.
+
+

NOTES

+
       Items are evaluated based on their keys only.
+
+       Upon return from cl_map_merge, the map referenced by p_src_map contains
+       all duplicate items.
+
+

SEE ALSO

+
       Map, cl_map_delta
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_next

+ +

[top][index]

+

NAME

+
       cl_map_next
+
+

DESCRIPTION

+
       The cl_map_next function returns the map item with the next higher
+       key value than a specified map item.
+
+

SYNOPSIS

+
CL_INLINE cl_map_iterator_t CL_API
+cl_map_next(
+        IN      const cl_map_iterator_t itor )
+{
+        CL_ASSERT( itor );
+        return( cl_qmap_next( itor ) );
+}
+
+

PARAMETERS

+
       itor
+               [in] Iterator for an object in a map whose successor to return.
+
+ RETURN VALUES
+       Iterator for the object with the next higher key value in a map.
+
+       Iterator for the map end if the specified object was the last item in
+       the map.
+
+

NOTES

+
       The iterator must have been retrieved by a previous call to cl_map_head,
+       cl_map_tail, cl_map_next, or cl_map_prev.
+
+

SEE ALSO

+
       Map, cl_map_head, cl_map_tail, cl_map_prev, cl_map_end
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_obj

+ +

[top][index]

+

NAME

+
       cl_map_obj
+
+

DESCRIPTION

+
       The cl_map_obj function returns the object associated with an iterator.
+
+

SYNOPSIS

+
CL_INLINE void* CL_API
+cl_map_obj(
+        IN      const cl_map_iterator_t itor )
+{
+        return( cl_qmap_obj( PARENT_STRUCT( itor, cl_map_obj_t, item ) ) );
+}
+
+

PARAMETERS

+
       itor
+               [in] Iterator whose object to return.
+
+ RETURN VALUES
+       Returns the value of the object pointer associated with the iterator.
+
+       The iterator must have been retrieved by a previous call to cl_map_head,
+       cl_map_tail, cl_map_next, or cl_map_prev.
+
+

SEE ALSO

+
       Map, cl_map_head, cl_map_tail, cl_map_next, cl_map_prev
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_prev

+ +

[top][index]

+

NAME

+
       cl_map_prev
+
+

DESCRIPTION

+
       The cl_map_prev function returns the map item with the next lower
+       key value than a precified map item.
+
+

SYNOPSIS

+
CL_INLINE cl_map_iterator_t CL_API
+cl_map_prev(
+        IN      const cl_map_iterator_t itor )
+{
+        CL_ASSERT( itor );
+        return( cl_qmap_prev( itor ) );
+}
+
+

PARAMETERS

+
       itor
+               [in] Iterator for an object in a map whose predecessor to return.
+
+ RETURN VALUES
+       Iterator for the object with the next lower key value in a map.
+
+       Iterator for the map end if the specified object was the first item in
+       the map.
+
+

NOTES

+
       The iterator must have been retrieved by a previous call to cl_map_head,
+       cl_map_tail, cl_map_next, or cl_map_prev.
+
+

SEE ALSO

+
       Map, cl_map_head, cl_map_tail, cl_map_next, cl_map_end
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_remove

+ +

[top][index]

+

NAME

+
       cl_map_remove
+
+

DESCRIPTION

+
       The cl_map_remove function removes the map item with the specified key
+       from a map.
+
+

SYNOPSIS

+
CL_EXPORT void* CL_API
+cl_map_remove(
+        IN      cl_map_t* const p_map,
+        IN      const uint64_t  key );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_map_t structure from which to remove the item
+               with the specified key.
+
+       key
+               [in] Key value used to search for the object to remove.
+
+ RETURN VALUES
+       Pointer to the object associated with the specified key if
+       it was found and removed.
+
+       NULL if no object with the specified key exists in the map.
+
+

SEE ALSO

+
       Map, cl_map_remove_item, cl_map_remove_all, cl_map_insert
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_remove_all

+ +

[top][index]

+

NAME

+
       cl_map_remove_all
+
+

DESCRIPTION

+
       The cl_map_remove_all function removes all objects from a map,
+       leaving it empty.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_map_remove_all(
+        IN      cl_map_t* const p_map );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a map to empty.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Map, cl_map_remove, cl_map_remove_item
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_remove_item

+ +

[top][index]

+

NAME

+
       cl_map_remove_item
+
+

DESCRIPTION

+
       The cl_map_remove_item function removes the specified map item
+       from a map.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_map_remove_item(
+        IN      cl_map_t* const                 p_map,
+        IN      const cl_map_iterator_t itor );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a map from which to remove the object associated with
+               the specified iterator.
+
+       itor
+               [in] Iterator for an object to remove from its map.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Removes the object associated with the specifid iterator from its map.
+
+       The specified iterator is no longer valid after the call completes.
+
+       The iterator must have been retrieved by a previous call to cl_map_head,
+       cl_map_tail, cl_map_next, or cl_map_prev.
+
+

SEE ALSO

+
       Map, cl_map_remove, cl_map_remove_all, cl_map_insert, cl_map_head,
+       cl_map_tail, cl_map_next, cl_map_prev
+
+
+
+ +

[Structures] +Component Library: Map/cl_map_t

+ +

[top][index]

+

NAME

+
       cl_map_t
+
+

DESCRIPTION

+
       Quick map structure.
+
+       The cl_map_t structure should be treated as opaque and should
+       be manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_map
+{
+        cl_qmap_t       qmap;
+        cl_qpool_t      pool;
+
+} cl_map_t;
+
+

FIELDS

+
       qmap
+               Quick map object that maintains the map.
+
+       pool
+               Pool of cl_map_obj_t structures used to store user objects
+               in the map.
+
+

SEE ALSO

+
       Map, cl_map_obj_t
+
+
+
+ +

[Functions] +Component Library: Map/cl_map_tail

+ +

[top][index]

+

NAME

+
       cl_map_tail
+
+

DESCRIPTION

+
       The cl_map_tail function returns the map item with the highest key
+       value stored in a map.
+
+

SYNOPSIS

+
CL_INLINE cl_map_iterator_t CL_API
+cl_map_tail(
+        IN      const cl_map_t* const   p_map )
+{
+        CL_ASSERT( p_map );
+        return( cl_qmap_tail( &p_map->qmap ) );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a map whose item with the highest key
+               is returned.
+
+ RETURN VALUES
+       Iterator for the object with the highest key in the map.
+
+       Iterator for the map end if the map was empty.
+
+

NOTES

+
       cl_map_end does no remove the object from the map.
+
+

SEE ALSO

+
       Map, cl_map_head, cl_map_next, cl_map_prev, cl_map_end
+
+
+ + diff --git a/trunk/docs/complib/cl_math_h.html b/trunk/docs/complib/cl_math_h.html new file mode 100644 index 00000000..ca243c1b --- /dev/null +++ b/trunk/docs/complib/cl_math_h.html @@ -0,0 +1,103 @@ + + + + +./inc_doc/complib/cl_math_h.html + + + + +Generated from ./inc/complib/cl_math.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Definitions] +Component Library: Math/MAX

+ +

[top][index]

+

NAME

+
       MAX
+
+

DESCRIPTION

+
       The MAX macro returns the greater of two values.
+
+

SYNOPSIS

+
*       MAX( x, y );
+
+

PARAMETERS

+
       x
+               [in] First of two values to compare.
+
+       y
+               [in] Second of two values to compare.
+
+

RETURN VALUE

+
       Returns the greater of the x and y parameters.
+
+

SEE ALSO

+
       MIN, ROUNDUP
+
+
+
+ +

[Definitions] +Component Library: Math/MIN

+ +

[top][index]

+

NAME

+
       MIN
+
+

DESCRIPTION

+
       The MIN macro returns the greater of two values.
+
+

SYNOPSIS

+
*       MIN( x, y );
+
+

PARAMETERS

+
       x
+               [in] First of two values to compare.
+
+       y
+               [in] Second of two values to compare.
+
+

RETURN VALUE

+
       Returns the lesser of the x and y parameters.
+
+

SEE ALSO

+
       MAX, ROUNDUP
+
+
+
+ +

[Definitions] +Component Library: Math/ROUNDUP

+ +

[top][index]

+

NAME

+
       ROUNDUP
+
+

DESCRIPTION

+
       The ROUNDUP macro rounds a value up to a given multiple.
+
+

SYNOPSIS

+
*       ROUNDUP( val, align );
+
+

PARAMETERS

+
       val
+               [in] Value that is to be rounded up. The type of the value is
+               indeterminate, but must be at most the size of a natural integer
+               for the platform.
+
+       align
+               [in] Multiple to which the val parameter must be rounded up.
+
+

RETURN VALUE

+
       Returns a value that is the input value specified by val rounded up to
+       the nearest multiple of align.
+
+

NOTES

+
       The value provided must be of a type at most the size of a natural integer.
+
+
+ + diff --git a/trunk/docs/complib/cl_memory_h.html b/trunk/docs/complib/cl_memory_h.html new file mode 100644 index 00000000..018eb6c4 --- /dev/null +++ b/trunk/docs/complib/cl_memory_h.html @@ -0,0 +1,629 @@ + + + + +./inc_doc/complib/cl_memory_h.html + + + + +Generated from ./inc/complib/cl_memory.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Modules] +Public/Memory Management

+ +

[top][index]

+

NAME

+
       Memory Management
+
+

DESCRIPTION

+
       The memory management functionality provides memory manipulation
+       functions as well as powerful debugging tools.
+
+       The Allocation Tracking functionality provides a means for tracking memory
+       allocations in order to detect memory leaks.
+
+       Memory allocation tracking stores the file name and line number where
+       allocations occur. Gathering this information does have an adverse impact
+       on performance, and memory tracking should therefore not be enabled in
+       release builds of software.
+
+       Memory tracking is compiled into the debug version of the library,
+       and can be enabled for the release version as well. To Enable memory
+       tracking in a release build of the public layer, users should define
+       the MEM_TRACK_ON keyword for compilation.
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_check_for_read

+ +

[top][index]

+

NAME

+
       cl_check_for_read
+
+

DESCRIPTION

+
       Checks a user-mode virtual address for read access.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_check_for_read(
+        IN      const void* const       vaddr,
+        IN      const size_t            count );
+
+

PARAMETERS

+
       vaddr
+               [in] Virtual address to check for read access.
+
+       count
+               [in] Number of bytes of the buffer at the specified address
+               to validate.
+
+ RETURN VALUES
+       CL_SUCCESS if the virtual address is valid for a read of the specified
+       size.
+
+       CL_INVALID_PERMISSION if the virtual address or the size is not valid.
+
+

NOTES

+
       This call is only available in the kernel.  The buffer can only be accessed
+       in the context of the application thread (i.e. in the path of an IOCTL
+       request).  Callers cannot be holding a spinlock when calling this function.
+
+

SEE ALSO

+
       Memory Management, cl_check_for_write, cl_copy_to_user, cl_copy_from_user
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_check_for_write

+ +

[top][index]

+

NAME

+
       cl_check_for_write
+
+

DESCRIPTION

+
       Checks a user-mode virtual address for write access.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_check_for_write(
+        IN      void* const             vaddr,
+        IN      const size_t    count );
+
+

PARAMETERS

+
       vaddr
+               [in] Virtual address to check for write access.
+
+       count
+               [in] Number of bytes of the buffer at the specified
+               address to validate.
+
+ RETURN VALUES
+       CL_SUCCESS if the virtual address is valid for a write of the specified
+       size.
+
+       CL_INVALID_PERMISSION if the virtual address or the size is not valid.
+
+

NOTES

+
       This call is only available in the kernel.  The buffer can only be accessed
+       in the context of the application thread (i.e. in the path of an IOCTL
+       request).  Callers cannot be holding a spinlock when calling this function.
+
+

SEE ALSO

+
       Memory Management, cl_check_for_read, cl_copy_to_user, cl_copy_from_user
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_copy_from_user

+ +

[top][index]

+

NAME

+
       cl_copy_from_user
+
+

DESCRIPTION

+
       Copies data from a user-mode buffer, performing access checks.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_copy_from_user(
+        IN      void* const                     p_dest,
+        IN      const void* const       p_src,
+        IN      const size_t            count );
+
+

PARAMETERS

+
       p_dest
+               [in] Pointer to the buffer being copied to.
+
+       p_src
+               [in] User-mode virtual address from which to copy data.
+
+       count
+               [in] Number of bytes to copy from the source buffer to the
+               destination buffer.
+
+ RETURN VALUES
+       CL_SUCCESS if the user-mode buffer virtual address is valid as the
+       source of the copy.
+
+       CL_INVALID_PERMISSION if the virtual address or the count is not valid.
+
+

NOTES

+
       This call is only available in the kernel.  The buffer can only be accessed
+       in the context of the application thread (i.e. in the path of an IOCTL
+       request).  Callers cannot be holding a spinlock when calling this function.
+
+

SEE ALSO

+
       Memory Management, cl_check_for_read, cl_check_for_write, cl_copy_to_user
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_copy_to_user

+ +

[top][index]

+

NAME

+
       cl_copy_to_user
+
+

DESCRIPTION

+
       Copies data into a user-mode buffer, performing access checks.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_copy_to_user(
+        IN      void* const                     p_dest,
+        IN      const void* const       p_src,
+        IN      const size_t            count );
+
+

PARAMETERS

+
       p_dest
+               [in] User-mode virtual address to which to copy data.
+
+       p_src
+               [in] Pointer to the buffer being copied from.
+
+       count
+               [in] Number of bytes to copy from the source buffer to the
+               destination buffer.
+
+ RETURN VALUES
+       CL_SUCCESS if the user-mode buffer virtual address is valid as the
+       destination of the copy.
+
+       CL_INVALID_PERMISSION if the virtual address or the count is not valid.
+
+

NOTES

+
       This call is only available in the kernel.  The buffer can only be accessed
+       in the context of the application thread (i.e. in the path of an IOCTL
+       request).  Callers cannot be holding a spinlock when calling this function.
+
+

SEE ALSO

+
       Memory Management, cl_check_for_read, cl_check_for_write, cl_copy_from_user
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_free

+ +

[top][index]

+

NAME

+
       cl_free
+
+

DESCRIPTION

+
       The cl_free function deallocates a block of memory.
+
+

SYNOPSIS

+
void
+cl_free(
+        IN      void* const     p_memory );
+
+

PARAMETERS

+
       p_memory
+               [in] Pointer to a memory block.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       The p_memory parameter is the pointer returned by a previous call to
+       cl_malloc, or cl_zalloc.
+
+       cl_free has no effect if p_memory is NULL.
+
+

SEE ALSO

+
       Memory Management, cl_alloc, cl_zalloc
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_get_pagesize

+ +

[top][index]

+

NAME

+
       cl_get_pagesize
+
+

DESCRIPTION

+
       Returns the number of bytes in a OS defined page.
+
+

SYNOPSIS

+
CL_EXPORT uint32_t CL_API
+cl_get_pagesize( void );
+
+

PARAMETERS

+
       NONE
+
+ RETURN VALUES
+       Returns the number of bytes in a page as defined by the Operating
+       System.
+
+

SEE ALSO

+
       Memory Management
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_get_physaddr

+ +

[top][index]

+

NAME

+
       cl_get_physaddr
+
+

DESCRIPTION

+
       Returns the Physical address for a kernel virtual address.
+
+

SYNOPSIS

+
CL_EXPORT uint64_t CL_API
+cl_get_physaddr(
+        IN      void *vaddr );
+
+

PARAMETERS

+
       p_addr
+               [in] Pointer to virtual to which the physical address is required.
+
+ RETURN VALUES
+       Returns the physical address for a virtual address.
+
+

NOTES

+
       This call is only available in kernel mode.
+
+

SEE ALSO

+
       Memory Management
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_malloc

+ +

[top][index]

+

NAME

+
       cl_malloc
+
+

DESCRIPTION

+
       The cl_malloc function allocates a block of memory.
+
+

SYNOPSIS

+
void*
+cl_malloc(
+        IN      const size_t    size );
+
+

PARAMETERS

+
       size
+               [in] Size of the requested allocation.
+
+ RETURN VALUES
+       Pointer to allocated memory if successful.
+
+       NULL otherwise.
+
+

NOTES

+
       Allocated memory follows alignment rules specific to the different
+       environments.
+
+

SEE ALSO

+
       Memory Management, cl_free, cl_zalloc, cl_palloc, cl_pzalloc,
+       cl_memset, cl_memclr, cl_memcpy, cl_memcmp
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_mem_display

+ +

[top][index]

+

NAME

+
       cl_mem_display
+
+

DESCRIPTION

+
       The cl_mem_display function displays all tracked memory allocations to
+       the applicable debugger.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_mem_display( void );
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Each tracked memory allocation is displayed along with the file name and
+       line number that allocated it.
+
+       Output is sent to the platform's debugging target, which may be the
+       system log file.
+
+

SEE ALSO

+
       Memory Management
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_memclr

+ +

[top][index]

+

NAME

+
       cl_memclr
+
+

DESCRIPTION

+
       The cl_memclr function sets every byte in a memory range to zero.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_memclr(
+        IN      void* const             p_memory,
+        IN      const size_t    count )
+{
+        cl_memset( p_memory, 0, count );
+}
+
+

PARAMETERS

+
       p_memory
+               [in] Pointer to a memory block.
+
+       count
+               [in] Number of bytes to set.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Memory Management, cl_memset, cl_memcpy, cl_memcmp
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_memcmp

+ +

[top][index]

+

NAME

+
       cl_memcmp
+
+

DESCRIPTION

+
       The cl_memcmp function compares two memory buffers.
+
+

SYNOPSIS

+
CL_EXPORT int32_t CL_API
+cl_memcmp(
+        IN      const void* const       p_mem,
+        IN      const void* const       p_ref,
+        IN      const size_t            count );
+
+

PARAMETERS

+
       p_mem
+               [in] Pointer to a memory block being compared.
+
+       p_ref
+               [in] Pointer to the reference memory block to compare against.
+
+       count
+               [in] Number of bytes to compare.
+
+ RETURN VALUES
+       Returns less than zero if p_mem is less than p_ref.
+
+       Returns greater than zero if p_mem is greater than p_ref.
+
+       Returns zero if the two memory regions are the identical.
+
+

SEE ALSO

+
       Memory Management, cl_memset, cl_memclr, cl_memcpy
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_memcpy

+ +

[top][index]

+

NAME

+
       cl_memcpy
+
+

DESCRIPTION

+
       The cl_memcpy function copies a given number of bytes from
+       one buffer to another.
+
+

SYNOPSIS

+
CL_EXPORT void* CL_API
+cl_memcpy(
+        IN      void* const                     p_dest,
+        IN      const void* const       p_src,
+        IN      const size_t            count );
+
+

PARAMETERS

+
       p_dest
+               [in] Pointer to the buffer being copied to.
+
+       p_src
+               [in] Pointer to the buffer being copied from.
+
+       count
+               [in] Number of bytes to copy from the source buffer to the
+               destination buffer.
+
+

RETURN VALUE

+
       Returns a pointer to the destination buffer.
+
+

SEE ALSO

+
       Memory Management, cl_memset, cl_memclr, cl_memcmp
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_memset

+ +

[top][index]

+

NAME

+
       cl_memset
+
+

DESCRIPTION

+
       The cl_memset function sets every byte in a memory range to a given value.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_memset(
+        IN      void* const             p_memory,
+        IN      const uint8_t   fill,
+        IN      const size_t    count );
+
+

PARAMETERS

+
       p_memory
+               [in] Pointer to a memory block.
+
+       fill
+               [in] Byte value with which to fill the memory.
+
+       count
+               [in] Number of bytes to set.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Memory Management, cl_memclr, cl_memcpy, cl_memcmp
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_palloc

+ +

[top][index]

+

NAME

+
       cl_palloc
+
+

DESCRIPTION

+
       The cl_palloc function allocates a block of memory from paged pool if the
+       operating system supports it.  If the operating system does not distinguish
+       between pool types, cl_palloc is identical to cl_malloc.
+
+

SYNOPSIS

+
void*
+cl_palloc(
+        IN      const size_t    size );
+
+

PARAMETERS

+
       size
+               [in] Size of the requested allocation.
+
+ RETURN VALUES
+       Pointer to allocated memory if successful.
+
+       NULL otherwise.
+
+

NOTES

+
       Allocated memory follows alignment rules specific to the different
+       environments.
+
+

SEE ALSO

+
       Memory Management, cl_free, cl_malloc, cl_zalloc, cl_pzalloc,
+       cl_memset, cl_memclr, cl_memcpy, cl_memcmp
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_pzalloc

+ +

[top][index]

+

NAME

+
       cl_pzalloc
+
+

DESCRIPTION

+
       The cl_pzalloc function allocates a block of memory from paged pool if the
+       operating system supports it and initializes it to zero.  If the operating
+       system does not distinguish between pool types, cl_pzalloc is identical
+       to cl_zalloc.
+
+

SYNOPSIS

+
void*
+cl_pzalloc(
+        IN      const size_t    size );
+
+

PARAMETERS

+
       size
+               [in] Size of the requested allocation.
+
+ RETURN VALUES
+       Pointer to allocated memory if successful.
+
+       NULL otherwise.
+
+

NOTES

+
       Allocated memory follows alignment rules specific to the different
+       environments.
+
+

SEE ALSO

+
       Memory Management, cl_free, cl_malloc, cl_zalloc, cl_palloc,
+       cl_memset, cl_memclr, cl_memcpy, cl_memcmp
+
+
+
+ +

[Functions] +Component Library: Memory Management/cl_zalloc

+ +

[top][index]

+

NAME

+
       cl_zalloc
+
+

DESCRIPTION

+
       The cl_zalloc function allocates a block of memory initialized to zero.
+
+

SYNOPSIS

+
void*
+cl_zalloc(
+        IN      const size_t    size );
+
+

PARAMETERS

+
       size
+               [in] Size of the requested allocation.
+
+ RETURN VALUES
+       Pointer to allocated memory if successful.
+
+       NULL otherwise.
+
+

NOTES

+
       Allocated memory follows alignment rules specific to the different
+       environments.
+
+

SEE ALSO

+
       Memory Management, cl_free, cl_malloc, cl_palloc, cl_pzalloc,
+       cl_memset, cl_memclr, cl_memcpy, cl_memcmp
+
+
+ + diff --git a/trunk/docs/complib/cl_mutex_h.html b/trunk/docs/complib/cl_mutex_h.html new file mode 100644 index 00000000..0f738329 --- /dev/null +++ b/trunk/docs/complib/cl_mutex_h.html @@ -0,0 +1,207 @@ + + + + +./inc_doc/complib/cl_mutex_h.html + + + + +Generated from ./inc/complib/cl_mutex.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +complib/Mutex

+ +

[top][index]

+

NAME

+
       Mutex
+
+

DESCRIPTION

+
       Mutex provides synchronization between threads for exclusive access to
+       a resource.
+
+       The Mutex functions manipulate a cl_mutex_t structure which should
+       be treated as opaque and should be manipulated only through the provided
+       functions.
+
+

SEE ALSO

+
       Structures:
+               cl_mutex_t
+
+       Initialization:
+               cl_mutex_construct, cl_mutex_init, cl_mutex_destroy
+
+       Manipulation
+               cl_mutex_acquire, cl_mutex_release
+
+
+
+ +

[Functions] +Component Library: Mutex/cl_mutex_acquire

+ +

[top][index]

+

NAME

+
       cl_mutex_acquire
+
+

DESCRIPTION

+
       The cl_mutex_acquire function acquires a mutex.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_mutex_acquire(
+        IN      cl_mutex_t* const       p_mutex );
+
+

PARAMETERS

+
       p_mutex
+               [in] Pointer to a mutex structure to acquire.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Mutex, cl_mutex_release
+
+
+
+ +

[Functions] +Component Library: Mutex/cl_mutex_construct

+ +

[top][index]

+

NAME

+
       cl_mutex_construct
+
+

DESCRIPTION

+
       The cl_mutex_construct function initializes the state of a
+       mutex.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_mutex_construct(
+        IN      cl_mutex_t* const       p_mutex );
+
+

PARAMETERS

+
       p_mutex
+               [in] Pointer to a mutex structure whose state to initialize.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_semphore_destroy without first calling
+       cl_mutex_init.
+
+       Calling cl_mutex_construct is a prerequisite to calling any other
+       mutex function except cl_mutex_init.
+
+

SEE ALSO

+
       Mutex, cl_semphore_init cl_mutex_destroy
+
+
+
+ +

[Functions] +Component Library: Mutex/cl_mutex_destroy

+ +

[top][index]

+

NAME

+
       cl_mutex_destroy
+
+

DESCRIPTION

+
       The cl_mutex_destroy function performs all necessary cleanup of a
+       mutex.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_mutex_destroy(
+        IN      cl_mutex_t* const       p_mutex );
+
+

PARAMETERS

+
       p_mutex
+               [in] Pointer to a mutex structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Performs any necessary cleanup of a mutex. This function must only
+       be called if either cl_mutex_construct or cl_mutex_init has been
+       called.
+
+

SEE ALSO

+
       Mutex, cl_mutex_construct, cl_mutex_init
+
+
+
+ +

[Functions] +Component Library: Mutex/cl_mutex_init

+ +

[top][index]

+

NAME

+
       cl_mutex_init
+
+

DESCRIPTION

+
       The cl_mutex_init function initializes a mutex for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_mutex_init(
+        IN      cl_mutex_t* const       p_mutex );
+
+

PARAMETERS

+
       p_mutex
+               [in] Pointer to a mutex structure to initialize.
+
+ RETURN VALUES
+       CL_SUCCESS if initialization succeeded.
+
+       CL_ERROR if initialization failed. Callers should call
+       cl_mutex_destroy to clean up any resources allocated during
+       initialization.
+
+

NOTES

+
       Initializes the mutex structure. Allows calling cl_mutex_aquire
+       and cl_mutex_release. The cl_mutex is always created in the unlocked state.
+
+

SEE ALSO

+
       Mutex, cl_mutex_construct, cl_mutex_destroy,
+       cl_mutex_acquire, cl_mutex_release
+
+
+
+ +

[Functions] +Component Library: Mutex/cl_mutex_release

+ +

[top][index]

+

NAME

+
       cl_mutex_release
+
+

DESCRIPTION

+
       The cl_mutex_release function releases a mutex object.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_mutex_release(
+        IN      cl_mutex_t* const       p_mutex );
+
+

PARAMETERS

+
       p_mutex
+               [in] Pointer to a mutex structure to release.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Releases a mutex after a call to cl_mutex_acquire.
+
+

SEE ALSO

+
       Mutex, cl_mutex_acquire
+
+
+ + diff --git a/trunk/docs/complib/cl_obj_h.html b/trunk/docs/complib/cl_obj_h.html new file mode 100644 index 00000000..ab4bf532 --- /dev/null +++ b/trunk/docs/complib/cl_obj_h.html @@ -0,0 +1,997 @@ + + + + +./inc_doc/complib/cl_obj_h.html + + + + +Generated from ./inc/complib/cl_obj.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Object

+ +

[top][index]

+

NAME

+
       Object
+
+

DESCRIPTION

+
       Object describes a basic class that can be used to track accesses to an
+       object and provides automatic cleanup of an object that is dependent
+       on another object.
+
+       Dependencies between objects are described using a relationship.  A
+       child object is considered dependent on a parent object.  Destruction of
+       a parent object automatically results in the destruction of any child
+       objects associated with the parent.
+
+       The relationship between parent and child objects is many to many.
+       Parents can have multiple child objects, and a child can be dependent on
+       multiple parent objects.  In the latter case, destruction of any parent
+       object results in the destruction of the child object.
+
+       Other relationships between objects are described using references.  An
+       object that takes a reference on a second object prevents the second object
+       from being deallocated as long as the reference is held.
+
+

SEE ALSO

+
       Types
+               cl_destroy_type_t
+
+       Structures:
+               cl_obj_t, cl_obj_rel_t
+
+       Callbacks:
+               cl_pfn_obj_call_t
+
+       Initialization/Destruction:
+               cl_obj_mgr_create, cl_obj_mgr_destroy,
+               cl_obj_construct, cl_obj_init, cl_obj_destroy, cl_obj_deinit
+
+       Object Relationships:
+               cl_obj_ref, cl_obj_deref,
+               cl_rel_alloc, cl_rel_free, cl_obj_insert_rel, cl_obj_remove_rel
+
+       Object Manipulation:
+               cl_obj_reset
+
+
+
+ +

[Definitions] +Component Library: Object/cl_destroy_type_t

+ +

[top][index]

+

NAME

+
       cl_destroy_type_t
+
+

DESCRIPTION

+
       Indicates the type of destruction to perform on an object.
+
+

SYNOPSIS

+
typedef enum _cl_destroy_type
+{
+        CL_DESTROY_ASYNC,
+        CL_DESTROY_SYNC
+
+}       cl_destroy_type_t;
+
+

VALUES

+
       CL_DESTROY_ASYNC
+               Indicates that the object should be destroyed asynchronously.  Objects
+               destroyed asynchronously complete initial destruction processing, then
+               return the calling thread.  Once their reference count goes to zero,
+               they are queue onto an asynchronous thread to complete destruction
+               processing.
+
+       CL_DESTROY_SYNC
+               Indicates that the object should be destroyed synchronously.  Objects
+               destroyed synchronously wait (block) until their reference count goes
+               to zero.  Once their reference count goes to zero, destruction
+               processing is completed by the calling thread.
+
+

SEE ALSO

+
       Object, cl_obj_init, cl_obj_destroy, cl_obj_deinit, cl_obj_t
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_construct

+ +

[top][index]

+

NAME

+
       cl_obj_construct
+
+

DESCRIPTION

+
       This routine prepares an object for use.  The object must be successfully
+       initialized before being used.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_obj_construct(
+        IN                              cl_obj_t * const                        p_obj,
+        IN              const   uint32_t                                        obj_type );
+
+

PARAMETERS

+
       p_obj
+               [in] A pointer to the object to construct.
+
+       obj_type
+               [in] A user-specified type associated with the object.  This type
+               is recorded by the object for debugging purposes and may be accessed
+               by the user.
+
+

RETURN VALUE

+
       None.
+
+

NOTES

+
       This call must succeed before invoking any other function on an object.
+
+

SEE ALSO

+
       Object, cl_obj_init, cl_obj_destroy, cl_obj_deinit.
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_deinit

+ +

[top][index]

+

NAME

+
       cl_obj_deinit
+
+

DESCRIPTION

+
       Release all resources allocated by an object.  This routine should
+       typically be called from a user's pfn_free routine.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_obj_deinit(
+        IN                              cl_obj_t * const                        p_obj );
+
+

PARAMETERS

+
       p_obj
+               [in] A pointer to the object to free.
+
+

RETURN VALUE

+
       None.
+
+

NOTES

+
       This call must be invoked to release the object from the global object
+       manager.
+
+

SEE ALSO

+
       Object, cl_obj_construct, cl_obj_init, cl_obj_destroy, cl_obj_t
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_deref

+ +

[top][index]

+

NAME

+
       cl_obj_deref
+
+

DESCRIPTION

+
       Decrements the reference count on an object and returns the updated count.
+       This routine is thread safe, but results in locking the object.
+
+

SYNOPSIS

+
CL_EXPORT int32_t CL_API
+cl_obj_deref(
+        IN                              cl_obj_t * const                        p_obj );
+
+

PARAMETERS

+
       p_obj
+               [in] A pointer to the object to dereference.
+
+

RETURN VALUE

+
       The updated reference count.
+
+

SEE ALSO

+
       Object, cl_obj_t, cl_obj_ref
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_destroy

+ +

[top][index]

+

NAME

+
       cl_obj_destroy
+
+

DESCRIPTION

+
       This routine destroys the specified object.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_obj_destroy(
+        IN                              cl_obj_t *                                      p_obj );
+
+

PARAMETERS

+
       p_obj
+               [in] A pointer to the object to destroy.
+
+

RETURN VALUE

+
       None.
+
+

NOTES

+
       This routine starts the destruction process for the specified object.  For
+       additional information regarding destruction callbacks, see the following
+       fields in cl_obj_t and parameters in cl_obj_init: pfn_destroying,
+       pfn_cleanup, and pfn_free.
+
+       In most cases, after calling this routine, users should call cl_obj_deinit
+       from within their pfn_free callback routine.
+
+

SEE ALSO

+
       Object, cl_obj_construct, cl_obj_init, cl_obj_deinit,
+       cl_obj_t, cl_destroy_type_t, cl_pfn_obj_call_t
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_init

+ +

[top][index]

+

NAME

+
       cl_obj_init
+
+

DESCRIPTION

+
       This routine initializes an object for use.  Upon the successful completion
+       of this call, the object is ready for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_obj_init(
+        IN                              cl_obj_t * const                        p_obj,
+        IN                              cl_destroy_type_t                       destroy_type,
+        IN              const   cl_pfn_obj_call_t                       pfn_destroying OPTIONAL,
+        IN              const   cl_pfn_obj_call_t                       pfn_cleanup OPTIONAL,
+        IN              const   cl_pfn_obj_call_t                       pfn_free );
+
+

PARAMETERS

+
       p_obj
+               [in] A pointer to the object to initialize.
+
+       destroy_type
+               [in] Specifies the destruction model used by this object.
+
+       pfn_destroying
+               [in] User-specified callback invoked to notify a user that an object has
+               been marked for destruction.  This callback is invoked directly from
+               the thread destroying the object and is used to notify a user that
+               a parent object has invoked a child object's destructor.
+
+       pfn_cleanup
+               [in] User-specified callback invoked to an object is undergoing
+               destruction.  For object's destroyed asynchronously, this callback
+               is invoked from the context of the asynchronous destruction thread.
+               Users may block in the context of this thread; however, further
+               destruction processing will not continue until this callback returns.
+
+       pfn_free
+               [in] User-specified callback invoked to notify a user that an object has
+               been destroyed and is ready for deallocation.  Users should either
+               call cl_obj_deinit or cl_obj_reset from within this callback.
+
+

RETURN VALUE

+
       CL_SUCCESS
+               The object was successfully initialized.
+
+       CL_INSUFFICIENT_MEMORY
+               The object could not allocate the necessary memory resources to
+               complete initialization.
+
+

NOTES

+
       The three destruction callbacks are used to notify the user of the progress
+       of the destruction, permitting the user to perform an additional processing.
+       Pfn_destroying is used to notify the user that the object is being
+       destroyed.  It is called after an object has removed itself from
+       relationships with its parents, but before it destroys any child objects
+       that it might have.
+
+       Pfn_cleanup is invoked after all child objects have been destroyed, and
+       there are no more references on the object itself.  For objects destroyed
+       asynchronously, pfn_cleanup is invoked from an asynchronous destruction
+       thread.
+
+       Pfn_free is called to notify the user that the destruction of the object has
+       completed.  All relationships have been removed, and all child objects have
+       been destroyed.  Relationship items (cl_obj_rel_t) that were used to
+       identify parent objects are returned to the user through the p_parent_list
+       field of the cl_obj_t structure.
+
+

SEE ALSO

+
       Object, cl_obj_construct, cl_obj_destroy, cl_obj_deinit,
+       cl_obj_t, cl_destroy_type_t, cl_pfn_obj_call_t,
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_insert_rel

+ +

[top][index]

+

NAME

+
       cl_obj_insert_rel
+
+

DESCRIPTION

+
       Forms a relationship between two objects, with the existence of the child
+       object dependent on the parent.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_obj_insert_rel(
+        IN                              cl_obj_rel_t * const            p_rel,
+        IN                              cl_obj_t * const                        p_parent_obj,
+        IN                              cl_obj_t * const                        p_child_obj );
+
+

PARAMETERS

+
       p_rel
+               [in] A reference to an unused relationship item.
+
+       p_parent_obj
+               [in] A reference to the parent object.
+
+       p_child_obj
+               [in] A reference to the child object.
+
+

RETURN VALUE

+
       None.
+
+

NOTES

+
       This call inserts a relationship between the parent and child object.
+       The relationship allows for the automatic destruction of the child object
+       if the parent is destroyed.
+
+       A given object can have multiple parent and child objects, but the
+       relationships must form into an object tree.  That is, there cannot be any
+       cycles formed through the parent-child relationships.  (For example, an
+       object cannot be both the parent and a child of a second object.)
+
+

SEE ALSO

+
       Object, cl_rel_alloc, cl_rel_free, cl_obj_remove_rel, cl_obj_destroy
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_insert_rel_parent_locked

+ +

[top][index]

+

NAME

+
       cl_obj_insert_rel_parent_locked
+
+

DESCRIPTION

+
       Forms a relationship between two objects, with the existence of the child
+       object dependent on the parent.  The parent's object lock is held.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_obj_insert_rel_parent_locked(
+        IN                              cl_obj_rel_t * const            p_rel,
+        IN                              cl_obj_t * const                        p_parent_obj,
+        IN                              cl_obj_t * const                        p_child_obj );
+
+

PARAMETERS

+
       p_rel
+               [in] A reference to an unused relationship item.
+
+       p_parent_obj
+               [in] A reference to the parent object.
+
+       p_child_obj
+               [in] A reference to the child object.
+
+

RETURN VALUE

+
       None.
+
+

NOTES

+
       This call inserts a relationship between the parent and child object.
+       The relationship allows for the automatic destruction of the child object
+       if the parent is destroyed.
+
+       A given object can have multiple parent and child objects, but the
+       relationships must form into an object tree.  That is, there cannot be any
+       cycles formed through the parent-child relationships.  (For example, an
+       object cannot be both the parent and a child of a second object.)
+
+       This call requires the caller to already hold the parent object's lock.
+
+

SEE ALSO

+
       Object, cl_rel_alloc, cl_rel_free, cl_obj_remove_rel, cl_obj_destroy
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_lock

+ +

[top][index]

+

NAME

+
       cl_obj_lock
+
+

DESCRIPTION

+
       Acquires an object's lock.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_obj_lock(
+        IN                              cl_obj_t * const                        p_obj )
+{
+        CL_ASSERT( p_obj->state == CL_INITIALIZED ||
+                p_obj->state == CL_DESTROYING );
+        cl_spinlock_acquire( &p_obj->lock );
+}
+
+

PARAMETERS

+
       p_obj
+               [in] A pointer to the object whose lock to acquire.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Object, cl_obj_t, cl_obj_unlock
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_mgr_create

+ +

[top][index]

+

NAME

+
       cl_obj_mgr_create
+
+

DESCRIPTION

+
       This routine creates an object manager used to track all objects by
+       the user.  The object manager assists with debugging efforts by identifying
+       objects that are not destroyed properly.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_obj_mgr_create(void);
+
+

PARAMETERS

+
       None.
+
+

RETURN VALUE

+
       CL_SUCCESS
+               The object manager was succesfully created.
+
+       CL_INSUFFICIENT_MEMORY
+               The object manager could not be allocated.
+
+

NOTES

+
       This call must succeed before invoking any other object-related function.
+
+

SEE ALSO

+
       Object, cl_obj_mgr_destroy
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_mgr_destroy

+ +

[top][index]

+

NAME

+
       cl_obj_mgr_destroy
+
+

DESCRIPTION

+
       This routine destroys the object manager created through cl_obj_mgr_create.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_obj_mgr_destroy(void);
+
+

PARAMETERS

+
       None.
+
+

RETURN VALUE

+
       None.
+
+

NOTES

+
       When the object manager is destroyed, it will display information about all
+       objects that have not yet been destroyed.
+
+

SEE ALSO

+
       Object, cl_obj_mgr_create
+
+
+
+ +

[Structures] +Component Library: Object/cl_obj_mgr_t

+ +

[top][index]

+

NAME

+
       cl_obj_mgr_t
+
+

DESCRIPTION

+
       The global object manager.
+
+       The manager must be created before constructing any other objects, and all
+       objects must be destroyed before the object manager is destroyed.
+
+       The manager is used to maintain the list of all objects currently active
+       in the system.  It provides a pool of relationship items used to
+       describe parent-child, or dependent, relationships between two objects.
+       The manager contains an asynchronous processing thread that is used to
+       support asynchronous object destruction.
+
+

SYNOPSIS

+
typedef struct _cl_obj_mgr
+{
+        cl_qlist_t                                      obj_list;
+        cl_spinlock_t                           lock;
+
+        cl_async_proc_t                         async_proc_mgr;
+
+        cl_qpool_t                                      rel_pool;
+
+}       cl_obj_mgr_t;
+
+

FIELDS

+
       obj_list
+               List of all object's in the system.  Object's are inserted into this
+               list when constructed and removed when freed.
+
+       lock
+               A lock used by the object manager for synchronization to the obj_list.
+
+       async_proc_mgr
+               An asynchronous processing manager used to process asynchronous
+               destruction requests.  Users wishing to synchronize the execution of
+               specific routines with object destruction may queue work requests to
+               this processing manager.
+
+       rel_pool
+               Pool of items used to describe dependent relationships.  Users may
+               obtain relationship objects from this pool when forming relationships,
+               but are not required to do so.
+
+

SEE ALSO

+
       Object, cl_obj_mgr_create, cl_obj_mgr_destroy,
+       cl_obj_construct, cl_obj_deinit,
+       cl_qlist_t, cl_spinlock_t, cl_async_proc_t, cl_qpool_t
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_ref

+ +

[top][index]

+

NAME

+
       cl_obj_ref
+
+

DESCRIPTION

+
       Increments the reference count on an object and returns the updated count.
+       This routine is thread safe, but does not result in locking the object.
+
+

SYNOPSIS

+
CL_EXPORT int32_t CL_API
+cl_obj_ref(
+        IN                              cl_obj_t * const                        p_obj );
+
+

PARAMETERS

+
       p_obj
+               [in] A pointer to the object to reference.
+
+

RETURN VALUE

+
       The updated reference count.
+
+

SEE ALSO

+
       Object, cl_obj_t, cl_obj_deref
+
+
+
+ +

[Structures] +Component Library: Object/cl_obj_rel_t

+ +

[top][index]

+

NAME

+
       cl_obj_rel_t
+
+

DESCRIPTION

+
       Identifies a dependent relationship between two objects.
+
+

SYNOPSIS

+
typedef struct _cl_obj_rel
+{
+        cl_pool_item_t                          pool_item;              /* Must be first. */
+        struct _cl_obj                          *p_parent_obj;
+
+        cl_list_item_t                          list_item;
+        struct _cl_obj                          *p_child_obj;
+
+}       cl_obj_rel_t;
+
+

FIELDS

+
       pool_item
+               An item used to store the relationship in a free pool maintained
+               by the object manager.  This field is also used by the parent object
+               to store the relationship in its child_list.
+
+       p_parent_obj
+               A reference to the parent object for the relationship.
+
+       list_item
+               This field is used by the child object to store the relationship in
+               its parent_list.
+
+       p_child_obj
+               A reference to the child object for the relationship.
+
+

NOTES

+
       This structure is used to define all dependent relationships.  Dependent
+       relationships are those where the destruction of a parent object result in
+       the destruction of child objects.  For other types of relationships, simple
+       references between objects may be used.
+
+       Relationship items are stored in lists maintained by both the parent
+       and child objects.  References to both objects exist while the
+       relationship is maintained.  Typically, relationships are defined by
+       the user by calling cl_obj_insert_rel, but are destroyed automatically
+       via an object's destruction process.
+
+

SEE ALSO

+
       Object, cl_rel_alloc, cl_rel_free, cl_obj_insert_rel, cl_obj_remove_rel,
+       cl_obj_destroy
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_remove_rel

+ +

[top][index]

+

NAME

+
       cl_obj_remove_rel
+
+

DESCRIPTION

+
       Manually removes a relationship between two objects.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_obj_remove_rel(
+        IN                              cl_obj_rel_t * const            p_rel );
+
+

PARAMETERS

+
       p_rel
+               [in] A reference to the relationship to remove.
+
+

RETURN VALUE

+
       None.
+
+

NOTES

+
       This routine permits a user to manually remove a dependent relationship
+       between two objects.  When removing a relationship using this call, the
+       user must ensure that objects referenced by the relationship are not
+       destroyed, either directly or indirectly via a parent.
+
+

SEE ALSO

+
       Object, cl_rel_alloc, cl_rel_free, cl_obj_insert_rel, cl_obj_destroy
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_reset

+ +

[top][index]

+

NAME

+
       cl_obj_reset
+
+

DESCRIPTION

+
       Reset an object's state.  This is called after cl_obj_destroy has
+       been called on a object, but before cl_obj_deinit has been invoked.
+       After an object has been reset, it is ready for re-use.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_obj_reset(
+        IN                              cl_obj_t * const                        p_obj );
+
+

PARAMETERS

+
       p_obj
+               [in] A pointer to the object to reset.
+
+

RETURN VALUE

+
       None.
+
+

NOTES

+
       This routine allows an object to be initialized once, then destroyed
+       and re-used multiple times.  This permits the user to allocate and
+       maintain a pool of objects.  The objects may be reset and returned to
+       the pool, rather than freed, after being destroyed.  The objects would
+       not be freed until the pool itself was destroyed.
+
+

SEE ALSO

+
       Object, cl_obj_destroy, cl_obj_free, cl_obj_t
+
+
+
+ +

[Structures] +Component Library: Object/cl_obj_t

+ +

[top][index]

+

NAME

+
       cl_obj_t
+
+

DESCRIPTION

+
       Object structure.
+
+

SYNOPSIS

+
typedef struct _cl_obj
+{
+        cl_pool_item_t                          pool_item;      /* Must be first. */
+        uint32_t                                        type;
+        cl_state_t                                      state;
+        cl_destroy_type_t                       destroy_type;
+
+        cl_async_proc_item_t            async_item;
+        cl_event_t                                      event;
+
+        cl_pfn_obj_call_t                       pfn_destroying;
+        cl_pfn_obj_call_t                       pfn_cleanup;
+        cl_pfn_obj_call_t                       pfn_free;
+
+        cl_spinlock_t                           lock;
+
+        cl_qlist_t                                      parent_list;
+        cl_qlist_t                                      child_list;
+
+        atomic32_t                                      ref_cnt;
+
+}       cl_obj_t;
+
+

FIELDS

+
       pool_item
+               Used to track the object with the global object manager.  We use
+               a pool item, rather than a list item, to let users store the object
+               in a pool.
+
+       type
+               Stores a user-specified object type.
+
+       state
+               Records the current state of the object, such as initialized,
+               destroying, etc.
+
+       destroy_type
+               Specifies the type of destruction, synchronous or asynchronous, to
+               perform on this object.
+
+       async_item
+               Asynchronous item used when destroying the object asynchronously.
+               This item is queued to an asynchronous thread to complete destruction
+               processing.
+
+       event
+               Event used when destroying the object synchronously.  A call to destroy
+               the object will wait on this event until the destruction has completed.
+
+       pfn_destroying
+               User-specified callback invoked to notify a user that an object has
+               been marked for destruction.  This callback is invoked directly from
+               the thread destroying the object and is used to notify a user that
+               a parent object has invoked a child object's destructor.
+
+       pfn_cleanup
+               User-specified callback invoked as an object is undergoing destruction.
+               For object's destroyed asynchronously, this callback is invoked from
+               the context of the asynchronous destruction thread.  Users may block
+               in the context of this thread; however, further destruction processing
+               will not continue until this callback returns.
+
+       pfn_free
+               User-specified callback invoked to notify a user that an object has
+               been destroyed and is ready for deallocation.  Users should either
+               call cl_obj_deinit or cl_obj_reset from within this callback.
+
+       lock
+               A lock provided by the object.
+
+       parent_list
+               A list of relationships to parent objects that an object is dependent
+               on.
+
+       child_list
+               A list of all child objects that are dependent on this object.
+               Destroying this object will result in all related objects maintained
+               in the child list also being destroyed.
+
+       ref_cnt
+               A count of the number of objects still referencing this object.
+
+

SEE ALSO

+
       Object, cl_obj_construct, cl_obj_init, cl_obj_destroy,
+       cl_obj_deinit, cl_pfn_obj_call_t, cl_destroy_type_t,
+       cl_pool_item_t, cl_state_t, cl_async_proc_item_t,
+       cl_event_t, cl_spinlock_t, cl_qlist_t, atomic32_t
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_type

+ +

[top][index]

+

NAME

+
       cl_obj_type
+
+

DESCRIPTION

+
       Returns the type of an object.
+
+

SYNOPSIS

+
CL_INLINE uint32_t CL_API
+cl_obj_type(
+        IN                              cl_obj_t * const                        p_obj )
+{
+        return p_obj->type;
+}
+
+

PARAMETERS

+
       p_obj
+               [in] A pointer to the object whose type to return.
+
+

RETURN VALUE

+
       The type of the object, as specified in the call to cl_obj_init.
+
+

SEE ALSO

+
       Object, cl_obj_t, cl_obj_init
+
+
+
+ +

[Functions] +Component Library: Object/cl_obj_unlock

+ +

[top][index]

+

NAME

+
       cl_obj_unlock
+
+

DESCRIPTION

+
       Releases an object's lock previously acquired by a call to cl_obj_lock.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_obj_unlock(
+        IN                              cl_obj_t * const                        p_obj )
+{
+        CL_ASSERT( p_obj->state == CL_INITIALIZED ||
+                p_obj->state == CL_DESTROYING );
+        cl_spinlock_release( &p_obj->lock );
+}
+
+

PARAMETERS

+
       p_obj
+               [in] A pointer to the object whose lock to release.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Object, cl_obj_t, cl_obj_lock
+
+
+
+ +

[Definitions] +Component Library: Object/cl_pfn_obj_call_t

+ +

[top][index]

+

NAME

+
       cl_pfn_obj_call_t
+
+

DESCRIPTION

+
       The cl_pfn_obj_call_t function type defines the prototype for functions
+       used to return objects to the user.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_obj_call_t)(
+        IN                              struct _cl_obj                          *p_obj );
+
+

PARAMETERS

+
       p_obj
+               [in] Pointer to a cl_obj_t.  This is the object being returned to
+               the user.
+
+ RETURN VALUES
+       None.
+
+

NOTES

+
       This function type is provided as a prototype for functions provided
+       by users as parameters to the cl_obj_init function.
+
+

SEE ALSO

+
       Object, cl_obj_init, cl_obj_t
+
+
+
+ +

[Functions] +Component Library: Object/cl_rel_alloc

+ +

[top][index]

+

NAME

+
       cl_rel_alloc
+
+

DESCRIPTION

+
       Retrieves an object relationship item from the object manager.
+
+

SYNOPSIS

+
CL_EXPORT cl_obj_rel_t* CL_API
+cl_rel_alloc(void);
+
+

PARAMETERS

+
       None.
+
+

RETURN VALUE

+
       A reference to an allocated relationship object, or NULL if no relationship
+       object could be allocated.
+
+

NOTES

+
       This routine retrieves a cl_obj_rel_t structure from a pool maintained
+       by the object manager.  The pool automatically grows as needed.
+
+       Relationship items are used to describe a dependent relationship between
+       a parent and child object.  In cases where a child has a fixed number of
+       relationships, the user may be able to allocate and manage the cl_obj_rel_t
+       structures more efficiently than obtaining the structures through this call.
+
+

SEE ALSO

+
       Object, cl_rel_free, cl_obj_insert_rel, cl_obj_remove_rel, cl_obj_destroy
+
+
+
+ +

[Functions] +Component Library: Object/cl_rel_free

+ +

[top][index]

+

NAME

+
       cl_rel_free
+
+

DESCRIPTION

+
       Return a relationship object to the global object manager.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_rel_free(
+        IN                              cl_obj_rel_t * const            p_rel );
+
+

PARAMETERS

+
       p_rel
+               [in] A reference to the relationship item to free.
+
+

RETURN VALUE

+
       None.
+
+

NOTES

+
       Relationship items must not be freed until both the parent and child
+       object have removed their references to one another.  Relationship items
+       may be freed after calling cl_obj_remove_rel or after the associated
+       child object's free callback has been invoked.  In the latter case, the
+       invalid relationship items are referenced by the child object's parent_list.
+
+

SEE ALSO

+
       Object, cl_rel_alloc, cl_obj_insert_rel, cl_obj_remove_rel, cl_obj_destroy
+
+
+ + diff --git a/trunk/docs/complib/cl_passivelock_h.html b/trunk/docs/complib/cl_passivelock_h.html new file mode 100644 index 00000000..39691e3d --- /dev/null +++ b/trunk/docs/complib/cl_passivelock_h.html @@ -0,0 +1,417 @@ + + + + +./inc_doc/complib/cl_passivelock_h.html + + + + +Generated from ./inc/complib/cl_passivelock.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Passive Lock

+ +

[top][index]

+

NAME

+
       Passive Lock
+
+

DESCRIPTION

+
       The Passive Lock provides synchronization between multiple threads that
+       are sharing the lock with a single thread holding the lock exclusively.
+
+       Passive lock works exclusively between threads and cannot be used in
+       situations where the caller cannot be put into a waiting state.
+
+       The passive lock functions operate a cl_plock_t structure which should
+       be treated as opaque and should be manipulated only through the provided
+       functions.
+
+

SEE ALSO

+
       Structures:
+               cl_plock_t
+
+       Initialization:
+               cl_plock_construct, cl_plock_init, cl_plock_destroy
+
+       Manipulation
+               cl_plock_acquire, cl_plock_excl_acquire, cl_plock_release
+
+
+
+ +

[Functions] +Component Library: Passive Lock/cl_plock_acquire

+ +

[top][index]

+

NAME

+
       cl_plock_acquire
+
+

DESCRIPTION

+
       The cl_plock_acquire function acquires a passive lock for
+       shared access.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_plock_acquire(
+        IN      cl_plock_t* const       p_lock )
+{
+        cl_status_t     status;
+
+        CL_ASSERT( p_lock );
+
+        status =
+                cl_event_wait_on( &p_lock->reader_event, EVENT_NO_TIMEOUT, FALSE );
+        CL_ASSERT( status == CL_SUCCESS );
+
+        /*
+         * Increment the reader count to block a thread trying for exclusive
+         * access.
+         */
+        cl_atomic_inc( &p_lock->reader_count );
+#ifdef DBG_PASSIVE_LOCKS
+        cl_dbg_out( "cl_plock_acquire: ReaderCount = %u\n",
+                p_lock->reader_count );
+#endif
+        /*
+         * Release the reader event to satisfy the wait of another reader
+         * or a writer.
+         */
+        cl_event_signal( &p_lock->reader_event );
+}
+
+

PARAMETERS

+
       p_lock
+               [in] Pointer to a cl_plock_t structure to acquire.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Passive Lock, cl_plock_release, cl_plock_excl_acquire
+
+
+
+ +

[Functions] +Component Library: Passive Lock/cl_plock_construct

+ +

[top][index]

+

NAME

+
       cl_plock_construct
+
+

DESCRIPTION

+
       The cl_plock_construct function initializes the state of a
+       passive lock.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_plock_construct(
+        IN      cl_plock_t* const       p_lock )
+{
+        CL_ASSERT( p_lock );
+
+        p_lock->reader_count = 0;
+        cl_event_construct( &p_lock->reader_event );
+        cl_event_construct( &p_lock->writer_event );
+}
+
+

PARAMETERS

+
       p_lock
+               [in] Pointer to a cl_plock_t structure whose state to initialize.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_plock_destroy without first calling cl_plock_init.
+
+       Calling cl_plock_construct is a prerequisite to calling any other
+       passive lock function except cl_plock_init.
+
+

SEE ALSO

+
       Passive Lock, cl_plock_init, cl_plock_destroy
+
+
+
+ +

[Functions] +Component Library: Passive Lock/cl_plock_destroy

+ +

[top][index]

+

NAME

+
       cl_plock_destroy
+
+

DESCRIPTION

+
       The cl_plock_destroy function performs any necessary cleanup
+       of a passive lock.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_plock_destroy(
+        IN      cl_plock_t* const       p_lock )
+{
+        CL_ASSERT( p_lock );
+        CL_ASSERT( p_lock->reader_count == 0 );
+
+        cl_event_destroy( &p_lock->writer_event );
+        cl_event_destroy( &p_lock->reader_event );
+}
+
+

PARAMETERS

+
       p_lock
+               [in] Pointer to a cl_plock_t structure whose state to initialize.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_plock_destroy performs any necessary cleanup of the specified
+       passive lock.
+
+       This function must only be called if cl_plock_construct or
+       cl_plock_init has been called. The passive lock must not be held
+       when calling this function.
+
+

SEE ALSO

+
       Passive Lock, cl_plock_construct, cl_plock_init
+
+
+
+ +

[Functions] +Component Library: Passive Lock/cl_plock_excl_acquire

+ +

[top][index]

+

NAME

+
       cl_plock_excl_acquire
+
+

DESCRIPTION

+
       The cl_plock_excl_acquire function acquires exclusive access
+       to a passive lock.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_plock_excl_acquire(
+        IN      cl_plock_t* const       p_lock )
+{
+        cl_status_t     status;
+
+        CL_ASSERT( p_lock );
+
+        /* Acquire the reader event.  This will block new readers. */
+        status =
+                cl_event_wait_on( &p_lock->reader_event, EVENT_NO_TIMEOUT, FALSE );
+        CL_ASSERT( status == CL_SUCCESS );
+
+        /* Wait for the writer event until all readers have exited. */
+        while( p_lock->reader_count )
+        {
+#ifdef DBG_PASSIVE_LOCKS
+                cl_dbg_out( "cl_plock_excl_acquire: ReaderCount = %u\n",
+                        p_lock->reader_count );
+#endif
+                status =
+                        cl_event_wait_on( &p_lock->writer_event, EVENT_NO_TIMEOUT, FALSE );
+                CL_ASSERT( status == CL_SUCCESS );
+        }
+
+#ifdef DBG_PASSIVE_LOCKS
+        cl_dbg_out( "cl_plock_excl_acquire: Exit\n" );
+#endif
+}
+
+

PARAMETERS

+
       p_lock
+               [in] Pointer to a cl_plock_t structure to acquire exclusively.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Passive Lock, cl_plock_release, cl_plock_acquire
+
+
+
+ +

[Functions] +Component Library: Passive Lock/cl_plock_init

+ +

[top][index]

+

NAME

+
       cl_plock_init
+
+

DESCRIPTION

+
       The cl_plock_init function initializes a passive lock.
+
+

SYNOPSIS

+
CL_INLINE cl_status_t CL_API
+cl_plock_init(
+        IN      cl_plock_t* const       p_lock )
+{
+        cl_status_t     status;
+
+        CL_ASSERT( p_lock );
+
+        cl_plock_construct( p_lock );
+
+        status = cl_event_init( &p_lock->writer_event, FALSE );
+        if( status != CL_SUCCESS )
+        {
+                cl_plock_destroy( p_lock );
+                return( status );
+        }
+
+        status = cl_event_init( &p_lock->reader_event, FALSE );
+        if( status != CL_SUCCESS )
+        {
+                cl_plock_destroy( p_lock );
+                return( status );
+        }
+
+        /*
+         * Set the writer event to signalled so that the first
+         * wait operation succeeds.
+         */
+        status = cl_event_signal( &p_lock->writer_event );
+        if( status != CL_SUCCESS )
+        {
+                cl_plock_destroy( p_lock );
+                return( status );
+        }
+
+        /*
+         * Set the reader event to signalled so that the first
+         * wait operation succeeds.
+         */
+        status = cl_event_signal( &p_lock->reader_event );
+        if( status != CL_SUCCESS )
+        {
+                cl_plock_destroy( p_lock );
+                return( status );
+        }
+
+        return( CL_SUCCESS );
+}
+
+

PARAMETERS

+
       p_lock
+               [in] Pointer to a cl_plock_t structure to initialize.
+
+ RETURN VALUES
+       CL_SUCCESS if the passive lock was initialized successfully.
+
+       CL_ERROR otherwise.
+
+

NOTES

+
       Allows calling cl_plock_acquire, cl_plock_release,
+       cl_plock_excl_acquire, and cl_plock_excl_release.
+
+

SEE ALSO

+
       Passive Lock, cl_plock_construct, cl_plock_destroy,
+       cl_plock_excl_acquire, cl_plock_excl_release,
+       cl_plock_acquire, cl_plock_release
+
+
+
+ +

[Functions] +Component Library: Passive Lock/cl_plock_release

+ +

[top][index]

+

NAME

+
       cl_plock_release
+
+

DESCRIPTION

+
       The cl_plock_release function releases a passive lock from
+       shared or exclusive access.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_plock_release(
+        IN      cl_plock_t* const       p_lock )
+{
+        CL_ASSERT( p_lock );
+
+        if( p_lock->reader_count )
+        {
+
+                /*
+                 * Decrement the count to allow a thread waiting for exclusive
+                 * access to continue.
+                 */
+                cl_atomic_dec( &p_lock->reader_count );
+
+                #ifdef DBG_PASSIVE_LOCKS
+                        cl_dbg_out( "cl_plock_release: ReaderCount = %u\n",
+                                p_lock->reader_count );
+                #endif
+
+                /* Release a writer, if any. */
+                cl_event_signal( &p_lock->writer_event );
+        }
+        else
+        {
+                /* Release threads waiting to acquire the lock. */
+                cl_event_signal( &p_lock->reader_event );
+                cl_event_signal( &p_lock->writer_event );
+
+                #ifdef DBG_PASSIVE_LOCKS
+                        cl_dbg_out( "cl_plock_release: Exit\n" );
+                #endif
+        }
+}
+
+

PARAMETERS

+
       p_lock
+               [in] Pointer to a cl_plock_t structure to release.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Passive Lock, cl_plock_acquire, cl_plock_excl_acquire
+
+
+
+ +

[Structures] +Component Library: Passive Lock/cl_plock_t

+ +

[top][index]

+

NAME

+
       cl_plock_t
+
+

DESCRIPTION

+
       Passive Lock structure.
+
+       The cl_plock_t structure should be treated as opaque and should
+       be manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_plock
+{
+        cl_event_t              reader_event;
+        cl_event_t              writer_event;
+        atomic32_t              reader_count;
+
+} cl_plock_t;
+
+

FIELDS

+
       reader_event
+               Event used to synchronize shared access to the lock.
+
+       writer_event
+               Event used to synchronize exclusive access to the lock.
+
+       reader_count
+               Number of threads holding the lock for shared access.
+
+

SEE ALSO

+
       Passive Lock
+
+
+ + diff --git a/trunk/docs/complib/cl_perf_h.html b/trunk/docs/complib/cl_perf_h.html new file mode 100644 index 00000000..07de6923 --- /dev/null +++ b/trunk/docs/complib/cl_perf_h.html @@ -0,0 +1,583 @@ + + + + +./inc_doc/complib/cl_perf_h.html + + + + +Generated from ./inc/complib/cl_perf.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Performance Counters

+ +

[top][index]

+

NAME

+
       Performance Counters
+
+

DESCRIPTION

+
       The performance counters allows timing operations to benchmark
+       software performance and help identify potential bottlenecks.
+
+       All performance counters are NULL macros when disabled, preventing them
+       from adversly affecting performance in builds where the counters are not
+       used.
+
+       Each counter records elapsed time in micro-seconds, minimum time elapsed,
+       and total number of samples.
+
+       Each counter is independently protected by a spinlock, allowing use of
+       the counters in multi-processor environments.
+
+       The impact of serializing access to performance counters is measured,
+       allowing measurements to be corrected as necessary.
+
+

NOTES

+
       Performance counters do impact performance, and should only be enabled
+       when gathering data.  Counters can be enabled or disabled on a per-user
+       basis at compile time.  To enable the counters, users should define
+       the PERF_TRACK_ON keyword before including the cl_perf.h file.
+       Undefining the PERF_TRACK_ON keyword disables the performance counters.
+       When disabled, all performance tracking calls resolve to no-ops.
+
+       When using performance counters, it is the user's responsibility to
+       maintain the counter indexes.  It is recomended that users define an
+       enumerated type to use for counter indexes.  It improves readability
+       and simplifies maintenance by reducing the work necessary in managing
+       the counter indexes.
+
+

SEE ALSO

+
       Structures:
+               cl_perf_t
+
+       Initialization:
+               cl_perf_construct, cl_perf_init, cl_perf_destroy
+
+       Manipulation
+               cl_perf_reset, cl_perf_display, cl_perf_start, cl_perf_update,
+               cl_perf_log, cl_perf_stop
+
+       Macros:
+               PERF_DECLARE, PERF_DECLARE_START
+
+
+
+ +

[Definitions] +Component Library: Performance Counters/cl_perf_clr

+ +

[top][index]

+

NAME

+
       cl_perf_clr
+
+

DESCRIPTION

+
       The cl_perf_clr macro clears a counter variable.
+
+

SYNOPSIS

+
void
+cl_perf_inc(
+        IN      const uintn_t index );
+
+

PARAMETERS

+
       index
+               [in] Index of the performance counter to set.
+
+

NOTES

+
       This macro has no effect when performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters, PERF_DECLARE, PERF_DECLARE_START, cl_perf_log,
+       cl_perf_update, cl_perf_stop
+
+
+
+ +

[Functions] +Component Library: Performance Counters/cl_perf_construct

+ +

[top][index]

+

NAME

+
       cl_perf_construct
+
+

DESCRIPTION

+
       The cl_perf_construct macro constructs a performance
+       tracking container.
+
+

SYNOPSIS

+
void
+cl_perf_construct(
+        IN      cl_perf_t* const        p_perf );
+
+

PARAMETERS

+
       p_perf
+               [in] Pointer to a performance counter container to construct.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_perf_construct allows calling cl_perf_destroy without first calling
+       cl_perf_init.
+
+       Calling cl_perf_construct is a prerequisite to calling any other
+       perfromance counter function except cl_perf_init.
+
+       This function is implemented as a macro and has no effect when
+       performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters, cl_perf_init, cl_perf_destroy
+
+
+
+ +

[Functions] +Component Library: Performance Counters/cl_perf_destroy

+ +

[top][index]

+

NAME

+
       cl_perf_destroy
+
+

DESCRIPTION

+
       The cl_perf_destroy function destroys a performance tracking container.
+
+

SYNOPSIS

+
void
+cl_perf_destroy(
+        IN      cl_perf_t* const        p_perf,
+        IN      const boolean_t         display );
+
+

PARAMETERS

+
       p_perf
+               [in] Pointer to a performance counter container to destroy.
+
+       display
+               [in] If TRUE, causes the performance counters to be displayed.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_perf_destroy frees all resources allocated in a call to cl_perf_init.
+       If the display parameter is set to TRUE, displays all counter values
+       before deallocating resources.
+
+       This function should only be called after a call to cl_perf_construct
+       or cl_perf_init.
+
+       This function is implemented as a macro and has no effect when
+       performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters, cl_perf_construct, cl_perf_init
+
+
+
+ +

[Functions] +Component Library: Performance Counters/cl_perf_display

+ +

[top][index]

+

NAME

+
       cl_perf_display
+
+

DESCRIPTION

+
       The cl_perf_display function displays the current performance
+       counter values.
+
+

SYNOPSIS

+
void
+cl_perf_display(
+        IN      const cl_perf_t* const  p_perf );
+
+

PARAMETERS

+
       p_perf
+               [in] Pointer to a performance counter container whose counter
+               values to display.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function is implemented as a macro and has no effect when
+       performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters, cl_perf_init
+
+
+
+ +

[Definitions] +Component Library: Performance Counters/cl_perf_inc

+ +

[top][index]

+

NAME

+
       cl_perf_inc
+
+

DESCRIPTION

+
       The cl_perf_inc macro increments a counter variable by one.
+
+

SYNOPSIS

+
void
+cl_perf_inc(
+        IN      const uintn_t index );
+
+

PARAMETERS

+
       index
+               [in] Index of the performance counter to set.
+
+

NOTES

+
       This macro has no effect when performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters, PERF_DECLARE, PERF_DECLARE_START, cl_perf_log,
+       cl_perf_update, cl_perf_stop
+
+
+
+ +

[Functions] +Component Library: Performance Counters/cl_perf_init

+ +

[top][index]

+

NAME

+
       cl_perf_init
+
+

DESCRIPTION

+
       The cl_perf_init function initializes a performance counter container
+       for use.
+
+

SYNOPSIS

+
cl_status_t
+cl_perf_init(
+        IN      cl_perf_t* const        p_perf,
+        IN      const uintn_t           num_counters );
+
+

PARAMETERS

+
       p_perf
+               [in] Pointer to a performance counter container to initalize.
+
+       num_cntrs
+               [in] Number of counters to allocate in the container.
+
+ RETURN VALUES
+       CL_SUCCESS if initialization was successful.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize
+       the container.
+
+       CL_ERROR if an error was encountered initializing the locks for the
+       performance counters.
+
+

NOTES

+
       This function allocates all memory required for the requested number of
+       counters and initializes all locks protecting those counters.  After a
+       successful initialization, cl_perf_init calibrates the counters and
+       resets their value.
+
+       This function is implemented as a macro and has no effect when
+       performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters, cl_perf_construct, cl_perf_destroy, cl_perf_display
+
+
+
+ +

[Definitions] +Component Library: Performance Counters/cl_perf_log

+ +

[top][index]

+

NAME

+
       cl_perf_log
+
+

DESCRIPTION

+
       The cl_perf_log macro adds a given timing sample to a
+       counter in a performance counter container.
+
+

SYNOPSIS

+
void
+cl_perf_log(
+        IN      cl_perf_t* const        p_perf,
+        IN      const uintn_t           index,
+        IN      const uint64_t          pc_total_time );
+
+

PARAMETERS

+
       p_perf
+               [in] Pointer to a performance counter container to whose counter
+               the sample should be added.
+
+       index
+               [in] Number of the performance counter to update with a new sample.
+
+       pc_total_time
+               [in] Total elapsed time for the sample being added.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This macro has no effect when performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters, PERF_DECLARE, PERF_DECLARE_START, cl_perf_start,
+       cl_perf_update, cl_perf_stop
+
+
+
+ +

[Functions] +Component Library: Performance Counters/cl_perf_reset

+ +

[top][index]

+

NAME

+
       cl_perf_reset
+
+

DESCRIPTION

+
       The cl_perf_reset function resets the counters contained in
+       a performance tracking container.
+
+

SYNOPSIS

+
void
+cl_perf_reset(
+        IN      cl_perf_t* const        p_perf );
+
+

PARAMETERS

+
       p_perf
+               [in] Pointer to a performance counter container whose counters
+               to reset.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function is implemented as a macro and has no effect when
+       performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters
+
+
+
+ +

[Definitions] +Component Library: Performance Counters/cl_perf_start

+ +

[top][index]

+

NAME

+
       cl_perf_start
+
+

DESCRIPTION

+
       The cl_perf_start macro sets the starting value of a timed sequence.
+
+

SYNOPSIS

+
void
+cl_perf_start(
+        IN      const uintn_t index );
+
+

PARAMETERS

+
       index
+               [in] Index of the performance counter to set.
+
+

NOTES

+
       This macro has no effect when performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters, PERF_DECLARE, PERF_DECLARE_START, cl_perf_log,
+       cl_perf_update, cl_perf_stop
+
+
+
+ +

[Definitions] +Component Library: Performance Counters/cl_perf_stop

+ +

[top][index]

+

NAME

+
       cl_perf_stop
+
+

DESCRIPTION

+
       The cl_perf_log macro updates a counter in a performance counter
+       container with a new timing sample.
+
+

SYNOPSIS

+
void
+cl_perf_stop(
+        IN      cl_perf_t* const        p_perf,
+        IN      const uintn_t           index );
+
+

PARAMETERS

+
       p_perf
+               [in] Pointer to a performance counter container to whose counter
+               a sample should be added.
+
+       index
+               [in] Number of the performance counter to update with a new sample.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       The ending time stamp is taken and elapsed time calculated before updating
+       the specified counter.
+
+       This macro has no effect when performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters, PERF_DECLARE, PERF_DECLARE_START, cl_perf_start,
+       cl_perf_log
+
+
+
+ +

[Definitions] +Component Library: Performance Counters/cl_perf_update

+ +

[top][index]

+

NAME

+
       cl_perf_update
+
+

DESCRIPTION

+
       The cl_perf_update macro adds a timing sample based on a provided start
+       time to a counter in a performance counter container.
+
+

SYNOPSIS

+
void
+cl_perf_update(
+        IN      cl_perf_t* const        p_perf,
+        IN      const uintn_t           index,
+        IN      const uint64_t          start_time );
+
+

PARAMETERS

+
       p_perf
+               [in] Pointer to a performance counter container to whose counter
+               the sample should be added.
+
+       index
+               [in] Number of the performance counter to update with a new sample.
+
+       start_time
+               [in] Timestamp to use as the start time for the timing sample.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This macro has no effect when performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters, PERF_DECLARE, PERF_DECLARE_START, cl_perf_start,
+       cl_perf_lob, cl_perf_stop
+
+
+
+ +

[Definitions] +Component Library: Performance Counters/cl_perf_update_ctr

+ +

[top][index]

+

NAME

+
       cl_perf_update_ctr
+
+

DESCRIPTION

+
       The cl_perf_update_ctr macro updates a counter in a performance
+       counter container.
+
+

SYNOPSIS

+
void
+cl_perf_update_ctr(
+        IN      cl_perf_t* const        p_perf,
+        IN      const uintn_t           index );
+
+

PARAMETERS

+
       p_perf
+               [in] Pointer to a performance counter container to whose counter
+               the sample should be added.
+
+       index
+               [in] Number of the performance counter to update with a new sample.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This macro has no effect when performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters, PERF_DECLARE, PERF_DECLARE_START, cl_perf_start,
+       cl_perf_lob, cl_perf_stop
+
+
+
+ +

[Definitions] +Component Library: Performance Counters/PERF_DECLARE

+ +

[top][index]

+

NAME

+
       PERF_DECLARE
+
+

DESCRIPTION

+
       The PERF_DECLARE macro declares a performance counter variable used
+       to store the starting time of a timing sequence.
+
+

SYNOPSIS

+
*       PERF_DECLARE( index )
+
+

PARAMETERS

+
       index
+               [in] Index of the performance counter for which to use this
+               variable.
+
+

NOTES

+
       Variables should generally be declared on the stack to support
+       multi-threading.  In cases where a counter needs to be used to
+       time operations accross multiple functions, care must be taken to
+       ensure that the start time stored in this variable is not overwritten
+       before the related performance counter has been updated.
+
+       This macro has no effect when performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters, PERF_DECLARE_START, cl_perf_start, cl_perf_log,
+       cl_perf_stop
+
+
+
+ +

[Definitions] +Component Library: Performance Counters/PERF_DECLARE_START

+ +

[top][index]

+

NAME

+
       PERF_DECLARE_START
+
+

DESCRIPTION

+
       The PERF_DECLARE_START macro declares a performance counter variable
+       and sets it to the starting time of a timed sequence.
+
+

SYNOPSIS

+
*       PERF_DECLARE_START( index )
+
+

PARAMETERS

+
       index
+               [in] Index of the performance counter for which to use this
+               variable.
+
+

NOTES

+
       Variables should generally be declared on the stack to support
+       multi-threading.
+
+       This macro has no effect when performance counters are disabled.
+
+

SEE ALSO

+
       Performance Counters, PERF_DECLARE, cl_perf_start, cl_perf_log,
+       cl_perf_stop
+
+
+ + diff --git a/trunk/docs/complib/cl_pool_h.html b/trunk/docs/complib/cl_pool_h.html new file mode 100644 index 00000000..d5c8f9d8 --- /dev/null +++ b/trunk/docs/complib/cl_pool_h.html @@ -0,0 +1,581 @@ + + + + +./inc_doc/complib/cl_pool_h.html + + + + +Generated from ./inc/complib/cl_pool.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Pool

+ +

[top][index]

+

NAME

+
       Pool
+
+

DESCRIPTION

+
       The pool provides a self-contained and self-sustaining pool
+       of user defined objects.
+
+       To aid in object oriented design, the pool provides the user
+       the ability to specify callbacks that are invoked for each object for
+       construction, initialization, and destruction. Constructor and destructor
+       callback functions may not fail.
+
+       A pool does not return memory to the system as the user returns
+       objects to the pool. The only method of returning memory to the system is
+       to destroy the pool.
+
+       The Pool functions operate on a cl_pool_t structure which should be treated
+       as opaque and should be manipulated only through the provided functions.
+
+

SEE ALSO

+
       Structures:
+               cl_pool_t
+
+       Callbacks:
+               cl_pfn_pool_init_t, cl_pfn_pool_dtor_t
+
+       Initialization/Destruction:
+               cl_pool_construct, cl_pool_init, cl_pool_destroy
+
+       Manipulation:
+               cl_pool_get, cl_pool_put, cl_pool_grow
+
+       Attributes:
+               cl_is_pool_inited, cl_pool_count
+
+
+
+ +

[Functions] +Component Library: Pool/cl_is_pool_inited

+ +

[top][index]

+

NAME

+
       cl_is_pool_inited
+
+

DESCRIPTION

+
       The cl_is_pool_inited function returns whether a pool was successfully
+       initialized.
+
+

SYNOPSIS

+
CL_INLINE uint32_t CL_API
+cl_is_pool_inited(
+        IN      const cl_pool_t* const  p_pool )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_pool );
+        return( cl_is_qcpool_inited( &p_pool->qcpool ) );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_pool_t structure whose initialization state
+               to check.
+
+ RETURN VALUES
+       TRUE if the pool was initialized successfully.
+
+       FALSE otherwise.
+
+

NOTES

+
       Allows checking the state of a pool to determine if invoking member
+       functions is appropriate.
+
+

SEE ALSO

+
       Pool
+
+
+
+ +

[Definitions] +Component Library: Pool/cl_pfn_pool_dtor_t

+ +

[top][index]

+

NAME

+
       cl_pfn_pool_dtor_t
+
+

DESCRIPTION

+
       The cl_pfn_pool_dtor_t function type defines the prototype for
+       functions used as destructor for objects being deallocated by a
+       pool.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_pool_dtor_t)(
+        IN      void* const                     p_object,
+        IN      void*                           context );
+
+

PARAMETERS

+
       p_object
+               [in] Pointer to an object to destruct.
+
+       context
+               [in] Context provided in the call to cl_pool_init.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the function provided by the user as an optional parameter to the
+       cl_pool_init function.
+
+       The destructor is invoked once per allocated object, allowing the user
+       to perform any necessary cleanup. Users should not attempt to deallocate
+       the memory for the object, as the pool manages object
+       allocation and deallocation.
+
+

SEE ALSO

+
       Pool, cl_pool_init
+
+
+
+ +

[Definitions] +Component Library: Pool/cl_pfn_pool_init_t

+ +

[top][index]

+

NAME

+
       cl_pfn_pool_init_t
+
+

DESCRIPTION

+
       The cl_pfn_pool_init_t function type defines the prototype for
+       functions used as initializers for objects being allocated by a
+       pool.
+
+

SYNOPSIS

+
typedef cl_status_t
+(CL_API *cl_pfn_pool_init_t)(
+        IN      void* const                     p_object,
+        IN      void*                           context );
+
+

PARAMETERS

+
       p_object
+               [in] Pointer to an object to initialize.
+
+       context
+               [in] Context provided in a call to cl_pool_init.
+
+ RETURN VALUES
+       Return CL_SUCCESS to indicates that initialization of the object
+       was successful and initialization of further objects may continue.
+
+       Other cl_status_t values will be returned by cl_pool_init
+       and cl_pool_grow.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the function provided by the user as an optional parameter to the
+       cl_pool_init function.
+
+       The initializer is invoked once per allocated object, allowing the user
+       to trap initialization failures. Returning a status other than CL_SUCCESS
+       aborts a grow operation, initiated either through cl_pool_init or
+       cl_pool_grow, and causes the initiating function to fail.
+       Any non-CL_SUCCESS status will be returned by the function that initiated
+       the grow operation.
+
+

SEE ALSO

+
       Pool, cl_pool_init, cl_pool_grow
+
+
+
+ +

[Functions] +Component Library: Pool/cl_pool_construct

+ +

[top][index]

+

NAME

+
       cl_pool_construct
+
+

DESCRIPTION

+
       The cl_pool_construct function constructs a pool.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_pool_construct(
+        IN      cl_pool_t* const        p_pool );
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_pool_t structure whose state to initialize.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_pool_init, cl_pool_destroy, and cl_is_pool_inited.
+
+       Calling cl_pool_construct is a prerequisite to calling any other
+       pool function except cl_pool_init.
+
+

SEE ALSO

+
       Pool, cl_pool_init, cl_pool_destroy, cl_is_pool_inited
+
+
+
+ +

[Functions] +Component Library: Pool/cl_pool_count

+ +

[top][index]

+

NAME

+
       cl_pool_count
+
+

DESCRIPTION

+
       The cl_pool_count function returns the number of available objects
+       in a pool.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_pool_count(
+        IN      cl_pool_t* const        p_pool )
+{
+        CL_ASSERT( p_pool );
+        return( cl_qcpool_count( &p_pool->qcpool ) );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_pool_t structure for which the number of
+               available objects is requested.
+
+

RETURN VALUE

+
       Returns the number of objects available in the specified pool.
+
+

SEE ALSO

+
       Pool
+
+
+
+ +

[Functions] +Component Library: Pool/cl_pool_destroy

+ +

[top][index]

+

NAME

+
       cl_pool_destroy
+
+

DESCRIPTION

+
       The cl_pool_destroy function destroys a pool.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_pool_destroy(
+        IN      cl_pool_t* const        p_pool )
+{
+        CL_ASSERT( p_pool );
+        cl_qcpool_destroy( &p_pool->qcpool );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_pool_t structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       All memory allocated for objects is freed. The destructor callback,
+       if any, will be invoked for every allocated object. Further operations
+       on the pool should not be attempted after cl_pool_destroy
+       is invoked.
+
+       This function should only be called after a call to
+       cl_pool_construct or cl_pool_init.
+
+       In a debug build, cl_pool_destroy asserts that all objects are in
+       the pool.
+
+

SEE ALSO

+
       Pool, cl_pool_construct, cl_pool_init
+
+
+
+ +

[Functions] +Component Library: Pool/cl_pool_get

+ +

[top][index]

+

NAME

+
       cl_pool_get
+
+

DESCRIPTION

+
       The cl_pool_get function retrieves an object from a pool.
+
+

SYNOPSIS

+
CL_INLINE void* CL_API
+cl_pool_get(
+        IN      cl_pool_t* const        p_pool )
+{
+        cl_pool_obj_t   *p_pool_obj;
+
+        CL_ASSERT( p_pool );
+
+        p_pool_obj = (cl_pool_obj_t*)cl_qcpool_get( &p_pool->qcpool );
+        if( !p_pool_obj )
+                return( NULL );
+
+        CL_ASSERT( p_pool_obj->list_obj.p_object );
+        return( (void*)p_pool_obj->list_obj.p_object );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_pool_t structure from which to retrieve
+               an object.
+
+ RETURN VALUES
+       Returns a pointer to an object.
+
+       Returns NULL if the pool is empty and can not be grown automatically.
+
+

NOTES

+
       cl_pool_get returns the object at the head of the pool. If the pool is
+       empty, it is automatically grown to accommodate this request unless the
+       grow_size parameter passed to the cl_pool_init function was zero.
+
+

SEE ALSO

+
       Pool, cl_pool_get_tail, cl_pool_put, cl_pool_grow, cl_pool_count
+
+
+
+ +

[Functions] +Component Library: Pool/cl_pool_grow

+ +

[top][index]

+

NAME

+
       cl_pool_grow
+
+

DESCRIPTION

+
       The cl_pool_grow function grows a pool by
+       the specified number of objects.
+
+

SYNOPSIS

+
CL_INLINE cl_status_t CL_API
+cl_pool_grow(
+        IN      cl_pool_t* const        p_pool,
+        IN      const size_t            obj_count )
+{
+        CL_ASSERT( p_pool );
+        return( cl_qcpool_grow( &p_pool->qcpool, obj_count ) );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_pool_t structure whose capacity to grow.
+
+       obj_count
+               [in] Number of objects by which to grow the pool.
+
+ RETURN VALUES
+       CL_SUCCESS if the pool grew successfully.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to grow the
+       pool.
+
+       cl_status_t value returned by optional initialization callback function
+       specified by the pfn_initializer parameter passed to the
+       cl_pool_init function.
+
+

NOTES

+
       It is not necessary to call cl_pool_grow if the pool is
+       configured to grow automatically.
+
+

SEE ALSO

+
       Pool
+
+
+
+ +

[Functions] +Component Library: Pool/cl_pool_init

+ +

[top][index]

+

NAME

+
       cl_pool_init
+
+

DESCRIPTION

+
       The cl_pool_init function initializes a pool for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_pool_init(
+        IN      cl_pool_t* const                p_pool,
+        IN      const size_t                    min_count,
+        IN      const size_t                    max_count,
+        IN      const size_t                    grow_size,
+        IN      const size_t                    object_size,
+        IN      cl_pfn_pool_init_t              pfn_initializer OPTIONAL,
+        IN      cl_pfn_pool_dtor_t              pfn_destructor OPTIONAL,
+        IN      const void* const               context );
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_pool_t structure to initialize.
+
+       min_count
+               [in] Minimum number of objects that the pool should support. All
+               necessary allocations to allow storing the minimum number of items
+               are performed at initialization time, and all necessary callbacks
+               invoked.
+
+       max_count
+               [in] Maximum number of objects to which the pool is allowed to grow.
+               A value of zero specifies no maximum.
+
+       grow_size
+               [in] Number of objects to allocate when incrementally growing the pool.
+               A value of zero disables automatic growth.
+
+       object_size
+               [in] Size, in bytes, of each object.
+
+       pfn_initializer
+               [in] Initialization callback to invoke for every new object when
+               growing the pool. This parameter is optional and may be NULL.
+               See the cl_pfn_pool_init_t function type declaration for details
+               about the callback function.
+
+       pfn_destructor
+               [in] Destructor callback to invoke for every object before memory for
+               that object is freed. This parameter is optional and may be NULL.
+               See the cl_pfn_pool_dtor_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context.
+
+ RETURN VALUES
+       CL_SUCCESS if the pool was initialized successfully.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize the
+       pool.
+
+       CL_INVALID_SETTING if a the maximum size is non-zero and less than the
+       minimum size.
+
+       Other cl_status_t value returned by optional initialization callback function
+       specified by the pfn_initializer parameter.
+
+

NOTES

+
       cl_pool_init initializes, and if necessary, grows the pool to
+       the capacity desired.
+
+

SEE ALSO

+
       Pool, cl_pool_construct, cl_pool_destroy,
+       cl_pool_get, cl_pool_put, cl_pool_grow,
+       cl_pool_count, cl_pfn_pool_init_t, cl_pfn_pool_dtor_t
+
+
+
+ +

[Functions] +Component Library: Pool/cl_pool_put

+ +

[top][index]

+

NAME

+
       cl_pool_put
+
+

DESCRIPTION

+
       The cl_pool_put function returns an object to a pool.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_pool_put(
+        IN      cl_pool_t* const        p_pool,
+        IN      void* const                     p_object )
+{
+        cl_pool_obj_t   *p_pool_obj;
+
+        CL_ASSERT( p_pool );
+        CL_ASSERT( p_object );
+
+        /* Calculate the offset to the list object representing this object. */
+        p_pool_obj = (cl_pool_obj_t*)
+                (((uint8_t*)p_object) - sizeof(cl_pool_obj_t));
+
+        /* good sanity check */
+        CL_ASSERT( p_pool_obj->list_obj.p_object == p_object );
+
+        cl_qcpool_put( &p_pool->qcpool, (cl_pool_item_t*)p_pool_obj );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_pool_t structure to which to return
+               an object.
+
+       p_object
+               [in] Pointer to an object to return to the pool.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_pool_put places the returned object at the head of the pool.
+
+       The object specified by the p_object parameter must have been
+       retrieved from the pool by a previous call to cl_pool_get.
+
+

SEE ALSO

+
       Pool, cl_pool_put_tail, cl_pool_get
+
+
+
+ +

[Structures] +Component Library: Pool/cl_pool_t

+ +

[top][index]

+

NAME

+
       cl_pool_t
+
+

DESCRIPTION

+
       pool structure.
+
+       The cl_pool_t structure should be treated as opaque and should be
+       manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_pool
+{
+        cl_qcpool_t                             qcpool;
+        cl_pfn_pool_init_t              pfn_init;
+        cl_pfn_pool_dtor_t              pfn_dtor;
+        const void                              *context;
+
+} cl_pool_t;
+
+

FIELDS

+
       qcpool
+               Quick composite pool that manages all objects.
+
+       pfn_init
+               Pointer to the user's initializer callback, used by the pool
+               to translate the quick composite pool's initializer callback to
+               a pool initializer callback.
+
+       pfn_dtor
+               Pointer to the user's destructor callback, used by the pool
+               to translate the quick composite pool's destructor callback to
+               a pool destructor callback.
+
+       context
+               User's provided context for callback functions, used by the pool
+               to when invoking callbacks.
+
+

SEE ALSO

+
       Pool
+
+
+ + diff --git a/trunk/docs/complib/cl_ptr_vector_h.html b/trunk/docs/complib/cl_ptr_vector_h.html new file mode 100644 index 00000000..0993f511 --- /dev/null +++ b/trunk/docs/complib/cl_ptr_vector_h.html @@ -0,0 +1,890 @@ + + + + +./inc_doc/complib/cl_ptr_vector_h.html + + + + +Generated from ./inc/complib/cl_ptr_vector.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Pointer Vector

+ +

[top][index]

+

NAME

+
       Pointer Vector
+
+

DESCRIPTION

+
       The Pointer Vector is a self-sizing array of pointers. Like a traditonal
+       array, a pointer vector allows efficient constant time access to elements
+       with a specified index.  A pointer vector grows transparently as the
+       user adds elements to the array.
+
+       The cl_pointer vector_t structure should be treated as opaque and should be
+       manipulated only through the provided functions.
+
+

SEE ALSO

+
       Structures:
+               cl_ptr_vector_t
+
+       Callbacks:
+               cl_pfn_ptr_vec_apply_t, cl_pfn_ptr_vec_find_t
+
+       Item Manipulation:
+               cl_ptr_vector_set_obj, cl_ptr_vector_obj
+
+       Initialization:
+               cl_ptr_vector_construct, cl_ptr_vector_init, cl_ptr_vector_destroy
+
+       Manipulation:
+               cl_ptr_vector_get_capacity, cl_ptr_vector_set_capacity,
+               cl_ptr_vector_get_size, cl_ptr_vector_set_size, cl_ptr_vector_set_min_size
+               cl_ptr_vector_get_ptr, cl_ptr_vector_get, cl_ptr_vector_at, cl_ptr_vector_set
+
+       Search:
+               cl_ptr_vector_find_from_start, cl_ptr_vector_find_from_end
+               cl_ptr_vector_apply_func
+
+
+
+ +

[Definitions] +Component Library: Pointer Vector/cl_pfn_ptr_vec_apply_t

+ +

[top][index]

+

NAME

+
       cl_pfn_ptr_vec_apply_t
+
+

DESCRIPTION

+
       The cl_pfn_ptr_vec_apply_t function type defines the prototype for
+       functions used to iterate elements in a pointer vector.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_ptr_vec_apply_t)(
+        IN      const size_t            index,
+        IN      void* const                     element,
+        IN      void*                           context );
+
+

PARAMETERS

+
       index
+               [in] Index of the element.
+
+       p_element
+               [in] Pointer to an element at the specified index in the pointer vector.
+
+       context
+               [in] Context provided in a call to cl_ptr_vector_apply_func.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the function passed by users as a parameter to the cl_ptr_vector_apply_func
+       function.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_apply_func
+
+
+
+ +

[Definitions] +Component Library: Pointer Vector/cl_pfn_ptr_vec_find_t

+ +

[top][index]

+

NAME

+
       cl_pfn_ptr_vec_find_t
+
+

DESCRIPTION

+
       The cl_pfn_ptr_vec_find_t function type defines the prototype for
+       functions used to find elements in a pointer vector.
+
+

SYNOPSIS

+
typedef cl_status_t
+(CL_API *cl_pfn_ptr_vec_find_t)(
+        IN      const size_t            index,
+        IN      const void* const       element,
+        IN      void*                           context );
+
+

PARAMETERS

+
       index
+               [in] Index of the element.
+
+       p_element
+               [in] Pointer to an element at the specified index in the
+               pointer vector.
+
+       context
+               [in] Context provided in a call to cl_ptr_vector_find_from_start or
+               cl_ptr_vector_find_from_end.
+
+ RETURN VALUES
+       Return CL_SUCCESS if the element was found. This stops pointer vector
+       iteration.
+
+       CL_NOT_FOUND to continue the pointer vector iteration.
+
+

NOTES

+
       This function type is provided as function prototype reference for the
+       function provided by users as a parameter to the
+       cl_ptr_vector_find_from_start and cl_ptr_vector_find_from_end functions.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_find_from_start, cl_ptr_vector_find_from_end
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_apply_func

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_apply_func
+
+

DESCRIPTION

+
       The cl_ptr_vector_apply_func function invokes a specified function for
+       every element in a pointer vector.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_ptr_vector_apply_func(
+        IN      const cl_ptr_vector_t* const    p_vector,
+        IN      cl_pfn_ptr_vec_apply_t                  pfn_callback,
+        IN      const void* const                               context );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure whose elements to iterate.
+
+       pfn_callback
+               [in] Function invoked for every element in the array.
+               See the cl_pfn_ptr_vec_apply_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback function.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_ptr_vector_apply_func invokes the specified function for every element
+       in the pointer vector, starting from the beginning of the pointer vector.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_find_from_start, cl_ptr_vector_find_from_end,
+       cl_pfn_ptr_vec_apply_t
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_at

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_at
+
+

DESCRIPTION

+
       The cl_ptr_vector_at function copies an element stored in a pointer
+       vector at a specified index, performing boundary checks.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_ptr_vector_at(
+        IN      const cl_ptr_vector_t* const    p_vector,
+        IN      const size_t                                    index,
+        OUT     void** const                                    p_element );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure from which to get a copy of
+               an element.
+
+       index
+               [in] Index of the element.
+
+       p_element
+               [out] Pointer to storage for the pointer element. Contains a copy of
+               the desired pointer upon successful completion of the call.
+
+ RETURN VALUES
+       CL_SUCCESS if an element was found at the specified index.
+
+       CL_INVALID_SETTING if the index was out of range.
+
+

NOTES

+
       cl_ptr_vector_at provides constant time access regardless of
+       the index, and performs boundary checking on the pointer vector.
+
+       Upon success, the p_element parameter contains a copy of the
+       desired element.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_get
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_construct

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_construct
+
+

DESCRIPTION

+
       The cl_ptr_vector_construct function constructs a pointer vector.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_ptr_vector_construct(
+        IN      cl_ptr_vector_t* const  p_vector );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure to construct.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_ptr_vector_destroy without first calling
+       cl_ptr_vector_init.
+
+       Calling cl_ptr_vector_construct is a prerequisite to calling any other
+       pointer vector function except cl_ptr_vector_init.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_init, cl_ptr_vector_destroy
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_destroy

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_destroy
+
+

DESCRIPTION

+
       The cl_ptr_vector_destroy function destroys a pointer vector.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_ptr_vector_destroy(
+        IN      cl_ptr_vector_t* const  p_vector );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_ptr_vector_destroy frees all memory allocated for the pointer vector.
+
+       This function should only be called after a call to cl_ptr_vector_construct
+       or cl_ptr_vector_init.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_construct, cl_ptr_vector_init
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_find_from_end

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_find_from_end
+
+

DESCRIPTION

+
       The cl_ptr_vector_find_from_end function uses a specified function to
+       search for elements in a pointer vector starting from the highest index.
+
+

SYNOPSIS

+
CL_EXPORT size_t CL_API
+cl_ptr_vector_find_from_end(
+        IN      const cl_ptr_vector_t* const    p_vector,
+        IN      cl_pfn_ptr_vec_find_t                   pfn_callback,
+        IN      const void* const                               context );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure to inititalize.
+
+       pfn_callback
+               [in] Function invoked to determine if a match was found.
+               See the cl_pfn_ptr_vec_find_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback function.
+
+ RETURN VALUES
+       Index of the element, if found.
+
+       Size of the pointer vector if the element was not found.
+
+

NOTES

+
       cl_ptr_vector_find_from_end does not remove the found element from
+       the pointer vector. The index of the element is returned when the function
+       provided by the pfn_callback parameter returns CL_SUCCESS.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_find_from_start, cl_ptr_vector_apply_func,
+       cl_pfn_ptr_vec_find_t
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_find_from_start

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_find_from_start
+
+

DESCRIPTION

+
       The cl_ptr_vector_find_from_start function uses a specified function to
+       search for elements in a pointer vector starting from the lowest index.
+
+

SYNOPSIS

+
CL_EXPORT size_t CL_API
+cl_ptr_vector_find_from_start(
+        IN      const cl_ptr_vector_t* const    p_vector,
+        IN      cl_pfn_ptr_vec_find_t                   pfn_callback,
+        IN      const void* const                               context );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure to inititalize.
+
+       pfn_callback
+               [in] Function invoked to determine if a match was found.
+               See the cl_pfn_ptr_vec_find_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback function.
+
+ RETURN VALUES
+       Index of the element, if found.
+
+       Size of the pointer vector if the element was not found.
+
+

NOTES

+
       cl_ptr_vector_find_from_start does not remove the found element from
+       the pointer vector. The index of the element is returned when the function
+       provided by the pfn_callback parameter returns CL_SUCCESS.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_find_from_end, cl_ptr_vector_apply_func,
+       cl_pfn_ptr_vec_find_t
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_get

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_get
+
+

DESCRIPTION

+
       The cl_ptr_vector_get function returns the pointer stored in a
+       pointer vector at a specified index.
+
+

SYNOPSIS

+
CL_INLINE void* CL_API
+cl_ptr_vector_get(
+        IN      const cl_ptr_vector_t* const    p_vector,
+        IN      const size_t                                    index )
+{
+        CL_ASSERT( p_vector );
+        CL_ASSERT( p_vector->state == CL_INITIALIZED );
+        CL_ASSERT( p_vector->size > index );
+
+        return( (void*)p_vector->p_ptr_array[index] );
+}
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure from which to get an
+               element.
+
+       index
+               [in] Index of the element.
+
+

RETURN VALUE

+
       Value of the pointer stored at the specified index.
+
+

NOTES

+
       cl_ptr_vector_get provides constant access times regardless of the index.
+
+       cl_ptr_vector_get does not perform boundary checking. Callers are
+       responsible for providing an index that is within the range of the pointer
+       vector.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_at, cl_ptr_vector_set, cl_ptr_vector_get_size
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_get_capacity

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_get_capacity
+
+

DESCRIPTION

+
       The cl_ptr_vector_get_capacity function returns the capacity of
+       a pointer vector.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_ptr_vector_get_capacity(
+        IN      const cl_ptr_vector_t* const    p_vector )
+{
+        CL_ASSERT( p_vector );
+        CL_ASSERT( p_vector->state == CL_INITIALIZED );
+
+        return( p_vector->capacity );
+}
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure whose capacity to return.
+
+

RETURN VALUE

+
       Capacity, in elements, of the pointer vector.
+
+

NOTES

+
       The capacity is the number of elements that the pointer vector can store,
+       and can be greater than the number of elements stored. To get the number
+       of elements stored in the pointer vector, use cl_ptr_vector_get_size.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_set_capacity, cl_ptr_vector_get_size
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_get_size

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_get_size
+
+

DESCRIPTION

+
       The cl_ptr_vector_get_size function returns the size of a pointer vector.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_ptr_vector_get_size(
+        IN      const cl_ptr_vector_t* const    p_vector )
+{
+        CL_ASSERT( p_vector );
+        CL_ASSERT( p_vector->state == CL_UNINITIALIZED ||
+                p_vector->state == CL_INITIALIZED );
+
+        return( p_vector->size );
+}
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure whose size to return.
+
+

RETURN VALUE

+
       Size, in elements, of the pointer vector.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_set_size, cl_ptr_vector_get_capacity
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_init

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_init
+
+

DESCRIPTION

+
       The cl_ptr_vector_init function initializes a pointer vector for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_ptr_vector_init(
+        IN      cl_ptr_vector_t* const  p_vector,
+        IN      const size_t                    min_cap,
+        IN      const size_t                    grow_size );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure to inititalize.
+
+       min_cap
+               [in] Initial number of elements the vector will support.
+               The vector is always initialized with a size of zero.
+
+       grow_size
+               [in] Number of elements to allocate when incrementally growing
+               the pointer vector.  A value of zero disables automatic growth.
+
+ RETURN VALUES
+       CL_SUCCESS if the pointer vector was initialized successfully.
+
+       CL_INSUFFICIENT_MEMORY if the initialization failed.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_construct, cl_ptr_vector_destroy,
+       cl_ptr_vector_set, cl_ptr_vector_get, cl_ptr_vector_at
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_insert

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_insert
+
+

DESCRIPTION

+
       The cl_ptr_vector_insert function inserts an element into a pointer vector.
+
+

SYNOPSIS

+
CL_INLINE cl_status_t CL_API
+cl_ptr_vector_insert(
+        IN      cl_ptr_vector_t* const  p_vector,
+        IN      const void* const               element,
+        OUT     size_t* const                   p_index OPTIONAL )
+{
+        cl_status_t             status;
+
+        CL_ASSERT( p_vector );
+        CL_ASSERT( p_vector->state == CL_INITIALIZED );
+
+        status = cl_ptr_vector_set( p_vector, p_vector->size, element );
+        if( status == CL_SUCCESS && p_index )
+                *p_index = p_vector->size - 1;
+
+        return( status );
+}
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure into which to store
+               an element.
+
+       element
+               [in] Pointer to store in the pointer vector.
+
+       p_index
+               [out] Pointer to the index of the element.  Valid only if
+               insertion was successful.
+
+ RETURN VALUES
+       CL_SUCCESS if the element was successfully inserted.
+
+       CL_INSUFFICIENT_MEMORY if the pointer vector could not be resized to
+       accommodate the new element.
+
+

NOTES

+
       cl_ptr_vector_insert places the new element at the end of
+       the pointer vector.
+
+       cl_ptr_vector_insert grows the pointer vector as needed to accommodate
+       the new element, unless the grow_size parameter passed into the
+       cl_ptr_vector_init function was zero.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_remove, cl_ptr_vector_set
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_remove

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_remove
+
+

DESCRIPTION

+
       The cl_ptr_vector_remove function removes and returns the pointer stored
+       in a pointer vector at a specified index.  Items beyond the removed item
+       are shifted down and the size of the pointer vector is decremented.
+
+

SYNOPSIS

+
CL_EXPORT void* CL_API
+cl_ptr_vector_remove(
+        IN      cl_ptr_vector_t* const  p_vector,
+        IN      const size_t                    index );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure from which to get an
+               element.
+
+       index
+               [in] Index of the element.
+
+

RETURN VALUE

+
       Value of the pointer stored at the specified index.
+
+

NOTES

+
       cl_ptr_vector_get does not perform boundary checking. Callers are
+       responsible for providing an index that is within the range of the pointer
+       vector.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_insert, cl_ptr_vector_get_size
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_set

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_set
+
+

DESCRIPTION

+
       The cl_ptr_vector_set function sets the element at the specified index.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_ptr_vector_set(
+        IN      cl_ptr_vector_t* const  p_vector,
+        IN      const size_t                    index,
+        IN      const void* const               element );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure into which to store
+               an element.
+
+       index
+               [in] Index of the element.
+
+       element
+               [in] Pointer to store in the pointer vector.
+
+ RETURN VALUES
+       CL_SUCCESS if the element was successfully set.
+
+       CL_INSUFFICIENT_MEMORY if the pointer vector could not be resized to
+       accommodate the new element.
+
+

NOTES

+
       cl_ptr_vector_set grows the pointer vector as needed to accommodate
+       the new element, unless the grow_size parameter passed into the
+       cl_ptr_vector_init function was zero.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_get
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_set_capacity

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_set_capacity
+
+

DESCRIPTION

+
       The cl_ptr_vector_set_capacity function reserves memory in a
+       pointer vector for a specified number of pointers.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_ptr_vector_set_capacity(
+        IN      cl_ptr_vector_t* const  p_vector,
+        IN      const size_t                    new_capacity );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure whose capacity to set.
+
+       new_capacity
+               [in] Total number of elements for which the pointer vector should
+               allocate memory.
+
+ RETURN VALUES
+       CL_SUCCESS if the capacity was successfully set.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to satisfy the
+       operation. The pointer vector is left unchanged.
+
+

NOTES

+
       cl_ptr_vector_set_capacity increases the capacity of the pointer vector.
+       It does not change the size of the pointer vector. If the requested
+       capacity is less than the current capacity, the pointer vector is left
+       unchanged.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_get_capacity, cl_ptr_vector_set_size,
+       cl_ptr_vector_set_min_size
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_set_min_size

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_set_min_size
+
+

DESCRIPTION

+
       The cl_ptr_vector_set_min_size function resizes a pointer vector to a
+       specified size if the pointer vector is smaller than the specified size.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_ptr_vector_set_min_size(
+        IN      cl_ptr_vector_t* const  p_vector,
+        IN      const size_t                    min_size );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure whose minimum size to set.
+
+       min_size
+               [in] Minimum number of elements that the pointer vector should contain.
+
+ RETURN VALUES
+       CL_SUCCESS if the pointer vector size is greater than or equal to min_size.
+       This could indicate that the pointer vector's capacity was increased to
+       min_size or that the pointer vector was already of sufficient size.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to resize the
+       pointer vector.  The pointer vector is left unchanged.
+
+

NOTES

+
       If min_size is smaller than the current size of the pointer vector,
+       the pointer vector is unchanged. The pointer vector is unchanged if the
+       size could not be changed due to insufficient memory being available to
+       perform the operation.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_get_size, cl_ptr_vector_set_size,
+       cl_ptr_vector_set_capacity
+
+
+
+ +

[Functions] +Component Library: Pointer Vector/cl_ptr_vector_set_size

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_set_size
+
+

DESCRIPTION

+
       The cl_ptr_vector_set_size function resizes a pointer vector, either
+       increasing or decreasing its size.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_ptr_vector_set_size(
+        IN      cl_ptr_vector_t* const  p_vector,
+        IN      const size_t                    size );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_ptr_vector_t structure whose size to set.
+
+       size
+               [in] Number of elements desired in the pointer vector.
+
+ RETURN VALUES
+       CL_SUCCESS if the size of the pointer vector was set successfully.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to complete the
+       operation. The pointer vector is left unchanged.
+
+

NOTES

+
       cl_ptr_vector_set_size sets the pointer vector to the specified size.
+       If size is smaller than the current size of the pointer vector, the size
+       is reduced.
+
+       This function can only fail if size is larger than the current capacity.
+
+

SEE ALSO

+
       Pointer Vector, cl_ptr_vector_get_size, cl_ptr_vector_set_min_size,
+       cl_ptr_vector_set_capacity
+
+
+
+ +

[Structures] +Component Library: Pointer Vector/cl_ptr_vector_t

+ +

[top][index]

+

NAME

+
       cl_ptr_vector_t
+
+

DESCRIPTION

+
       Pointer Vector structure.
+
+       The cl_ptr_vector_t structure should be treated as opaque and should be
+       manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_ptr_vector
+{
+        size_t                          size;
+        size_t                          grow_size;
+        size_t                          capacity;
+        const void                      **p_ptr_array;
+        cl_state_t                      state;
+
+} cl_ptr_vector_t;
+
+

FIELDS

+
       size
+                Number of elements successfully initialized in the pointer vector.
+
+       grow_size
+                Number of elements to allocate when growing.
+
+       capacity
+                total # of elements allocated.
+
+       alloc_list
+                List of allocations.
+
+       p_ptr_array
+                Internal array of pointers to elements.
+
+       state
+               State of the pointer vector.
+
+

SEE ALSO

+
       Pointer Vector
+
+
+ + diff --git a/trunk/docs/complib/cl_qcomppool_h.html b/trunk/docs/complib/cl_qcomppool_h.html new file mode 100644 index 00000000..edda7410 --- /dev/null +++ b/trunk/docs/complib/cl_qcomppool_h.html @@ -0,0 +1,740 @@ + + + + +./inc_doc/complib/cl_qcomppool_h.html + + + + +Generated from ./inc/complib/cl_qcomppool.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Quick Composite Pool

+ +

[top][index]

+

NAME

+
       Quick Composite Pool
+
+

DESCRIPTION

+
       The Quick Composite Pool provides a self-contained and self-sustaining
+       pool of user defined composite objects.
+
+       A composite object is an object that is composed of one or more
+       sub-objects, each of which needs to be treated separately for
+       initialization. Objects can be retrieved from the pool as long as there
+       is memory in the system.
+
+       To aid in object oriented design, the Quick Composite Pool provides users
+       the ability to specify callbacks that are invoked for each object for
+       construction, initialization, and destruction. Constructor and destructor
+       callback functions may not fail.
+
+       A Quick Composite Pool does not return memory to the system as the user
+       returns objects to the pool. The only method of returning memory to the
+       system is to destroy the pool.
+
+       The Quick Composite Pool operates on cl_pool_item_t structures that
+       describe composite objects. This provides for more efficient memory use.
+       If using a cl_pool_item_t is not desired, the Composite Pool provides
+       similar functionality but operates on opaque objects.
+
+       The Quick Composit Pool functions operate on a cl_qcpool_t structure
+       which should be treated as opaque and should be manipulated only through
+       the provided functions.
+
+

SEE ALSO

+
       Structures:
+               cl_qcpool_t, cl_pool_item_t
+
+       Callbacks:
+               cl_pfn_qcpool_init_t, cl_pfn_qcpool_dtor_t
+
+       Initialization/Destruction:
+               cl_qcpool_construct, cl_qcpool_init, cl_qcpool_destroy
+
+       Manipulation:
+               cl_qcpool_get, cl_qcpool_put, cl_qcpool_put_list, cl_qcpool_grow
+
+       Attributes:
+               cl_is_qcpool_inited, cl_qcpool_count
+
+
+
+ +

[Functions] +Component Library: Quick Composite Pool/cl_is_qcpool_inited

+ +

[top][index]

+

NAME

+
       cl_is_qcpool_inited
+
+

DESCRIPTION

+
       The cl_is_qcpool_inited function returns whether a quick composite pool was
+       successfully initialized.
+
+

SYNOPSIS

+
CL_INLINE uint32_t CL_API
+cl_is_qcpool_inited(
+        IN      const cl_qcpool_t* const        p_pool )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_pool );
+        /* CL_ASSERT that the pool is not in some invalid state. */
+        CL_ASSERT( cl_is_state_valid( p_pool->state ) );
+
+        return( p_pool->state == CL_INITIALIZED );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qcpool_t structure to check.
+
+ RETURN VALUES
+       TRUE if the quick composite pool was initialized successfully.
+
+       FALSE otherwise.
+
+

NOTES

+
       Allows checking the state of a quick composite pool to determine if
+       invoking member functions is appropriate.
+
+

SEE ALSO

+
       Quick Composite Pool
+
+
+
+ +

[Definitions] +Component Library: Quick Composite Pool/cl_pfn_qcpool_dtor_t

+ +

[top][index]

+

NAME

+
       cl_pfn_qcpool_dtor_t
+
+

DESCRIPTION

+
       The cl_pfn_qcpool_dtor_t function type defines the prototype for
+       functions used as destructor for objects being deallocated by a
+       quick composite pool.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_qcpool_dtor_t)(
+        IN      const cl_pool_item_t* const     p_pool_item,
+        IN      void*                                           context );
+
+

PARAMETERS

+
       p_pool_item
+               [in] Pointer to a cl_pool_item_t structure representing an object.
+
+       context
+               [in] Context provided in a call to cl_qcpool_init.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the function provided by the user as an optional parameter to the
+       cl_qcpool_init function.
+
+       The destructor is invoked once per allocated object, allowing the user
+       to perform any necessary cleanup. Users should not attempt to deallocate
+       the memory for the composite object, as the quick composite pool manages
+       object allocation and deallocation.
+
+

SEE ALSO

+
       Quick Composite Pool, cl_qcpool_init
+
+
+
+ +

[Definitions] +Component Library: Quick Composite Pool/cl_pfn_qcpool_init_t

+ +

[top][index]

+

NAME

+
       cl_pfn_qcpool_init_t
+
+

DESCRIPTION

+
       The cl_pfn_qcpool_init_t function type defines the prototype for
+       functions used as initializer for objects being allocated by a
+       quick composite pool.
+
+

SYNOPSIS

+
typedef cl_status_t
+(CL_API *cl_pfn_qcpool_init_t)(
+        IN      void** const                    p_comp_array,
+        IN      const uint32_t                  num_components,
+        IN      void*                                   context,
+        OUT     cl_pool_item_t** const  pp_pool_item );
+
+

PARAMETERS

+
       p_comp_array
+               [in] Pointer to the first entry in an array of pointers, each of
+               which points to a component that makes up a composite object.
+
+       num_components
+               [in] Number of components that in the component array.
+
+       context
+               [in] Context provided in a call to cl_qcpool_init.
+
+       pp_pool_item
+               [out] Users should set this pointer to reference the cl_pool_item_t
+               structure that represents the composite object.  This pointer must
+               not be NULL if the function returns CL_SUCCESS.
+
+

RETURN VALUE

+
       Return CL_SUCCESS to indicate that initialization of the object
+       was successful and that initialization of further objects may continue.
+
+       Other cl_status_t values will be returned by cl_qcpool_init
+       and cl_qcpool_grow.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the function provided by the user as a parameter to the
+       cl_qcpool_init function.
+
+       The initializer is invoked once per allocated object, allowing the user
+       to chain components to form a composite object and perform any necessary
+       initialization.  Returning a status other than CL_SUCCESS aborts a grow
+       operation, initiated either through cl_qcpool_init or cl_qcpool_grow,
+       and causes the initiating function to fail.  Any non-CL_SUCCESS status
+       will be returned by the function that initiated the grow operation.
+
+       All memory for the requested number of components is pre-allocated.  Users
+       should include space in one of their components for the cl_pool_item_t
+       structure that will represent the composite object to avoid having to
+       allocate that structure in the initialization callback.  Alternatively,
+       users may specify an additional component for the cl_pool_item_t structure.
+
+       When later performing a cl_qcpool_get call, the return value is a pointer
+       to the cl_pool_item_t returned by this function in the pp_pool_item
+       parameter. Users must set pp_pool_item to a valid pointer to the
+       cl_pool_item_t representing the object if they return CL_SUCCESS.
+
+

SEE ALSO

+
       Quick Composite Pool, cl_qcpool_init
+
+
+
+ +

[Structures] +Component Library: Quick Composite Pool/cl_pool_item_t

+ +

[top][index]

+

NAME

+
       cl_pool_item_t
+
+

DESCRIPTION

+
       The cl_pool_item_t structure is used by pools to store objects.
+
+

SYNOPSIS

+
typedef struct _cl_pool_item
+{
+        cl_list_item_t          list_item;
+#ifdef _DEBUG_
+        /* Pad to make the cl_pool_obj structure line up properly */
+        void                            *pad;
+        /* Pointer to the owner pool used for sanity checks. */
+        struct _cl_qcpool       *p_pool;
+#endif
+
+} cl_pool_item_t;
+
+

FIELDS

+
       list_item
+               Used internally by the pool. Users should not use this field.
+
+       p_pool
+               Used internally by the pool in debug builds to check for consistency.
+
+

NOTES

+
       The pool item structure is defined in such a way as to safely allow
+       users to cast from a pool item to a list item for storing items
+       retrieved from a quick pool in a quick list.
+
+

SEE ALSO

+
       Quick Composite Pool, cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick Composite Pool/cl_qcpool_construct

+ +

[top][index]

+

NAME

+
       cl_qcpool_construct
+
+

DESCRIPTION

+
       The cl_qcpool_construct function constructs a quick composite pool.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qcpool_construct(
+        IN      cl_qcpool_t* const      p_pool );
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qcpool_t structure whose state to initialize.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_qcpool_init, cl_qcpool_destroy, cl_is_qcpool_inited.
+
+       Calling cl_qcpool_construct is a prerequisite to calling any other
+       quick composite pool function except cl_qcpool_init.
+
+

SEE ALSO

+
       Quick Composite Pool, cl_qcpool_init, cl_qcpool_destroy,
+       cl_is_qcpool_inited
+
+
+
+ +

[Functions] +Component Library: Quick Composite Pool/cl_qcpool_count

+ +

[top][index]

+

NAME

+
       cl_qcpool_count
+
+

DESCRIPTION

+
       The cl_qcpool_count function returns the number of available objects
+       in a quick composite pool.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_qcpool_count(
+        IN      cl_qcpool_t* const      p_pool )
+{
+        CL_ASSERT( p_pool );
+        CL_ASSERT( p_pool->state == CL_INITIALIZED );
+
+        return( cl_qlist_count( &p_pool->free_list ) );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qcpool_t structure for which the number of
+               available objects is requested.
+
+

RETURN VALUE

+
       Returns the number of objects available in the specified
+       quick composite pool.
+
+

SEE ALSO

+
       Quick Composite Pool
+
+
+
+ +

[Functions] +Component Library: Quick Composite Pool/cl_qcpool_destroy

+ +

[top][index]

+

NAME

+
       cl_qcpool_destroy
+
+

DESCRIPTION

+
       The cl_qcpool_destroy function destroys a quick composite pool.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qcpool_destroy(
+        IN      cl_qcpool_t* const      p_pool );
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qcpool_t structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       All memory allocated for composite objects is freed. The destructor
+       callback, if any, will be invoked for every allocated object. Further
+       operations on the composite pool should not be attempted after
+       cl_qcpool_destroy is invoked.
+
+       This function should only be called after a call to
+       cl_qcpool_construct or cl_qcpool_init.
+
+       In a debug build, cl_qcpool_destroy asserts that all objects are in
+       the pool.
+
+

SEE ALSO

+
       Quick Composite Pool, cl_qcpool_construct, cl_qcpool_init
+
+
+
+ +

[Functions] +Component Library: Quick Composite Pool/cl_qcpool_get

+ +

[top][index]

+

NAME

+
       cl_qcpool_get
+
+

DESCRIPTION

+
       The cl_qcpool_get function retrieves an object from a
+       quick composite pool.
+
+

SYNOPSIS

+
CL_EXPORT cl_pool_item_t* CL_API
+cl_qcpool_get(
+        IN      cl_qcpool_t* const      p_pool );
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qcpool_t structure from which to retrieve
+               an object.
+
+ RETURN VALUES
+       Returns a pointer to a cl_pool_item_t for a composite object.
+
+       Returns NULL if the pool is empty and can not be grown automatically.
+
+

NOTES

+
       cl_qcpool_get returns the object at the head of the pool. If the pool is
+       empty, it is automatically grown to accommodate this request unless the
+       grow_size parameter passed to the cl_qcpool_init function was zero.
+
+

SEE ALSO

+
       Quick Composite Pool, cl_qcpool_get_tail, cl_qcpool_put,
+       cl_qcpool_grow, cl_qcpool_count
+
+
+
+ +

[Functions] +Component Library: Quick Composite Pool/cl_qcpool_grow

+ +

[top][index]

+

NAME

+
       cl_qcpool_grow
+
+

DESCRIPTION

+
       The cl_qcpool_grow function grows a quick composite pool by
+       the specified number of objects.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_qcpool_grow(
+        IN      cl_qcpool_t* const              p_pool,
+        IN      size_t                                  obj_count );
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qcpool_t structure whose capacity to grow.
+
+       obj_count
+               [in] Number of objects by which to grow the pool.
+
+ RETURN VALUES
+       CL_SUCCESS if the quick composite pool grew successfully.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to grow the
+       quick composite pool.
+
+       cl_status_t value returned by optional initialization callback function
+       specified by the pfn_initializer parameter passed to the
+       cl_qcpool_init function.
+
+

NOTES

+
       It is not necessary to call cl_qcpool_grow if the pool is
+       configured to grow automatically.
+
+

SEE ALSO

+
       Quick Composite Pool
+
+
+
+ +

[Functions] +Component Library: Quick Composite Pool/cl_qcpool_init

+ +

[top][index]

+

NAME

+
       cl_qcpool_init
+
+

DESCRIPTION

+
       The cl_qcpool_init function initializes a quick composite pool for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_qcpool_init(
+        IN      cl_qcpool_t* const              p_pool,
+        IN      const size_t                    min_size,
+        IN      const size_t                    max_size,
+        IN      const size_t                    grow_size,
+        IN      const size_t* const             component_sizes,
+        IN      const uint32_t                  num_components,
+        IN      cl_pfn_qcpool_init_t    pfn_initializer OPTIONAL,
+        IN      cl_pfn_qcpool_dtor_t    pfn_destructor OPTIONAL,
+        IN      const void* const               context );
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qcpool_t structure to initialize.
+
+       min_size
+               [in] Minimum number of objects that the pool should support. All
+               necessary allocations to allow storing the minimum number of items
+               are performed at initialization time, and all necessary callbacks
+               successfully invoked.
+
+       max_size
+               [in] Maximum number of objects to which the pool is allowed to grow.
+               A value of zero specifies no maximum.
+
+       grow_size
+               [in] Number of objects to allocate when incrementally growing the pool.
+               A value of zero disables automatic growth.
+
+       component_sizes
+               [in] Pointer to the first entry in an array of sizes describing,
+               in order, the sizes of the components that make up a composite object.
+
+       num_components
+               [in] Number of components that make up a composite object.
+
+       pfn_initializer
+               [in] Initializer callback to invoke for every new object when growing
+               the pool. This parameter may be NULL only if the objects stored in
+               the quick composite pool consist of only one component. If NULL, the
+               pool assumes the cl_pool_item_t structure describing objects is
+               located at the head of each object. See the cl_pfn_qcpool_init_t
+               function type declaration for details about the callback function.
+
+       pfn_destructor
+               [in] Destructor callback to invoke for every object before memory for
+               that object is freed. This parameter is optional and may be NULL.
+               See the cl_pfn_qcpool_dtor_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context.
+
+ RETURN VALUES
+       CL_SUCCESS if the quick composite pool was initialized successfully.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize the
+       quick composite pool.
+
+       CL_INVALID_SETTING if a NULL constructor was provided for composite objects
+       consisting of more than one component.  Also returns CL_INVALID_SETTING if
+       the maximum size is non-zero and less than the minimum size.
+
+       Other cl_status_t value returned by optional initialization callback function
+       specified by the pfn_initializer parameter.
+
+       If initialization fails, the pool is left in a destroyed state.  Callers
+       may still safely call cl_qcpool_destroy.
+
+

NOTES

+
       cl_qcpool_init initializes, and if necessary, grows the pool to
+       the capacity desired.
+
+

SEE ALSO

+
       Quick Composite Pool, cl_qcpool_construct, cl_qcpool_destroy,
+       cl_qcpool_get, cl_qcpool_put, cl_qcpool_grow,
+       cl_qcpool_count, cl_pfn_qcpool_init_t, cl_pfn_qcpool_dtor_t
+
+
+
+ +

[Functions] +Component Library: Quick Composite Pool/cl_qcpool_put

+ +

[top][index]

+

NAME

+
       cl_qcpool_put
+
+

DESCRIPTION

+
       The cl_qcpool_put function returns an object to a quick composite pool.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qcpool_put(
+        IN      cl_qcpool_t* const              p_pool,
+        IN      cl_pool_item_t* const   p_pool_item )
+{
+        CL_ASSERT( p_pool );
+        CL_ASSERT( p_pool->state == CL_INITIALIZED );
+        CL_ASSERT( p_pool_item );
+        /* Make sure items being returned came from the specified pool. */
+        CL_ASSERT( p_pool_item->p_pool == p_pool );
+
+        /* return this lil' doggy to the pool */
+        cl_qlist_insert_head( &p_pool->free_list, &p_pool_item->list_item );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qcpool_t structure to which to return
+               an object.
+
+       p_pool_item
+               [in] Pointer to a cl_pool_item_t structure for the object
+               being returned.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_qcpool_put places the returned object at the head of the pool.
+
+       The object specified by the p_pool_item parameter must have been
+       retrieved from the pool by a previous call to cl_qcpool_get.
+
+

SEE ALSO

+
       Quick Composite Pool, cl_qcpool_put_tail, cl_qcpool_get
+
+
+
+ +

[Functions] +Component Library: Quick Composite Pool/cl_qcpool_put_list

+ +

[top][index]

+

NAME

+
       cl_qcpool_put_list
+
+

DESCRIPTION

+
       The cl_qcpool_put_list function returns a list of objects to the head of
+       a quick composite pool.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qcpool_put_list(
+        IN      cl_qcpool_t* const      p_pool,
+        IN      cl_qlist_t* const       p_list )
+{
+#ifdef _DEBUG_
+        cl_list_item_t  *p_item;
+#endif
+
+        CL_ASSERT( p_pool );
+        CL_ASSERT( p_pool->state == CL_INITIALIZED );
+        CL_ASSERT( p_list );
+
+#ifdef _DEBUG_
+        /* Chech that all items in the list came from this pool. */
+        p_item = cl_qlist_head( p_list );
+        while( p_item != cl_qlist_end( p_list ) )
+        {
+                CL_ASSERT( ((cl_pool_item_t*)p_item)->p_pool == p_pool );
+                p_item = cl_qlist_next( p_item );
+        }
+#endif
+
+        /* return these lil' doggies to the pool */
+        cl_qlist_insert_list_head( &p_pool->free_list, p_list );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qcpool_t structure to which to return
+               a list of objects.
+
+       p_list
+               [in] Pointer to a cl_qlist_t structure for the list of objects
+               being returned.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_qcpool_put_list places the returned objects at the head of the pool.
+
+       The objects in the list specified by the p_list parameter must have been
+       retrieved from the pool by a previous call to cl_qcpool_get.
+
+

SEE ALSO

+
       Quick Composite Pool, cl_qcpool_put, cl_qcpool_put_tail, cl_qcpool_get
+
+
+
+ +

[Structures] +Component Library: Quick Composite Pool/cl_qcpool_t

+ +

[top][index]

+

NAME

+
       cl_qcpool_t
+
+

DESCRIPTION

+
       Quick composite pool structure.
+
+       The cl_qcpool_t structure should be treated as opaque and should be
+       manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_qcpool
+{
+        uint32_t                                num_components;
+        size_t                                  *component_sizes;
+        void                                    **p_components;
+        size_t                                  num_objects;
+        size_t                                  max_objects;
+        size_t                                  grow_size;
+        cl_pfn_qcpool_init_t    pfn_init;
+        cl_pfn_qcpool_dtor_t    pfn_dtor;
+        const void                              *context;
+        cl_qlist_t                              free_list;
+        cl_qlist_t                              alloc_list;
+        cl_state_t                              state;
+
+} cl_qcpool_t;
+
+

FIELDS

+
       num_components
+               Number of components per object.
+
+       component_sizes
+               Array of sizes, one for each component.
+
+       p_components
+               Array of pointers to components, used for the constructor callback.
+
+       num_objects
+               Number of objects managed by the pool
+
+       grow_size
+               Number of objects to add when automatically growing the pool.
+
+       pfn_init
+               Pointer to the user's initializer callback to invoke when initializing
+               new objects.
+
+       pfn_dtor
+               Pointer to the user's destructor callback to invoke before deallocating
+               memory allocated for objects.
+
+       context
+               User's provided context for callback functions, used by the pool
+               when invoking callbacks.
+
+       free_list
+               Quick list of objects available.
+
+       alloc_list
+               Quick list used to store information about allocations.
+
+       state
+               State of the pool.
+
+

SEE ALSO

+
       Quick Composite Pool
+
+
+ + diff --git a/trunk/docs/complib/cl_qlist_h.html b/trunk/docs/complib/cl_qlist_h.html new file mode 100644 index 00000000..a6c4d7d5 --- /dev/null +++ b/trunk/docs/complib/cl_qlist_h.html @@ -0,0 +1,1728 @@ + + + + +./inc_doc/complib/cl_qlist_h.html + + + + +Generated from ./inc/complib/cl_qlist.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Quick List

+ +

[top][index]

+

NAME

+
       Quick List
+
+

DESCRIPTION

+
       Quick list implements a doubly linked that stores user provided
+       cl_list_item_t structures.
+       Quick list does not allocate any memory, and can therefore not fail any
+       operations.  Quick list can therefore be useful in minimizing the error
+       paths in code.
+
+       Quick list is not thread safe, and users must provide serialization when
+       adding and removing items from the list. Note that it is possible to
+       walk a quick list while simultaneously adding to it.
+
+       The Quick List functions operate on a cl_qlist_t structure which should be
+       treated as opaque and should be manipulated only through the provided
+       functions.
+
+

SEE ALSO

+
       Structures:
+               cl_qlist_t, cl_list_item_t, cl_list_obj_t
+
+       Callbacks:
+               cl_pfn_qlist_apply_t, cl_pfn_qlist_find_t
+
+       Item Manipulation:
+               cl_qlist_set_obj, cl_qlist_obj
+
+       Initialization:
+               cl_qlist_init
+
+       Iteration:
+               cl_qlist_next, cl_qlist_prev, cl_qlist_head, cl_qlist_tail,
+               cl_qlist_end
+
+       Manipulation:
+               cl_qlist_insert_head, cl_qlist_insert_tail,
+               cl_qlist_insert_list_head, cl_qlist_insert_list_tail,
+               cl_qlist_insert_array_head, cl_qlist_insert_array_tail,
+               cl_qlist_insert_prev, cl_qlist_insert_next,
+               cl_qlist_remove_head, cl_qlist_remove_tail,
+               cl_qlist_remove_item, cl_qlist_remove_all
+
+       Search:
+               cl_is_item_in_qlist, cl_qlist_find_next, cl_qlist_find_prev,
+               cl_qlist_find_from_head, cl_qlist_find_from_tail
+               cl_qlist_apply_func, cl_qlist_move_items
+
+       Attributes:
+               cl_qlist_count, cl_is_qlist_empty
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_is_item_in_qlist

+ +

[top][index]

+

NAME

+
       cl_is_item_in_qlist
+
+

DESCRIPTION

+
       The cl_is_item_in_qlist function checks for the presence of a
+       list item in a quick list.
+
+

SYNOPSIS

+
CL_EXPORT boolean_t CL_API
+cl_is_item_in_qlist(
+        IN      const cl_qlist_t* const         p_list,
+        IN      const cl_list_item_t* const     p_list_item );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure.
+
+       p_list_item
+               [in] Pointer to the cl_list_item_t to find.
+
+ RETURN VALUES
+       TRUE if the list item was found in the quick list.
+
+       FALSE otherwise.
+
+

SEE ALSO

+
       Quick List, cl_qlist_remove_item, cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_is_qlist_empty

+ +

[top][index]

+

NAME

+
       cl_is_qlist_empty
+
+

DESCRIPTION

+
       The cl_is_qlist_empty function returns whether a quick list is empty.
+
+

SYNOPSIS

+
CL_INLINE boolean_t CL_API
+cl_is_qlist_empty(
+        IN      const cl_qlist_t* const p_list )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+
+        return( !cl_qlist_count( p_list ) );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure.
+
+ RETURN VALUES
+       TRUE if the specified quick list is empty.
+
+       FALSE otherwise.
+
+

SEE ALSO

+
       Quick List, cl_qlist_count, cl_qlist_remove_all
+
+
+
+ +

[Structures] +Component Library: Quick List/cl_list_item_t

+ +

[top][index]

+

NAME

+
       cl_list_item_t
+
+

DESCRIPTION

+
       The cl_list_item_t structure is used by lists to store objects.
+
+

SYNOPSIS

+
typedef struct _cl_list_item
+{
+        struct _cl_list_item    *p_next;
+        struct _cl_list_item    *p_prev;
+#ifdef _DEBUG_
+        struct _cl_qlist                *p_list;
+#endif
+
+} cl_list_item_t;
+
+

FIELDS

+
       p_next
+               Used internally by the list. Users should not use this field.
+
+       p_prev
+               Used internally by the list. Users should not use this field.
+
+

SEE ALSO

+
       Quick List
+
+
+
+ +

[Structures] +Component Library: Quick List/cl_list_obj_t

+ +

[top][index]

+

NAME

+
       cl_list_obj_t
+
+

DESCRIPTION

+
       The cl_list_obj_t structure is used by lists to store objects.
+
+

SYNOPSIS

+
typedef struct _cl_list_obj
+{
+        cl_list_item_t          list_item;
+        const void                      *p_object;              /* User's context */
+
+} cl_list_obj_t;
+
+

FIELDS

+
       list_item
+               Used internally by the list. Users should not use this field.
+
+       p_object
+               User defined context. Users should not access this field directly.
+               Use cl_qlist_set_obj and cl_qlist_obj to set and retrieve the value
+               of this field.
+
+

NOTES

+
       Users can use the cl_qlist_set_obj and cl_qlist_obj functions to store
+       and retrieve context information in the list item.
+
+

SEE ALSO

+
       Quick List, cl_qlist_set_obj, cl_qlist_obj, cl_list_item_t
+
+
+
+ +

[Definitions] +Component Library: Quick List/cl_pfn_qlist_apply_t

+ +

[top][index]

+

NAME

+
       cl_pfn_qlist_apply_t
+
+

DESCRIPTION

+
       The cl_pfn_qlist_apply_t function type defines the prototype for functions
+       used to iterate items in a quick list.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_qlist_apply_t)(
+        IN      cl_list_item_t* const   p_list_item,
+        IN      void*                                   context );
+
+

PARAMETERS

+
       p_list_item
+               [in] Pointer to a cl_list_item_t structure.
+
+       context
+               [in] Value passed to the callback function.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for the
+       function provided by users as a parameter to the cl_qlist_apply_func
+       function.
+
+

SEE ALSO

+
       Quick List, cl_qlist_apply_func
+
+
+
+ +

[Definitions] +Component Library: Quick List/cl_pfn_qlist_find_t

+ +

[top][index]

+

NAME

+
       cl_pfn_qlist_find_t
+
+

DESCRIPTION

+
       The cl_pfn_qlist_find_t function type defines the prototype for functions
+       used to find items in a quick list.
+
+

SYNOPSIS

+
typedef cl_status_t
+(CL_API *cl_pfn_qlist_find_t)(
+        IN      const cl_list_item_t* const     p_list_item,
+        IN      void*                                           context );
+
+

PARAMETERS

+
       p_list_item
+               [in] Pointer to a cl_list_item_t.
+
+       context
+               [in] Value passed to the callback function.
+
+ RETURN VALUES
+       Return CL_SUCCESS if the desired item was found. This stops list iteration.
+
+       Return CL_NOT_FOUND to continue list iteration.
+
+

NOTES

+
       This function type is provided as function prototype reference for the
+       function provided by users as a parameter to the cl_qlist_find_from_head,
+       cl_qlist_find_from_tail, cl_qlist_find_next, and cl_qlist_find_prev
+       functions.
+
+

SEE ALSO

+
       Quick List, cl_qlist_find_from_head, cl_qlist_find_from_tail,
+       cl_qlist_find_next, cl_qlist_find_prev
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_apply_func

+ +

[top][index]

+

NAME

+
       cl_qlist_apply_func
+
+

DESCRIPTION

+
       The cl_qlist_apply_func function executes a specified function
+       for every list item stored in a quick list.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qlist_apply_func(
+        IN      const cl_qlist_t* const p_list,
+        IN      cl_pfn_qlist_apply_t    pfn_func,
+        IN      const void* const               context );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure.
+
+       pfn_func
+               [in] Function invoked for every item in the quick list.
+               See the cl_pfn_qlist_apply_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       The function provided must not perform any list operations, as these
+       would corrupt the quick list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_find_from_head, cl_qlist_find_from_tail,
+       cl_qlist_move_items, cl_pfn_qlist_apply_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_count

+ +

[top][index]

+

NAME

+
       cl_qlist_count
+
+

DESCRIPTION

+
       The cl_qlist_count function returns the number of list items stored
+       in a quick list.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_qlist_count(
+        IN      const cl_qlist_t* const p_list )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+
+        return( p_list->count );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure.
+
+

RETURN VALUE

+
       Number of items in the list.  This function iterates though the quick
+       list to count the items.
+
+

SEE ALSO

+
       Quick List, cl_is_qlist_empty
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_end

+ +

[top][index]

+

NAME

+
       cl_qlist_end
+
+

DESCRIPTION

+
       The cl_qlist_end function returns the end of a quick list.
+
+

SYNOPSIS

+
CL_INLINE const cl_list_item_t* const CL_API
+cl_qlist_end(
+        IN      const cl_qlist_t* const p_list )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+
+        return( &p_list->end );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure.
+
+

RETURN VALUE

+
       Pointer to the end of the list.
+
+

NOTES

+
       cl_qlist_end is useful for determining the validity of list items returned
+       by cl_qlist_head, cl_qlist_tail, cl_qlist_next, cl_qlist_prev, as well as
+       the cl_qlist_find functions.  If the list item pointer returned by any of
+       these functions compares to the end, the end of the list was encoutered.
+       When using cl_qlist_head or cl_qlist_tail, this condition indicates that
+       the list is empty.
+
+

SEE ALSO

+
       Quick List, cl_qlist_head, cl_qlist_tail, cl_qlist_next, cl_qlist_prev,
+       cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_find_from_head

+ +

[top][index]

+

NAME

+
       cl_qlist_find_from_head
+
+

DESCRIPTION

+
       The cl_qlist_find_from_head function invokes a specified function to
+       search for an item, starting at the head of a quick list.
+
+

SYNOPSIS

+
CL_INLINE cl_list_item_t* CL_API
+cl_qlist_find_from_head(
+        IN      const cl_qlist_t* const p_list,
+        IN      cl_pfn_qlist_find_t             pfn_func,
+        IN      const void* const               context )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+        /* CL_ASSERT that a find function is provided. */
+        CL_ASSERT( pfn_func );
+
+        return( cl_qlist_find_next( p_list, cl_qlist_end( p_list ), pfn_func,
+                context ) );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure.
+
+       pfn_func
+               [in] Function invoked to determine if a match was found.
+               See the cl_pfn_qlist_find_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context if a
+               callback function is provided, or value compared to the quick list's
+               list items.
+
+ Returns:
+       Pointer to the list item, if found.
+
+       Pointer to the list end otherwise
+
+

NOTES

+
       cl_qlist_find_from_head does not remove list items from the list.
+       The list item is returned when the function specified by the pfn_func
+       parameter returns CL_SUCCESS.
+
+       The function provided by the pfn_func parameter must not perform any list
+       operations, as these would corrupt the list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_find_from_tail, cl_qlist_find_next, cl_qlist_find_prev,
+       cl_qlist_end, cl_qlist_apply_func, cl_qlist_move_items, cl_list_item_t,
+       cl_pfn_qlist_find_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_find_from_tail

+ +

[top][index]

+

NAME

+
       cl_qlist_find_from_tail
+
+

DESCRIPTION

+
       The cl_qlist_find_from_tail function invokes a specified function to
+       search for an item, starting at the tail of a quick list.
+
+

SYNOPSIS

+
CL_INLINE cl_list_item_t* CL_API
+cl_qlist_find_from_tail(
+        IN      const cl_qlist_t* const p_list,
+        IN      cl_pfn_qlist_find_t             pfn_func,
+        IN      const void* const               context )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+        /* CL_ASSERT that a find function is provided. */
+        CL_ASSERT( pfn_func );
+
+        return( cl_qlist_find_prev( p_list, cl_qlist_end( p_list ), pfn_func,
+                context ) );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure.
+
+       pfn_func
+               [in] Function invoked to determine if a match was found.
+               See the cl_pfn_qlist_find_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context if a
+               callback function is provided, or value compared to the quick list's
+               list items.
+
+ Returns:
+       Pointer to the list item, if found.
+
+       Pointer to the list end otherwise
+
+

NOTES

+
       cl_qlist_find_from_tail does not remove list items from the list.
+       The list item is returned when the function specified by the pfn_func
+       parameter returns CL_SUCCESS.
+
+       The function provided by the pfn_func parameter must not perform any list
+       operations, as these would corrupt the list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_find_from_head, cl_qlist_find_next, cl_qlist_find_prev,
+       cl_qlist_apply_func, cl_qlist_end, cl_qlist_move_items, cl_list_item_t,
+       cl_pfn_qlist_find_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_find_next

+ +

[top][index]

+

NAME

+
       cl_qlist_find_next
+
+

DESCRIPTION

+
       The cl_qlist_find_next function invokes a specified function to
+       search for an item, starting from a given list item.
+
+

SYNOPSIS

+
CL_EXPORT cl_list_item_t* CL_API
+cl_qlist_find_next(
+        IN      const cl_qlist_t* const         p_list,
+        IN      const cl_list_item_t* const     p_list_item,
+        IN      cl_pfn_qlist_find_t                     pfn_func,
+        IN      const void* const                       context );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure in which to search.
+
+       p_list_item
+               [in] Pointer to a cl_list_item_t structure from which to start the search.
+
+       pfn_func
+               [in] Function invoked to determine if a match was found.
+               See the cl_pfn_qlist_find_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context if a
+               callback function is provided, or value compared to the quick list's
+               list items.
+
+ Returns:
+       Pointer to the list item, if found.
+
+       p_list_item if not found.
+
+

NOTES

+
       cl_qlist_find_next does not remove list items from the list.
+       The list item is returned when the function specified by the pfn_func
+       parameter returns CL_SUCCESS.  The list item from which the search starts is
+       excluded from the search.
+
+       The function provided by the pfn_func must not perform any list operations,
+       as these would corrupt the list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_find_prev, cl_qlist_find_from_head,
+       cl_qlist_find_from_tail, cl_qlist_end, cl_qlist_apply_func,
+       cl_qlist_move_items, cl_list_item_t, cl_pfn_qlist_find_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_find_prev

+ +

[top][index]

+

NAME

+
       cl_qlist_find_prev
+
+

DESCRIPTION

+
       The cl_qlist_find_prev function invokes a specified function to
+       search backward for an item, starting from a given list item.
+
+

SYNOPSIS

+
CL_EXPORT cl_list_item_t* CL_API
+cl_qlist_find_prev(
+        IN      const cl_qlist_t* const         p_list,
+        IN      const cl_list_item_t* const     p_list_item,
+        IN      cl_pfn_qlist_find_t                     pfn_func,
+        IN      const void* const                       context );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure in which to search.
+
+       p_list_item
+               [in] Pointer to a cl_list_item_t structure from which to start the search.
+
+       pfn_func
+               [in] Function invoked to determine if a match was found.
+               See the cl_pfn_qlist_find_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context if a
+               callback function is provided, or value compared to the quick list's
+               list items.
+
+ Returns:
+       Pointer to the list item, if found.
+
+       p_list_item if not found.
+
+

NOTES

+
       cl_qlist_find_prev does not remove list items from the list.
+       The list item is returned when the function specified by the pfn_func
+       parameter returns CL_SUCCESS.  The list item from which the search starts is
+       excluded from the search.
+
+       The function provided by the pfn_func must not perform any list operations,
+       as these would corrupt the list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_find_next, cl_qlist_find_from_head,
+       cl_qlist_find_from_tail, cl_qlist_end, cl_qlist_apply_func,
+       cl_qlist_move_items, cl_list_item_t, cl_pfn_qlist_find_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_head

+ +

[top][index]

+

NAME

+
       cl_qlist_head
+
+

DESCRIPTION

+
       The cl_qlist_head function returns the list item at
+       the head of a quick list.
+
+

SYNOPSIS

+
CL_INLINE cl_list_item_t* CL_API
+cl_qlist_head(
+        IN      const cl_qlist_t* const p_list )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+
+        return( cl_qlist_next( &p_list->end ) );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure.
+
+ RETURN VALUES
+       Pointer to the list item at the head of the quick list.
+
+       Pointer to the list end if the list was empty.
+
+

NOTES

+
       cl_qlist_head does not remove the item from the list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_tail, cl_qlist_next, cl_qlist_prev, cl_qlist_end,
+       cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_init

+ +

[top][index]

+

NAME

+
       cl_qlist_init
+
+

DESCRIPTION

+
       The cl_qlist_init function initializes a quick list.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qlist_init(
+        IN      cl_qlist_t* const       p_list )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+
+        p_list->state = CL_INITIALIZED;
+
+        /* Reset the quick list data structure. */
+        __cl_qlist_reset( p_list );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure to initialize.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

NOTES

+
       Allows calling quick list manipulation functions.
+
+

SEE ALSO

+
       Quick List, cl_qlist_insert_head, cl_qlist_insert_tail,
+       cl_qlist_remove_head, cl_qlist_remove_tail
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_insert_array_head

+ +

[top][index]

+

NAME

+
       cl_qlist_insert_array_head
+
+

DESCRIPTION

+
       The cl_qlist_insert_array_head function inserts an array of list items
+       at the head of a quick list.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qlist_insert_array_head(
+        IN      cl_qlist_t* const               p_list,
+        IN      cl_list_item_t* const   p_array,
+        IN      size_t                                  item_count,
+        IN      const size_t                    item_size );
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure into which to insert
+               the objects.
+
+       p_array
+               [in] Pointer to the first list item in an array of cl_list_item_t
+               structures.
+
+       item_count
+               [in] Number of cl_list_item_t structures in the array.
+
+       item_size
+               [in] Size of the items added to the list. This is the stride in the
+               array from one cl_list_item_t structure to the next.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Inserts all the list items in the array specified by the p_array parameter
+       to the head of the quick list specified by the p_list parameter,
+       preserving ordering of the list items.
+
+       The array pointer passed into the function points to the cl_list_item_t
+       in the first element of the caller's element array.  There is no
+       restriction on where the element is stored in the parent structure.
+
+

SEE ALSO

+
       Quick List, cl_qlist_insert_array_tail, cl_qlist_insert_head,
+       cl_qlist_insert_tail, cl_qlist_insert_list_head, cl_qlist_insert_list_tail,
+       cl_qlist_insert_prev, cl_qlist_insert_next, cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_insert_array_tail

+ +

[top][index]

+

NAME

+
       cl_qlist_insert_array_tail
+
+

DESCRIPTION

+
       The cl_qlist_insert_array_tail function inserts an array of list items
+       at the tail of a quick list.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qlist_insert_array_tail(
+        IN      cl_qlist_t* const               p_list,
+        IN      cl_list_item_t* const   p_array,
+        IN      size_t                                  item_count,
+        IN      const size_t                    item_size);
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure into which to insert
+               the objects.
+
+       p_array
+               [in] Pointer to the first list item in an array of cl_list_item_t
+               structures.
+
+       item_count
+               [in] Number of cl_list_item_t structures in the array.
+
+       item_size
+               [in] Size of the items added to the list. This is the stride in the
+               array from one cl_list_item_t structure to the next.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Inserts all the list items in the array specified by the p_array parameter
+       to the tail of the quick list specified by the p_list parameter,
+       preserving ordering of the list items.
+
+       The array pointer passed into the function points to the cl_list_item_t
+       in the first element of the caller's element array.  There is no
+       restriction on where the element is stored in the parent structure.
+
+

SEE ALSO

+
       Quick List, cl_qlist_insert_array_head, cl_qlist_insert_head,
+       cl_qlist_insert_tail, cl_qlist_insert_list_head, cl_qlist_insert_list_tail,
+       cl_qlist_insert_prev, cl_qlist_insert_next, cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_insert_head

+ +

[top][index]

+

NAME

+
       cl_qlist_insert_head
+
+

DESCRIPTION

+
       The cl_qlist_insert_head function inserts a list item at the
+       head of a quick list.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qlist_insert_head(
+        IN      cl_qlist_t* const               p_list,
+        IN      cl_list_item_t* const   p_list_item )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list_item );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+
+        /*
+         * The list item must not already be part of the list.  Note that this
+         * assertion may fail if an uninitialized list item happens to have its
+         * list pointer equal to the specified list.  The chances of this
+         * happening are acceptable in light of the value of this check.
+         */
+        CL_ASSERT( p_list_item->p_list != p_list );
+
+#if defined( _DEBUG_ )
+        p_list_item->p_list = p_list;
+#endif
+
+        /* Insert before the head. */
+        __cl_primitive_insert( cl_qlist_head( p_list ), p_list_item );
+
+        p_list->count++;
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure into which to insert the object.
+
+       p_list_item
+               [in] Pointer to a cl_list_item_t structure to add.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       In debug builds, cl_qlist_insert_head asserts that the specified list item
+       is not already in the list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_insert_tail, cl_qlist_insert_list_head,
+       cl_qlist_insert_list_tail, cl_qlist_insert_array_head,
+       cl_qlist_insert_array_tail, cl_qlist_insert_prev, cl_qlist_insert_next,
+       cl_qlist_remove_head, cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_insert_list_head

+ +

[top][index]

+

NAME

+
       cl_qlist_insert_list_head
+
+

DESCRIPTION

+
       The cl_qlist_insert_list_head function merges two quick lists by
+       inserting one at the head of the other.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qlist_insert_list_head(
+        IN      cl_qlist_t* const       p_dest_list,
+        IN      cl_qlist_t* const       p_src_list );
+
+

PARAMETERS

+
       p_dest_list
+               [in] Pointer to destination quicklist object.
+
+       p_src_list
+               [in] Pointer to quicklist to add.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Inserts all list items in the source list to the head of the
+       destination list. The ordering of the list items is preserved.
+
+       The list pointed to by the p_src_list parameter is empty when
+       the call returns.
+
+

SEE ALSO

+
       Quick List, cl_qlist_insert_list_tail, cl_qlist_insert_head,
+       cl_qlist_insert_tail, cl_qlist_insert_array_head,
+       cl_qlist_insert_array_tail, cl_qlist_insert_prev, cl_qlist_insert_next,
+       cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_insert_list_tail

+ +

[top][index]

+

NAME

+
       cl_qlist_insert_list_tail
+
+

DESCRIPTION

+
       The cl_qlist_insert_list_tail function merges two quick lists by
+       inserting one at the tail of the other.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qlist_insert_list_tail(
+        IN      cl_qlist_t* const       p_dest_list,
+        IN      cl_qlist_t* const       p_src_list );
+
+

PARAMETERS

+
       p_dest_list
+               [in] Pointer to destination quicklist object
+
+       p_src_list
+               [in] Pointer to quicklist to add
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Inserts all list items in the source list to the tail of the
+       destination list. The ordering of the list items is preserved.
+
+       The list pointed to by the p_src_list parameter is empty when
+       the call returns.
+
+

SEE ALSO

+
       Quick List, cl_qlist_insert_list_head, cl_qlist_insert_head,
+       cl_qlist_insert_tail, cl_qlist_insert_array_head,
+       cl_qlist_insert_array_tail, cl_qlist_insert_prev, cl_qlist_insert_next,
+       cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_insert_next

+ +

[top][index]

+

NAME

+
       cl_qlist_insert_next
+
+

DESCRIPTION

+
       The cl_qlist_insert_next function inserts a list item after a specified
+       list item in a quick list.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qlist_insert_next(
+        IN      cl_qlist_t* const               p_list,
+        IN      cl_list_item_t* const   p_list_item,
+        IN      cl_list_item_t* const   p_new_item )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list_item );
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_new_item );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+
+        /*
+         * The list item must not already be part of the list.  Note that this
+         * assertion may fail if an uninitialized list item happens to have its
+         * list pointer equal to the specified list.  The chances of this
+         * happening are acceptable in light of the value of this check.
+         */
+        CL_ASSERT( p_new_item->p_list != p_list );
+
+#if defined( _DEBUG_ )
+        p_new_item->p_list = p_list;
+#endif
+
+        __cl_primitive_insert( cl_qlist_next( p_list_item ), p_new_item );
+
+        p_list->count++;
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure into which to add the new item.
+
+       p_list_item
+               [in] Pointer to a cl_list_item_t structure.
+
+       p_new_item
+               [in] Pointer to a cl_list_item_t structure to add to the quick list.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Inserts the new list item after the list item specified by p_list_item.
+       The list item specified by p_list_item must be in the quick list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_insert_prev, cl_qlist_insert_head,
+       cl_qlist_insert_tail, cl_qlist_insert_list_head, cl_qlist_insert_list_tail,
+       cl_qlist_insert_array_head, cl_qlist_insert_array_tail, cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_insert_prev

+ +

[top][index]

+

NAME

+
       cl_qlist_insert_prev
+
+

DESCRIPTION

+
       The cl_qlist_insert_prev function inserts a list item before a
+       specified list item in a quick list.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qlist_insert_prev(
+        IN      cl_qlist_t* const               p_list,
+        IN      cl_list_item_t* const   p_list_item,
+        IN      cl_list_item_t* const   p_new_item )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list_item );
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_new_item );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+
+        /*
+         * The list item must not already be part of the list.  Note that this
+         * assertion may fail if an uninitialized list item happens to have its
+         * list pointer equal to the specified list.  The chances of this
+         * happening are acceptable in light of the value of this check.
+         */
+        CL_ASSERT( p_new_item->p_list != p_list );
+
+#if defined( _DEBUG_ )
+        p_new_item->p_list = p_list;
+#endif
+
+        __cl_primitive_insert( p_list_item, p_new_item );
+
+        p_list->count++;
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure into which to add the new item.
+
+       p_list_item
+               [in] Pointer to a cl_list_item_t structure.
+
+       p_new_item
+               [in] Pointer to a cl_list_item_t structure to add to the quick list.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Inserts the new list item before the list item specified by p_list_item.
+
+

SEE ALSO

+
       Quick List, cl_qlist_insert_next, cl_qlist_insert_head,
+       cl_qlist_insert_tail, cl_qlist_insert_list_head, cl_qlist_insert_list_tail,
+       cl_qlist_insert_array_head, cl_qlist_insert_array_tail, cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_insert_tail

+ +

[top][index]

+

NAME

+
       cl_qlist_insert_tail
+
+

DESCRIPTION

+
       The cl_qlist_insert_tail function inserts a list item at the tail
+       of a quick list.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qlist_insert_tail(
+        IN      cl_qlist_t* const               p_list,
+        IN      cl_list_item_t* const   p_list_item )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list_item );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+
+        /*
+         * The list item must not already be part of the list.  Note that this
+         * assertion may fail if an uninitialized list item happens to have its
+         * list pointer equal to the specified list.  The chances of this
+         * happening are acceptable in light of the value of this check.
+         */
+        CL_ASSERT( p_list_item->p_list != p_list );
+
+#if defined( _DEBUG_ )
+        p_list_item->p_list = p_list;
+#endif
+
+        /*
+         * Put the new element in front of the end which is the same
+         * as being at the tail
+         */
+        __cl_primitive_insert( &p_list->end, p_list_item );
+
+        p_list->count++;
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure into which to insert the object.
+
+       p_list_item
+               [in] Pointer to cl_list_item_t structure to add.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       In debug builds, cl_qlist_insert_tail asserts that the specified list item
+       is not already in the list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_insert_head, cl_qlist_insert_list_head,
+       cl_qlist_insert_list_tail, cl_qlist_insert_array_head,
+       cl_qlist_insert_array_tail, cl_qlist_insert_prev, cl_qlist_insert_next,
+       cl_qlist_remove_tail, cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_move_items

+ +

[top][index]

+

NAME

+
       cl_qlist_move_items
+
+

DESCRIPTION

+
       The cl_qlist_move_items function moves list items from one list to
+       another based on the return value of a user supplied function.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qlist_move_items(
+        IN      cl_qlist_t* const       p_src_list,
+        IN      cl_qlist_t* const       p_dest_list,
+        IN      cl_pfn_qlist_find_t     pfn_func,
+        IN      const void* const       context );
+
+

PARAMETERS

+
       p_src_list
+               [in] Pointer to a cl_qlist_t structure from which
+               list items are removed.
+
+       p_dest_list
+               [in] Pointer to a cl_qlist_t structure to which the source
+               list items are added.
+
+       pfn_func
+               [in] Function invoked to determine if a match was found.
+               See the cl_pfn_qlist_find_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       If the function specified by the pfn_func parameter returns CL_SUCCESS,
+       the related list item is removed from p_src_list and inserted at the tail
+       of the p_dest_list.
+
+       The cl_qlist_move_items function continues iterating through p_src_list
+       from the last item moved, allowing multiple items to be located and moved
+       in a single list iteration.
+
+       The function specified by pfn_func must not perform any list operations,
+       as these would corrupt the list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_find_from_head, cl_qlist_find_from_tail,
+       cl_qlist_apply_func, cl_pfn_qlist_find_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_next

+ +

[top][index]

+

NAME

+
       cl_qlist_next
+
+

DESCRIPTION

+
       The cl_qlist_next function returns a pointer to the list item following
+       a given list item in a quick list.
+
+

SYNOPSIS

+
CL_INLINE cl_list_item_t* CL_API
+cl_qlist_next(
+        IN      const cl_list_item_t* const     p_list_item )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list_item );
+
+        /* Return the next item. */
+        return( p_list_item->p_next );
+}
+
+

PARAMETERS

+
       p_list_item
+               [in] Pointer to the cl_list_item_t whose successor to return.
+
+ Returns:
+       Pointer to the list item following the list item specified by
+       the p_list_item parameter in the quick list.
+
+       Pointer to the list end if p_list_item was at the tail of the list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_head, cl_qlist_tail, cl_qlist_prev, cl_qlist_end,
+       cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_obj

+ +

[top][index]

+

NAME

+
       cl_qlist_obj
+
+

DESCRIPTION

+
       The cl_qlist_set_obj function returns the object stored in a list object.
+
+

SYNOPSIS

+
CL_INLINE void* CL_API
+cl_qlist_obj(
+        IN      const cl_list_obj_t* const      p_list_obj )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list_obj );
+
+        return( (void*)p_list_obj->p_object );
+}
+
+

PARAMETERS

+
       p_list_obj
+               [in] Pointer to a cl_list_obj_t structure.
+
+

RETURN VALUE

+
       Returns the value of the object pointer stored in the list object.
+
+

SEE ALSO

+
       Quick List, cl_qlist_set_obj
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_prev

+ +

[top][index]

+

NAME

+
       cl_qlist_prev
+
+

DESCRIPTION

+
       The cl_qlist_prev function returns a poirter to the list item preceding
+       a given list item in a quick list.
+
+

SYNOPSIS

+
CL_INLINE cl_list_item_t* CL_API
+cl_qlist_prev(
+        IN      const cl_list_item_t* const     p_list_item )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list_item );
+
+        /* Return the previous item. */
+        return( p_list_item->p_prev );
+}
+
+

PARAMETERS

+
       p_list_item
+               [in] Pointer to the cl_list_item_t whose predecessor to return.
+
+ Returns:
+       Pointer to the list item preceding the list item specified by
+       the p_list_item parameter in the quick list.
+
+       Pointer to the list end if p_list_item was at the tail of the list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_head, cl_qlist_tail, cl_qlist_next, cl_qlist_end,
+       cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_remove_all

+ +

[top][index]

+

NAME

+
       cl_qlist_remove_all
+
+

DESCRIPTION

+
       The cl_qlist_remove_all function removes all items from a quick list.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qlist_remove_all(
+        IN      cl_qlist_t* const       p_list )
+{
+#if defined( _DEBUG_ )
+        cl_list_item_t  *p_list_item;
+
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+        p_list_item = cl_qlist_head( p_list );
+        while( p_list_item != cl_qlist_end( p_list ) )
+        {
+                p_list_item = cl_qlist_next( p_list_item );
+                cl_qlist_prev( p_list_item )->p_list = NULL;
+        }
+#endif
+
+        __cl_qlist_reset( p_list );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Quick List, cl_qlist_remove_head, cl_qlist_remove_tail,
+       cl_qlist_remove_item, cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_remove_head

+ +

[top][index]

+

NAME

+
       cl_qlist_remove_head
+
+

DESCRIPTION

+
       The cl_qlist_remove_head function removes and returns the list item
+       at the head of a quick list.
+
+

SYNOPSIS

+
CL_INLINE cl_list_item_t* CL_API
+cl_qlist_remove_head(
+        IN      cl_qlist_t* const       p_list )
+{
+        cl_list_item_t  *p_item;
+
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+
+        p_item = cl_qlist_head( p_list );
+        /* CL_ASSERT that the list item is part of the list. */
+        CL_ASSERT( p_item->p_list == p_list );
+
+        if( p_item == cl_qlist_end( p_list ) )
+                return( p_item );
+
+#if defined( _DEBUG_ )
+        /* Clear the item's link to the list. */
+        p_item->p_list = NULL;
+#endif
+
+        __cl_primitive_remove( p_item );
+
+        p_list->count--;
+
+        return( p_item );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure.
+
+ RETURN VALUES
+       Returns a pointer to the list item formerly at the head of the quick list.
+
+       Pointer to the list end if the list was empty.
+
+

SEE ALSO

+
       Quick List, cl_qlist_remove_tail, cl_qlist_remove_all, cl_qlist_remove_item,
+       cl_qlist_end, cl_qlist_head, cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_remove_item

+ +

[top][index]

+

NAME

+
       cl_qlist_remove_item
+
+

DESCRIPTION

+
       The cl_qlist_remove_item function removes a specific list item from a quick list.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qlist_remove_item(
+        IN      cl_qlist_t* const               p_list,
+        IN      cl_list_item_t* const   p_list_item )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list_item  );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+        /* CL_ASSERT that the list item is part of the list. */
+        CL_ASSERT( p_list_item->p_list == p_list );
+
+        if( p_list_item == cl_qlist_end( p_list ) )
+                return;
+
+#if defined( _DEBUG_ )
+        /* Clear the item's link to the list. */
+        p_list_item->p_list = NULL;
+#endif
+
+        __cl_primitive_remove( p_list_item );
+
+        p_list->count--;
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure from which to remove the item.
+
+       p_list_item
+               [in] Pointer to a cl_list_item_t structure to remove.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Removes the list item pointed to by the p_list_item parameter from
+       its list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_remove_head, cl_qlist_remove_tail, cl_qlist_remove_all,
+       cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_remove_tail

+ +

[top][index]

+

NAME

+
       cl_qlist_remove_tail
+
+

DESCRIPTION

+
       The cl_qlist_remove_tail function removes and returns the list item
+       at the tail of a quick list.
+
+

SYNOPSIS

+
CL_INLINE cl_list_item_t* CL_API
+cl_qlist_remove_tail(
+        IN      cl_qlist_t* const       p_list )
+{
+        cl_list_item_t  *p_item;
+
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+
+        p_item = cl_qlist_tail( p_list );
+        /* CL_ASSERT that the list item is part of the list. */
+        CL_ASSERT( p_item->p_list == p_list );
+
+        if( p_item == cl_qlist_end( p_list ) )
+                return( p_item );
+
+#if defined( _DEBUG_ )
+        /* Clear the item's link to the list. */
+        p_item->p_list = NULL;
+#endif
+
+        __cl_primitive_remove( p_item );
+
+        p_list->count--;
+
+        return( p_item );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure.
+
+ RETURN VALUES
+       Returns a pointer to the list item formerly at the tail of the quick list.
+
+       Pointer to the list end if the list was empty.
+
+

SEE ALSO

+
       Quick List, cl_qlist_remove_head, cl_qlist_remove_all, cl_qlist_remove_item,
+       cl_qlist_end, cl_qlist_tail, cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_set_obj

+ +

[top][index]

+

NAME

+
       cl_qlist_set_obj
+
+

DESCRIPTION

+
       The cl_qlist_set_obj function sets the object stored in a list object.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qlist_set_obj(
+        IN      cl_list_obj_t* const    p_list_obj,
+        IN      const void* const               p_object )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list_obj );
+        p_list_obj->p_object = p_object;
+}
+
+

PARAMETERS

+
       p_list_obj
+               [in] Pointer to a cl_list_obj_t structure.
+
+       p_object
+               [in] User defined context.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Quick List, cl_qlist_obj
+
+
+
+ +

[Structures] +Component Library: Quick List/cl_qlist_t

+ +

[top][index]

+

NAME

+
       cl_qlist_t
+
+

DESCRIPTION

+
       Quick list structure.
+
+       The cl_qlist_t structure should be treated as opaque and should be
+       manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_qlist
+{
+        cl_list_item_t  end;
+        size_t                  count;
+        cl_state_t              state;
+
+} cl_qlist_t;
+
+

FIELDS

+
       end
+               List item used to mark the end of the list.
+
+       count
+               Number of items in the list.
+
+       state
+               State of the quick list.
+
+

SEE ALSO

+
       Quick List
+
+
+
+ +

[Functions] +Component Library: Quick List/cl_qlist_tail

+ +

[top][index]

+

NAME

+
       cl_qlist_tail
+
+

DESCRIPTION

+
       The cl_qlist_tail function returns the list item at
+       the tail of a quick list.
+
+

SYNOPSIS

+
CL_INLINE cl_list_item_t* CL_API
+cl_qlist_tail(
+        IN      const cl_qlist_t* const p_list )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_list );
+        /* CL_ASSERT that the list was initialized. */
+        CL_ASSERT( p_list->state == CL_INITIALIZED );
+
+        return( cl_qlist_prev( &p_list->end ) );
+}
+
+

PARAMETERS

+
       p_list
+               [in] Pointer to a cl_qlist_t structure.
+
+ RETURN VALUES
+       Pointer to the list item at the tail of the quick list.
+
+       Pointer to the list end if the list was empty.
+
+

NOTES

+
       cl_qlist_tail does not remove the item from the list.
+
+

SEE ALSO

+
       Quick List, cl_qlist_head, cl_qlist_next, cl_qlist_prev, cl_qlist_end,
+       cl_list_item_t
+
+
+ + diff --git a/trunk/docs/complib/cl_qlockpool_h.html b/trunk/docs/complib/cl_qlockpool_h.html new file mode 100644 index 00000000..8e0f1889 --- /dev/null +++ b/trunk/docs/complib/cl_qlockpool_h.html @@ -0,0 +1,340 @@ + + + + +./inc_doc/complib/cl_qlockpool_h.html + + + + +Generated from ./inc/complib/cl_qlockpool.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Quick Locking Pool

+ +

[top][index]

+

NAME

+
       Quick Locking Pool
+
+

DESCRIPTION

+
       The Quick Locking Pool represents a thread-safe quick pool.
+
+       This object should be treated as opaque and should be
+       manipulated only through the provided functions.
+
+

SEE ALSO

+
       Structures:
+               cl_qlock_pool_t
+
+       Initialization:
+               cl_qlock_pool_construct, cl_qlock_pool_init, cl_qlock_pool_destroy
+
+       Manipulation
+               cl_qlock_pool_get, cl_qlock_pool_put
+
+
+
+ +

[Functions] +Component Library: Quick Locking Pool/cl_qlock_pool_construct

+ +

[top][index]

+

NAME

+
       cl_qlock_pool_construct
+
+

DESCRIPTION

+
       This function constructs a Quick Locking Pool.
+
+

SYNOPSIS

+
static inline void
+cl_qlock_pool_construct(
+        IN cl_qlock_pool_t* const p_pool )
+{
+        cl_qpool_construct( &p_pool->pool );
+        cl_spinlock_construct( &p_pool->lock );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a Quick Locking Pool to construct.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_qlock_pool_init, cl_qlock_pool_destroy
+
+       Calling cl_qlock_pool_construct is a prerequisite to calling any other
+       method except cl_qlock_pool_init.
+
+

SEE ALSO

+
       Quick Locking Pool, cl_qlock_pool_init, cl_qlock_pool_destroy
+
+
+
+ +

[Functions] +Component Library: Quick Locking Pool/cl_qlock_pool_destroy

+ +

[top][index]

+

NAME

+
       cl_qlock_pool_destroy
+
+

DESCRIPTION

+
       The cl_qlock_pool_destroy function destroys a node, releasing
+       all resources.
+
+

SYNOPSIS

+
static inline void
+cl_qlock_pool_destroy(
+        IN cl_qlock_pool_t* const p_pool )
+{
+        /*
+                If the pool has already been put into use, grab the lock
+                to sync with other threads before we blow everything away.
+        */
+        if( cl_is_qpool_inited( &p_pool->pool ) )
+        {
+                cl_spinlock_acquire( &p_pool->lock );
+                cl_qpool_destroy( &p_pool->pool );
+                cl_spinlock_release( &p_pool->lock );
+        }
+        else
+                cl_qpool_destroy( &p_pool->pool );
+
+        cl_spinlock_destroy( &p_pool->lock );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a Quick Locking Pool to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Performs any necessary cleanup of the specified Quick Locking Pool.
+       Further operations should not be attempted on the destroyed object.
+       This function should only be called after a call to
+       cl_qlock_pool_construct or cl_qlock_pool_init.
+
+

SEE ALSO

+
       Quick Locking Pool, cl_qlock_pool_construct, cl_qlock_pool_init
+
+
+
+ +

[Functions] +Component Library: Quick Locking Pool/cl_qlock_pool_get

+ +

[top][index]

+

NAME

+
       cl_qlock_pool_get
+
+

DESCRIPTION

+
       Gets an object wrapper and wire MAD from the pool.
+
+

SYNOPSIS

+
static inline cl_pool_item_t*
+cl_qlock_pool_get(
+        IN cl_qlock_pool_t* const p_pool )
+{
+        cl_pool_item_t* p_item;
+        cl_spinlock_acquire( &p_pool->lock );
+        p_item = cl_qpool_get( &p_pool->pool );
+        cl_spinlock_release( &p_pool->lock );
+        return( p_item );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to an cl_qlock_pool_t object.
+
+ RETURN VALUES
+       Returns a pointer to a cl_pool_item_t contained in the user object.
+
+

NOTES

+
       The object must eventually be returned to the pool with a call to
+       cl_qlock_pool_put.
+
+       The cl_qlock_pool_construct or cl_qlock_pool_init must be called before
+       using this function.
+
+

SEE ALSO

+
       Quick Locking Pool, cl_qlock_pool_put
+
+
+
+ +

[Functions] +Component Library: Quick Locking Pool/cl_qlock_pool_init

+ +

[top][index]

+

NAME

+
       cl_qlock_pool_init
+
+

DESCRIPTION

+
       The cl_qlock_pool_init function initializes a Quick Locking Pool for use.
+
+

SYNOPSIS

+
static inline cl_status_t
+cl_qlock_pool_init(
+        IN cl_qlock_pool_t*                     const p_pool,
+        IN      const size_t                    min_size,
+        IN      const size_t                    max_size,
+        IN      const size_t                    grow_size,
+        IN      const size_t                    object_size,
+        IN      cl_pfn_qpool_init_t             pfn_initializer OPTIONAL,
+        IN      cl_pfn_qpool_dtor_t             pfn_destructor OPTIONAL,
+        IN      const void* const               context )
+{
+        cl_status_t status;
+
+        cl_qlock_pool_construct( p_pool );
+
+        status = cl_spinlock_init( &p_pool->lock );
+        if( status )
+                return( status );
+
+        status = cl_qpool_init( &p_pool->pool, min_size, max_size, grow_size,
+                        object_size, pfn_initializer, pfn_destructor, context );
+
+        return( status );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to an cl_qlock_pool_t object to initialize.
+
+       min_size
+               [in] Minimum number of objects that the pool should support. All
+               necessary allocations to allow storing the minimum number of items
+               are performed at initialization time, and all necessary callbacks
+               successfully invoked.
+
+       max_size
+               [in] Maximum number of objects to which the pool is allowed to grow.
+               A value of zero specifies no maximum.
+
+       grow_size
+               [in] Number of objects to allocate when incrementally growing the pool.
+               A value of zero disables automatic growth.
+
+       object_size
+               [in] Size, in bytes, of each object.
+
+       pfn_initializer
+               [in] Initialization callback to invoke for every new object when
+               growing the pool. This parameter is optional and may be NULL. If NULL,
+               the pool assumes the cl_pool_item_t structure describing objects is
+               located at the head of each object. See the cl_pfn_qpool_init_t
+               function type declaration for details about the callback function.
+
+       pfn_destructor
+               [in] Destructor callback to invoke for every object before memory for
+               that object is freed. This parameter is optional and may be NULL.
+               See the cl_pfn_qpool_dtor_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context.
+
+ RETURN VALUES
+       CL_SUCCESS if the quick pool was initialized successfully.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize the
+       quick pool.
+
+       CL_INVALID_SETTING if a the maximum size is non-zero and less than the
+       minimum size.
+
+       Other cl_status_t value returned by optional initialization callback function
+       specified by the pfn_initializer parameter.
+
+

NOTES

+
       Allows calling other Quick Locking Pool methods.
+
+

SEE ALSO

+
       Quick Locking Pool, cl_qlock_pool_construct, cl_qlock_pool_destroy
+
+
+
+ +

[Functions] +Component Library: Quick Locking Pool/cl_qlock_pool_put

+ +

[top][index]

+

NAME

+
       cl_qlock_pool_put
+
+

DESCRIPTION

+
       Returns an object to the pool.
+
+

SYNOPSIS

+
static inline void
+cl_qlock_pool_put(
+        IN cl_qlock_pool_t* const p_pool,
+        IN cl_pool_item_t* const p_item )
+{
+        cl_spinlock_acquire( &p_pool->lock );
+        cl_qpool_put( &p_pool->pool, p_item );
+        cl_spinlock_release( &p_pool->lock );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to an cl_qlock_pool_t object.
+
+       p_item
+               [in] Pointer to the cl_pool_item_t in an object that was previously
+               retrieved from the pool.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

NOTES

+
       The cl_qlock_pool_construct or cl_qlock_pool_init must be called before
+       using this function.
+
+

SEE ALSO

+
       Quick Locking Pool, cl_qlock_pool_get
+
+
+
+ +

[Structures] +Component Library: Quick Locking Pool/cl_qlock_pool_t

+ +

[top][index]

+

NAME

+
       cl_qlock_pool_t
+
+

DESCRIPTION

+
       Quick Locking Pool structure.
+
+       This object should be treated as opaque and should
+       be manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_qlock_pool
+{
+        cl_spinlock_t                           lock;
+        cl_qpool_t                                      pool;
+
+} cl_qlock_pool_t;
+
+

FIELDS

+
       lock
+               Spinlock guarding the pool.
+
+       pool
+               quick_pool of user objects.
+
+

SEE ALSO

+
       Quick Locking Pool
+
+
+ + diff --git a/trunk/docs/complib/cl_qmap_h.html b/trunk/docs/complib/cl_qmap_h.html new file mode 100644 index 00000000..0208686a --- /dev/null +++ b/trunk/docs/complib/cl_qmap_h.html @@ -0,0 +1,998 @@ + + + + +./inc_doc/complib/cl_qmap_h.html + + + + +Generated from ./inc/complib/cl_qmap.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Quick Map

+ +

[top][index]

+

NAME

+
       Quick Map
+
+

DESCRIPTION

+
       Quick map implements a binary tree that stores user provided cl_map_item_t
+       structures.  Each item stored in a quick map has a unique 64-bit key
+       (duplicates are not allowed).  Quick map provides the ability to
+       efficiently search for an item given a key.
+
+       Quick map does not allocate any memory, and can therefore not fail
+       any operations due to insufficient memory.  Quick map can thus be useful
+       in minimizing the error paths in code.
+
+       Quick map is not thread safe, and users must provide serialization when
+       adding and removing items from the map.
+
+       The quick map functions operate on a cl_qmap_t structure which should be
+       treated as opaque and should be manipulated only through the provided
+       functions.
+
+

SEE ALSO

+
       Structures:
+               cl_qmap_t, cl_map_item_t, cl_map_obj_t
+
+       Callbacks:
+               cl_pfn_qmap_apply_t
+
+       Item Manipulation:
+               cl_qmap_set_obj, cl_qmap_obj, cl_qmap_key
+
+       Initialization:
+               cl_qmap_init
+
+       Iteration:
+               cl_qmap_end, cl_qmap_head, cl_qmap_tail, cl_qmap_next, cl_qmap_prev
+
+       Manipulation:
+               cl_qmap_insert, cl_qmap_get, cl_qmap_remove_item, cl_qmap_remove,
+               cl_qmap_remove_all, cl_qmap_merge, cl_qmap_delta
+
+       Search:
+               cl_qmap_apply_func
+
+       Attributes:
+               cl_qmap_count, cl_is_qmap_empty,
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_is_qmap_empty

+ +

[top][index]

+

NAME

+
       cl_is_qmap_empty
+
+

DESCRIPTION

+
       The cl_is_qmap_empty function returns whether a quick map is empty.
+
+

SYNOPSIS

+
CL_INLINE boolean_t CL_API
+cl_is_qmap_empty(
+        IN      const cl_qmap_t* const  p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+
+        return( p_map->count == 0 );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_qmap_t structure to test for emptiness.
+
+ RETURN VALUES
+       TRUE if the quick map is empty.
+
+       FALSE otherwise.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_count, cl_qmap_remove_all
+
+
+
+ +

[Structures] +Component Library: Quick Map/cl_map_item_t

+ +

[top][index]

+

NAME

+
       cl_map_item_t
+
+

DESCRIPTION

+
       The cl_map_item_t structure is used by maps to store objects.
+
+       The cl_map_item_t structure should be treated as opaque and should
+       be manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_map_item
+{
+        /* Must be first to allow casting. */
+        cl_pool_item_t                  pool_item;
+        struct _cl_map_item             *p_left;
+        struct _cl_map_item             *p_right;
+        struct _cl_map_item             *p_up;
+        cl_map_color_t                  color;
+        uint64_t                                key;
+#ifdef _DEBUG_
+        struct _cl_qmap                 *p_map;
+#endif
+
+} cl_map_item_t;
+
+

FIELDS

+
       pool_item
+               Used to store the item in a doubly linked list, allowing more
+               efficient map traversal.
+
+       p_left
+               Pointer to the map item that is a child to the left of the node.
+
+       p_right
+               Pointer to the map item that is a child to the right of the node.
+
+       p_up
+               Pointer to the map item that is the parent of the node.
+
+       p_nil
+               Pointer to the map's NIL item, used as a terminator for leaves.
+               The NIL sentinel is in the cl_qmap_t structure.
+
+       color
+               Indicates whether a node is red or black in the map.
+
+       key
+               Value that uniquely represents a node in a map.  This value is set by
+               calling cl_qmap_insert and can be retrieved by calling cl_qmap_key.
+
+

NOTES

+
       None of the fields of this structure should be manipulated by users, as
+       they are crititcal to the proper operation of the map in which they
+       are stored.
+
+       To allow storing items in either a quick list, a quick pool, or a quick
+       map, the map implementation guarantees that the map item can be safely
+       cast to a pool item used for storing an object in a quick pool, or cast to
+       a list item used for storing an object in a quick list.  This removes the
+       need to embed a map item, a list item, and a pool item in objects that need
+       to be stored in a quick list, a quick pool, and a quick map.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_insert, cl_qmap_key, cl_pool_item_t, cl_list_item_t
+
+
+
+ +

[Structures] +Component Library: Quick Map/cl_map_obj_t

+ +

[top][index]

+

NAME

+
       cl_map_obj_t
+
+

DESCRIPTION

+
       The cl_map_obj_t structure is used to store objects in maps.
+
+       The cl_map_obj_t structure should be treated as opaque and should
+       be manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_map_obj
+{
+        cl_map_item_t                   item;
+        const void                              *p_object;
+
+} cl_map_obj_t;
+
+

FIELDS

+
       item
+               Map item used by internally by the map to store an object.
+
+       p_object
+               User defined context. Users should not access this field directly.
+               Use cl_qmap_set_obj and cl_qmap_obj to set and retrieve the value
+               of this field.
+
+

NOTES

+
       None of the fields of this structure should be manipulated by users, as
+       they are crititcal to the proper operation of the map in which they
+       are stored.
+
+       Use cl_qmap_set_obj and cl_qmap_obj to set and retrieve the object
+       stored in a map item, respectively.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_set_obj, cl_qmap_obj, cl_map_item_t
+
+
+
+ +

[Definitions] +Component Library: Quick Map/cl_pfn_qmap_apply_t

+ +

[top][index]

+

NAME

+
       cl_pfn_qmap_apply_t
+
+

DESCRIPTION

+
       The cl_pfn_qmap_apply_t function type defines the prototype for functions
+       used to iterate items in a quick map.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_qmap_apply_t)(
+        IN      cl_map_item_t* const    p_map_item,
+        IN      void*                                   context );
+
+

PARAMETERS

+
       p_map_item
+               [in] Pointer to a cl_map_item_t structure.
+
+       context
+               [in] Value passed to the callback function.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for the
+       function provided by users as a parameter to the cl_qmap_apply_func
+       function.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_apply_func
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_apply_func

+ +

[top][index]

+

NAME

+
       cl_qmap_apply_func
+
+

DESCRIPTION

+
       The cl_qmap_apply_func function executes a specified function
+       for every item stored in a quick map.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qmap_apply_func(
+        IN      const cl_qmap_t* const  p_map,
+        IN      cl_pfn_qmap_apply_t             pfn_func,
+        IN      const void* const               context );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_qmap_t structure.
+
+       pfn_func
+               [in] Function invoked for every item in the quick map.
+               See the cl_pfn_qmap_apply_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       The function provided must not perform any map operations, as these
+       would corrupt the quick map.
+
+

SEE ALSO

+
       Quick Map, cl_pfn_qmap_apply_t
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_count

+ +

[top][index]

+

NAME

+
       cl_qmap_count
+
+

DESCRIPTION

+
       The cl_qmap_count function returns the number of items stored
+       in a quick map.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_qmap_count(
+        IN      const cl_qmap_t* const  p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+        return( p_map->count );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_qmap_t structure whose item count to return.
+
+

RETURN VALUE

+
       Returns the number of items stored in the map.
+
+

SEE ALSO

+
       Quick Map, cl_is_qmap_empty
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_delta

+ +

[top][index]

+

NAME

+
       cl_qmap_delta
+
+

DESCRIPTION

+
       The cl_qmap_delta function computes the differences between two maps.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qmap_delta(
+        IN OUT  cl_qmap_t* const        p_map1,
+        IN OUT  cl_qmap_t* const        p_map2,
+        OUT             cl_qmap_t* const        p_new,
+        OUT             cl_qmap_t* const        p_old );
+
+

PARAMETERS

+
       p_map1
+               [in/out] Pointer to the first of two cl_qmap_t structures whose
+               differences to compute.
+
+       p_map2
+               [in/out] Pointer to the second of two cl_qmap_t structures whose
+               differences to compute.
+
+       p_new
+               [out] Pointer to an empty cl_qmap_t structure that contains the items
+               unique to p_map2 upon return from the function.
+
+       p_old
+               [out] Pointer to an empty cl_qmap_t structure that contains the items
+               unique to p_map1 upon return from the function.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

NOTES

+
       Items are evaluated based on their keys.  Items that exist in both
+       p_map1 and p_map2 remain in their respective maps.  Items that
+       exist only p_map1 are moved to p_old.  Likewise, items that exist only
+       in p_map2 are moved to p_new.  This function can be usefull in evaluating
+       changes between two maps.
+
+       Both maps pointed to by p_new and p_old must be empty on input.  This
+       requirement removes the possibility of failures.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_merge
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_end

+ +

[top][index]

+

NAME

+
       cl_qmap_end
+
+

DESCRIPTION

+
       The cl_qmap_end function returns the end of a quick map.
+
+

SYNOPSIS

+
CL_INLINE const cl_map_item_t* const CL_API
+cl_qmap_end(
+        IN      const cl_qmap_t* const  p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+        /* Nil is the end of the map. */
+        return( &p_map->nil );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_qmap_t structure whose end to return.
+
+

RETURN VALUE

+
       Pointer to the end of the map.
+
+

NOTES

+
       cl_qmap_end is useful for determining the validity of map items returned
+       by cl_qmap_head, cl_qmap_tail, cl_qmap_next, or cl_qmap_prev.  If the map
+       item pointer returned by any of these functions compares to the end, the
+       end of the map was encoutered.
+       When using cl_qmap_head or cl_qmap_tail, this condition indicates that
+       the map is empty.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_head, cl_qmap_tail, cl_qmap_next, cl_qmap_prev
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_get

+ +

[top][index]

+

NAME

+
       cl_qmap_get
+
+

DESCRIPTION

+
       The cl_qmap_get function returns the map item associated with a key.
+
+

SYNOPSIS

+
CL_EXPORT cl_map_item_t* CL_API
+cl_qmap_get(
+        IN      const cl_qmap_t* const  p_map,
+        IN      const uint64_t                  key );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_qmap_t structure from which to retrieve the
+               item with the specified key.
+
+       key
+               [in] Key value used to search for the desired map item.
+
+ RETURN VALUES
+       Pointer to the map item with the desired key value.
+
+       Pointer to the map end if there was no item with the desired key value
+       stored in the quick map.
+
+

NOTES

+
       cl_qmap_get does not remove the item from the quick map.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_remove
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_head

+ +

[top][index]

+

NAME

+
       cl_qmap_head
+
+

DESCRIPTION

+
       The cl_qmap_head function returns the map item with the lowest key
+       value stored in a quick map.
+
+

SYNOPSIS

+
CL_INLINE cl_map_item_t* CL_API
+cl_qmap_head(
+        IN      const cl_qmap_t* const  p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+        return( (cl_map_item_t*)p_map->nil.pool_item.list_item.p_next );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_qmap_t structure whose item with the lowest key
+               is returned.
+
+ RETURN VALUES
+       Pointer to the map item with the lowest key in the quick map.
+
+       Pointer to the map end if the quick map was empty.
+
+

NOTES

+
       cl_qmap_head does not remove the item from the map.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_tail, cl_qmap_next, cl_qmap_prev, cl_qmap_end,
+       cl_qmap_item_t
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_init

+ +

[top][index]

+

NAME

+
       cl_qmap_init
+
+

DESCRIPTION

+
       The cl_qmap_init function initialized a quick map for use.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qmap_init(
+        IN      cl_qmap_t* const        p_map );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_qmap_t structure to initialize.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

NOTES

+
       Allows calling quick map manipulation functions.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_insert, cl_qmap_remove
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_insert

+ +

[top][index]

+

NAME

+
       cl_qmap_insert
+
+

DESCRIPTION

+
       The cl_qmap_insert function inserts a map item into a quick map.
+
+

SYNOPSIS

+
CL_EXPORT cl_map_item_t* CL_API
+cl_qmap_insert(
+        IN      cl_qmap_t* const                p_map,
+        IN      const uint64_t                  key,
+        IN      cl_map_item_t* const    p_item );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_qmap_t structure into which to add the item.
+
+       key
+               [in] Value to assign to the item.
+
+       p_item
+               [in] Pointer to a cl_map_item_t stucture to insert into the quick map.
+
+

RETURN VALUE

+
       Pointer to the item in the map with the specified key.  If insertion
+       was successful, this is the pointer to the item.  If an item with the
+       specified key already exists in the map, the pointer to that item is
+       returned.
+
+

NOTES

+
       Insertion operations may cause the quick map to rebalance.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_remove, cl_map_item_t
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_key

+ +

[top][index]

+

NAME

+
       cl_qmap_key
+
+

DESCRIPTION

+
       The cl_qmap_key function retrieves the key value of a map item.
+
+

SYNOPSIS

+
CL_INLINE uint64_t CL_API
+cl_qmap_key(
+        IN      const cl_map_item_t* const      p_item )
+{
+        CL_ASSERT( p_item );
+        return( p_item->key );
+}
+
+

PARAMETERS

+
       p_item
+               [in] Pointer to a map item whose key value to return.
+
+

RETURN VALUE

+
       Returns the 64-bit key value for the specified map item.
+
+

NOTES

+
       The key value is set in a call to cl_qmap_insert.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_insert
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_merge

+ +

[top][index]

+

NAME

+
       cl_qmap_merge
+
+

DESCRIPTION

+
       The cl_qmap_merge function moves all items from one map to another,
+       excluding duplicates.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qmap_merge(
+        OUT             cl_qmap_t* const        p_dest_map,
+        IN OUT  cl_qmap_t* const        p_src_map );
+
+

PARAMETERS

+
       p_dest_map
+               [out] Pointer to a cl_qmap_t structure to which items should be added.
+
+       p_src_map
+               [in/out] Pointer to a cl_qmap_t structure whose items to add
+               to p_dest_map.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

NOTES

+
       Items are evaluated based on their keys only.
+
+       Upon return from cl_qmap_merge, the quick map referenced by p_src_map
+       contains all duplicate items.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_delta
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_next

+ +

[top][index]

+

NAME

+
       cl_qmap_next
+
+

DESCRIPTION

+
       The cl_qmap_next function returns the map item with the next higher
+       key value than a specified map item.
+
+

SYNOPSIS

+
CL_INLINE cl_map_item_t* CL_API
+cl_qmap_next(
+        IN      const cl_map_item_t* const      p_item )
+{
+        CL_ASSERT( p_item );
+        return( (cl_map_item_t*)p_item->pool_item.list_item.p_next );
+}
+
+

PARAMETERS

+
       p_item
+               [in] Pointer to a map item whose successor to return.
+
+ RETURN VALUES
+       Pointer to the map item with the next higher key value in a quick map.
+
+       Pointer to the map end if the specified item was the last item in
+       the quick map.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_head, cl_qmap_tail, cl_qmap_prev, cl_qmap_end,
+       cl_map_item_t
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_obj

+ +

[top][index]

+

NAME

+
       cl_qmap_obj
+
+

DESCRIPTION

+
       The cl_qmap_obj function returns the object stored in a map object.
+
+

SYNOPSIS

+
CL_INLINE void* CL_API
+cl_qmap_obj(
+        IN      const cl_map_obj_t* const       p_map_obj )
+{
+        CL_ASSERT( p_map_obj );
+        return( (void*)p_map_obj->p_object );
+}
+
+

PARAMETERS

+
       p_map_obj
+               [in] Pointer to a map object stucture whose object pointer to return.
+
+

RETURN VALUE

+
       Returns the value of the object pointer stored in the map object.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_set_obj
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_prev

+ +

[top][index]

+

NAME

+
       cl_qmap_prev
+
+

DESCRIPTION

+
       The cl_qmap_prev function returns the map item with the next lower
+       key value than a precified map item.
+
+

SYNOPSIS

+
CL_INLINE cl_map_item_t* CL_API
+cl_qmap_prev(
+        IN      const cl_map_item_t* const      p_item )
+{
+        CL_ASSERT( p_item );
+        return( (cl_map_item_t*)p_item->pool_item.list_item.p_prev );
+}
+
+

PARAMETERS

+
       p_item
+               [in] Pointer to a map item whose predecessor to return.
+
+ RETURN VALUES
+       Pointer to the map item with the next lower key value in a quick map.
+
+       Pointer to the map end if the specifid item was the first item in
+       the quick map.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_head, cl_qmap_tail, cl_qmap_next, cl_qmap_end,
+       cl_map_item_t
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_remove

+ +

[top][index]

+

NAME

+
       cl_qmap_remove
+
+

DESCRIPTION

+
       The cl_qmap_remove function removes the map item with the specified key
+       from a quick map.
+
+

SYNOPSIS

+
CL_EXPORT cl_map_item_t* CL_API
+cl_qmap_remove(
+        IN      cl_qmap_t* const        p_map,
+        IN      const uint64_t          key );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_qmap_t structure from which to remove the item
+               with the specified key.
+
+       key
+               [in] Key value used to search for the map item to remove.
+
+ RETURN VALUES
+       Pointer to the removed map item if it was found.
+
+       Pointer to the map end if no item with the specified key exists in the
+       quick map.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_remove_item, cl_qmap_remove_all, cl_qmap_insert
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_remove_all

+ +

[top][index]

+

NAME

+
       cl_qmap_remove_all
+
+

DESCRIPTION

+
       The cl_qmap_remove_all function removes all items in a quick map,
+       leaving it empty.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qmap_remove_all(
+        IN      cl_qmap_t* const        p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+
+        p_map->root.p_left = &p_map->nil;
+        p_map->nil.pool_item.list_item.p_next = &p_map->nil.pool_item.list_item;
+        p_map->nil.pool_item.list_item.p_prev = &p_map->nil.pool_item.list_item;
+        p_map->count = 0;
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_qmap_t structure to empty.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_remove, cl_qmap_remove_item
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_remove_item

+ +

[top][index]

+

NAME

+
       cl_qmap_remove_item
+
+

DESCRIPTION

+
       The cl_qmap_remove_item function removes the specified map item
+       from a quick map.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qmap_remove_item(
+        IN      cl_qmap_t* const                p_map,
+        IN      cl_map_item_t* const    p_item );
+
+

PARAMETERS

+
       p_item
+               [in] Pointer to a map item to remove from its quick map.
+
+ RETURN VALUES
+       This function does not return a value.
+
+       In a debug build, cl_qmap_remove_item asserts that the item being removed
+       is in the specified map.
+
+

NOTES

+
       Removes the map item pointed to by p_item from its quick map.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_remove, cl_qmap_remove_all, cl_qmap_insert
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_set_obj

+ +

[top][index]

+

NAME

+
       cl_qmap_set_obj
+
+

DESCRIPTION

+
       The cl_qmap_set_obj function sets the object stored in a map object.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qmap_set_obj(
+        IN      cl_map_obj_t* const     p_map_obj,
+        IN      const void* const       p_object )
+{
+        CL_ASSERT( p_map_obj );
+        p_map_obj->p_object = p_object;
+}
+
+

PARAMETERS

+
       p_map_obj
+               [in] Pointer to a map object stucture whose object pointer
+               is to be set.
+
+       p_object
+               [in] User defined context.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_obj
+
+
+
+ +

[Structures] +Component Library: Quick Map/cl_qmap_t

+ +

[top][index]

+

NAME

+
       cl_qmap_t
+
+

DESCRIPTION

+
       Quick map structure.
+
+       The cl_qmap_t structure should be treated as opaque and should
+       be manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_qmap
+{
+        cl_map_item_t   root;
+        cl_map_item_t   nil;
+        cl_state_t              state;
+        size_t                  count;
+
+} cl_qmap_t;
+
+

PARAMETERS

+
       root
+               Map item that serves as root of the map.  The root is set up to
+               always have itself as parent.  The left pointer is set to point to
+               the item at the root.
+
+       nil
+               Map item that serves as terminator for all leaves, as well as providing
+               the list item used as quick list for storing map items in a list for
+               faster traversal.
+
+       state
+               State of the map, used to verify that operations are permitted.
+
+       count
+               Number of items in the map.
+
+

SEE ALSO

+
       Quick Map
+
+
+
+ +

[Functions] +Component Library: Quick Map/cl_qmap_tail

+ +

[top][index]

+

NAME

+
       cl_qmap_tail
+
+

DESCRIPTION

+
       The cl_qmap_tail function returns the map item with the highest key
+       value stored in a quick map.
+
+

SYNOPSIS

+
CL_INLINE cl_map_item_t* CL_API
+cl_qmap_tail(
+        IN      const cl_qmap_t* const  p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+        return( (cl_map_item_t*)p_map->nil.pool_item.list_item.p_prev );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_qmap_t structure whose item with the highest key
+               is returned.
+
+ RETURN VALUES
+       Pointer to the map item with the highest key in the quick map.
+
+       Pointer to the map end if the quick map was empty.
+
+

NOTES

+
       cl_qmap_end does not remove the item from the map.
+
+

SEE ALSO

+
       Quick Map, cl_qmap_head, cl_qmap_next, cl_qmap_prev, cl_qmap_end,
+       cl_qmap_item_t
+
+
+ + diff --git a/trunk/docs/complib/cl_qpool_h.html b/trunk/docs/complib/cl_qpool_h.html new file mode 100644 index 00000000..49d38882 --- /dev/null +++ b/trunk/docs/complib/cl_qpool_h.html @@ -0,0 +1,628 @@ + + + + +./inc_doc/complib/cl_qpool_h.html + + + + +Generated from ./inc/complib/cl_qpool.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Quick Pool

+ +

[top][index]

+

NAME

+
       Quick Pool
+
+

DESCRIPTION

+
       The quick pool provides a self-contained and self-sustaining pool
+       of user defined objects.
+
+       To aid in object oriented design, the quick pool provides the user
+       the ability to specify callbacks that are invoked for each object for
+       construction, initialization, and destruction. Constructor and destructor
+       callback functions may not fail.
+
+       A quick pool does not return memory to the system as the user returns
+       objects to the pool. The only method of returning memory to the system is
+       to destroy the pool.
+
+       The quick pool operates on cl_pool_item_t structures that describe
+       objects. This can provides for more efficient memory use and operation.
+       If using a cl_pool_item_t is not desired, the Pool provides similar
+       functionality but operates on opaque objects.
+
+       The quick pool functions operates on a cl_qpool_t structure which should
+       be treated as opaque and should be manipulated only through the provided
+       functions.
+
+

SEE ALSO

+
       Structures:
+               cl_qpool_t, cl_pool_item_t
+
+       Callbacks:
+               cl_pfn_qpool_init_t, cl_pfn_qpool_dtor_t
+
+       Initialization/Destruction:
+               cl_qpool_construct, cl_qpool_init, cl_qpool_destroy
+
+       Manipulation:
+               cl_qpool_get, cl_qpool_put, cl_qpool_put_list, cl_qpool_grow
+
+       Attributes:
+               cl_is_qpool_inited, cl_qpool_count
+
+
+
+ +

[Functions] +Component Library: Quick Pool/cl_is_qpool_inited

+ +

[top][index]

+

NAME

+
       cl_is_qpool_inited
+
+

DESCRIPTION

+
       The cl_is_qpool_inited function returns whether a quick pool was
+       successfully initialized.
+
+

SYNOPSIS

+
CL_INLINE uint32_t CL_API
+cl_is_qpool_inited(
+        IN      const cl_qpool_t* const p_pool )
+{
+        /* CL_ASSERT that a non-null pointer is provided. */
+        CL_ASSERT( p_pool );
+        return( cl_is_qcpool_inited( &p_pool->qcpool ) );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qpool_t structure whose initialization state
+               to check.
+
+ RETURN VALUES
+       TRUE if the quick pool was initialized successfully.
+
+       FALSE otherwise.
+
+

NOTES

+
       Allows checking the state of a quick pool to determine if
+       invoking member functions is appropriate.
+
+

SEE ALSO

+
       Quick Pool
+
+
+
+ +

[Definitions] +Component Library: Quick Pool/cl_pfn_qpool_dtor_t

+ +

[top][index]

+

NAME

+
       cl_pfn_qpool_dtor_t
+
+

DESCRIPTION

+
       The cl_pfn_qpool_dtor_t function type defines the prototype for
+       functions used as destructor for objects being deallocated by a
+       quick pool.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_qpool_dtor_t)(
+        IN      const cl_pool_item_t* const     p_pool_item,
+        IN      void*                                           context );
+
+

PARAMETERS

+
       p_pool_item
+               [in] Pointer to a cl_pool_item_t structure representing an object.
+
+       context
+               [in] Context provided in a call to cl_qpool_init.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the function provided by the user as an optional parameter to the
+       cl_qpool_init function.
+
+       The destructor is invoked once per allocated object, allowing the user
+       to perform any necessary cleanup. Users should not attempt to deallocate
+       the memory for the object, as the quick pool manages object
+       allocation and deallocation.
+
+

SEE ALSO

+
       Quick Pool, cl_qpool_init
+
+
+
+ +

[Definitions] +Component Library: Quick Pool/cl_pfn_qpool_init_t

+ +

[top][index]

+

NAME

+
       cl_pfn_qpool_init_t
+
+

DESCRIPTION

+
       The cl_pfn_qpool_init_t function type defines the prototype for
+       functions used as constructor for objects being allocated by a
+       quick pool.
+
+

SYNOPSIS

+
typedef cl_status_t
+(CL_API *cl_pfn_qpool_init_t)(
+        IN      void* const                             p_object,
+        IN      void*                                   context,
+        OUT     cl_pool_item_t** const  pp_pool_item );
+
+

PARAMETERS

+
       p_object
+               [in] Pointer to an object to initialize.
+
+       context
+               [in] Context provided in a call to cl_qpool_init.
+
+ RETURN VALUES
+       Return CL_SUCCESS to indicate that initialization of the object
+       was successful and that initialization of further objects may continue.
+
+       Other cl_status_t values will be returned by cl_qcpool_init
+       and cl_qcpool_grow.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the function provided by the user as an optional parameter to the
+       cl_qpool_init function.
+
+       The initializer is invoked once per allocated object, allowing the user
+       to perform any necessary initialization.  Returning a status other than
+       CL_SUCCESS aborts a grow operation, initiated either through cl_qcpool_init
+       or cl_qcpool_grow, causing the initiating function to fail.
+       Any non-CL_SUCCESS status will be returned by the function that initiated
+       the grow operation.
+
+       All memory for the object is pre-allocated.  Users should include space in
+       their objects for the cl_pool_item_t structure that will represent the
+       object to avoid having to allocate that structure in the initialization
+       callback.
+
+       When later performing a cl_qcpool_get call, the return value is a pointer
+       to the cl_pool_item_t returned by this function in the pp_pool_item
+       parameter.  Users must set pp_pool_item to a valid pointer to the
+       cl_pool_item_t representing the object if they return CL_SUCCESS.
+
+

SEE ALSO

+
       Quick Pool, cl_qpool_init
+
+
+
+ +

[Functions] +Component Library: Quick Pool/cl_qpool_construct

+ +

[top][index]

+

NAME

+
       cl_qpool_construct
+
+

DESCRIPTION

+
       The cl_qpool_construct function constructs a quick pool.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_qpool_construct(
+        IN      cl_qpool_t* const       p_pool );
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qpool_t structure whose state to initialize.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_qpool_init, cl_qpool_destroy, cl_is_qpool_inited.
+
+       Calling cl_qpool_construct is a prerequisite to calling any other
+       quick pool function except cl_pool_init.
+
+

SEE ALSO

+
       Quick Pool, cl_qpool_init, cl_qpool_destroy, cl_is_qpool_inited.
+
+
+
+ +

[Functions] +Component Library: Quick Pool/cl_qpool_count

+ +

[top][index]

+

NAME

+
       cl_qpool_count
+
+

DESCRIPTION

+
       The cl_qpool_count function returns the number of available objects
+       in a quick pool.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_qpool_count(
+        IN      cl_qpool_t* const       p_pool )
+{
+        CL_ASSERT( p_pool );
+        return( cl_qcpool_count( &p_pool->qcpool ) );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qpool_t structure for which the number of
+               available objects is requested.
+
+

RETURN VALUE

+
       Returns the number of objects available in the specified quick pool.
+
+

SEE ALSO

+
       Quick Pool
+
+
+
+ +

[Functions] +Component Library: Quick Pool/cl_qpool_destroy

+ +

[top][index]

+

NAME

+
       cl_qpool_destroy
+
+

DESCRIPTION

+
       The cl_qpool_destroy function destroys a quick pool.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qpool_destroy(
+        IN      cl_qpool_t* const       p_pool )
+{
+        CL_ASSERT( p_pool );
+        cl_qcpool_destroy( &p_pool->qcpool );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qpool_t structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       All memory allocated for objects is freed. The destructor callback,
+       if any, will be invoked for every allocated object. Further operations
+       on the pool should not be attempted after cl_qpool_destroy
+       is invoked.
+
+       This function should only be called after a call to
+       cl_qpool_construct or cl_qpool_init.
+
+       In a debug build, cl_qpool_destroy asserts that all objects are in
+       the pool.
+
+

SEE ALSO

+
       Quick Pool, cl_qpool_construct, cl_qpool_init
+
+
+
+ +

[Functions] +Component Library: Quick Pool/cl_qpool_get

+ +

[top][index]

+

NAME

+
       cl_qpool_get
+
+

DESCRIPTION

+
       The cl_qpool_get function retrieves an object from a
+       quick pool.
+
+

SYNOPSIS

+
CL_INLINE cl_pool_item_t* CL_API
+cl_qpool_get(
+        IN      cl_qpool_t* const       p_pool )
+{
+        CL_ASSERT( p_pool );
+        return( cl_qcpool_get( &p_pool->qcpool ) );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qpool_t structure from which to retrieve
+               an object.
+
+ RETURN VALUES
+       Returns a pointer to a cl_pool_item_t for an object.
+
+       Returns NULL if the pool is empty and can not be grown automatically.
+
+

NOTES

+
       cl_qpool_get returns the object at the head of the pool. If the pool is
+       empty, it is automatically grown to accommodate this request unless the
+       grow_size parameter passed to the cl_qpool_init function was zero.
+
+

SEE ALSO

+
       Quick Pool, cl_qpool_get_tail, cl_qpool_put, cl_qpool_grow, cl_qpool_count
+
+
+
+ +

[Functions] +Component Library: Quick Pool/cl_qpool_grow

+ +

[top][index]

+

NAME

+
       cl_qpool_grow
+
+

DESCRIPTION

+
       The cl_qpool_grow function grows a quick pool by
+       the specified number of objects.
+
+

SYNOPSIS

+
CL_INLINE cl_status_t CL_API
+cl_qpool_grow(
+        IN      cl_qpool_t* const       p_pool,
+        IN      const size_t            obj_count )
+{
+        CL_ASSERT( p_pool );
+        return( cl_qcpool_grow( &p_pool->qcpool, obj_count ) );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qpool_t structure whose capacity to grow.
+
+       obj_count
+               [in] Number of objects by which to grow the pool.
+
+ RETURN VALUES
+       CL_SUCCESS if the quick pool grew successfully.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to grow the
+       quick pool.
+
+       cl_status_t value returned by optional initialization callback function
+       specified by the pfn_initializer parameter passed to the
+       cl_qpool_init function.
+
+

NOTES

+
       It is not necessary to call cl_qpool_grow if the pool is
+       configured to grow automatically.
+
+

SEE ALSO

+
       Quick Pool
+
+
+
+ +

[Functions] +Component Library: Quick Pool/cl_qpool_init

+ +

[top][index]

+

NAME

+
       cl_qpool_init
+
+

DESCRIPTION

+
       The cl_qpool_init function initializes a quick pool for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_qpool_init(
+        IN      cl_qpool_t* const               p_pool,
+        IN      const size_t                    min_size,
+        IN      const size_t                    max_size,
+        IN      const size_t                    grow_size,
+        IN      const size_t                    object_size,
+        IN      cl_pfn_qpool_init_t             pfn_initializer OPTIONAL,
+        IN      cl_pfn_qpool_dtor_t             pfn_destructor OPTIONAL,
+        IN      const void* const               context );
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qpool_t structure to initialize.
+
+       min_size
+               [in] Minimum number of objects that the pool should support. All
+               necessary allocations to allow storing the minimum number of items
+               are performed at initialization time, and all necessary callbacks
+               successfully invoked.
+
+       max_size
+               [in] Maximum number of objects to which the pool is allowed to grow.
+               A value of zero specifies no maximum.
+
+       grow_size
+               [in] Number of objects to allocate when incrementally growing the pool.
+               A value of zero disables automatic growth.
+
+       object_size
+               [in] Size, in bytes, of each object.
+
+       pfn_initializer
+               [in] Initialization callback to invoke for every new object when
+               growing the pool. This parameter is optional and may be NULL. If NULL,
+               the pool assumes the cl_pool_item_t structure describing objects is
+               located at the head of each object. See the cl_pfn_qpool_init_t
+               function type declaration for details about the callback function.
+
+       pfn_destructor
+               [in] Destructor callback to invoke for every object before memory for
+               that object is freed. This parameter is optional and may be NULL.
+               See the cl_pfn_qpool_dtor_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context.
+
+ RETURN VALUES
+       CL_SUCCESS if the quick pool was initialized successfully.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize the
+       quick pool.
+
+       CL_INVALID_SETTING if a the maximum size is non-zero and less than the
+       minimum size.
+
+       Other cl_status_t value returned by optional initialization callback function
+       specified by the pfn_initializer parameter.
+
+

NOTES

+
       cl_qpool_init initializes, and if necessary, grows the pool to
+       the capacity desired.
+
+

SEE ALSO

+
       Quick Pool, cl_qpool_construct, cl_qpool_destroy,
+       cl_qpool_get, cl_qpool_put, cl_qpool_grow,
+       cl_qpool_count, cl_pfn_qpool_init_t, cl_pfn_qpool_init_t,
+       cl_pfn_qpool_dtor_t
+
+
+
+ +

[Functions] +Component Library: Quick Pool/cl_qpool_put

+ +

[top][index]

+

NAME

+
       cl_qpool_put
+
+

DESCRIPTION

+
       The cl_qpool_put function returns an object to the head of a quick pool.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qpool_put(
+        IN      cl_qpool_t* const               p_pool,
+        IN      cl_pool_item_t* const   p_pool_item )
+{
+        CL_ASSERT( p_pool );
+        cl_qcpool_put( &p_pool->qcpool, p_pool_item );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qpool_t structure to which to return
+               an object.
+
+       p_pool_item
+               [in] Pointer to a cl_pool_item_t structure for the object
+               being returned.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_qpool_put places the returned object at the head of the pool.
+
+       The object specified by the p_pool_item parameter must have been
+       retrieved from the pool by a previous call to cl_qpool_get.
+
+

SEE ALSO

+
       Quick Pool, cl_qpool_put_tail, cl_qpool_get
+
+
+
+ +

[Functions] +Component Library: Quick Pool/cl_qpool_put_list

+ +

[top][index]

+

NAME

+
       cl_qpool_put_list
+
+

DESCRIPTION

+
       The cl_qpool_put_list function returns a list of objects to the head
+       of a quick pool.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_qpool_put_list(
+        IN      cl_qpool_t* const       p_pool,
+        IN      cl_qlist_t* const       p_list )
+{
+        CL_ASSERT( p_pool );
+        cl_qcpool_put_list( &p_pool->qcpool, p_list );
+}
+
+

PARAMETERS

+
       p_pool
+               [in] Pointer to a cl_qpool_t structure to which to return
+               a list of objects.
+
+       p_list
+               [in] Pointer to a cl_qlist_t structure for the list of objects
+               being returned.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_qpool_put_list places the returned objects at the head of the pool.
+
+       The objects in the list specified by the p_list parameter must have been
+       retrieved from the pool by a previous call to cl_qpool_get.
+
+

SEE ALSO

+
       Quick Pool, cl_qpool_put, cl_qpool_put_tail, cl_qpool_get
+
+
+
+ +

[Structures] +Component Library: Quick Pool/cl_qpool_t

+ +

[top][index]

+

NAME

+
       cl_qpool_t
+
+

DESCRIPTION

+
       Quick pool structure.
+
+       The cl_qpool_t structure should be treated as opaque and should be
+       manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_qpool
+{
+        cl_qcpool_t                             qcpool;
+        cl_pfn_qpool_init_t             pfn_init;
+        cl_pfn_qpool_dtor_t             pfn_dtor;
+        const void                              *context;
+
+} cl_qpool_t;
+
+

FIELDS

+
       qcpool
+               Quick composite pool that manages all objects.
+
+       pfn_init
+               Pointer to the user's initializer callback, used by the pool
+               to translate the quick composite pool's initializer callback to
+               a quick pool initializer callback.
+
+       pfn_dtor
+               Pointer to the user's destructor callback, used by the pool
+               to translate the quick composite pool's destructor callback to
+               a quick pool destructor callback.
+
+       context
+               User's provided context for callback functions, used by the pool
+               to when invoking callbacks.
+
+

SEE ALSO

+
       Quick Pool
+
+
+ + diff --git a/trunk/docs/complib/cl_rbmap_h.html b/trunk/docs/complib/cl_rbmap_h.html new file mode 100644 index 00000000..3af410b6 --- /dev/null +++ b/trunk/docs/complib/cl_rbmap_h.html @@ -0,0 +1,563 @@ + + + + +./inc_doc/complib/cl_rbmap_h.html + + + + +Generated from ./inc/complib/cl_rbmap.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/RB Map

+ +

[top][index]

+

NAME

+
       RB Map
+
+

DESCRIPTION

+
       RB map implements a binary tree that stores user provided cl_rbmap_item_t
+       structures.  Each item stored in a RB map has a unique key
+       (duplicates are not allowed).  RB map provides the ability to
+       efficiently search for an item given a key.
+
+       RB map does not allocate any memory, and can therefore not fail
+       any operations due to insufficient memory.  RB map can thus be useful
+       in minimizing the error paths in code.
+
+       RB map is not thread safe, and users must provide serialization when
+       adding and removing items from the map.
+
+       The RB map functions operate on a cl_rbmap_t structure which should be
+       treated as opaque and should be manipulated only through the provided
+       functions.
+
+

SEE ALSO

+
       Structures:
+               cl_rbmap_t, cl_rbmap_item_t
+
+       Initialization:
+               cl_rbmap_init
+
+       Iteration:
+               cl_rbmap_root, cl_rbmap_end, cl_rbmap_left, cl_rbmap_right, cl_rbmap_up
+
+       Manipulation:
+               cl_rbmap_insert, cl_rbmap_get, cl_rbmap_remove_item, cl_rbmap_remove,
+               cl_rbmap_reset, cl_rbmap_merge, cl_rbmap_delta
+
+       Search:
+               cl_rbmap_apply_func
+
+       Attributes:
+               cl_rbmap_count, cl_is_rbmap_empty,
+
+
+
+ +

[Functions] +Component Library: RB Map/cl_is_rbmap_empty

+ +

[top][index]

+

NAME

+
       cl_is_rbmap_empty
+
+

DESCRIPTION

+
       The cl_is_rbmap_empty function returns whether a RB map is empty.
+
+

SYNOPSIS

+
CL_INLINE boolean_t CL_API
+cl_is_rbmap_empty(
+        IN      const cl_rbmap_t* const p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+
+        return( p_map->count == 0 );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_rbmap_t structure to test for emptiness.
+
+ RETURN VALUES
+       TRUE if the RB map is empty.
+
+       FALSE otherwise.
+
+

SEE ALSO

+
       RB Map, cl_rbmap_count, cl_rbmap_reset
+
+
+
+ +

[Functions] +Component Library: RB Map/cl_rbmap_count

+ +

[top][index]

+

NAME

+
       cl_rbmap_count
+
+

DESCRIPTION

+
       The cl_rbmap_count function returns the number of items stored
+       in a RB map.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_rbmap_count(
+        IN      const cl_rbmap_t* const p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+        return( p_map->count );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_rbmap_t structure whose item count to return.
+
+

RETURN VALUE

+
       Returns the number of items stored in the map.
+
+

SEE ALSO

+
       RB Map, cl_is_rbmap_empty
+
+
+
+ +

[Functions] +Component Library: RB Map/cl_rbmap_end

+ +

[top][index]

+

NAME

+
       cl_rbmap_end
+
+

DESCRIPTION

+
       The cl_rbmap_end function returns the end of a RB map.
+
+

SYNOPSIS

+
CL_INLINE const cl_rbmap_item_t* const CL_API
+cl_rbmap_end(
+        IN      const cl_rbmap_t* const p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+        /* Nil is the end of the map. */
+        return( &p_map->nil );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_rbmap_t structure whose end to return.
+
+

RETURN VALUE

+
       Pointer to the end of the map.
+
+

NOTES

+
       cl_rbmap_end is useful for determining the validity of map items returned
+       by cl_rbmap_head, cl_rbmap_tail, cl_rbmap_next, or cl_rbmap_prev.  If the map
+       item pointer returned by any of these functions compares to the end, the
+       end of the map was encoutered.
+       When using cl_rbmap_head or cl_rbmap_tail, this condition indicates that
+       the map is empty.
+
+

SEE ALSO

+
       RB Map, cl_rbmap_head, cl_rbmap_tail, cl_rbmap_next, cl_rbmap_prev
+       cl_rbmap_root, cl_rbmap_left, cl_rbmap_right, cl_rbmap_up
+
+
+
+ +

[Functions] +Component Library: RB Map/cl_rbmap_init

+ +

[top][index]

+

NAME

+
       cl_rbmap_init
+
+

DESCRIPTION

+
       The cl_rbmap_init function initialized a RB map for use.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_rbmap_init(
+        IN      cl_rbmap_t* const       p_map )
+{
+        CL_ASSERT( p_map );
+
+        /* special setup for the root node */
+        p_map->root.p_left = &p_map->nil;
+        p_map->root.p_right = &p_map->nil;
+        p_map->root.p_up = &p_map->root;
+        p_map->root.color = CL_MAP_BLACK;
+
+        /* Setup the node used as terminator for all leaves. */
+        p_map->nil.p_left = &p_map->nil;
+        p_map->nil.p_right = &p_map->nil;
+        p_map->nil.p_up = &p_map->nil;
+        p_map->nil.color = CL_MAP_BLACK;
+
+#ifdef _DEBUG_
+        p_map->root.p_map = p_map;
+        p_map->nil.p_map = p_map;
+#endif
+
+        p_map->state = CL_INITIALIZED;
+
+        p_map->count = 0;
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_rbmap_t structure to initialize.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

NOTES

+
       Allows calling RB map manipulation functions.
+
+

SEE ALSO

+
       RB Map, cl_rbmap_insert, cl_rbmap_remove
+
+
+
+ +

[Functions] +Component Library: RB Map/cl_rbmap_insert

+ +

[top][index]

+

NAME

+
       cl_rbmap_insert
+
+

DESCRIPTION

+
       The cl_rbmap_insert function inserts a map item into a RB map.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_rbmap_insert(
+        IN      cl_rbmap_t* const               p_map,
+        IN      cl_rbmap_item_t* const  p_insert_at,
+        IN      cl_rbmap_item_t* const  p_item,
+        IN      boolean_t                               left );
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_rbmap_t structure into which to add the item.
+
+       p_insert_at
+               [in] Pointer to a cl_rbmap_item_t structure to serve as parent
+               to p_item.
+
+       p_item
+               [in] Pointer to a cl_rbmap_item_t stucture to insert into the RB map.
+
+       left
+               [in] Indicates that p_item should be inserted to the left of p_insert_at.
+
+

RETURN VALUE

+
       Pointer to the item in the map with the specified key.  If insertion
+       was successful, this is the pointer to the item.  If an item with the
+       specified key already exists in the map, the pointer to that item is
+       returned.
+
+

NOTES

+
       Insertion operations may cause the RB map to rebalance.
+
+

SEE ALSO

+
       RB Map, cl_rbmap_remove, cl_rbmap_item_t
+
+
+
+ +

[Structures] +Component Library: RB Map/cl_rbmap_item_t

+ +

[top][index]

+

NAME

+
       cl_rbmap_item_t
+
+

DESCRIPTION

+
       The cl_rbmap_item_t structure is used by maps to store objects.
+
+       The cl_rbmap_item_t structure should be treated as opaque and should
+       be manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_rbmap_item
+{
+        struct _cl_rbmap_item           *p_left;
+        struct _cl_rbmap_item           *p_right;
+        struct _cl_rbmap_item           *p_up;
+        cl_map_color_t                          color;
+#ifdef _DEBUG_
+        struct _cl_rbmap                        *p_map;
+#endif
+
+} cl_rbmap_item_t;
+
+

FIELDS

+
       p_left
+               Pointer to the map item that is a child to the left of the node.
+
+       p_right
+               Pointer to the map item that is a child to the right of the node.
+
+       p_up
+               Pointer to the map item that is the parent of the node.
+
+       color
+               Indicates whether a node is red or black in the map.
+
+

NOTES

+
       None of the fields of this structure should be manipulated by users, as
+       they are crititcal to the proper operation of the map in which they
+       are stored.
+
+       To allow storing items in either a quick list, a quick pool, or a quick
+       map, the map implementation guarantees that the map item can be safely
+       cast to a pool item used for storing an object in a quick pool, or cast to
+       a list item used for storing an object in a quick list.  This removes the
+       need to embed a map item, a list item, and a pool item in objects that need
+       to be stored in a quick list, a quick pool, and a RB map.
+
+

SEE ALSO

+
       RB Map, cl_rbmap_insert, cl_rbmap_key, cl_pool_item_t, cl_list_item_t
+
+
+
+ +

[Functions] +Component Library: RB Map/cl_rbmap_left

+ +

[top][index]

+

NAME

+
       cl_rbmap_left
+
+

DESCRIPTION

+
       The cl_rbmap_left function returns the map item to the left
+       of the specified map item.
+
+

SYNOPSIS

+
CL_INLINE cl_rbmap_item_t* CL_API
+cl_rbmap_left(
+        IN      const cl_rbmap_item_t* const    p_item )
+{
+        CL_ASSERT( p_item );
+        return( (cl_rbmap_item_t*)p_item->p_left );
+}
+
+

PARAMETERS

+
       p_item
+               [in] Pointer to a map item whose predecessor to return.
+
+ RETURN VALUES
+       Pointer to the map item to the left in a RB map.
+
+       Pointer to the map end if no item is to the left.
+
+

SEE ALSO

+
       RB Map, cl_rbmap_head, cl_rbmap_tail, cl_rbmap_next, cl_rbmap_end,
+       cl_rbmap_item_t
+
+
+
+ +

[Functions] +Component Library: RB Map/cl_rbmap_remove_item

+ +

[top][index]

+

NAME

+
       cl_rbmap_remove_item
+
+

DESCRIPTION

+
       The cl_rbmap_remove_item function removes the specified map item
+       from a RB map.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_rbmap_remove_item(
+        IN      cl_rbmap_t* const               p_map,
+        IN      cl_rbmap_item_t* const  p_item );
+
+

PARAMETERS

+
       p_item
+               [in] Pointer to a map item to remove from its RB map.
+
+ RETURN VALUES
+       This function does not return a value.
+
+       In a debug build, cl_rbmap_remove_item asserts that the item being removed
+       is in the specified map.
+
+

NOTES

+
       Removes the map item pointed to by p_item from its RB map.
+
+

SEE ALSO

+
       RB Map, cl_rbmap_remove, cl_rbmap_reset, cl_rbmap_insert
+
+
+
+ +

[Functions] +Component Library: RB Map/cl_rbmap_reset

+ +

[top][index]

+

NAME

+
       cl_rbmap_reset
+
+

DESCRIPTION

+
       The cl_rbmap_reset function removes all items in a RB map,
+       leaving it empty.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_rbmap_reset(
+        IN      cl_rbmap_t* const       p_map )
+{
+        CL_ASSERT( p_map );
+        CL_ASSERT( p_map->state == CL_INITIALIZED );
+
+        p_map->root.p_left = &p_map->nil;
+        p_map->count = 0;
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_rbmap_t structure to empty.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       RB Map, cl_rbmap_remove, cl_rbmap_remove_item
+
+
+
+ +

[Functions] +Component Library: RB Map/cl_rbmap_right

+ +

[top][index]

+

NAME

+
       cl_rbmap_right
+
+

DESCRIPTION

+
       The cl_rbmap_right function returns the map item to the right
+       of the specified map item.
+
+

SYNOPSIS

+
CL_INLINE cl_rbmap_item_t* CL_API
+cl_rbmap_right(
+        IN      const cl_rbmap_item_t* const    p_item )
+{
+        CL_ASSERT( p_item );
+        return( (cl_rbmap_item_t*)p_item->p_right );
+}
+
+

PARAMETERS

+
       p_item
+               [in] Pointer to a map item whose predecessor to return.
+
+ RETURN VALUES
+       Pointer to the map item to the right in a RB map.
+
+       Pointer to the map end if no item is to the right.
+
+

SEE ALSO

+
       RB Map, cl_rbmap_head, cl_rbmap_tail, cl_rbmap_next, cl_rbmap_end,
+       cl_rbmap_item_t
+
+
+
+ +

[Functions] +Component Library: RB Map/cl_rbmap_root

+ +

[top][index]

+

NAME

+
       cl_rbmap_root
+
+

DESCRIPTION

+
       The cl_rbmap_root function returns the root of a RB map.
+
+

SYNOPSIS

+
CL_INLINE cl_rbmap_item_t* const CL_API
+cl_rbmap_root(
+        IN      const cl_rbmap_t* const p_map )
+{
+        CL_ASSERT( p_map );
+        return( p_map->root.p_left );
+}
+
+

PARAMETERS

+
       p_map
+               [in] Pointer to a cl_rbmap_t structure whose root to return.
+
+

RETURN VALUE

+
       Pointer to the end of the map.
+
+

NOTES

+
       cl_rbmap_end is useful for determining the validity of map items returned
+       by cl_rbmap_head, cl_rbmap_tail, cl_rbmap_next, or cl_rbmap_prev.  If the map
+       item pointer returned by any of these functions compares to the end, the
+       end of the map was encoutered.
+       When using cl_rbmap_head or cl_rbmap_tail, this condition indicates that
+       the map is empty.
+
+

SEE ALSO

+
       RB Map, cl_rbmap_head, cl_rbmap_tail, cl_rbmap_next, cl_rbmap_prev,
+       cl_rbmap_end, cl_rbmap_left, cl_rbmap_right, cl_rbmap_up
+
+
+
+ +

[Structures] +Component Library: RB Map/cl_rbmap_t

+ +

[top][index]

+

NAME

+
       cl_rbmap_t
+
+

DESCRIPTION

+
       Quick map structure.
+
+       The cl_rbmap_t structure should be treated as opaque and should
+       be manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_rbmap
+{
+        cl_rbmap_item_t root;
+        cl_rbmap_item_t nil;
+        cl_state_t              state;
+        size_t                  count;
+
+} cl_rbmap_t;
+
+

PARAMETERS

+
       root
+               Map item that serves as root of the map.  The root is set up to
+               always have itself as parent.  The left pointer is set to point to
+               the item at the root.
+
+       nil
+               Map item that serves as terminator for all leaves, as well as providing
+               the list item used as quick list for storing map items in a list for
+               faster traversal.
+
+       state
+               State of the map, used to verify that operations are permitted.
+
+       count
+               Number of items in the map.
+
+

SEE ALSO

+
       RB Map
+
+
+ + diff --git a/trunk/docs/complib/cl_reqmgr_h.html b/trunk/docs/complib/cl_reqmgr_h.html new file mode 100644 index 00000000..b952eb09 --- /dev/null +++ b/trunk/docs/complib/cl_reqmgr_h.html @@ -0,0 +1,463 @@ + + + + +./inc_doc/complib/cl_reqmgr_h.html + + + + +Generated from ./inc/complib/cl_reqmgr.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Request Manager

+ +

[top][index]

+

NAME

+
       Request Manager
+
+

DESCRIPTION

+
       The Request Manager manages synchronous as well as asynchronous
+       requests for objects.
+
+       Request manager does not supply the objects, but merely returns whether
+       objects are available to satisfy requests. This allows users to use
+       various sources for objects.
+
+       While the request manager manages synchronous and asynchronous requests
+       for objects, it does not itself operate asynchronously. Instead, the
+       cl_req_mgr_resume function returns information for resuming asynchronous
+       requests. If a call to cl_req_mgr_resume returns CL_SUCCESS, additional
+       requests may be able to resume. It is recommended that users flush
+       pending requests by calling cl_req_mgr_resume while CL_SUCCESS is returned.
+
+       The request manager functions operates on a cl_req_mgr_t structure which
+       should be treated as opaque and should be manipulated only through the
+       provided functions.
+
+

SEE ALSO

+
       Types:
+               cl_req_type_t
+
+       Structures:
+               cl_req_mgr_t
+
+       Callbacks:
+               cl_pfn_req_cb_t, cl_pfn_reqmgr_get_count_t
+
+       Initialization/Destruction:
+               cl_req_mgr_construct, cl_req_mgr_init, cl_req_mgr_destroy
+
+       Manipulation:
+               cl_req_mgr_get, cl_req_mgr_resume
+
+       Attributes:
+               cl_is_req_mgr_inited, cl_req_mgr_count
+
+
+
+ +

[Definitions] +Component Library: Request Manager/cl_pfn_req_cb_t

+ +

[top][index]

+

NAME

+
       cl_pfn_req_cb_t
+
+

DESCRIPTION

+
       The cl_pfn_req_cb_t function type defines the prototype for functions
+       used to store a function pointer to a user defined function.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_req_cb_t)( void );
+
+

PARAMETERS

+
       This function does not take parameters.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Function pointers specified by this parameter do not have to match the
+       defined syntax, as these callbacks are never invoked directly by the
+       request manager.  When specifying a function with a different prototype,
+       cast the function pointer to this type.
+
+

SEE ALSO

+
       Request Manager, cl_req_mgr_get, cl_req_mgr_resume
+
+
+
+ +

[Definitions] +Component Library: Request Manager/cl_pfn_reqmgr_get_count_t

+ +

[top][index]

+

NAME

+
       cl_pfn_reqmgr_get_count_t
+
+

DESCRIPTION

+
       The cl_pfn_reqmgr_get_count_t function type defines the prototype for
+       functions used to retrieve the number of available objects in a pool.
+
+

SYNOPSIS

+
typedef size_t
+(CL_API *cl_pfn_reqmgr_get_count_t)(
+        IN      void*   context );
+
+

PARAMETERS

+
       Context
+               [in] Context provided in a call to cl_req_mgr_init by
+               the get_context parameter.
+
+

RETURN VALUE

+
       Returns the number of objects available in an object pool for which
+       requests are managed by a request manager.
+
+

NOTES

+
       This function type is provided as function prototype reference for the
+       function passed into cl_req_mgr_init. This function is invoked by the
+       request manager when trying to fulfill requests for resources, either
+       through a call to cl_req_mgr_get or cl_req_mgr_resume.
+
+

SEE ALSO

+
       Request Manager, cl_req_mgr_init, cl_req_mgr_get, cl_req_mgr_resume
+
+
+
+ +

[Functions] +Component Library: Request Manager/cl_req_mgr_construct

+ +

[top][index]

+

NAME

+
       cl_req_mgr_construct
+
+

DESCRIPTION

+
       The cl_req_mgr_construct function constructs a request manager.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_req_mgr_construct(
+        IN      cl_req_mgr_t* const     p_req_mgr );
+
+

PARAMETERS

+
       p_req_mgr
+               [in] Pointer to a cl_req_mgr_t structure to construct.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_req_mgr_construct allows calling cl_req_mgr_destroy without first
+       calling cl_req_mgr_init.
+
+       Calling cl_req_mgr_construct is a prerequisite to calling any other
+       request manager function except cl_req_mgr_init.
+
+

SEE ALSO

+
       Request Manager, cl_req_mgr_init, cl_req_mgr_destroy
+
+
+
+ +

[Functions] +Component Library: Request Manager/cl_req_mgr_destroy

+ +

[top][index]

+

NAME

+
       cl_req_mgr_destroy
+
+

DESCRIPTION

+
       The cl_req_mgr_destroy function destroys a request manager.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_req_mgr_destroy(
+        IN      cl_req_mgr_t* const     p_req_mgr );
+
+

PARAMETERS

+
       p_req_mgr
+               [in] Pointer to a cl_req_mgr_t structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_req_mgr_destroy frees all memory allocated by the request manager.
+       Further operations on the request manager should not be attempted.
+
+       This function should only be called after a call to cl_req_mgr_construct
+       or cl_req_mgr_init.
+
+

SEE ALSO

+
       Request Manager, cl_req_mgr_construct, cl_req_mgr_init
+
+
+
+ +

[Functions] +Component Library: Request Manager/cl_req_mgr_get

+ +

[top][index]

+

NAME

+
       cl_req_mgr_get
+
+

DESCRIPTION

+
       The cl_req_mgr_get function handles synchronous and asynchronous
+       requests for objects.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_req_mgr_get(
+        IN              cl_req_mgr_t* const     p_req_mgr,
+        IN OUT  size_t* const           p_count,
+        IN              const cl_req_type_t     req_type,
+        IN              cl_pfn_req_cb_t         pfn_callback,
+        IN              const void* const       context1,
+        IN              const void* const       context2 );
+
+

PARAMETERS

+
       p_req_mgr
+               [in] Pointer to a cl_req_mgr_t structure from which to check
+               for resources.
+
+       p_count
+               [in/out] On input, contains the number of objects requested.
+               On output, contains the number of objects available.
+
+       req_type
+               [in] Enumerated type describing the type of request. Valid values are:
+                       ReqGetSync
+                               Synchronous request.
+                       ReqGetAsync
+                               Asynchronous requests for which all objects are required at
+                               once.
+                       ReqGetAsyncPartialOk
+                               Asynchronous requests that may be broken into multiple smaller
+                               requests.
+
+       pfn_callback
+               [in] Pointer to a callback function for use by the caller. This
+               callback function is never invoked by the request manager.
+
+       context1
+               [in] First of two contexts for a resource request.
+
+       context2
+               [in] Second of two contexts for a resource request.
+
+ RETURN VALUES
+       CL_SUCCESS if all objects requested are available.
+
+       CL_PENDING if the request could not be completed in its entirety.
+       The p_count parameter contains the number of objects immediately available.
+
+       CL_INSUFFICIENT_RESOURCES if the request could not be completed due to
+       insufficient objects being available.
+
+       CL_INSUFFICIENT_MEMORY if the request failed due to a lack of system memory.
+
+

NOTES

+
       Upon successful completion of this function, the p_count parameter contains
+       the number of objects available.
+
+       Synchronous requests fail if there are any asynchronous requests pending,
+       or if there are not enough resources to immediately satisfy the request in
+       its entirety .
+
+       Asynchronous requests fail if there is insufficient system memory to
+       queue them.
+
+       Once an asynchronous request is queued, use cl_req_mgr_resume to retrieve
+       information for resuming queued requests.
+
+

SEE ALSO

+
       Request Manager, cl_req_mgr_resume
+
+
+
+ +

[Functions] +Component Library: Request Manager/cl_req_mgr_init

+ +

[top][index]

+

NAME

+
       cl_req_mgr_init
+
+

DESCRIPTION

+
       The cl_req_mgr_init function initializes a request manager for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_req_mgr_init(
+        IN      cl_req_mgr_t* const                     p_req_mgr,
+        IN      cl_pfn_reqmgr_get_count_t       pfn_get_count,
+        IN      const void* const                       get_context );
+
+

PARAMETERS

+
       p_req_mgr
+               [in] Pointer to a cl_req_mgr_t structure to initialize.
+
+       pfn_get_count
+               [in] Callback function invoked by the request manager to get the
+               number of objects available in a pool of objects for which the
+               request manager is managing requests.
+               See the cl_pfn_req_mgr_get_count_t function type declaration for
+               details about the callback function.
+
+       get_context
+               [in] Context to pass into the function specified by the
+               pfn_get_count parameter.
+
+ RETURN VALUES
+       CL_SUCCESS if the request manager was successfully initialized.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to initialize
+       the request manager.
+
+

SEE ALSO

+
       Request Manager, cl_req_mgr_construct, cl_req_mgr_destroy, cl_req_mgr_get,
+       cl_req_mgr_resume, cl_pfn_req_mgr_get_count_t
+
+
+
+ +

[Functions] +Component Library: Request Manager/cl_req_mgr_resume

+ +

[top][index]

+

NAME

+
       cl_req_mgr_resume
+
+

DESCRIPTION

+
       The cl_req_mgr_resume function attempts to resume queued requests.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_req_mgr_resume(
+        IN      cl_req_mgr_t* const             p_req_mgr,
+        OUT     size_t* const                   p_count,
+        OUT     cl_pfn_req_cb_t* const  ppfn_callback,
+        OUT     const void** const              p_context1,
+        OUT     const void** const              p_context2 );
+
+

PARAMETERS

+
       p_req_mgr
+               [in] Pointer to a cl_req_mgr_t structure from which to resume requests.
+
+       p_count
+               [out] Contains the number of objects available for a resuming request.
+
+       ppfn_callback
+               [out] Contains the pfn_callback value for the resuming request, as
+               provided to the call to the cl_req_mgr_get function.
+
+       p_context1
+               [out] Contains the context1 value for the resuming request, as provided
+               to the call to the cl_req_mgr_get function.
+
+       p_context2
+               [out] Contains the context2 value for the resuming request, as provided
+               to the call to the cl_req_mgr_get function.
+
+ RETURN VALUES
+       CL_SUCCESS if a request was completed.
+
+       CL_PENDING if a request was continued, but not completed.
+
+       CL_INSUFFICIENT_RESOURCES if a request could not be continued due to
+       a lack of resources.
+
+       CL_NOT_DONE if there were no pending requests.
+
+

NOTES

+
       cl_req_mgr_resume resumes at most one request. Further requests may be
+       able to be resumed if this call returns CL_SUCCESS.
+
+

SEE ALSO

+
       Request Manager, cl_req_mgr_get
+
+
+
+ +

[Structures] +Component Library: Request Manager/cl_req_mgr_t

+ +

[top][index]

+

NAME

+
       cl_req_mgr_t
+
+

DESCRIPTION

+
       Quick composite pool structure.
+
+       The cl_req_mgr_t structure should be treated as opaque and should be
+       manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_req_mgr
+{
+        cl_pfn_reqmgr_get_count_t       pfn_get_count;
+        const void                                      *get_context;
+        cl_qlist_t                                      request_queue;
+        cl_qpool_t                                      request_pool;
+
+} cl_req_mgr_t;
+
+

FIELDS

+
       pfn_get_count
+               Pointer to the count callback function.
+
+       get_context
+               Context to pass as single parameter to count callback.
+
+       request_queue
+               Pending requests for elements.
+
+       request_pool
+               Pool of request structures for storing requests in the request queue.
+
+

SEE ALSO

+
       Request Manager
+
+
+
+ +

[Definitions] +Component Library: Request Manager/cl_req_type_t

+ +

[top][index]

+

NAME

+
       cl_req_type_t
+
+

DESCRIPTION

+
       The cl_req_type_t enumerated type describes the type of request.
+
+

SYNOPSIS

+
typedef enum _cl_req_type
+{
+        REQ_GET_SYNC,
+        REQ_GET_ASYNC,
+        REQ_GET_PARTIAL_OK
+
+} cl_req_type_t;
+
+

VALUES

+
       REQ_GET_SYNC
+               Synchronous request.
+
+       REQ_GET_ASYNC
+               Asynchronous requests for which all objects are required at once.
+
+       REQ_GET_PARTIAL_OK
+               Asynchronous requests that may be broken into multiple smaller requests.
+
+

SEE ALSO

+
       Request Manager, cl_req_mgr_get
+
+
+ + diff --git a/trunk/docs/complib/cl_spinlock_h.html b/trunk/docs/complib/cl_spinlock_h.html new file mode 100644 index 00000000..f2a1320c --- /dev/null +++ b/trunk/docs/complib/cl_spinlock_h.html @@ -0,0 +1,210 @@ + + + + +./inc_doc/complib/cl_spinlock_h.html + + + + +Generated from ./inc/complib/cl_spinlock.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Spinlock

+ +

[top][index]

+

NAME

+
       Spinlock
+
+

DESCRIPTION

+
       Spinlock provides synchronization between threads for exclusive access to
+       a resource.
+
+       The spinlock functions manipulate a cl_spinlock_t structure which should
+       be treated as opaque and should be manipulated only through the provided
+       functions.
+
+

SEE ALSO

+
       Structures:
+               cl_spinlock_t
+
+       Initialization:
+               cl_spinlock_construct, cl_spinlock_init, cl_spinlock_destroy
+
+       Manipulation
+               cl_spinlock_acquire, cl_spinlock_release
+
+
+
+ +

[Functions] +Component Library: Spinlock/cl_spinlock_acquire

+ +

[top][index]

+

NAME

+
       cl_spinlock_acquire
+
+

DESCRIPTION

+
       The cl_spinlock_acquire function acquires a spin lock.
+       This version of lock does not prevent an interrupt from
+       occuring on the processor on which the code is being
+       executed.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_spinlock_acquire(
+        IN      cl_spinlock_t* const    p_spinlock );
+
+

PARAMETERS

+
       p_spinlock
+               [in] Pointer to a spin lock structure to acquire.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Spinlock, cl_spinlock_release
+
+
+
+ +

[Functions] +Component Library: Spinlock/cl_spinlock_construct

+ +

[top][index]

+

NAME

+
       cl_spinlock_construct
+
+

DESCRIPTION

+
       The cl_spinlock_construct function initializes the state of a
+       spin lock.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_spinlock_construct(
+        IN      cl_spinlock_t* const    p_spinlock );
+
+

PARAMETERS

+
       p_spinlock
+               [in] Pointer to a spin lock structure whose state to initialize.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_spinlock_destroy without first calling
+       cl_spinlock_init.
+
+       Calling cl_spinlock_construct is a prerequisite to calling any other
+       spin lock function except cl_spinlock_init.
+
+

SEE ALSO

+
       Spinlock, cl_spinlock_init, cl_spinlock_destroy
+
+
+
+ +

[Functions] +Component Library: Spinlock/cl_spinlock_destroy

+ +

[top][index]

+

NAME

+
       cl_spinlock_destroy
+
+

DESCRIPTION

+
       The cl_spinlock_destroy function performs all necessary cleanup of a
+       spin lock.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_spinlock_destroy(
+        IN      cl_spinlock_t* const    p_spinlock );
+
+

PARAMETERS

+
       p_spinlock
+               [in] Pointer to a spin lock structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Performs any necessary cleanup of a spin lock. This function must only
+       be called if either cl_spinlock_construct or cl_spinlock_init has been
+       called.
+
+

SEE ALSO

+
       Spinlock, cl_spinlock_construct, cl_spinlock_init
+
+
+
+ +

[Functions] +Component Library: Spinlock/cl_spinlock_init

+ +

[top][index]

+

NAME

+
       cl_spinlock_init
+
+

DESCRIPTION

+
       The cl_spinlock_init function initializes a spin lock for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_spinlock_init(
+        IN      cl_spinlock_t* const    p_spinlock );
+
+

PARAMETERS

+
       p_spinlock
+               [in] Pointer to a spin lock structure to initialize.
+
+ RETURN VALUES
+       CL_SUCCESS if initialization succeeded.
+
+       CL_ERROR if initialization failed. Callers should call
+       cl_spinlock_destroy to clean up any resources allocated during
+       initialization.
+
+

NOTES

+
       Initialize the spin lock structure. Allows calling cl_spinlock_aquire
+       and cl_spinlock_release.
+
+

SEE ALSO

+
       Spinlock, cl_spinlock_construct, cl_spinlock_destroy,
+       cl_spinlock_acquire, cl_spinlock_release
+
+
+
+ +

[Functions] +Component Library: Spinlock/cl_spinlock_release

+ +

[top][index]

+

NAME

+
       cl_spinlock_release
+
+

DESCRIPTION

+
       The cl_spinlock_release function releases a spin lock object.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_spinlock_release(
+        IN      cl_spinlock_t* const    p_spinlock );
+
+

PARAMETERS

+
       p_spinlock
+               [in] Pointer to a spin lock structure to release.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Releases a spin lock after a call to cl_spinlock_acquire.
+
+

SEE ALSO

+
       Spinlock, cl_spinlock_acquire
+
+
+ + diff --git a/trunk/docs/complib/cl_syscallback_h.html b/trunk/docs/complib/cl_syscallback_h.html new file mode 100644 index 00000000..be83d3b7 --- /dev/null +++ b/trunk/docs/complib/cl_syscallback_h.html @@ -0,0 +1,243 @@ + + + + +./inc_doc/complib/cl_syscallback_h.html + + + + +Generated from ./inc/complib/cl_syscallback.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/System Callback

+ +

[top][index]

+

NAME

+
       System Callback
+
+

DESCRIPTION

+
       The System Callback provider uses threads from a system thread-pool to
+       invoke specified callback functions.
+
+       Callbacks can be queued in a low- or high-priority queue for processing.
+
+       cl_thread_suspend and cl_thread_stall can be used to delay or stall the
+       callback thread.
+
+       Environments that do not have a native system thread-pool emulate this
+       functionality to provide cross-environment support.
+
+       The cl_sys_callback_item_t structure should be treated as opaque and be
+       manipulated only through the provided functions.
+
+
+
+ +

[Functions] +Component Library: System Callback/cl_is_sys_callback_inited

+ +

[top][index]

+

NAME

+
       cl_is_sys_callback_inited
+
+

DESCRIPTION

+
       The cl_is_sys_callback_inited function returns whether the system
+       callback provider was initialized successfully
+
+

SYNOPSIS

+
boolean_t
+__cl_is_sys_callback_inited( void );
+/*
+* RETURN VALUES
+*       TRUE if the system callback provider was initialized successfully.
+*
+*       FALSE otherwise.
+
+

NOTES

+
       Allows checking the state of the system callback provider to determine
+       if invoking member functions is appropriate.
+
+

SEE ALSO

+
       System Callback
+
+
+
+ +

[Definitions] +Component Library: System Callback/cl_pfn_sys_callback_t

+ +

[top][index]

+

NAME

+
       cl_pfn_sys_callback_t
+
+

DESCRIPTION

+
       The cl_pfn_sys_callback_t function type defines the prototype for
+       functions invoked by the system callback provider.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_sys_callback_t)(
+        IN      void*   get_context,
+        IN      void*   queue_context );
+
+

PARAMETERS

+
       get_context
+               [in] Value of the get_context parameter specified in a call
+               to cl_sys_callback_get.
+
+       queue_context
+               [in] Value of the queue_context parameter specified in a call
+               to cl_sys_callback_queue.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the function provided by users as a parameter to the
+       cl_sys_callback_queue function.
+
+

SEE ALSO

+
       System Callback, cl_sys_callback_queue
+
+
+
+ +

[Functions] +Component Library: System Callback/cl_sys_callback_get

+ +

[top][index]

+

NAME

+
       cl_sys_callback_get
+
+

DESCRIPTION

+
       The cl_sys_callback_get function retrieves a system callback item.
+
+

SYNOPSIS

+
CL_EXPORT cl_sys_callback_item_t* CL_API
+cl_sys_callback_get(
+        IN      const void* const get_context );
+
+

PARAMETERS

+
       get_context
+               [in] Context value to pass into the callback function.
+
+ RETURN VALUES
+       Returns a pointer to a system callback item if successful.
+
+       Returns NULL if the call fails.
+
+

NOTES

+
       A system callback item must be released with a call to cl_sys_callback_put.
+
+       Care must be taken to prevent a system callback item from being returned
+       to the pool while it is queued. Callers of cl_sys_callback_queue must not
+       return the system callback item to the pool until their callback has been
+       invoked.
+
+       In Windows 2000 Kernel Mode, the get_context is a pointer to the device
+       object for which the system callback is being used.
+
+

SEE ALSO

+
       System Callback, SysCallbackPut, SysCallbackQueue
+
+
+
+ +

[Functions] +Component Library: System Callback/cl_sys_callback_put

+ +

[top][index]

+

NAME

+
       cl_sys_callback_put
+
+

DESCRIPTION

+
       The cl_sys_callback_put function releases the specified
+       system callback item.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_sys_callback_put(
+        IN      cl_sys_callback_item_t* const   p_item );
+
+

PARAMETERS

+
       p_item
+               [in] Pointer to a system callback item to release.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       The p_item parameter points to a system callback item returned by
+       a previous call to cl_sys_callback_get.
+
+       The specified system callback item must not be queued when making
+       a call to this function.  This function can, however, be called
+       from the callback function.
+
+

SEE ALSO

+
       System Callback, cl_sys_callback_get, cl_sys_callback_queue
+
+
+
+ +

[Functions] +Component Library: System Callback/cl_sys_callback_queue

+ +

[top][index]

+

NAME

+
       cl_sys_callback_queue
+
+

DESCRIPTION

+
       The cl_sys_callback_queue function queues the specified system callback item
+       for execution.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_sys_callback_queue(
+        IN      cl_sys_callback_item_t* const   p_item,
+        IN      cl_pfn_sys_callback_t                   pfn_callback,
+        IN      const void* const                               queue_context,
+        IN      const boolean_t                                 high_priority );
+
+

PARAMETERS

+
       p_item
+               [in] Pointer to a system callback item.
+
+       pfn_callback
+               [in] Pointer to a function to be invoked by the system callback module.
+               See the cl_pfn_sys_callback_t function type definition for details
+               about the callback function.
+
+       queue_context
+               [in] Value passed to the system callback function.
+
+       high_priority
+               [in] Specifies whether the request should be queued in the high- or
+               low-priority queue.
+
+ RETURN VALUES
+       CL_SUCCESS if the system callback item was successfully queued.
+
+       CL_ERROR otherwise.
+
+

NOTES

+
       A thread from the system thread pool will invoke the specified callback
+       function with the get_context value specified in the call to
+       cl_sys_callback_get and the specified context as parameters.
+
+       The high priority queue is processed before the low priority queue. There
+       is no fairness algorithm implemented for removing items from the queues.
+
+       Care should be taken to only queue a given system callback item once
+       at a time.
+
+

SEE ALSO

+
       System Callback, cl_sys_callback_get, cl_pfn_sys_callback_t
+
+
+ + diff --git a/trunk/docs/complib/cl_thread_h.html b/trunk/docs/complib/cl_thread_h.html new file mode 100644 index 00000000..a5cd9fd3 --- /dev/null +++ b/trunk/docs/complib/cl_thread_h.html @@ -0,0 +1,164 @@ + + + + +./inc_doc/complib/cl_thread_h.html + + + + +Generated from ./inc/complib/cl_thread.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Functions] +Component Library: Thread/cl_is_blockable

+ +

[top][index]

+

NAME

+
       cl_is_blockable
+
+

DESCRIPTION

+
       The cl_is_blockable indicates if the current caller context is
+       blockable.
+
+

SYNOPSIS

+
CL_EXPORT boolean_t CL_API
+cl_is_blockable( void );
+
+

RETURN VALUE

+
       TRUE if the caller's thread context can be blocked, i.e it is safe
+       to perform a sleep, or call a down operation on a semaphore.
+
+       FALSE otherwise
+
+

SEE ALSO

+
       Thread
+
+
+
+ +

[Definitions] +Component Library: Thread/cl_pfn_thread_callback_t

+ +

[top][index]

+

NAME

+
       cl_pfn_thread_callback_t
+
+

DESCRIPTION

+
       The cl_pfn_thread_callback_t function type defines the prototype
+       for functions invoked by thread objects
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_thread_callback_t)(
+        IN      void*   context );
+
+

PARAMETERS

+
       context
+               [in] Value specified in a call to cl_thread_init or
+               cl_thread_pool_create.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the function provided by users as a parameter to the cl_thread_init
+       and cl_thread_pool_create functions.
+
+

SEE ALSO

+
       Thread Pool
+
+
+
+ +

[Functions] +Component Library: Thread/cl_proc_count

+ +

[top][index]

+

NAME

+
       cl_proc_count
+
+

DESCRIPTION

+
       The cl_proc_count function returns the number of processors in the system.
+
+

SYNOPSIS

+
CL_EXPORT uint32_t CL_API
+cl_proc_count( void );
+
+

RETURN VALUE

+
       Returns the number of processors in the system.
+
+
+
+ +

[Functions] +Component Library: Thread/cl_thread_stall

+ +

[top][index]

+

NAME

+
       cl_thread_stall
+
+

DESCRIPTION

+
       The cl_thread_stall function stalls the calling thread for a minimum of
+       the specified number of microseconds.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_thread_stall(
+        IN      const uint32_t  pause_us );
+
+

PARAMETERS

+
       pause_us
+               [in] Number of microseconds to stall the calling thread.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       The cl_thread_stall function performs a busy wait for the specified
+       number of microseconds. Care should be taken when using this function as
+       it does not relinquish its quantum of operation. For longer wait
+       operations, users should call cl_thread_suspend if possible.
+
+

SEE ALSO

+
       Thread, cl_thread_suspend
+
+
+
+ +

[Functions] +Component Library: Thread/cl_thread_suspend

+ +

[top][index]

+

NAME

+
       cl_thread_suspend
+
+

DESCRIPTION

+
       The cl_thread_suspend function suspends the calling thread for a minimum
+       of the specified number of milliseconds.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_thread_suspend(
+        IN      const uint32_t  pause_ms );
+
+

PARAMETERS

+
       pause_ms
+               [in] Number of milliseconds to suspend the calling thread.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function should only be called if it is valid for the caller's thread
+       to enter a wait state. For stalling a thread that cannot enter a wait
+       state, callers should use cl_thread_stall.
+
+

SEE ALSO

+
       Thread, cl_thread_stall
+
+
+ + diff --git a/trunk/docs/complib/cl_threadpool_h.html b/trunk/docs/complib/cl_threadpool_h.html new file mode 100644 index 00000000..271413ac --- /dev/null +++ b/trunk/docs/complib/cl_threadpool_h.html @@ -0,0 +1,273 @@ + + + + +./inc_doc/complib/cl_threadpool_h.html + + + + +Generated from ./inc/complib/cl_threadpool.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Thread Pool

+ +

[top][index]

+

NAME

+
       Thread Pool
+
+

DESCRIPTION

+
       The Thread Pool manages a user specified number of threads.
+
+       Each thread in the thread pool waits for a user initiated signal before
+       invoking a user specified callback function. All threads in the thread
+       pool invoke the same callback function.
+
+       The thread pool functions operate on a cl_thread_pool_t structure which
+       should be treated as opaque, and should be manipulated only through the
+       provided functions.
+
+

SEE ALSO

+
       Structures:
+               cl_thread_pool_t
+
+       Initialization:
+               cl_thread_pool_construct, cl_thread_pool_init, cl_thread_pool_destroy
+
+       Manipulation
+               cl_thread_pool_signal
+
+
+
+ +

[Functions] +Component Library: Thread Pool/cl_thread_pool_construct

+ +

[top][index]

+

NAME

+
       cl_thread_pool_construct
+
+

DESCRIPTION

+
       The cl_thread_pool_construct function initializes the state of a
+       thread pool.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_thread_pool_construct(
+        IN      cl_thread_pool_t* const p_thread_pool );
+
+

PARAMETERS

+
       p_thread_pool
+               [in] Pointer to a thread pool structure.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_thread_pool_destroy without first calling
+       cl_thread_pool_init.
+
+       Calling cl_thread_pool_construct is a prerequisite to calling any other
+       thread pool function except cl_thread_pool_init.
+
+

SEE ALSO

+
       Thread Pool, cl_thread_pool_init, cl_thread_pool_destroy
+
+
+
+ +

[Functions] +Component Library: Thread Pool/cl_thread_pool_destroy

+ +

[top][index]

+

NAME

+
       cl_thread_pool_destroy
+
+

DESCRIPTION

+
       The cl_thread_pool_destroy function performs any necessary cleanup
+       for a thread pool.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_thread_pool_destroy(
+        IN      cl_thread_pool_t* const p_thread_pool );
+
+

PARAMETERS

+
       p_thread_pool
+               [in] Pointer to a thread pool structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function blocks until all threads exit, and must therefore not
+       be called from any of the thread pool's threads. Because of its blocking
+       nature, callers of cl_thread_pool_destroy must ensure that entering a wait
+       state is valid from the calling thread context.
+
+       This function should only be called after a call to
+       cl_thread_pool_construct or cl_thread_pool_init.
+
+

SEE ALSO

+
       Thread Pool, cl_thread_pool_construct, cl_thread_pool_init
+
+
+
+ +

[Functions] +Component Library: Thread Pool/cl_thread_pool_init

+ +

[top][index]

+

NAME

+
       cl_thread_pool_init
+
+

DESCRIPTION

+
       The cl_thread_pool_init function creates the threads to be
+       managed by a thread pool.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_thread_pool_init(
+        IN      cl_thread_pool_t* const         p_thread_pool,
+        IN      uint32_t                                        thread_count,
+        IN      cl_pfn_thread_callback_t        pfn_callback,
+        IN      const void* const                       context,
+        IN      const char* const                       name );
+
+

PARAMETERS

+
       p_thread_pool
+               [in] Pointer to a thread pool structure to initialize.
+
+       thread_count
+               [in] Number of threads to be managed by the thread pool.
+
+       pfn_callback
+               [in] Address of a function to be invoked by a thread.
+               See the cl_pfn_thread_callback_t function type definition for
+               details about the callback function.
+
+       context
+               [in] Value to pass to the callback function.
+
+       name
+               [in] Name to associate with the threads.  The name may be up to 16
+               characters, including a terminating null character.  All threads
+               created in the pool have the same name.
+
+ RETURN VALUES
+       CL_SUCCESS if the thread pool creation succeeded.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to inititalize
+       the thread pool.
+
+       CL_ERROR if the threads could not be created.
+
+

NOTES

+
       cl_thread_pool_init creates and starts the specified number of threads.
+       If thread_count is zero, the thread pool creates as many threads as there
+       are processors in the system.
+
+

SEE ALSO

+
       Thread Pool, cl_thread_pool_construct, cl_thread_pool_destroy,
+       cl_thread_pool_signal, cl_pfn_thread_callback_t
+
+
+
+ +

[Functions] +Component Library: Thread Pool/cl_thread_pool_signal

+ +

[top][index]

+

NAME

+
       cl_thread_pool_signal
+
+

DESCRIPTION

+
       The cl_thread_pool_signal function signals a single thread of
+       the thread pool to invoke the thread poolÂ’s callback function.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_thread_pool_signal(
+        IN      cl_thread_pool_t* const p_thread_pool );
+
+

PARAMETERS

+
       p_thread_pool
+               [in] Pointer to a thread pool structure to signal.
+
+ RETURN VALUES
+       CL_SUCCESS if the thread pool was successfully signalled.
+
+       CL_ERROR otherwise.
+
+

NOTES

+
       Each call to this function wakes up at most one waiting thread in
+       the thread pool.
+
+       If all threads are running, cl_thread_pool_signal has no effect.
+
+

SEE ALSO

+
       Thread Pool
+
+
+
+ +

[Structures] +Component Library: Thread Pool/cl_thread_pool_t

+ +

[top][index]

+

NAME

+
       cl_thread_pool_t
+
+

DESCRIPTION

+
       Thread pool structure.
+
+       The cl_thread_pool_t structure should be treated as opaque, and should be
+       manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_thread_pool
+{
+        cl_pfn_thread_callback_t        pfn_callback;
+        const void                                      *context;
+        cl_list_t                                       thread_list;
+        cl_event_t                                      wakeup_event;
+        cl_event_t                                      destroy_event;
+        boolean_t                                       exit;
+        cl_state_t                                      state;
+        atomic32_t                                      running_count;
+
+} cl_thread_pool_t;
+
+

FIELDS

+
       pfn_callback
+               Callback function for the thread to invoke.
+
+       context
+               Context to pass to the thread callback function.
+
+       thread_list
+               List of threads managed by the thread pool.
+
+       event
+               Event used to signal threads to wake up and do work.
+
+       destroy_event
+               Event used to signal threads to exit.
+
+       exit
+               Flag used to indicates threads to exit.
+
+       state
+               State of the thread pool.
+
+       running_count
+               Number of threads running.
+
+

SEE ALSO

+
       Thread Pool
+
+
+ + diff --git a/trunk/docs/complib/cl_timer_h.html b/trunk/docs/complib/cl_timer_h.html new file mode 100644 index 00000000..8ab64488 --- /dev/null +++ b/trunk/docs/complib/cl_timer_h.html @@ -0,0 +1,432 @@ + + + + +./inc_doc/complib/cl_timer_h.html + + + + +Generated from ./inc/complib/cl_timer.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:23 +
+
+ +

[Modules] +Component Library/Timer

+ +

[top][index]

+

NAME

+
       Timer
+
+

DESCRIPTION

+
       The Timer provides the ability to schedule a function to be invoked at
+       a given time in the future.
+
+       The timer callback function must not perform any blocking operations.
+
+       The timer functions operate on a cl_timer_t structure which should be
+       treated as opaque and should be manipulated only through the provided
+       functions.
+
+

SEE ALSO

+
       Structures:
+               cl_timer_t
+
+       Callbacks:
+               cl_pfn_timer_callback_t
+
+       Initialization:
+               cl_timer_construct, cl_timer_init, cl_timer_destroy
+
+       Manipulation:
+               cl_timer_start, cl_timer_stop
+
+
+
+ +

[Functions] +Component Library: Time Stamp/cl_get_tick_count

+ +

[top][index]

+

NAME

+
       cl_get_tick_count
+
+

DESCRIPTION

+
       The cl_get_tick_count function returns the raw high-resolution
+       performance counter value.
+
+

SYNOPSIS

+
CL_EXPORT uint64_t CL_API
+cl_get_tick_count( void );
+
+

RETURN VALUE

+
       Value of the high-resolution performance counter.
+
+

SEE ALSO

+
       Timer, cl_get_time_stamp, cl_get_tick_freq
+
+
+
+ +

[Functions] +Component Library: Time Stamp/cl_get_tick_freq

+ +

[top][index]

+

NAME

+
       cl_get_tick_freq
+
+

DESCRIPTION

+
       The cl_get_tick_freq function returns the frequency of the
+       high-resolution performance counter.
+
+

SYNOPSIS

+
CL_EXPORT uint64_t CL_API
+cl_get_tick_freq( void );
+
+

RETURN VALUE

+
       The frequency of the high-resolution performance counter.
+
+

SEE ALSO

+
       Timer, cl_get_time_stamp, cl_get_tick_count
+
+
+
+ +

[Functions] +Component Library: Time Stamp/cl_get_time_stamp

+ +

[top][index]

+

NAME

+
       cl_get_time_stamp
+
+

DESCRIPTION

+
       The cl_get_time_stamp function returns the current time stamp in
+       microseconds since the system was booted.
+
+

SYNOPSIS

+
CL_EXPORT uint64_t CL_API
+cl_get_time_stamp( void );
+
+

RETURN VALUE

+
       Time elapsed, in microseconds, since the system was booted.
+
+

SEE ALSO

+
       Timer, cl_get_time_stamp_usec, cl_get_time_stamp_sec
+
+
+
+ +

[Functions] +Component Library: Time Stamp/cl_get_time_stamp_sec

+ +

[top][index]

+

NAME

+
       cl_get_time_stamp_sec
+
+

DESCRIPTION

+
       The cl_get_time_stamp_sec function returns the current time stamp in
+       seconds since the system was booted.
+
+

SYNOPSIS

+
CL_EXPORT uint32_t CL_API
+cl_get_time_stamp_sec( void );
+
+

RETURN VALUE

+
       Time elapsed, in seconds, since the system was booted.
+
+

SEE ALSO

+
       Timer, cl_get_time_stamp
+
+
+
+ +

[Functions] +Component Library: Time Stamp/cl_get_time_stamp_usec

+ +

[top][index]

+

NAME

+
       cl_get_time_stamp_usec
+
+

DESCRIPTION

+
       The cl_get_time_stamp_usec function returns the current time stamp in
+       microseconds since the system was booted.
+
+

SYNOPSIS

+
CL_INLINE uint64_t CL_API
+cl_get_time_stamp_usec( void )
+{
+        return cl_get_time_stamp();
+}
+
+

RETURN VALUE

+
       Time elapsed, in microseconds, since the system was booted.
+
+

SEE ALSO

+
       Timer, cl_get_time_stamp, cl_get_time_stamp_sec
+
+
+
+ +

[Definitions] +Component Library: Timer/cl_pfn_timer_callback_t

+ +

[top][index]

+

NAME

+
       cl_pfn_timer_callback_t
+
+

DESCRIPTION

+
       The cl_pfn_timer_callback_t function type defines the prototype for
+       functions used to notify users of a timer expiration.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_timer_callback_t)(
+        IN void*        context );
+
+

PARAMETERS

+
       context
+               [in] Value specified in a previous call to cl_timer_init.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for the
+       function provided by users as a parameter to the cl_timer_init function.
+
+

SEE ALSO

+
       Timer, cl_timer_init
+
+
+
+ +

[Functions] +Component Library: Timer/cl_timer_construct

+ +

[top][index]

+

NAME

+
       cl_timer_construct
+
+

DESCRIPTION

+
       The cl_timer_construct function initializes the state of a timer.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_timer_construct(
+        IN      cl_timer_t* const       p_timer );
+
+

PARAMETERS

+
       p_timer
+               [in] Pointer to a cl_timer_t structure whose state to initialize.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_timer_destroy without first calling cl_timer_init.
+
+       Calling cl_timer_construct is a prerequisite to calling any other
+       timer function except cl_timer_init.
+
+

SEE ALSO

+
       Timer, cl_timer_init, cl_timer_destroy
+
+
+
+ +

[Functions] +Component Library: Timer/cl_timer_destroy

+ +

[top][index]

+

NAME

+
       cl_timer_destroy
+
+

DESCRIPTION

+
       The cl_timer_destroy function performs any necessary cleanup of a timer.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_timer_destroy(
+        IN      cl_timer_t* const       p_timer );
+
+

PARAMETERS

+
       p_timer
+               [in] Pointer to a cl_timer_t structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_timer_destroy cancels any pending callbacks.
+
+       This function should only be called after a call to cl_timer_construct
+       or cl_timer_init.
+
+

SEE ALSO

+
       Timer, cl_timer_construct, cl_timer_init
+
+
+
+ +

[Functions] +Component Library: Timer/cl_timer_init

+ +

[top][index]

+

NAME

+
       cl_timer_init
+
+

DESCRIPTION

+
       The cl_timer_init function initializes a timer for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_timer_init(
+        IN      cl_timer_t* const               p_timer,
+        IN      cl_pfn_timer_callback_t pfn_callback,
+        IN      const void* const               context );
+
+

PARAMETERS

+
       p_timer
+               [in] Pointer to a cl_timer_t structure to initialize.
+
+       pfn_callback
+               [in] Address of a callback function to be invoked when a timer expires.
+               See the cl_pfn_timer_callback_t function type definition for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback function.
+
+ RETURN VALUES
+       CL_SUCCESS if the timer was successfully initialized.
+
+       CL_ERROR otherwise.
+
+

NOTES

+
       Allows calling cl_timer_start and cl_timer_stop.
+
+

SEE ALSO

+
       Timer, cl_timer_construct, cl_timer_destroy, cl_timer_start,
+       cl_timer_stop, cl_pfn_timer_callback_t
+
+
+
+ +

[Functions] +Component Library: Timer/cl_timer_start

+ +

[top][index]

+

NAME

+
       cl_timer_start
+
+

DESCRIPTION

+
       The cl_timer_start function sets a timer to expire after a given interval.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_timer_start(
+        IN      cl_timer_t* const       p_timer,
+        IN      const uint32_t          time_ms );
+
+

PARAMETERS

+
       p_timer
+               [in] Pointer to a cl_timer_t structure to schedule.
+
+       time_ms
+               [in] Time, in milliseconds, before the timer should expire.
+
+ RETURN VALUES
+       CL_SUCCESS if the timer was successfully scheduled.
+
+       CL_ERROR otherwise.
+
+

NOTES

+
       cl_timer_start implicitly stops the timer before being scheduled.
+
+       The interval specified by the time_ms parameter is a minimum interval.
+       The timer is guaranteed to expire no sooner than the desired interval, but
+       may take longer to expire.
+
+

SEE ALSO

+
       Timer, cl_timer_stop, cl_timer_trim
+
+
+
+ +

[Functions] +Component Library: Timer/cl_timer_stop

+ +

[top][index]

+

NAME

+
       cl_timer_stop
+
+

DESCRIPTION

+
       The cl_timer_stop function stops a pending timer from expiring.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_timer_stop(
+        IN      cl_timer_t* const       p_timer );
+
+

PARAMETERS

+
       p_timer
+               [in] Pointer to a cl_timer_t structure.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

SEE ALSO

+
       Timer, cl_timer_start, cl_timer_trim
+
+
+
+ +

[Functions] +Component Library: Timer/cl_timer_trim

+ +

[top][index]

+

NAME

+
       cl_timer_trim
+
+

DESCRIPTION

+
       The cl_timer_trim function pulls in the absolute expiration
+       time of a timer if the current expiration time exceeds the specified
+       interval.
+
+       sets a timer to expire after a given
+       interval if that interval is less than the current timer expiration.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_timer_trim(
+        IN      cl_timer_t* const       p_timer,
+        IN      const uint32_t          time_ms );
+
+

PARAMETERS

+
       p_timer
+               [in] Pointer to a cl_timer_t structure to schedule.
+
+       time_ms
+               [in] Maximum time, in milliseconds, before the timer should expire.
+
+ RETURN VALUES
+       CL_SUCCESS if the timer was successfully scheduled.
+
+       CL_ERROR otherwise.
+
+

NOTES

+
       cl_timer_trim has no effect if the time interval is greater than the
+       remaining time when the timer is set.
+
+       If the new interval time is less than the remaining time, cl_timer_trim
+       implicitly stops the timer before reseting it.
+
+       If the timer is reset, it is guaranteed to expire no sooner than the
+       new interval, but may take longer to expire.
+
+

SEE ALSO

+
       Timer, cl_timer_start, cl_timer_stop
+
+
+ + diff --git a/trunk/docs/complib/cl_types_h.html b/trunk/docs/complib/cl_types_h.html new file mode 100644 index 00000000..4436b0ff --- /dev/null +++ b/trunk/docs/complib/cl_types_h.html @@ -0,0 +1,410 @@ + + + + +./inc_doc/complib/cl_types_h.html + + + + +Generated from ./inc/complib/cl_types.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:23 +
+
+ +

[Definitions] +Component Library/Data Types

+ +

[top][index]

+

NAME

+
       Data Types
+
+

DESCRIPTION

+
       The component library provides and uses explicitly sized types.
+
+

VALUES

+
       char
+               8-bit, defined by compiler.
+
+       void
+               0-bit, defined by compiler.
+
+       int8_t
+               8-bit signed integer.
+
+       uint8_t
+               8-bit unsigned integer.
+
+       int16_t
+               16-bit signed integer.
+
+       uint16_t
+               16-bit unsigned integer.
+
+       net16_t
+               16-bit network byte order value.
+
+       int32_t
+               32-bit signed integer.
+
+       uint32_t
+               32-bit unsigned integer.
+
+       net32_t
+               32-bit network byte order value.
+
+       int64_t
+               64-bit signed integer.
+
+       uint64_t
+               64-bit unsigned integer.
+
+       net64_t
+               64-bit network byte order value.
+
+       intn_t
+               Signed natural sized integer.  32-bit on a 32-bit platform, 64-bit on
+               a 64-bit platform.
+
+       uintn_t
+               Unsigned natural sized integer.  32-bit on a 32-bit platform, 64-bit on
+               a 64-bit platform.
+
+       boolean_t
+               integral sized.  Set to TRUE or FALSE and used in logical expressions.
+
+

NOTES

+
       Pointer types are not defined as these provide no value and can potentially
+       lead to naming confusion.
+
+
+
+ +

[Definitions] +Component Library/Object States

+ +

[top][index]

+

NAME

+
       Object States
+
+

DESCRIPTION

+
       The object states enumerated type defines the valid states of components.
+
+

SYNOPSIS

+
typedef enum _cl_state
+{
+        CL_UNINITIALIZED = 1,
+        CL_INITIALIZED,
+        CL_DESTROYING,
+        CL_DESTROYED
+
+} cl_state_t;
+
+

VALUES

+
       CL_UNINITIALIZED
+               Indicates that initialization was not invoked successfully.
+
+       CL_INITIALIZED
+               Indicates initialization was successful.
+
+       CL_DESTROYING
+               Indicates that the object is undergoing destruction.
+
+       CL_DESTROYED
+               Indicates that the object's destructor has already been called.  Most
+               objects set their final state to CL_DESTROYED before freeing the
+               memory associated with the object.
+
+
+
+ +

[Definitions] +Component Library/Parameter Keywords

+ +

[top][index]

+

NAME

+
       Parameter Keywords
+
+

DESCRIPTION

+
       The Parameter Keywords can be used to clarify the usage of function
+       parameters to users.
+
+

VALUES

+
       IN
+               Designates that the parameter is used as input to a function.
+
+       OUT
+               Designates that the parameter's value will be set by the function.
+
+       OPTIONAL
+               Designates that the parameter is optional, and may be NULL.
+               The OPTIONAL keyword, if used, follows the parameter name.
+
+

EXAMPLE

+
       // Function declaration.
+       void*
+       my_func(
+           IN void* const p_param1,
+           OUT void** const p_handle OPTIONAL );
+
+

NOTES

+
       Multiple keywords can apply to a single parameter. The IN and OUT
+       keywords precede the parameter type. The OPTIONAL
+       keyword, if used, follows the parameter name.
+
+
+
+ +

[Definitions] +Component Library: Data Types/CL_STATUS_MSG

+ +

[top][index]

+

NAME

+
       CL_STATUS_MSG
+
+

DESCRIPTION

+
       The CL_STATUS_MSG macro returns a textual representation of
+       an cl_status_t code.
+
+

SYNOPSIS

+
*       const char*
+*       CL_STATUS_MSG(
+*               IN cl_status_t errcode );
+
+

PARAMETERS

+
       errcode
+               [in] cl_status_t code for which to return a text representation.
+
+

RETURN VALUE

+
       Pointer to a string containing a textual representation of the errcode
+       parameter.
+
+

NOTES

+
       This function performs boundary checking on the cl_status_t value,
+       masking off the upper 24-bits. If the value is out of bounds, the string
+       "invalid status code" is returned.
+
+

SEE ALSO

+
       cl_status_t
+
+
+
+ +

[Definitions] +Component Library: Data Types/cl_status_t

+ +

[top][index]

+

NAME

+
       cl_status_t
+
+

DESCRIPTION

+
       The cl_status_t return types are used by the component library to
+       provide detailed function return values.
+
+

SYNOPSIS

+
typedef enum _cl_status
+{
+        CL_SUCCESS = 0,
+        CL_ERROR,
+        CL_INVALID_STATE,
+        CL_INVALID_OPERATION,
+        CL_INVALID_SETTING,
+        CL_INVALID_PARAMETER,
+        CL_INSUFFICIENT_RESOURCES,
+        CL_INSUFFICIENT_MEMORY,
+        CL_INVALID_PERMISSION,
+        CL_COMPLETED,
+        CL_NOT_DONE,
+        CL_PENDING,
+        CL_TIMEOUT,
+        CL_CANCELED,
+        CL_REJECT,
+        CL_OVERRUN,
+        CL_NOT_FOUND,
+        CL_UNAVAILABLE,
+        CL_BUSY,
+        CL_DISCONNECT,
+        CL_DUPLICATE,
+        CL_INVALID_REQUEST,
+
+        CL_STATUS_COUNT                 /* should be the last value */
+
+} cl_status_t;
+
+

SEE ALSO

+
       Data Types, CL_STATUS_MSG
+
+
+
+ +

[Functions] +Component Library: Error Trapping/cl_panic

+ +

[top][index]

+

NAME

+
       cl_panic
+
+

DESCRIPTION

+
       Halts execution of the current process.  Halts the system if called in
+       from the kernel.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_panic(
+        IN      const char* const       message,
+        IN      ... );
+
+

PARAMETERS

+
       message
+               [in] ANSI string formatted identically as for a call to the standard C
+               function printf describing the cause for the panic.
+
+       ...
+               [in] Extra parameters for string formatting, as defined for the
+               standard C function printf.
+
+

RETURN VALUE

+
       This function does not return.
+
+

NOTES

+
       The formatting of the message string is the same as for printf
+
+       cl_panic sends the message to the current message logging target.
+
+
+
+ +

[Definitions] +Component Library: Object States/cl_is_state_valid

+ +

[top][index]

+

NAME

+
       cl_is_state_valid
+
+

DESCRIPTION

+
       The cl_is_state_valid function returns whether a state has a valid value.
+
+

SYNOPSIS

+
CL_INLINE boolean_t CL_API
+cl_is_state_valid(
+        IN      const cl_state_t        state )
+{
+        return( (state == CL_UNINITIALIZED) || (state == CL_INITIALIZED) ||
+                (state == CL_DESTROYING) || (state == CL_DESTROYED) );
+}
+
+

PARAMETERS

+
       state
+               State whose value to validate.
+
+ RETURN VALUES
+       TRUE if the specified state has a valid value.
+
+       FALSE otherwise.
+
+

NOTES

+
       This function is used in debug builds to check for valid states.  If an
+       uninitialized object is passed, the memory for the state may cause the
+       state to have an invalid value.
+
+

SEE ALSO

+
       Object States
+
+
+
+ +

[Definitions] +Component Library: Pointer Manipulation/offsetof

+ +

[top][index]

+

NAME

+
       offsetof
+
+

DESCRIPTION

+
       The offsetof macro returns the offset of a member within a structure.
+
+

SYNOPSIS

+
*       uintn_t
+*       offsetof(
+*               IN TYPE,
+*               IN MEMBER );
+
+

PARAMETERS

+
       TYPE
+               [in] Name of the structure containing the specified member.
+
+       MEMBER
+               [in] Name of the member whose offset in the specified structure
+               is to be returned.
+
+

RETURN VALUE

+
       Number of bytes from the beginning of the structure to the
+       specified member.
+
+

SEE ALSO

+
       PARENT_STRUCT
+
+
+
+ +

[Definitions] +Component Library: Pointer Manipulation/PARENT_STRUCT

+ +

[top][index]

+

NAME

+
       PARENT_STRUCT
+
+

DESCRIPTION

+
       The PARENT_STRUCT macro returns a pointer to a structure
+       given a name and pointer to one of its members.
+
+

SYNOPSIS

+
*       PARENT_TYPE*
+*       PARENT_STRUCT(
+*               IN void* const p_member,
+*               IN PARENT_TYPE,
+*               IN MEMBER_NAME );
+
+

PARAMETERS

+
       p_member
+               [in] Pointer to the MEMBER_NAME member of a PARENT_TYPE structure.
+
+       PARENT_TYPE
+               [in] Name of the structure containing the specified member.
+
+       MEMBER_NAME
+               [in] Name of the member whose address is passed in the p_member
+               parameter.
+
+

RETURN VALUE

+
       Pointer to a structure of type PARENT_TYPE whose MEMBER_NAME member is
+       located at p_member.
+
+

SEE ALSO

+
       offsetof
+
+
+
+ +

[Definitions] +Component Library: Unreferenced Parameters/UNUSED_PARAM

+ +

[top][index]

+

NAME

+
       UNUSED_PARAM
+
+

DESCRIPTION

+
       The UNUSED_PARAM macro can be used to eliminates compiler warnings related
+       to intentionally unused formal parameters in function implementations.
+
+

SYNOPSIS

+
*       UNUSED_PARAM( P )
+
+

EXAMPLE

+
       void my_func( int32_t value )
+       {
+               UNUSED_PARAM( value );
+       }
+
+
+ + diff --git a/trunk/docs/complib/cl_vector_h.html b/trunk/docs/complib/cl_vector_h.html new file mode 100644 index 00000000..d3432266 --- /dev/null +++ b/trunk/docs/complib/cl_vector_h.html @@ -0,0 +1,984 @@ + + + + +./inc_doc/complib/cl_vector_h.html + + + + +Generated from ./inc/complib/cl_vector.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:23 +
+
+ +

[Modules] +Component Library/Vector

+ +

[top][index]

+

NAME

+
       Vector
+
+

DESCRIPTION

+
       The Vector is a self-sizing array. Like a traditonal array, a vector
+       allows efficient constant time access to elements with a specified index.
+       A vector grows transparently as the user adds elements to the array.
+
+       As the vector grows in size, it does not relocate existing elements in
+       memory. This allows using pointers to elements stored in a Vector.
+
+       Users can supply an initializer functions that allow a vector to ensure
+       that new items added to the vector are properly initialized. A vector
+       calls the initializer function on a per object basis when growing the
+       array. The initializer is optional.
+
+       The initializer function can fail, and returns a cl_status_t. The vector
+       will call the destructor function, if provided, for an element that
+       failed initialization. If an initializer fails, a vector does not call
+       the initializer for objects in the remainder of the new memory allocation.
+
+       The cl_vector_t structure should be treated as opaque and should be
+       manipulated only through the provided functions.
+
+

SEE ALSO

+
       Structures:
+               cl_vector_t
+
+       Callbacks:
+               cl_pfn_vec_init_t, cl_pfn_vec_dtor_t, cl_pfn_vec_apply_t,
+               cl_pfn_vec_find_t
+
+       Item Manipulation:
+               cl_vector_set_obj, cl_vector_obj
+
+       Initialization:
+               cl_vector_construct, cl_vector_init, cl_vector_destroy
+
+       Manipulation:
+               cl_vector_get_capacity, cl_vector_set_capacity,
+               cl_vector_get_size, cl_vector_set_size, cl_vector_set_min_size
+               cl_vector_get_ptr, cl_vector_get, cl_vector_at, cl_vector_set
+
+       Search:
+               cl_vector_find_from_start, cl_vector_find_from_end
+               cl_vector_apply_func
+
+
+
+ +

[Definitions] +Component Library: Vector/cl_pfn_vec_apply_t

+ +

[top][index]

+

NAME

+
       cl_pfn_vec_apply_t
+
+

DESCRIPTION

+
       The cl_pfn_vec_apply_t function type defines the prototype for functions
+       used to iterate elements in a vector.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_vec_apply_t)(
+        IN      const size_t            index,
+        IN      void* const                     p_element,
+        IN      void*                           context );
+
+

PARAMETERS

+
       index
+               [in] Index of the element.
+
+       p_element
+               [in] Pointer to an element at the specified index in the vector.
+
+       context
+               [in] Context provided in a call to cl_vector_apply_func.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the function passed by users as a parameter to the cl_vector_apply_func
+       function.
+
+

SEE ALSO

+
       Vector, cl_vector_apply_func
+
+
+
+ +

[Definitions] +Component Library: Vector/cl_pfn_vec_dtor_t

+ +

[top][index]

+

NAME

+
       cl_pfn_vec_dtor_t
+
+

DESCRIPTION

+
       The cl_pfn_vec_dtor_t function type defines the prototype for functions
+       used as destructor for elements being deallocated from a vector.
+
+

SYNOPSIS

+
typedef void
+(CL_API *cl_pfn_vec_dtor_t)(
+        IN      void* const                     p_element,
+        IN      void*                           context );
+
+

PARAMETERS

+
       p_element
+               [in] Pointer to an element being deallocated from a vector.
+
+       context
+               [in] Context provided in a call to cl_vector_init.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the destructor function provided by users as an optional parameter to
+       the cl_vector_init function.
+
+

SEE ALSO

+
       Vector, cl_vector_init
+
+
+
+ +

[Definitions] +Component Library: Vector/cl_pfn_vec_find_t

+ +

[top][index]

+

NAME

+
       cl_pfn_vec_find_t
+
+

DESCRIPTION

+
       The cl_pfn_vec_find_t function type defines the prototype for functions
+       used to find elements in a vector.
+
+

SYNOPSIS

+
typedef cl_status_t
+(CL_API *cl_pfn_vec_find_t)(
+        IN      const size_t            index,
+        IN      const void* const       p_element,
+        IN      void*                           context );
+
+

PARAMETERS

+
       index
+               [in] Index of the element.
+
+       p_element
+               [in] Pointer to an element at the specified index in the vector.
+
+       context
+               [in] Context provided in a call to cl_vector_find_from_start or
+               cl_vector_find_from_end.
+
+ RETURN VALUES
+       Return CL_SUCCESS if the element was found. This stops vector iteration.
+
+       CL_NOT_FOUND to continue the vector iteration.
+
+

NOTES

+
       This function type is provided as function prototype reference for the
+       function provided by users as a parameter to the cl_vector_find_from_start
+       and cl_vector_find_from_end functions.
+
+

SEE ALSO

+
       Vector, cl_vector_find_from_start, cl_vector_find_from_end
+
+
+
+ +

[Definitions] +Component Library: Vector/cl_pfn_vec_init_t

+ +

[top][index]

+

NAME

+
       cl_pfn_vec_init_t
+
+

DESCRIPTION

+
       The cl_pfn_vec_init_t function type defines the prototype for functions
+       used as initializer for elements being allocated by a vector.
+
+

SYNOPSIS

+
typedef cl_status_t
+(CL_API *cl_pfn_vec_init_t)(
+        IN      void* const                     p_element,
+        IN      void*                           context );
+
+

PARAMETERS

+
       p_element
+               [in] Pointer to an element being added to a vector.
+
+       context
+               [in] Context provided in a call to cl_vector_init.
+
+ RETURN VALUES
+       Return CL_SUCCESS to indicate that the element was initialized successfully.
+
+       Other cl_status_t values will be returned by the cl_vector_init,
+       cl_vector_set_size, and cl_vector_set_min_size functions.
+
+       In situations where the vector's size needs to grows in order to satisfy
+       a call to cl_vector_set, a non-successful status returned by the
+       initializer callback causes the growth to stop.
+
+

NOTES

+
       This function type is provided as function prototype reference for
+       the initializer function provided by users as an optional parameter to
+       the cl_vector_init function.
+
+

SEE ALSO

+
       Vector, cl_vector_init
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_apply_func

+ +

[top][index]

+

NAME

+
       cl_vector_apply_func
+
+

DESCRIPTION

+
       The cl_vector_apply_func function invokes a specified function for every
+       element in a vector.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_vector_apply_func(
+        IN      const cl_vector_t* const        p_vector,
+        IN      cl_pfn_vec_apply_t                      pfn_callback,
+        IN      const void* const                       context );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure whose elements to iterate.
+
+       pfn_callback
+               [in] Function invoked for every element in the array.
+               See the cl_pfn_vec_apply_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback function.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_vector_apply_func invokes the specified function for every element
+       in the vector, starting from the beginning of the vector.
+
+

SEE ALSO

+
       Vector, cl_vector_find_from_start, cl_vector_find_from_end,
+       cl_pfn_vec_apply_t
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_at

+ +

[top][index]

+

NAME

+
       cl_vector_at
+
+

DESCRIPTION

+
       The cl_vector_at function copies an element stored in a vector at a
+       specified index, performing boundary checks.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_vector_at(
+        IN      const cl_vector_t* const        p_vector,
+        IN      const size_t                            index,
+        OUT     void* const                                     p_element );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure from which to get a copy of
+               an element.
+
+       index
+               [in] Index of the element.
+
+       p_element
+               [out] Pointer to storage for the element. Contains a copy of the
+               desired element upon successful completion of the call.
+
+ RETURN VALUES
+       CL_SUCCESS if an element was found at the specified index.
+
+       CL_INVALID_SETTING if the index was out of range.
+
+

NOTES

+
       cl_vector_at provides constant time access regardless of the index, and
+       performs boundary checking on the vector.
+
+       Upon success, the p_element parameter contains a copy of the desired element.
+
+

SEE ALSO

+
       Vector, cl_vector_get, cl_vector_get_ptr
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_construct

+ +

[top][index]

+

NAME

+
       cl_vector_construct
+
+

DESCRIPTION

+
       The cl_vector_construct function constructs a vector.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_vector_construct(
+        IN      cl_vector_t* const      p_vector );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure to construct.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       Allows calling cl_vector_destroy without first calling cl_vector_init.
+
+       Calling cl_vector_construct is a prerequisite to calling any other
+       vector function except cl_vector_init.
+
+

SEE ALSO

+
       Vector, cl_vector_init, cl_vector_destroy
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_destroy

+ +

[top][index]

+

NAME

+
       cl_vector_destroy
+
+

DESCRIPTION

+
       The cl_vector_destroy function destroys a vector.
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_vector_destroy(
+        IN      cl_vector_t* const      p_vector );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure to destroy.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_vector_destroy frees all memory allocated for the vector. The vector
+       is left initialized to a zero capacity and size.
+
+       This function should only be called after a call to cl_vector_construct
+       or cl_vector_init.
+
+

SEE ALSO

+
       Vector, cl_vector_construct, cl_vector_init
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_find_from_end

+ +

[top][index]

+

NAME

+
       cl_vector_find_from_end
+
+

DESCRIPTION

+
       The cl_vector_find_from_end function uses a specified function to search
+       for elements in a vector starting from the highest index.
+
+

SYNOPSIS

+
CL_EXPORT size_t CL_API
+cl_vector_find_from_end(
+        IN      const cl_vector_t* const        p_vector,
+        IN      cl_pfn_vec_find_t                       pfn_callback,
+        IN      const void* const                       context );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure to inititalize.
+
+       pfn_callback
+               [in] Function invoked to determine if a match was found.
+               See the cl_pfn_vec_find_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback function.
+
+ RETURN VALUES
+       Index of the element, if found.
+
+       Size of the vector if the element was not found.
+
+

NOTES

+
       cl_vector_find_from_end does not remove the found element from
+       the vector. The index of the element is returned when the function
+       provided by the pfn_callback parameter returns CL_SUCCESS.
+
+

SEE ALSO

+
       Vector, cl_vector_find_from_start, cl_vector_apply_func,
+       cl_pfn_vec_find_t
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_find_from_start

+ +

[top][index]

+

NAME

+
       cl_vector_find_from_start
+
+

DESCRIPTION

+
       The cl_vector_find_from_start function uses a specified function to
+       search for elements in a vector starting from the lowest index.
+
+

SYNOPSIS

+
CL_EXPORT size_t CL_API
+cl_vector_find_from_start(
+        IN      const cl_vector_t* const        p_vector,
+        IN      cl_pfn_vec_find_t                       pfn_callback,
+        IN      const void* const                       context );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure to inititalize.
+
+       pfn_callback
+               [in] Function invoked to determine if a match was found.
+               See the cl_pfn_vec_find_t function type declaration for details
+               about the callback function.
+
+       context
+               [in] Value to pass to the callback function.
+
+ RETURN VALUES
+       Index of the element, if found.
+
+       Size of the vector if the element was not found.
+
+

NOTES

+
       cl_vector_find_from_start does not remove the found element from
+       the vector. The index of the element is returned when the function
+       provided by the pfn_callback parameter returns CL_SUCCESS.
+
+

SEE ALSO

+
       Vector, cl_vector_find_from_end, cl_vector_apply_func, cl_pfn_vec_find_t
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_get

+ +

[top][index]

+

NAME

+
       cl_vector_get
+
+

DESCRIPTION

+
       The cl_vector_get function copies an element stored in a vector at a
+       specified index.
+
+

SYNOPSIS

+
CL_INLINE void CL_API
+cl_vector_get(
+        IN      const cl_vector_t* const        p_vector,
+        IN      const size_t                            index,
+        OUT     void* const                                     p_element )
+{
+        void *p_src;
+
+        CL_ASSERT( p_vector );
+        CL_ASSERT( p_vector->state == CL_INITIALIZED );
+        CL_ASSERT( p_element );
+
+        /* Get a pointer to the element. */
+        p_src = cl_vector_get_ptr( p_vector, index );
+        p_vector->pfn_copy( p_element, p_src, p_vector->element_size );
+}
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure from which to get a copy of
+               an element.
+
+       index
+               [in] Index of the element.
+
+       p_element
+               [out] Pointer to storage for the element. Contains a copy of the
+               desired element upon successful completion of the call.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

NOTES

+
       cl_vector_get provides constant time access regardless of the index.
+
+       cl_vector_get does not perform boundary checking on the vector, and
+       callers are responsible for providing an index that is within the range
+       of the vector. To access elements after performing boundary checks,
+       use cl_vector_at.
+
+       The p_element parameter contains a copy of the desired element upon
+       return from this function.
+
+

SEE ALSO

+
       Vector, cl_vector_get_ptr, cl_vector_at
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_get_capacity

+ +

[top][index]

+

NAME

+
       cl_vector_get_capacity
+
+

DESCRIPTION

+
       The cl_vector_get_capacity function returns the capacity of a vector.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_vector_get_capacity(
+        IN      const cl_vector_t* const        p_vector )
+{
+        CL_ASSERT( p_vector );
+        CL_ASSERT( p_vector->state == CL_INITIALIZED );
+
+        return( p_vector->capacity );
+}
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure whose capacity to return.
+
+

RETURN VALUE

+
       Capacity, in elements, of the vector.
+
+

NOTES

+
       The capacity is the number of elements that the vector can store, and
+       can be greater than the number of elements stored. To get the number of
+       elements stored in the vector, use cl_vector_get_size.
+
+

SEE ALSO

+
       Vector, cl_vector_set_capacity, cl_vector_get_size
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_get_ptr

+ +

[top][index]

+

NAME

+
       cl_vector_get_ptr
+
+

DESCRIPTION

+
       The cl_vector_get_ptr function returns a pointer to an element
+       stored in a vector at a specified index.
+
+

SYNOPSIS

+
CL_INLINE void* CL_API
+cl_vector_get_ptr(
+        IN      const cl_vector_t* const        p_vector,
+        IN      const size_t                            index )
+{
+        CL_ASSERT( p_vector );
+        CL_ASSERT( p_vector->state == CL_INITIALIZED );
+
+        return( p_vector->p_ptr_array[index] );
+}
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure from which to get a
+               pointer to an element.
+
+       index
+               [in] Index of the element.
+
+

RETURN VALUE

+
       Pointer to the element stored at specified index.
+
+

NOTES

+
       cl_vector_get_ptr provides constant access times regardless of the index.
+
+       cl_vector_get_ptr does not perform boundary checking. Callers are
+       responsible for providing an index that is within the range of the vector.
+
+

SEE ALSO

+
       Vector, cl_vector_get, cl_vector_at, cl_vector_set, cl_vector_get_size
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_get_size

+ +

[top][index]

+

NAME

+
       cl_vector_get_size
+
+

DESCRIPTION

+
       The cl_vector_get_size function returns the size of a vector.
+
+

SYNOPSIS

+
CL_INLINE size_t CL_API
+cl_vector_get_size(
+        IN      const cl_vector_t* const        p_vector )
+{
+        CL_ASSERT( p_vector );
+        CL_ASSERT( p_vector->state == CL_INITIALIZED );
+
+        return( p_vector->size );
+}
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure whose size to return.
+
+

RETURN VALUE

+
       Size, in elements, of the vector.
+
+

SEE ALSO

+
       Vector, cl_vector_set_size, cl_vector_get_capacity
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_init

+ +

[top][index]

+

NAME

+
       cl_vector_init
+
+

DESCRIPTION

+
       The cl_vector_init function initializes a vector for use.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_vector_init(
+        IN      cl_vector_t* const      p_vector,
+        IN      const size_t            min_size,
+        IN      const size_t            grow_size,
+        IN      const size_t            element_size,
+        IN      cl_pfn_vec_init_t       pfn_init OPTIONAL,
+        IN      cl_pfn_vec_dtor_t       pfn_dtor OPTIONAL,
+        IN      const void* const       context );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure to inititalize.
+
+       initial_size
+               [in] Initial number of elements.
+
+       grow_size
+               [in] Number of elements to allocate when incrementally growing
+               the vector.  A value of zero disables automatic growth.
+
+       element_size
+               [in] Size of each element.
+
+       pfn_init
+               [in] Initializer callback to invoke for every new element.
+               See the cl_pfn_vec_init_t function type declaration for details about
+               the callback function.
+
+       pfn_dtor
+               [in] Destructor callback to invoke for elements being deallocated.
+               See the cl_pfn_vec_dtor_t function type declaration for details about
+               the callback function.
+
+       context
+               [in] Value to pass to the callback functions to provide context.
+
+ RETURN VALUES
+       CL_SUCCESS if the vector was initialized successfully.
+
+       CL_INSUFFICIENT_MEMORY if the initialization failed.
+
+       cl_status_t value returned by optional initializer function specified by
+       the pfn_init parameter.
+
+

NOTES

+
       The constructor and initializer functions, if any, are invoked for every
+       new element in the array.
+
+

SEE ALSO

+
       Vector, cl_vector_construct, cl_vector_destroy, cl_vector_set,
+       cl_vector_get, cl_vector_get_ptr, cl_vector_at
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_set

+ +

[top][index]

+

NAME

+
       cl_vector_set
+
+

DESCRIPTION

+
       The cl_vector_set function sets the element at the specified index.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_vector_set(
+        IN      cl_vector_t* const      p_vector,
+        IN      const size_t            index,
+        IN      void* const                     p_element );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure into which to store
+               an element.
+
+       index
+               [in] Index of the element.
+
+       p_element
+               [in] Pointer to an element to store in the vector.
+
+ RETURN VALUES
+       CL_SUCCESS if the element was successfully set.
+
+       CL_INSUFFICIENT_MEMORY if the vector could not be resized to accommodate
+       the new element.
+
+

NOTES

+
       cl_vector_set grows the vector as needed to accommodate the new element,
+       unless the grow_size parameter passed into the cl_vector_init function
+       was zero.
+
+

SEE ALSO

+
       Vector, cl_vector_get
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_set_capacity

+ +

[top][index]

+

NAME

+
       cl_vector_set_capacity
+
+

DESCRIPTION

+
       The cl_vector_set_capacity function reserves memory in a vector for a
+       specified number of elements.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_vector_set_capacity(
+        IN      cl_vector_t* const      p_vector,
+        IN      const size_t            new_capacity );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure whose capacity to set.
+
+       new_capacity
+               [in] Total number of elements for which the vector should
+               allocate memory.
+
+ RETURN VALUES
+       CL_SUCCESS if the capacity was successfully set.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to satisfy the
+       operation. The vector is left unchanged.
+
+

NOTES

+
       cl_vector_set_capacity increases the capacity of the vector. It does
+       not change the size of the vector. If the requested capacity is less
+       than the current capacity, the vector is left unchanged.
+
+

SEE ALSO

+
       Vector, cl_vector_get_capacity, cl_vector_set_size,
+       cl_vector_set_min_size
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_set_min_size

+ +

[top][index]

+

NAME

+
       cl_vector_set_min_size
+
+

DESCRIPTION

+
       The cl_vector_set_min_size function resizes a vector to a specified size
+       if the vector is smaller than the specified size.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_vector_set_min_size(
+        IN      cl_vector_t* const      p_vector,
+        IN      const size_t            min_size );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure whose minimum size to set.
+
+       min_size
+               [in] Minimum number of elements that the vector should contain.
+
+ RETURN VALUES
+       CL_SUCCESS if the vector size is greater than or equal to min_size.  This
+       could indicate that the vector's capacity was increased to min_size or
+       that the vector was already of sufficient size.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to resize the vector.
+       The vector is left unchanged.
+
+

NOTES

+
       If min_size is smaller than the current size of the vector, the vector is
+       unchanged. The vector is unchanged if the size could not be changed due
+       to insufficient memory being available to perform the operation.
+
+

SEE ALSO

+
       Vector, cl_vector_get_size, cl_vector_set_size, cl_vector_set_capacity
+
+
+
+ +

[Functions] +Component Library: Vector/cl_vector_set_size

+ +

[top][index]

+

NAME

+
       cl_vector_set_size
+
+

DESCRIPTION

+
       The cl_vector_set_size function resizes a vector, either increasing or
+       decreasing its size.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_vector_set_size(
+        IN      cl_vector_t* const      p_vector,
+        IN      const size_t            size );
+
+

PARAMETERS

+
       p_vector
+               [in] Pointer to a cl_vector_t structure whose size to set.
+
+       size
+               [in] Number of elements desired in the vector.
+
+ RETURN VALUES
+       CL_SUCCESS if the size of the vector was set successfully.
+
+       CL_INSUFFICIENT_MEMORY if there was not enough memory to complete the
+       operation. The vector is left unchanged.
+
+

NOTES

+
       cl_vector_set_size sets the vector to the specified size. If size is
+       smaller than the current size of the vector, the size is reduced.
+       The destructor function, if any, will be invoked for all elements that
+       are above size. Likewise, the constructor and initializer, if any, will
+       be invoked for all new elements.
+
+       This function can only fail if size is larger than the current capacity.
+
+

SEE ALSO

+
       Vector, cl_vector_get_size, cl_vector_set_min_size,
+       cl_vector_set_capacity
+
+
+
+ +

[Structures] +Component Library: Vector/cl_vector_t

+ +

[top][index]

+

NAME

+
       cl_vector_t
+
+

DESCRIPTION

+
       Vector structure.
+
+       The cl_vector_t structure should be treated as opaque and should be
+       manipulated only through the provided functions.
+
+

SYNOPSIS

+
typedef struct _cl_vector
+{
+        size_t                          size;
+        size_t                          grow_size;
+        size_t                          capacity;
+        size_t                          element_size;
+        cl_pfn_vec_init_t       pfn_init;
+        cl_pfn_vec_dtor_t       pfn_dtor;
+        cl_pfn_vec_copy_t       pfn_copy;
+        const void                      *context;
+        cl_qlist_t                      alloc_list;
+        void                            **p_ptr_array;
+        cl_state_t                      state;
+
+} cl_vector_t;
+
+

FIELDS

+
       size
+                Number of elements successfully initialized in the vector.
+
+       grow_size
+                Number of elements to allocate when growing.
+
+       capacity
+                total # of elements allocated.
+
+       element_size
+                Size of each element.
+
+       pfn_init
+                User supplied element initializer.
+
+       pfn_dtor
+                User supplied element destructor.
+
+       pfn_copy
+                Copy operator.
+
+       context
+                User context for callbacks.
+
+       alloc_list
+                List of allocations.
+
+       p_ptr_array
+                Internal array of pointers to elements.
+
+       state
+               State of the vector.
+
+

SEE ALSO

+
       Vector
+
+
+ + diff --git a/trunk/docs/complib/cl_waitobj_h.html b/trunk/docs/complib/cl_waitobj_h.html new file mode 100644 index 00000000..7ceb7e58 --- /dev/null +++ b/trunk/docs/complib/cl_waitobj_h.html @@ -0,0 +1,356 @@ + + + + +./inc_doc/complib/cl_waitobj_h.html + + + + +Generated from ./inc/complib/cl_waitobj.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:23 +
+
+ +

[Modules] +Component Library/Wait Object

+ +

[top][index]

+

NAME

+
       Wait Object
+
+

DESCRIPTION

+
       The Wait Object provides the capability for a user mode process to
+       create and manipulate a wait object that can also be manipulated from
+       kernel mode.
+
+

SEE ALSO

+
       Structures:
+               cl_waitobj_handle_t
+
+       User Mode Initialization/Destruction:
+               cl_waitobj_create
+               cl_waitobj_destroy
+
+       Kernel Mode Access:
+               cl_waitobj_ref
+               cl_waitobj_deref
+
+       Manipulation:
+               cl_waitobj_signal
+               cl_waitobj_reset
+               cl_waitobj_wait_on
+
+
+
+ +

[Functions] +Component Library: Wait Object/cl_waitobj_create

+ +

[top][index]

+

NAME

+
       cl_waitobj_create
+
+

DESCRIPTION

+
       The cl_waitobj_create function creates a wait object.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_waitobj_create(
+        IN      const boolean_t                         manual_reset, 
+        OUT     cl_waitobj_handle_t* const      ph_wait_obj );
+
+

PARAMETERS

+
       manual_reset
+               [in] If FALSE, indicates that the event resets itself after releasing 
+               a single waiter.  If TRUE, the event remains in the signalled state 
+               until explicitly reset by a call to cl_event_reset.
+
+       ph_wait_obj
+               [out] Pointer to a wait object handle set upon successful creation.
+
+ RETURN VALUES
+       CL_SUCCESS if the wait object was created successfully.
+
+       CL_ERROR if the wait object creation failed.
+
+

NOTES

+
       This function is only available in user mode.
+
+

SEE ALSO

+
       Wait Object, cl_waitobj_handle_t, cl_waitobj_destroy, 
+       cl_waitobj_signal, cl_waitobj_reset, cl_waitobj_wait_on
+
+
+
+ +

[Functions] +Component Library: Wait Object/cl_waitobj_deref

+ +

[top][index]

+

NAME

+
       cl_waitobj_deref
+
+

DESCRIPTION

+
       The cl_waitobj_deref function release a reference on a kernel mode 
+       wait object handle and allows the wait object to be destroyed.
+                                                               
+
+

SYNOPSIS

+
CL_EXPORT void CL_API
+cl_waitobj_deref(
+        IN      cl_waitobj_handle_t     h_kernel_wait_obj );
+
+

PARAMETERS

+
       h_kernel_wait_obj
+               [in] A wait object handle returned by a previous call to cl_waitobj_ref. 
+
+ RETURN VALUES
+       This function does not return a value.
+
+

NOTES

+
       This function is only available in kernel mode.
+
+

SEE ALSO

+
       Wait Object, cl_waitobj_handle_t, cl_waitobj_ref, 
+       cl_waitobj_signal, cl_waitobj_reset, cl_waitobj_wait_on
+
+
+
+ +

[Functions] +Component Library: Wait Object/cl_waitobj_destroy

+ +

[top][index]

+

NAME

+
       cl_waitobj_destroy
+
+

DESCRIPTION

+
       The cl_waitobj_destroy function destroys a wait object.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_waitobj_destroy(
+        IN      cl_waitobj_handle_t     h_wait_obj );
+
+

PARAMETERS

+
       h_wait_obj
+               [in] A handle to the wait object to destroy, obtained by a pervious
+               call to cl_waitobj_create.
+
+ RETURN VALUES
+       CL_SUCCESS if the wait object handle is destroyed.
+
+       CL_INVALID_PARAMETER if the wait object handle is invalid.
+
+

NOTES

+
       This function is only available in user mode.
+
+

SEE ALSO

+
       Wait Object, cl_waitobj_handle_t, cl_waitobj_create, 
+       cl_waitobj_signal, cl_waitobj_reset, cl_waitobj_wait_on
+
+
+
+ +

[Definitions] +Component Library: Wait Object/cl_waitobj_handle_t

+ +

[top][index]

+

NAME

+
       cl_waitobj_handle_t
+
+

DESCRIPTION

+
       Defines the handle for an OS wait object.
+
+

NOTES

+
       The wait object handle should be treated as opaque and is defined
+       differently depending on the target environment.
+
+

SEE ALSO

+
       Wait Object, cl_waitobj_create, cl_waitobj_destroy,
+       cl_waitobj_ref, cl_waitobj_deref, cl_waitobj_signal,
+       cl_waitobj_reset, cl_waitobj_wait_on
+
+
+
+ +

[Functions] +Component Library: Wait Object/cl_waitobj_ref

+ +

[top][index]

+

NAME

+
       cl_waitobj_ref
+
+

DESCRIPTION

+
       The cl_waitobj_ref function validates a user mode wait object handle 
+       and returns a kernel mode wait object handle.  A reference is taken
+       on the object to prevent its destruction even if the user mode 
+       application destroys it.
+                                                               
+
+

SYNOPSIS

+
CL_EXPORT cl_waitobj_handle_t CL_API
+cl_waitobj_ref(
+        IN      void                                    *h_user_wait_obj );
+
+

PARAMETERS

+
       h_user_wait_obj
+               [in] A wait object handle passed from user mode. 
+
+ RETURN VALUES
+       Returns a kernel wait object handle upon success.  The returned handle 
+       should only be used as parameters to kernel mode calls.
+
+       Returns NULL in case of failure.
+
+

NOTES

+
       This function is only available in kernel mode.
+
+

SEE ALSO

+
       Wait Object, cl_waitobj_handle_t, cl_waitobj_deref,
+       cl_waitobj_signal, cl_waitobj_reset, cl_waitobj_wait_on
+
+
+
+ +

[Functions] +Component Library: Wait Object/cl_waitobj_reset

+ +

[top][index]

+

NAME

+
       cl_waitobj_reset
+
+

DESCRIPTION

+
       The cl_waitobj_reset function sets an wait object to the non-signalled state.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_waitobj_reset(
+        IN      cl_waitobj_handle_t     h_wait_obj );
+
+

PARAMETERS

+
       h_wait_obj
+               [in] A handle to the wait object that needs to reset.
+
+ RETURN VALUES
+       CL_SUCCESS if the wait object was successfully reset.
+
+       CL_ERROR otherwise.
+
+

NOTES

+
       In kernel mode, a pointer to a cl_event_t can safely be used instead of
+       a wait object handle.
+
+

SEE ALSO

+
       Wait Object, cl_waitobj_create, cl_waitobj_destroy,
+       cl_waitobj_ref, cl_waitobj_deref,
+       cl_waitobj_signal, cl_waitobj_wait_on
+
+
+
+ +

[Functions] +Component Library: Wait Object/cl_waitobj_signal

+ +

[top][index]

+

NAME

+
       cl_waitobj_signal
+
+

DESCRIPTION

+
       The cl_waitobj_signal function sets a wait object to the signalled 
+       state and releases one or more waiting threads.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_waitobj_signal(
+        IN      cl_waitobj_handle_t     h_wait_obj );
+
+

PARAMETERS

+
       h_wait_obj
+               [in] A handle to the wait object that needs to be signaled.
+ 
+ RETURN VALUES
+       CL_SUCCESS if the event was successfully signalled.
+
+       CL_ERROR otherwise.
+
+

NOTES

+
       For auto-reset wait objects, the wait object is reset automatically once 
+       a wait operation is satisfied. 
+
+       Triggering the wait object multiple times does not guarantee that the same 
+       number of wait operations are satisfied. This is because wait objects are 
+       either in a signalled on non-signalled state, and triggering a wait object 
+       that is already in the signalled state has no effect.
+
+       In kernel mode, a pointer to a cl_event_t can safely be used instead of
+       a wait object handle.
+
+

SEE ALSO

+
       Wait Object, cl_waitobj_create, cl_waitobj_destroy,
+       cl_waitobj_ref, cl_waitobj_deref,
+       cl_waitobj_reset, cl_waitobj_wait_on
+
+
+
+ +

[Functions] +Component Library: Wait Object/cl_waitobj_wait_on

+ +

[top][index]

+

NAME

+
       cl_waitobj_wait_on
+
+

DESCRIPTION

+
       The cl_waitobj_wait_on function waits for the specified wait object to be 
+       triggered for a minimum amount of time.
+
+

SYNOPSIS

+
CL_EXPORT cl_status_t CL_API
+cl_waitobj_wait_on(
+        IN      cl_waitobj_handle_t             h_wait_obj,
+        IN      const uint32_t                  wait_us,
+        IN      const boolean_t                 interruptible );
+
+

PARAMETERS

+
       h_wait_obj
+               [in] A handle to the wait object on which to wait.
+
+       wait_us 
+               [in] Number of microseconds to wait.
+
+       interruptible
+               [in] Indicates whether the wait operation can be interrupted
+               by external signals.
+
+ RETURN VALUES
+       CL_SUCCESS if the wait operation succeeded in response to the wait object 
+       being set.
+
+       CL_TIMEOUT if the specified time period elapses.
+
+       CL_NOT_DONE if the wait was interrupted by an external signal.
+
+       CL_ERROR if the wait operation failed.
+
+

NOTES

+
       If wait_us is set to EVENT_NO_TIMEOUT, the function will wait until the 
+       wait object is triggered and never timeout.
+
+       If the timeout value is zero, this function simply tests the state of 
+       the wait object.
+
+       If the wait object is already in the signalled state at the time of the call
+       to cl_waitobj_wait_on, the call completes immediately with CL_SUCCESS.
+
+       In kernel mode, a pointer to a cl_event_t can safely be used instead of
+       a wait object handle.
+
+

SEE ALSO

+
       Wait Object, cl_waitobj_create, cl_waitobj_destroy,
+       cl_waitobj_ref, cl_waitobj_deref, 
+       cl_waitobj_signal, cl_waitobj_reset
+
+
+ + diff --git a/trunk/docs/complib/comp_lib_h.html b/trunk/docs/complib/comp_lib_h.html new file mode 100644 index 00000000..3adc8e1f --- /dev/null +++ b/trunk/docs/complib/comp_lib_h.html @@ -0,0 +1,50 @@ + + + + +./inc_doc/complib/comp_lib_h.html + + + + +Generated from ./inc/complib/comp_lib.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:23 +
+
+ +

[Modules] +Component Library/Overview

+ +

[top][index]

+

NAME

+
       Overview
+
+

DESCRIPTION

+
       The component library is a collection of components that can be used to
+       create complex projects quickly and reliably.
+
+       The component library simplifies development by eliminating the need to
+       re-implement existing functionality. This contributes to shorter
+       development cycles as well as smaller code bases, helping reduce the
+       number of bugs by leveraging tried and tested code.
+
+       The component library also provides the same interface in multiple
+       environments, such as kernel mode and user mode, allowing code to be used
+       in both, again reducing code duplication and development life cycles.
+
+       Components of the library all follow the same usage model, as follows:
+               - The constructor for all components should be called before any other
+               function for that component.  It is acceptable to call the initializer
+               without first calling the constructor.
+
+               - The initializer for all components must be called successfully
+               before any function manipulating that component is called.
+
+               - The destructor for all components must be called if the initializer
+               was called.
+
+       In a debug build, the components assert that the proper sequence is
+       followed.
+
+
+ + diff --git a/trunk/docs/iba/ib_al_h.html b/trunk/docs/iba/ib_al_h.html new file mode 100644 index 00000000..4db98dcc --- /dev/null +++ b/trunk/docs/iba/ib_al_h.html @@ -0,0 +1,9905 @@ + + + + +./inc_doc/iba/ib_al_h.html + + + + +Generated from ./inc/iba/ib_al.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:23 +
+
+ +

[Modules] +IB Access Layer API/Overview

+ +

[top][index]

+

NAME

+
       InfiniBand Access Layer
+
+

COPYRIGHT

+
       Copyright (c) 2003 Intel Corporation - All Rights Reserved.
+
+

DESCRIPTION

+
       The access layer provides transport level access to an InfiniBand fabric.
+       It supplies a foundation upon which a channel driver may be built.  The
+       access layer exposes the capabilities of the InfiniBand architecture and
+       adds support for higher-level functionality required by most users of an
+       InfiniBand fabric.  Users define the protocols and policies used by the
+       access layer, and the access layer implements them under the direction
+       of a user.
+
+
+
+ +

[Definitions] +Access Layer/ATS

+ +

[top][index]

+

NAME

+
       DAPL Address Translation Service
+
+

DESCRIPTION

+
       ATS service ID, service name, and IPv4 offset for DAPL-compliant
+       ATS service records.
+
+
+
+ +

[Functions] +Access Layer/ib_add_svc_entry

+ +

[top][index]

+

NAME

+
       ib_add_svc_entry
+
+

DESCRIPTION

+
       Adds a new service entry to an existing I/O controller.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_add_svc_entry(
+        IN              const   ib_ioc_handle_t                         h_ioc,
+        IN              const   ib_svc_entry_t* const           p_svc_entry,
+                OUT                     ib_svc_handle_t* const          ph_svc );
+
+

PARAMETERS

+
       h_ioc
+               [in] A handle to an existing I/O controller that will support the
+               added service.
+
+       p_svc_entry
+               [in] Service entry information that will be reported as part of the
+               controller's service profile.
+
+       ph_svc
+               [out] Upon successful completion of this call, this references a handle
+               to the added service.  This handle may be used to remove the service
+               entry.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The service entry was successfully added.
+
+       IB_INVALID_HANDLE
+               The I/O controller handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the service entry information or handle was not
+               provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to register the service entry.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the I/O
+               controller to register the service entry.
+
+

NOTES

+
       This routine adds a new service to an I/O controller.  Once added, the
+       service will be reported with the controller profile, provided that the
+       controller is registered with the local device manager.
+
+

SEE ALSO

+
       ib_create_ioc, ib_remove_svc_entry, ib_reg_ioc, ib_svc_entry_t
+
+
+
+ +

[Definitions] +Access Layer/ib_al_flags_t

+ +

[top][index]

+

NAME

+
       ib_al_flags_t
+
+

DESCRIPTION

+
       Access layer flags used to direct the operation of various calls.
+
+

SYNOPSIS

+
typedef uint32_t                                                        ib_al_flags_t;
+#define IB_FLAGS_SYNC                                           0x00000001
+
+

VALUES

+
       IB_FLAGS_SYNC
+               Indicates that the given operation should be performed synchronously.
+               The call will block until it completes.  Callbacks will still be
+               invoked.
+
+

SEE ALSO

+
       ib_cm_req_t, ib_cm_rep_t, ib_cm_dreq_t, ib_cm_lap_t,
+       ib_reg_svc_req_t, ib_mcast_req_t, ib_query_req_t, ib_sub_req_t
+
+
+
+ +

[Functions] +Access Layer/ib_alloc_pd

+ +

[top][index]

+

NAME

+
       ib_alloc_pd
+
+

DESCRIPTION

+
       Allocates a protection domain on the specified channel adapter.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_alloc_pd(
+        IN              const   ib_ca_handle_t                          h_ca,
+        IN              const   ib_pd_type_t                            pd_type,
+        IN              const   void* const                                     pd_context,
+                OUT                     ib_pd_handle_t* const           ph_pd );
+
+

PARAMETERS

+
       h_ca
+               [in] A handle to an opened channel adapter.
+
+       pd_type
+               [in] Indicates the type of protection domain being created.
+
+       pd_context
+               [in] A client-specified context to associate with this allocated
+               protection domain.  This context is returned to the user when
+               invoking asynchronous callbacks referencing this protection domain.
+
+       ph_pd
+               [out] Upon successful completion of this call, this references a
+               handle to the allocated protection domain.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The operation was successful.
+
+       IB_INVALID_CA_HANDLE
+               The channel adapter handle was invalid.
+
+       IB_INVALID_PARAMETER
+               The supplied pd_type value is invalid or a reference to the protection
+               domain handle was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to allocate the protection domain.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to create the protection domain.
+
+

NOTES

+
       When successful, this routine returns a handle to a newly allocated
+       protection domain.
+
+

SEE ALSO

+
       ib_dealloc_pd, ib_pd_type_t
+
+
+
+ +

[Structures] +Access Layer/ib_apr_info_t

+ +

[top][index]

+

NAME

+
       ib_apr_info_t
+
+

DESCRIPTION

+
       Infiniband-defined additional rejection information.
+
+

SYNOPSIS

+
typedef struct _ib_apr_info
+{
+        uint8_t                                         data[IB_APR_INFO_SIZE];
+
+}       ib_apr_info_t;
+
+

SEE ALSO

+
       ib_cm_data_sizes_t
+
+
+
+ +

[Structures] +Access Layer/ib_apr_pdata_t

+ +

[top][index]

+

NAME

+
       ib_apr_pdata_t
+
+

DESCRIPTION

+
       User data sent as part of an alternate path response.
+
+

SYNOPSIS

+
typedef union _ib_apr_pdata
+{
+        uint8_t                                         data[IB_APR_PDATA_SIZE];
+
+}       ib_apr_pdata_t;
+
+

SEE ALSO

+
       ib_cm_data_sizes_t
+
+
+
+ +

[Structures] +Access Layer/ib_ari_t

+ +

[top][index]

+

NAME

+
       ib_ari_t
+
+

DESCRIPTION

+
       Infiniband-defined additional rejection information.
+
+

SYNOPSIS

+
typedef struct _ib_ari
+{
+        uint8_t                                         data[IB_ARI_SIZE];
+
+}       ib_ari_t;
+
+

SEE ALSO

+
       ib_cm_data_sizes_t
+
+
+
+ +

[Structures] +Access Layer/ib_async_event_rec_t

+ +

[top][index]

+

NAME

+
       ib_async_event_rec_t
+
+

DESCRIPTION

+
       Information returned when an asynchronous event occurs on an allocated
+       resource.
+
+

SYNOPSIS

+
typedef struct _ib_async_event_rec
+{
+        ib_async_event_t                                                        code;
+        uint64_t                                                                        vendor_specific;
+
+        void* __ptr64                                                           context;
+        union _handle_t
+        {
+                ib_ca_handle_t                                                  h_ca;
+                ib_cq_handle_t                                                  h_cq;
+                ib_qp_handle_t                                                  h_qp;
+
+        } handle;
+
+}       ib_async_event_rec_t;
+
+

FIELDS

+
       code
+               A code that identifies the type of event being reported.
+
+       vendor_specific
+               A field containing optional vendor specific information.
+
+       context
+               User-defined context information associated with the resource on
+               which the error occurred.
+
+       handle
+               A handle to the resource for which this event record was generated.
+               This handle will match the handle returned during the creation of
+               resource.  It is provided in case an event occurs before a client's
+               call to create a resource can return.
+
+

SEE ALSO

+
       ib_async_event_t, ib_pfn_event_cb_t
+
+
+
+ +

[Functions] +Access Layer/ib_bind_mw

+ +

[top][index]

+

NAME

+
       ib_bind_mw
+
+

DESCRIPTION

+
       Binds a memory window to a registered memory region.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_bind_mw(
+        IN              const   ib_mw_handle_t                          h_mw,
+        IN              const   ib_qp_handle_t                          h_qp,
+        IN                              ib_bind_wr_t* const                     p_mw_bind,
+                OUT                     net32_t* const                          p_rkey );
+
+

PARAMETERS

+
       h_mw
+               [in] A handle to an existing memory window.
+
+       h_qp
+               [in] A handle to a queue pair that the bind request will be posted to.
+
+       p_mw_bind
+               [in] Describes the memory window bind request.
+
+       p_rkey
+               [out] The new rkey for the memory window that may be used by a remote
+               end-point when performing RDMA or atomic operations to this memory
+               region.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The memory window bind operation was successfully posted.
+
+       IB_INVALID_MW_HANDLE
+               The memory window handle was invalid.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the memory window bind work request or rkey was not
+               provided.
+
+       IB_INVALID_SERVICE_TYPE
+               The queue pair configuration does not support this type of service.
+
+       IB_INVALID_MR_HANDLE
+               The memory region handle was invalid.
+
+       IB_INVALID_RKEY
+               The rkey is invalid for the memory region being bound.
+
+       IB_UNSUPPORTED
+               The requested access rights are not supported by the channel adapter.
+
+       IB_INVALID_PERMISSION
+               The requested access rights are invalid.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to bind the memory window.
+
+

NOTES

+
       This routine posts a request to bind a memory window to a registered
+       memory region.  The bind operation occurs on the specified queue pair,
+       but the bound region is usable across all queue pairs within the same
+       protection domain.
+
+

SEE ALSO

+
       ib_create_mw, ib_bind_wr_t
+
+
+
+ +

[Functions] +Access Layer/ib_cancel_mad

+ +

[top][index]

+

NAME

+
       ib_cancel_mad
+
+

DESCRIPTION

+
       This routine cancels a pending send transaction to a MAD service.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_cancel_mad(
+        IN              const   ib_mad_svc_handle_t                     h_mad_svc,
+        IN                              ib_mad_element_t* const         p_mad_element );
+
+

PARAMETERS

+
       h_mad_svc
+               [in] The MAD service to which the send operation was directed.
+
+       p_mad_element
+               [in] A handle to a sent MAD element.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The requested MAD transaction was located and canceled.
+
+       IB_INVALID_PARAMETER
+               A reference to the MAD element list was not provided.
+
+       IB_NOT_FOUND
+               The requested transaction was not located or had already completed.
+
+

NOTES

+
       This routine cancels a pending send transaction to a MAD service.  If
+       the request is successfully located and has not yet completed, it will
+       be completed with its status set to IB_CANCELED.  The canceled operation
+       will be returned to the user through the normal MAD completion callback.
+       If the send transaction has already completed, this call will return
+       IB_NOT_FOUND.
+
+

SEE ALSO

+
       ib_send_mad
+
+
+
+ +

[Functions] +Access Layer/ib_cancel_query

+ +

[top][index]

+

NAME

+
       ib_cancel_query
+
+

DESCRIPTION

+
       Routine used to cancel a query of the subnet administrator.
+
+

SYNOPSIS

+
AL_EXPORT void AL_API
+ib_cancel_query(
+        IN              const   ib_al_handle_t                          h_al,
+        IN              const   ib_query_handle_t                       h_query );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an open instance of the access layer.
+
+       h_query
+               [in] Query handle returned by a previous call to ib_query().
+
+ RETURN VALUES
+       This function does not return a value.
+
+

NOTES

+
       This routine directs the access layer to cancel a query to the subnet
+       administrator.  The access layer will issue notify the user with the
+       final status of the query through the query callback specified in the
+       call to ib_query().
+
+

SEE ALSO

+
       ib_query
+
+
+
+ +

[Structures] +Access Layer/ib_cep_listen_t

+ +

[top][index]

+

NAME

+
       ib_cep_listen_t
+
+

DESCRIPTION

+
       Request to listen for incoming connection attempts.
+
+

SYNOPSIS

+
typedef struct _ib_cep_listen
+{
+        net64_t                                         svc_id;
+
+        net64_t                                         port_guid;
+
+        uint8_t* __ptr64                        p_cmp_buf;
+        uint8_t                                         cmp_len;
+        uint8_t                                         cmp_offset;
+
+}       ib_cep_listen_t;
+
+

FIELDS

+
       svc_id
+               The identifier of the service to register for incoming connection
+               requests.
+
+       port_guid
+               Directs the communication manager to register the listen only
+               with the specified port.  This should be set to IB_ALL_PORTS
+               if the listen is not directed to a particular port.
+
+       p_cmp_buf
+               An optionally provided buffer that will be used to match incoming
+               connection requests with a registered service.  Use of this buffer
+               permits multiple services to listen on the same service ID as long as
+               they provide different compare buffers.  Incoming requests will
+               be matched against the compare buffer.
+
+       cmp_len
+               Specifies the size of the compare buffer in bytes.  The length must
+               be the same for all requests using the same service ID.
+
+       cmp_offset
+               An offset into the user-defined data area of a connection request
+               which contains the start of the data that will be compared against.
+               The offset must be the same for all requests using the same service ID.
+
+

NOTES

+
       Users fill out this structure when listening on a service ID with the
+       local communication manager.  The communication manager will use the given
+       service ID and compare buffer to route connection requests to the
+       appropriate client.  Users may direct listens requests on a particular
+       channel adapter, port, or LID.
+
+
+
+ +

[Functions] +Access Layer/ib_ci_call

+ +

[top][index]

+

NAME

+
       ib_ci_call
+
+

DESCRIPTION

+
       Performs a vendor specific CA interface function call.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_ci_call(
+        IN                              ib_ca_handle_t                          h_ca,
+        IN              const   void* __ptr64 *         const   handle_array    OPTIONAL,
+        IN                              uint32_t                                        num_handles,
+        IN                              ib_ci_op_t*                     const   p_ci_op );
+
+

PARAMETERS

+
       h_ca
+               [in] An opened instance of a channel adapter.
+
+       handle_array
+               [in] This parameter references an array containing handles of
+               existing CA resources.  This array should contain all of the
+               handles specified in the vendor specific data provided with this
+               call.  All handles specified through this array are validated by
+               the access layer as existing and belonging to the calling process.
+               The verbs provider driver is responsible for verifying that the
+               number and type of handles are correct for the requested operation.
+
+       num_handles
+               [in] The number of the handles in handle array.  This count is
+               verified by the access layer.
+
+       p_ci_op
+               [in] A reference to the vendor specific CA interface data
+               structure containing the operation parameters.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The operation was successful.
+
+       IB_INVALID_CA_HANDLE
+               The specified CA handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the vendor specific data was not provided.
+
+       IB_INVALID_HANDLE
+               A handle specified in the handle array was invalid.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to perform the operation.
+
+       IB_ERROR
+               An error occurred while processing the command.  Additional
+               error information is provided in the p_ci_op status field.
+
+

NOTES

+
       This routine performs a vendor specific CA interface function call.
+       The optional p_ci_op structure provides a means to pass vendor
+       specific parameters and data to the verbs provider driver.  If the
+       vendor specific data contains handles, the client should provide the
+       optional handle array that lists all of the handles specified in the
+       vendor specific data.  The handles in the handle array are restricted
+       to the following types:  ib_pd_handle_t, ib_cq_handle_t,
+       ib_av_handle_t, ib_qp_handle_t, ib_mr_handle_t, or ib_mw_handle_t.
+       The contents of the handle array are verified by the access layer and
+       the verbs provider driver.  This call cannot be used to allocate private
+       handles that are passed as parameters in access layer calls.
+
+

SEE ALSO

+
       ib_open_ca, ib_alloc_pd, ib_create_av, ib_create_cq,
+       ib_create_qp, ib_reg_mr, ib_reg_phys, ib_reg_shared,
+       ib_create_mw, ib_ci_op_t
+
+
+
+ +

[Functions] +Access Layer/ib_close_al

+ +

[top][index]

+

NAME

+
       ib_close_al
+
+

DESCRIPTION

+
       Deregisters a channel driver with the access layer and releases all
+       associated resources, including queue pairs, connection requests,
+       and completion queues.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_close_al(
+        IN              const   ib_al_handle_t                          h_al );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an instance of the access layer.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The access layer was closed successfully.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+

NOTES

+
       This call destroys an existing instance of the access layer.  Since
+       callbacks may be outstanding against the resources managed by this
+       access layer instance when the destroy operation is invoked, this
+       call may block until all outstanding callbacks complete.  This
+       routine may not be called from a callback invoked by the access layer.
+
+

SEE ALSO

+
       ib_open_al
+
+
+
+ +

[Functions] +Access Layer/ib_close_ca

+ +

[top][index]

+

NAME

+
       ib_close_ca
+
+

DESCRIPTION

+
       Closes an opened channel adapter.  Once closed, no further access to this
+       channel adapter is possible.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_close_ca(
+        IN              const   ib_ca_handle_t                          h_ca,
+        IN              const   ib_pfn_destroy_cb_t                     pfn_destroy_cb OPTIONAL );
+
+

PARAMETERS

+
       h_ca
+               [in] A handle to an opened channel adapter.
+
+       pfn_destroy_cb
+               [in] A user-specified callback that is invoked after the channel
+               adapter has been successfully destroyed.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The close request was registered.
+
+       IB_INVALID_CA_HANDLE
+               The channel adapter handle was invalid.
+
+

NOTES

+
       This call closes the opened channel adapter and frees all associated
+       resources, such as queue pairs, protection domains, and completion
+       queues.  Since callbacks may be outstanding against the channel adapter
+       or one of its resources at the time the close operation is invoked, this
+       call operates asynchronously.  The user will be notified through a callback
+       once the close operation completes, indicating that no additional callbacks
+       will be invoked for the specified channel adapter or a related resource.
+
+

SEE ALSO

+
       ib_open_ca
+
+
+
+ +

[Functions] +Access Layer/ib_cm_apr

+ +

[top][index]

+

NAME

+
       ib_cm_apr
+
+

DESCRIPTION

+
       Responds to a load alternate path request, to accept or reject the
+       proposed alternate path.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_cm_apr(
+        IN              const   ib_cm_handle_t                          h_cm_lap,
+        IN              const   ib_cm_apr_t* const                      p_cm_apr );
+
+

PARAMETERS

+
       h_cm_lap
+               [in] A handle to a load alternate path request corresponding to the
+               response.  This handle is provided through the ib_pfn_cm_lap_cb_t.
+
+       p_cm_apr
+               [in] Information describing the alternate path response.  The response
+               will accept or reject the load request.  If the request is rejected
+               this parameter will reference additional rejection information.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The load alternate path response was sent successfully.
+
+       IB_INVALID_HANDLE
+               The connection manager load alternate path handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the alternate path information was not provided.
+
+       IB_INVALID_STATE
+               The current connection state does not allow sending this message.
+
+       IB_INVALID_SETTING
+               The private data length specified in alternate path information is
+               invalid.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle specified in the alternate path information
+               was invalid.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to send the alternate path response.
+
+

NOTES

+
       This routine responds to a load alternate path request.
+
+

SEE ALSO

+
       ib_cm_lap, ib_cm_apr_t, ib_pfn_cm_lap_cb_t, ib_pfn_cm_apr_cb_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_apr_rec_t

+ +

[top][index]

+

NAME

+
       ib_cm_apr_rec_t
+
+

DESCRIPTION

+
       Load alternate path response information returned to the user through
+       a callback.
+
+

SYNOPSIS

+
typedef struct _ib_cm_apr_rec
+{
+        ib_api_status_t                         cm_status;
+        ib_apr_status_t                         apr_status;
+
+        const uint8_t* __ptr64          p_info;
+        uint8_t                                         info_length;
+
+        const uint8_t* __ptr64          p_apr_pdata;
+
+        ib_qp_handle_t                          h_qp;
+        const void* __ptr64                     qp_context;
+
+}       ib_cm_apr_rec_t;
+
+

FIELDS

+
       cm_status
+               The status of the alternate path response.  IB_SUCCESS indicates that
+               the alternate path was loaded successfully.  IB_TIMEOUT indicates that
+               a reply was not received within the specified timeout and retry count.
+               Other error values indicates that the alternate path was not loaded.
+               if the apr_status is IB_AP_SUCCESS, the QP failed to load the path.
+               Other apr_status values indicate that the request was rejected for some
+               reason.
+
+       apr_status
+               The alternate path response status.  This indicates additional failure
+               information to a load alternate path request and is defined by the
+               InfiniBand specification.
+
+       info_length
+               Length of valid data in the APR additional information buffer.
+
+       p_info
+               APR additional information.
+
+       p_apr_pdata
+               A reference to user-defined private data sent as part of the alternate
+               path response.
+
+       h_qp
+               The queue pair handle associated with the alternate path response.
+
+       qp_context
+               The queue pair context associated with the alternate path response.
+
+

SEE ALSO

+
       ib_cm_lap, ib_pfn_cm_apr_cb_t, ib_apr_status_t, ib_apr_info_t
+       ib_apr_pdata_t, ib_qp_type_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_apr_t

+ +

[top][index]

+

NAME

+
       ib_cm_apr_t
+
+

DESCRIPTION

+
       Load alternate path information used to configure a queue pair with an
+       alternate path.
+
+

SYNOPSIS

+
typedef struct _ib_cm_apr
+{
+        const uint8_t* __ptr64                  p_apr_pdata;
+        uint8_t                                                 apr_length;
+
+        ib_qp_type_t                                    qp_type;
+
+        /* valid for rc, uc & rd qp_type only */
+        ib_qp_handle_t                                  h_qp;
+
+        ib_apr_status_t                                 apr_status;
+        uint8_t                                                 info_length;
+        const ib_apr_info_t* __ptr64    p_info;
+
+}       ib_cm_apr_t;
+
+

FIELDS

+
       p_apr_pdata
+               Optional user-defined private data sent as part of the alternate
+               path response message.
+
+       apr_length
+               Defines the size of the user-defined private data.
+
+       qp_type
+               Indicates the CM service type.
+
+       h_qp
+               A handle to the queue pair that should receive the alternate path.
+
+       apr_status
+               The alternate path response status.  This indicates additional failure
+               information to a load alternate path request and is defined by the
+               Infiniband specification.
+
+       info_length
+               Length of valid data in the APR additional information buffer.
+
+       p_info
+               APR additional information.
+
+

SEE ALSO

+
       ib_cm_apr, ib_pfn_cm_apr_cb_t, ib_lap_pdata_t, ib_qp_type_t
+
+
+
+ +

[Functions] +Access Layer/ib_cm_cancel

+ +

[top][index]

+

NAME

+
       ib_cm_cancel
+
+

DESCRIPTION

+
       Routine used to cancel listening for connection requests.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_cm_cancel(
+        IN              const   ib_listen_handle_t                      h_cm_listen,
+        IN              const   ib_pfn_destroy_cb_t                     pfn_destroy_cb OPTIONAL );
+
+

PARAMETERS

+
       h_cm_listen
+               [in] A handle to an existing listen request.
+
+       pfn_destroy_cb
+               [in] A user-specified callback that is invoked after the listen
+               request has been successfully canceled.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The cancel listen operation was initiated.
+
+       IB_INVALID_HANDLE
+               The connection manager handle was invalid.
+
+

NOTES

+
       This routine cancels a listen request.  To avoid a race condition
+       canceling a request at the same time a connection callback is in
+       progress, the cancel operation operates asynchronously.  For
+       additional details see ib_pfn_destroy_cb_t.
+
+

SEE ALSO

+
       ib_cm_listen, ib_pfn_destroy_cb_t
+
+
+
+ +

[Functions] +Access Layer/ib_cm_drep

+ +

[top][index]

+

NAME

+
       ib_cm_drep
+
+

DESCRIPTION

+
       This routine replies to a disconnection request and disconnects
+       a queue pair or end-to-end context.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_cm_drep(
+        IN              const   ib_cm_handle_t                          h_cm_dreq,
+        IN              const   ib_cm_drep_t* const                     p_cm_drep );
+
+

PARAMETERS

+
       h_cm_dreq
+               [in] A handle to a disconnection request being replied to.  This
+               handle is provided through the ib_pfn_cm_dreq_cb_t callback.
+
+       p_cm_drep
+               [in] Reply information used to respond to the disconnection request.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The disconnect request was sent successfully.
+
+       IB_INVALID_HANDLE
+               The connection manager disconnect request handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the disconnect repy information was not provided.
+
+       IB_INVALID_STATE
+               The current connection state does not allow sending this message.
+
+       IB_INVALID_SETTING
+               The private data length specified in disconnect reply information is
+               invalid.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to send the disconnect reply.
+
+

NOTES

+
       This function will disconnect a queue pair or end-to-end context.  It
+       results in sending a disconnection reply message to the remote end-point.
+       After calling this routine, data transfers on the specified queue pair or
+       end-to-end context will fail.
+
+

SEE ALSO

+
       ib_cm_dreq, ib_pfn_cm_dreq_cb_t, ib_cm_drep_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_drep_rec_t

+ +

[top][index]

+

NAME

+
       ib_cm_drep_rec_t
+
+

DESCRIPTION

+
       Disconnection reply information returned to the user through their
+       disconnect reply callback.
+
+

SYNOPSIS

+
typedef struct _ib_cm_drep_rec
+{
+        ib_api_status_t                         cm_status;
+
+        const uint8_t* __ptr64          p_drep_pdata;
+
+        ib_qp_handle_t                          h_qp;
+        const void* __ptr64                     qp_context;
+
+}       ib_cm_drep_rec_t;
+
+

FIELDS

+
       cm_status
+               The status of the disconnect request.  Valid values are IB_SUCCESS
+               and IB_TIMEOUT.  IB_TIMEOUT indicates that a reply was not received
+               within the specified timeout and retry count.
+
+       p_drep_pdata
+               A reference to user-defined private data sent as part of the
+               disconnect reply.
+
+       h_qp
+               The queue pair handle associated with the disconnect reply.
+
+       qp_context
+               The queue pair context associated with the disconnect reply.
+
+

SEE ALSO

+
       ib_cm_drep, ib_pfn_cm_drep_cb_t, ib_drep_pdata_t, ib_qp_type_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_drep_t

+ +

[top][index]

+

NAME

+
       ib_cm_drep_t
+
+

DESCRIPTION

+
       Disconnection reply information used when tearing down a connection.
+
+

SYNOPSIS

+
typedef struct _ib_cm_drep
+{
+        uint8_t* __ptr64                        p_drep_pdata;
+        uint8_t                                         drep_length;
+
+}       ib_cm_drep_t;
+
+

FIELDS

+
       p_drep_pdata
+               A reference to user-defined private data sent as part of the
+               disconnection reply.
+
+       drep_length
+               Defines the size of the user-defined private data.
+
+

SEE ALSO

+
       ib_cm_drep, ib_drep_pdata_t
+
+
+
+ +

[Functions] +Access Layer/ib_cm_dreq

+ +

[top][index]

+

NAME

+
       ib_cm_dreq
+
+

DESCRIPTION

+
       This routine disconnects a queue pair or end-to-end context.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_cm_dreq(
+        IN              const   ib_cm_dreq_t* const                     p_cm_dreq );
+
+

PARAMETERS

+
       p_cm_dreq
+               [in] Information that describes the connection being disconnected.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The disconnect request was sent successfully.
+
+       IB_INVALID_PARAMETER
+               A reference to the disconnect request information was not provided.
+
+       IB_INVALID_STATE
+               The current connection state does not allow sending this message.
+
+       IB_INVALID_SETTING
+               The private data length specified in disconnect request information is
+               invalid.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle specified in the disconnect request information
+               was invalid.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to send the disconnect request.
+
+

NOTES

+
       This function will disconnect a queue pair or end-to-end context.
+       It results in sending a disconnection request message to the remote
+       end-point.  After calling this routine, data transfers on the specified
+       queue pair or end-to-end context will fail.
+
+

SEE ALSO

+
       ib_cm_drep, ib_pfn_cm_dreq_cb_t, ib_cm_dreq_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_dreq_rec_t

+ +

[top][index]

+

NAME

+
       ib_cm_dreq_rec_t
+
+

DESCRIPTION

+
       Disconnection request information returned to the user through their
+       disconnection callback.
+
+

SYNOPSIS

+
typedef struct _ib_cm_dreq_rec
+{
+        ib_cm_handle_t                          h_cm_dreq;
+
+        const uint8_t* __ptr64          p_dreq_pdata;
+
+        const void* __ptr64                     qp_context;
+
+}       ib_cm_dreq_rec_t;
+
+

FIELDS

+
       h_cm_dreq
+               A handle to the disconnection request.  This handle is used to reply
+               to the disconnection request.
+
+       p_dreq_pdata
+               A reference to user-defined private data sent as part of the
+               disconnect request.
+
+       qp_context
+               The queue pair context associated with the disconnect request.
+
+

SEE ALSO

+
       ib_cm_dreq, ib_pfn_cm_dreq_cb_t, ib_dreq_pdata_t, ib_qp_type_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_dreq_t

+ +

[top][index]

+

NAME

+
       ib_cm_dreq_t
+
+

DESCRIPTION

+
       Disconnection request information used to tear down a connection.
+
+

SYNOPSIS

+
typedef struct _ib_cm_dreq
+{
+        ib_al_flags_t                           flags;
+
+        uint8_t* __ptr64                        p_dreq_pdata;
+        uint8_t                                         dreq_length;
+
+        ib_qp_type_t                            qp_type;
+
+        /* valid for rc, uc & rd qp_type only */
+        ib_qp_handle_t                          h_qp;
+        ib_pfn_cm_drep_cb_t                     pfn_cm_drep_cb;
+
+}       ib_cm_dreq_t;
+
+

FIELDS

+
       flags
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
+               process the called routine synchronously.
+
+       p_dreq_pdata
+               A reference to user-defined private data sent as part of the
+               disconnection request.
+
+       dreq_length
+               Defines the size of the user-defined private data.
+
+       qp_type
+               Indicates the CM service type.
+
+       h_qp
+               A handle to the queue pair to disconnect.
+
+       pfn_cm_drep_cb
+               References a user-defined callback that will be invoked when
+               the reply to the disconnect is received.
+
+

NOTES

+
       Users submit this structure to disconnect a queue pair or end-to-end
+       context.  A single disconnect call disconnects either a queue pair or
+       an end-to-end context, but not both.
+
+

SEE ALSO

+
       ib_cm_dreq, ib_cm_drep, ib_dreq_pdata_t, ib_al_flags_t,
+       ib_qp_type_t
+
+
+
+ +

[Definitions] +Access Layer/ib_cm_failover_t

+ +

[top][index]

+

NAME

+
       ib_cm_failover_t
+
+

DESCRIPTION

+
       Fail over acceptance status returned as part of a connection reply.
+
+

SYNOPSIS

+
typedef uint8_t                                                         ib_cm_failover_t;
+#define IB_FAILOVER_ACCEPT_SUCCESS                      0
+#define IB_FAILOVER_ACCEPT_UNSUPPORTED          1
+#define IB_FAILOVER_ACCEPT_ERROR                        2
+
+

NOTES

+
       These values and their use are defined the Infiniband specification.
+
+

SEE ALSO

+
       ib_cm_rep, ib_cm_rep_t
+
+
+
+ +

[Functions] +Access Layer/ib_cm_handoff

+ +

[top][index]

+

NAME

+
       ib_cm_handoff
+
+

DESCRIPTION

+
       Hands off the received REQ information to svc_id.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_cm_handoff(
+        IN              const   ib_cm_handle_t                          h_cm_req,
+        IN              const   ib_net64_t                                      svc_id );
+
+

PARAMETERS

+
       h_cm_req
+               [in] A handle to the connection request being handed off.
+               This is the h_cm_req handle provided through the ib_pfn_cm_req_cb_t
+               callback.
+
+       svc_id
+               [in] The service id to which this connection request is handed off.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The handoff was initiated.
+
+       IB_INVALID_HANDLE
+               The connection manager handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A valid service id was not provided.
+
+       IB_INVALID_STATE
+               The current connection state does not allow this transfer.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to complete the request.
+
+

NOTES

+
       This routine results in the access layer handing off the connection
+       to the service id as a new incoming connection.
+
+

SEE ALSO

+
       ib_pfn_cm_req_cb_t, ib_cm_rej_t, ib_cm_listen
+
+
+
+ +

[Functions] +Access Layer/ib_cm_lap

+ +

[top][index]

+

NAME

+
       ib_cm_lap
+
+

DESCRIPTION

+
       Issues a load alternate path request to a specified end-point.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_cm_lap(
+        IN              const   ib_cm_lap_t* const                      p_cm_lap );
+
+

PARAMETERS

+
       p_cm_lap
+               [in] Information describing the alternate path to load and the remote
+               endpoint for the connection.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The load alternate path request was sent successfully.
+
+       IB_INVALID_PARAMETER
+               A reference to the load alternate path information was not provided.
+
+       IB_UNSUPPORTED
+               The passive side of the connection attempted to load an alternate path.
+
+       IB_INVALID_STATE
+               The current connection state does not allow sending this message.
+
+       IB_INVALID_SETTING
+               The load alternate path information contains one or more of the
+               following errors:
+                 - The class version, queue pair type, or path is not supported by
+                       connection manager.
+                 - The primary path is not on the same channel adapter as the queue
+                       pair.
+                 - The primary and alternate paths are on different channel adapters.
+                 - The primary and alternate paths specify different MTUs.
+                 - The alternate path record packet lifetime is out of range.
+                 - The alternate path record pkey is out of range.
+                 - The specified private data length is invalid.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle specified in the load alternate path information
+               was invalid.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to send the load alternate path request.
+
+

NOTES

+
       This routine issues initiates loading an alternate path on an existing
+       connected queue pair or end-to-end context.  If the request is successful,
+       the alternate path will be loaded and armed for path migration.
+
+       The p_cm_lap parameter describes the alternate path to load and indicates
+       the remote endpoint of an existing connection that will receive the load
+       request.
+
+

SEE ALSO

+
       ib_cm_apr, ib_cm_lap_t, ib_pfn_cm_lap_cb_t, ib_pfn_cm_apr_cb_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_lap_rec_t

+ +

[top][index]

+

NAME

+
       ib_cm_lap_rec_t
+
+

DESCRIPTION

+
       Load alternate path request information returned to the user through
+       a callback.
+
+

SYNOPSIS

+
typedef struct _ib_cm_lap_rec
+{
+        ib_cm_handle_t                          h_cm_lap;
+        ib_path_rec_t                           alt_path;
+
+        const uint8_t* __ptr64          p_lap_pdata;
+
+        const void* __ptr64                     qp_context;
+
+}       ib_cm_lap_rec_t;
+
+

FIELDS

+
       p_lap_pdata
+               A reference to user-defined private data sent as part of the load
+               alternate path request.
+
+       qp_context
+               The queue pair context associated with a connection request.
+
+       h_cm_lap
+               A handle to the load alternate path request.  This handle is used
+               to reply to the load request.
+
+       alt_path
+               Requested alternate path.  Users must accept or reject the path by
+               calling ib_cm_apr.
+
+

SEE ALSO

+
       ib_cm_lap, ib_pfn_cm_lap_cb_t, ib_lap_pdata_t, ib_qp_type_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_lap_t

+ +

[top][index]

+

NAME

+
       ib_cm_lap_t
+
+

DESCRIPTION

+
       Load alternate path information used to configure a queue pair with an
+       alternate path.
+
+

SYNOPSIS

+
typedef struct _ib_cm_lap
+{
+        ib_al_flags_t                           flags;
+
+        const uint8_t* __ptr64          p_lap_pdata;
+        uint8_t                                         lap_length;
+
+        ib_qp_type_t                            qp_type;
+
+        /* valid for rc, uc & rd qp_type only */
+        ib_qp_handle_t                          h_qp;
+
+        uint8_t                                         remote_resp_timeout;
+        ib_path_rec_t* __ptr64          p_alt_path;
+        ib_pfn_cm_apr_cb_t                      pfn_cm_apr_cb;
+
+}       ib_cm_lap_t;
+
+

FIELDS

+
       flags
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
+               process the called routine synchronously.
+
+       p_lap_pdata
+               Optional user-defined private data sent as part of the load alternate
+               path message.
+
+       lap_length
+               Defines the size of the user-defined private data.
+
+       qp_type
+               Indicates the CM service type.
+
+       h_qp
+               A handle to the queue pair that should receive the alternate path.
+
+       remote_resp_timeout
+               The time within which the remote CM should transmit a response to
+               the sender.  This value is expressed as
+               4.096 * (2 ^ local_resp_timeout) microseconds.
+
+       p_alt_path
+               The path record to use for the alternate connection.
+
+       pfn_cm_apr_cb
+               References a user-defined callback that will be invoked when the
+               response to the load request is received.
+
+

SEE ALSO

+
       ib_cm_lap, ib_pfn_cm_lap_cb_t, ib_pfn_cm_apr_cb_t, ib_path_rec_t,
+       ib_pfn_lap_pdata_t, ib_qp_type_t
+
+
+
+ +

[Functions] +Access Layer/ib_cm_listen

+ +

[top][index]

+

NAME

+
       ib_cm_listen
+
+

DESCRIPTION

+
       Issues a request to the local communication manager to listen for
+       incoming connection requests.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_cm_listen(
+        IN              const   ib_al_handle_t                          h_al,
+        IN              const   ib_cm_listen_t* const           p_cm_listen,
+        IN              const   ib_pfn_listen_err_cb_t          pfn_listen_err_cb,
+        IN              const   void* const                                     listen_context,
+                OUT                     ib_listen_handle_t* const       ph_cm_listen );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an opened instance of the access layer.
+
+       p_cm_listen
+               [in] Information used to direct the listen request to match incoming
+               connection requests.
+
+       pfn_listen_err_cb
+               [in] User-specified error callback routine to invoke if an error
+               occurs while listening.
+
+       listen_context
+               User-specified context information that is returned as a part of all
+               connection requests through the pfn_cm_req_cb routine.  The context is
+               also returned through the error and destroy callbacks.
+
+       ph_cm_listen
+               [out] Upon successful completion of this call, this references a handle
+               to the listen request.  This handle may be used to cancel the listen
+               operation.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The listen request was successfully registered with the connection
+               manager.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the listen request information, error callback function,
+               or listen handle was not provided.
+
+       IB_INVALID_SETTING
+               The class version specified in the listen request is not supported by
+               connection manager or the listen request is not unique.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to register the listen request.
+
+       IB_INVALID_GUID
+               A channel adapter or port GUID is not wildcarded and no channel adapter
+               or port in the system was found for the specified GUID.
+
+       IB_INVALID_LID
+               The lid is not wildcarded and is not within the lid range for the port
+               specified in the listen request information.
+
+       IB_INVALID_PKEY
+               The pkey is not wildcarded and is not a valid pkey for the port
+               specified in the listen request information.
+
+

NOTES

+
       This routine directs the access layer to route connection requests
+       matching the specified connection parameters to the client.  Clients
+       listen for connections matching a particular service ID, and may optionally
+       direct their listen request towards a specific channel adapter, port, or
+       LID.
+
+       If local configuration changes occur that invalidate a listen request, the
+       specified error callback will be invoked.  Invalidated listen requests
+       should be canceled by the user.  An example of a configuration change that
+       invalidates listen requests is a LID change for directed listens.  The
+       listen error callback will be invoked within the context of a system
+       thread.
+
+

SEE ALSO

+
       ib_cm_listen_t, ib_pfn_listen_err_cb_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_listen_t

+ +

[top][index]

+

NAME

+
       ib_cm_listen_t
+
+

DESCRIPTION

+
       Request to listen for incoming connection attempts.
+
+

SYNOPSIS

+
typedef struct _ib_cm_listen
+{
+        ib_net64_t                                      svc_id;
+
+        ib_net64_t                                      ca_guid;
+        ib_net64_t                                      port_guid;
+        ib_net16_t                                      lid;
+        ib_net16_t                                      pkey;
+
+        uint8_t* __ptr64                        p_compare_buffer;
+        uint8_t                                         compare_offset;
+        uint8_t                                         compare_length;
+
+        ib_pfn_cm_req_cb_t                      pfn_cm_req_cb;
+
+        ib_qp_type_t                            qp_type;
+
+        /* valid for ud qp_type only */
+        const void* __ptr64                     sidr_context;
+
+}       ib_cm_listen_t;
+
+

FIELDS

+
       svc_id
+               The identifier of the service to register for incoming connection
+               requests.
+
+       ca_guid
+               Directs the communication manager to register the listen only
+               with the specified channel adapter.  This should be set to IB_ALL_CAS
+               if the listen is not directed to a particular channel adapter.
+
+       port_guid
+               Directs the communication manager to register the listen only
+               with the specified port.  This should be set to IB_ALL_PORTS
+               if the listen is not directed to a particular port.
+
+       lid
+               Directs the communication manager to register the listen only
+               with the specified LID.  This should be set to IB_ALL_LIDS
+               if the listen is not directed to a particular LID.
+
+       pkey
+               Directs the communication manager to register the listen only with
+               the specified pkey value.  This should be set to IB_ALL_PKEYS
+               iv the listen is not directed to a particular partition.
+
+       p_compare_buffer
+               An optionally provided buffer that will be used to match incoming
+               connection requests with a registered service.  Use of this buffer
+               permits multiple services to listen on the same service ID as long as
+               they provide different compare buffers.  Incoming requests will
+               be matched against the compare buffer.
+
+       compare_offset
+               An offset into the user-defined data area of a connection request
+               which contains the start of the data that will be compared against.
+               The offset must be the same for all requests using the same service ID.
+
+       compare_length
+               Specifies the size of the compare buffer in bytes.  The length must
+               be the same for all requests using the same service ID.
+
+       pfn_cm_req_cb
+               References a user-provided callback that will be invoked whenever a
+               connection request is received.
+
+       qp_type
+               Indicates the CM service type.
+
+       pfn_cm_mra_cb
+               References a user-provided callback that will be invoked when
+               a message received acknowledgement is received.
+
+       pfn_cm_rej_cb
+               References a user-provided callback that will be invoked if the
+               connection is rejected by the remote end-point.
+
+       sidr_context
+               sidr specific context for listens. This context is passed back in
+               the ib_pfn_cm_req_cb_t callback.
+
+

NOTES

+
       Users fill out this structure when listening on a service ID with the
+       local communication manager.  The communication manager will use the given
+       service ID and compare buffer to route connection requests to the
+       appropriate client.  Users may direct listens requests on a particular
+       channel adapter, port, or LID.
+
+       Message received acknowledgement (MRA) callbacks will not be invoked
+       until a connection request has been replied to.
+
+

SEE ALSO

+
       ib_listen_info_t, ib_pfn_cm_req_cb_t, ib_pfn_cm_mra_cb_t,
+       ib_qp_type_t
+
+
+
+ +

[Functions] +Access Layer/ib_cm_mra

+ +

[top][index]

+

NAME

+
       ib_cm_mra
+
+

DESCRIPTION

+
       Notifies the remote end-point of a connection or load alternate path
+       request that the request message has been received, but additional
+       processing is required.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_cm_mra(
+        IN              const   ib_cm_handle_t                          h_cm,
+        IN              const   ib_cm_mra_t* const                      p_cm_mra );
+
+

PARAMETERS

+
       h_cm
+               [in] A handle to the connection request, connection reply, or load
+               alternate path request that should receive the message received
+               acknowledgement message.  This is the h_cm_req, h_cm_rep, or
+               h_cm_lap handle provided through the ib_pfn_cm_req_cb_t,
+               ib_pfn_cm_rep_cb_t, or ib_pfn_cm_lap_cb_t callback, respectively.
+
+       p_cm_mra
+               [in] Contains the message received acknowledgement data to return to
+               the requesting end-point.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The message receive acknowledge was sent successfully.
+
+       IB_INVALID_HANDLE
+               The connection manager reply handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the message receive acknowledge information was not
+               provided.
+
+       IB_INVALID_STATE
+               The current connection state does not allow sending this message.
+
+       IB_INVALID_SETTING
+               The class version is not supported by connection manager or the
+               specified private data length is invalid.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to send the message receive acknowledge.
+
+

NOTES

+
       This routine results in the access layer acknowledging a connection or
+       load alternate path message.  It should be invoked by a client if the
+       client is unable to respond to a request within a specified timeout,
+       in order to prevent the remote end-point from timing out.
+
+

SEE ALSO

+
       ib_pfn_cm_req_cb_t, ib_pfn_cm_rep_cb_t, ib_pfn_cm_lap_cb_t, ib_cm_mra_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_mra_rec_t

+ +

[top][index]

+

NAME

+
       ib_cm_mra_rec_t
+
+

DESCRIPTION

+
       Message received acknowledgement information returned to the user through
+       a callback.
+
+

SYNOPSIS

+
typedef struct _ib_cm_mra_rec
+{
+        const uint8_t* __ptr64          p_mra_pdata;
+
+        ib_qp_handle_t                          h_qp;
+        const void* __ptr64                     qp_context;
+
+}       ib_cm_mra_rec_t;
+
+

FIELDS

+
       p_mra_pdata
+               A reference to user-defined private data sent as part of the MRA.
+
+       h_qp
+               The queue pair handle associated with a connection request.
+
+       qp_context
+               The queue pair context associated with a connection request.
+
+

SEE ALSO

+
       ib_cm_req, ib_cm_mra, ib_pfn_cm_mra_cb_t, ib_mra_pdata_t, ib_qp_type_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_mra_t

+ +

[top][index]

+

NAME

+
       ib_cm_mra_t
+
+

DESCRIPTION

+
       Connection message received acknowledgement information used to
+       indicate that a connection request, reply, or load alternate path
+       has been received.
+
+

SYNOPSIS

+
typedef struct _ib_cm_mra
+{
+        uint8_t                                         svc_timeout;
+
+        const uint8_t* __ptr64          p_mra_pdata;
+        uint8_t                                         mra_length;
+
+}       ib_cm_mra_t;
+
+

FIELDS

+
       svc_timeout
+               Indicates the amount of time that the local service requires to
+               complete processing of the previously received message.
+
+       p_mra_pdata
+               Optional user-defined private data sent as part of the message
+               received acknowledgement.
+
+       mra_length
+               Defines the size of the user-defined private data.
+
+

SEE ALSO

+
       ib_cm_mra, ib_pfn_cm_req_cb_t, ib_pfn_cm_rep_cb_t, ib_pfn_cm_lap_cb_t,
+       ib_mra_pdata_t
+
+
+
+ +

[Functions] +Access Layer/ib_cm_rej

+ +

[top][index]

+

NAME

+
       ib_cm_rej
+
+

DESCRIPTION

+
       Rejects a connection request from a remote end-point.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_cm_rej(
+        IN              const   ib_cm_handle_t                          h_cm,
+        IN              const   ib_cm_rej_t* const                      p_cm_rej );
+
+

PARAMETERS

+
       h_cm
+               [in] A handle to the connection request or reply being rejected.
+               This is the h_cm_req or h_cm_rep handle provided through the
+               ib_pfn_cm_req_cb_t or ib_pfn_cm_rep_cb_t callback, respectively.
+
+       p_cm_rej
+               [in] Contains the connection rejection information to return to the
+               connecting end-point.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The connection reject was initiated.
+
+       IB_INVALID_HANDLE
+               The connection manager handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the reject information was not provided.
+
+

NOTES

+
       This routine results in the access layer rejecting a connection
+       and notifying the remote end-point.
+
+

SEE ALSO

+
       ib_pfn_cm_req_cb_t, ib_pfn_cm_rep_cb_t, ib_cm_rej_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_rej_rec_t

+ +

[top][index]

+

NAME

+
       ib_cm_rej_rec_t
+
+

DESCRIPTION

+
       Connection rejection information returned to the user through their
+       rejection callback.
+
+

SYNOPSIS

+
typedef struct _ib_cm_rej_rec
+{
+        ib_rej_status_t                         rej_status;
+        const uint8_t* __ptr64          p_ari;
+        uint8_t                                         ari_length;
+
+        const uint8_t* __ptr64          p_rej_pdata;
+
+        ib_qp_handle_t                          h_qp;
+        const void* __ptr64                     qp_context;
+
+}       ib_cm_rej_rec_t;
+
+

FIELDS

+
       rej_status
+               The reason for the connection rejection.
+
+       p_ari
+               Additional rejection information.  The data referenced by this field
+               is dependent on the rej_status and is defined by the Infiniband
+               specification.
+
+       ari_length
+               Length of valid data provided in the p_ari buffer.
+
+       p_rej_pdata
+               A reference to user-defined private data sent as part of the connection
+               request reply.
+
+       h_qp
+               The queue pair handle associated with a connection request.
+
+       qp_context
+               The queue pair context associated with a connection request.
+
+

SEE ALSO

+
       ib_cm_rej, ib_pfn_cm_rej_cb_t, ib_rej_status_t, ib_ari_t, ib_rej_pdata_t,
+       ib_qp_type_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_rej_t

+ +

[top][index]

+

NAME

+
       ib_cm_rej_t
+
+

DESCRIPTION

+
       Information used to reject a connection request.
+
+

SYNOPSIS

+
typedef struct _ib_cm_rej
+{
+        ib_rej_status_t                         rej_status;
+
+        ib_ari_t* __ptr64                       p_ari;
+        uint8_t                                         ari_length;
+        const uint8_t* __ptr64          p_rej_pdata;
+        uint8_t                                         rej_length;
+
+}       ib_cm_rej_t;
+
+

FIELDS

+
       rej_status
+               The reason for the connection rejection.
+
+       p_ari
+               Additional rejection information.  The data referenced by this field
+               is dependent on the rej_status and is defined by the Infiniband
+               specification.
+
+       ari_length
+               Length of valid data provided in the p_ari buffer.
+
+       p_rej_pdata
+               A reference to user-defined private data sent as part of the
+               reject message.
+
+       rej_length
+               Defines the size of the user-defined private data.
+
+

SEE ALSO

+
       ib_cm_rej, ib_pfn_cm_rej_cb_t, ib_rej_status_t, ib_ari_t, ib_rej_pdata_t
+
+
+
+ +

[Functions] +Access Layer/ib_cm_rep

+ +

[top][index]

+

NAME

+
       ib_cm_rep
+
+

DESCRIPTION

+
       Sends a reply to a connection request, indicating that the connection
+       has been accepted.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_cm_rep(
+        IN              const   ib_cm_handle_t                          h_cm_req,
+        IN              const   ib_cm_rep_t* const                      p_cm_rep );
+
+

PARAMETERS

+
       h_cm_req
+               [in] A handle to the connection request being replied to.  This handle
+               is provided by the access layer through the ib_pfn_cm_req_cb_t
+               callback.
+
+       p_cm_rep
+               [in] Contains reply information to return to the initiator of the
+               connection request.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The connection reply was initiated.
+
+       IB_INVALID_HANDLE
+               The connection manager request handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the reply information was not provided.
+
+       IB_INVALID_STATE
+               The current connection state does not allow sending this message.
+
+       IB_INVALID_SETTING
+               The connect reply information contains one or more of the following
+               errors:
+                 - The class version, queue pair type, or path is not supported by
+                       connection manager.
+                 - The private data length exceeds the value allowed by the connection
+                       class version.
+                 - The primary path is not on the same channel adapter as the queue
+                       pair.
+                 - The primary and alternate paths are on different channel adapters.
+                 - The primary and alternate paths specify different MTUs.
+                 - A primary or alternate path record packet lifetime is out of range.
+                 - A primary or alternate path record pkey is out of range.
+                 - The specified private data length is invalid.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle specified in the reply was invalid.
+
+       IB_INVALID_QP_STATE
+               The queue pair was in an invalid state to perform the operation.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to send the connect reply.
+
+

NOTES

+
       This routine results in the access layer replying to a connection
+       request from a remote node.  This call results in sending a response
+       to the requesting node that the request has been accepted.
+
+

SEE ALSO

+
       ib_cm_rep_t, ib_pfn_cm_req_cb_t, ib_pfn_cm_rep_cb_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_rep_rec_t

+ +

[top][index]

+

NAME

+
       ib_cm_rep_rec_t
+
+

DESCRIPTION

+
       Connection request reply information returned to the user through their
+       connection reply callback.
+
+

SYNOPSIS

+
typedef struct _ib_cm_rep_rec
+{
+        const uint8_t* __ptr64          p_rep_pdata;
+
+        ib_qp_type_t                            qp_type;
+
+        ib_cm_handle_t                          h_cm_rep;
+        /* valid for rc, uc & rd qp_type only */
+        const void* __ptr64                     qp_context;
+        uint8_t                                         resp_res;
+        boolean_t                                       flow_ctrl;
+        ib_apr_status_t                         apr_status;
+
+        /* valid for ud qp_type only */
+        const void* __ptr64                     sidr_context;
+        ib_sidr_status_t                        status;
+        ib_net32_t                                      remote_qp;
+        ib_net32_t                                      remote_qkey;
+        ib_class_port_info_t            class_info;
+
+}       ib_cm_rep_rec_t;
+
+

FIELDS

+
       p_rep_pdata
+               A reference to user-defined private data sent as part of the connection
+               request reply.
+
+       qp_type
+               Indicates the CM service type.
+
+       h_cm_rep
+               The handle to the communication manager reply.  This handle is used
+               to issue a ready to use message or to reject the connection.
+
+       h_qp
+               The handle to the queue pair associated with a connection request.
+
+       qp_context
+               The queue pair context associated with a connection request.
+
+       resp_res
+               The maximum number of RDMA read/atomic operations from the recipient
+               that the requestor supports on the connection.  This may be less than
+               the init_depth specified in the call to ib_cm_req.  The local queue
+               pair will be configured with this value unless the connection is
+               rejected.
+
+       flow_ctrl
+               Indicates if the remote CA implements hardware end-to-end flow control.
+
+       apr_status
+               Indicates whether the alternate path information was accepted.
+
+       h_al
+               The AL handle on which the SIDR request was issued.
+
+       sidr_context
+               The sidr_context used in ib_cm_req.
+
+       status
+               Status of the request made previously using ib_cm_req.
+
+       remote_qp
+               Identifies the destination queue pair number.
+
+       remote_qkey
+               Identifies the destination qkey.
+
+       class_info
+               Identifies the class_port_info returned if status was not successful.
+               This field has no value if status is successful.
+
+

SEE ALSO

+
       ib_cm_req, ib_cm_rep, ib_pfn_cm_rep_cb_t, ib_cm_status_t, ib_rep_pdata_t
+       ib_qp_type_t, ib_sidr_status_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_rep_t

+ +

[top][index]

+

NAME

+
       ib_cm_rep_t
+
+

DESCRIPTION

+
       Connection reply information used when establishing a connection.
+
+

SYNOPSIS

+
typedef struct _ib_cm_rep
+{
+        ib_al_flags_t                           flags;
+
+        const uint8_t* __ptr64          p_rep_pdata;
+        uint8_t                                         rep_length;
+
+        ib_qp_handle_t                          h_qp;
+        ib_qp_type_t                            qp_type;
+
+        /* valid for rc, uc & rd qp_type only */
+        ib_access_t                                     access_ctrl;
+        uint32_t                                        sq_depth;
+        uint32_t                                        rq_depth;
+
+        uint8_t                                         init_depth;
+        uint8_t                                         target_ack_delay;
+        ib_cm_failover_t                        failover_accepted;
+        boolean_t                                       flow_ctrl;
+        uint8_t                                         rnr_nak_timeout;
+        uint8_t                                         rnr_retry_cnt;
+
+        ib_pfn_cm_rej_cb_t                      pfn_cm_rej_cb;
+        ib_pfn_cm_mra_cb_t                      pfn_cm_mra_cb;
+        ib_pfn_cm_rtu_cb_t                      pfn_cm_rtu_cb;
+        ib_pfn_cm_lap_cb_t                      pfn_cm_lap_cb;
+        ib_pfn_cm_dreq_cb_t                     pfn_cm_dreq_cb;
+
+        ib_recv_wr_t* __ptr64                   p_recv_wr;
+        ib_recv_wr_t* __ptr64 *__ptr64  pp_recv_failure;
+
+        /*valid for ud qp_type only */
+        ib_sidr_status_t                        status;
+        ib_class_port_info_t            class_info;
+
+}       ib_cm_rep_t;
+
+

FIELDS

+
       flags
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
+               process the called routine synchronously.
+
+       p_rep_pdata
+               Optional user-defined private data sent as part of the connection
+               reply.
+
+       rep_length
+               Defines the size of the user-defined private data.
+
+       qp_type
+               Indicates the CM service type.
+
+       h_qp
+               A handle to the queue pair to use in the connection. For SIDR, h_qp
+               is valid only if sidr status is IB_SIDR_SUCCESS.
+
+       access_ctrl
+               Indicates the type of access permitted on the local QP.
+
+       sq_depth
+               The maximum number of outstanding send operations that the local
+               QP needs to support.
+
+       rq_depth
+               The maximum number of outstanding receive operations that the local
+               QP needs to support.
+
+       init_depth
+               The maximum number of outstanding RDMA read/atomic operations the
+               sender of the reply will have outstanding to the remote QP.
+
+       target_ack_delay
+               The time that the remote QP should wait to receive an ACK from the
+               local QP.
+
+       failover_accepted
+               Status indicating if the fail over path was accepted by the sender
+               of the reply.
+
+       flow_ctrl
+               Indicates whether the local CA supports end-to-end flow control.
+
+       rnr_nak_timeout
+               The time to wait before retrying a packet after receiving a RNR NAK.
+
+       rnr_retry_cnt
+               The number of times that the local QP should retry a send operation
+               after receiving an RNR NACK before reporting an error.
+
+       pfn_cm_rtu_cb
+               References a user-defined callback that will be invoked when
+               a connection is ready to use for send operations.
+
+       pfn_cm_lap_cb
+               References a user-defined callback that will be invoked when
+               a load alternate path request is received for the connecting
+               queue pair or end-to-end context.
+
+       pfn_cm_dreq_cb
+               References a user-defined callback that will be invoked when
+               a disconnect request is received is for the connecting
+               queue pair or end-to-end context.
+
+       p_recv_wr
+               A reference to the head of the work request list to be initially
+               posted to the receive queue.  Providing this list closes a potential
+               race condition between sending a CM REP message and posting receives.
+               Use of this field is optional.
+
+       pp_recv_failure
+               If the post receive operation failed, this references the work
+               request in the p_recv_wr list where the first failure occurred.
+               This field is required only if p_recv_wr is used.
+
+       status
+               sidr status value returned back to a previously received REQ.
+
+       class_info
+               The contents of this field are valid only if status is IB_SIDR_REDIRECT.
+
+

SEE ALSO

+
       ib_cm_rep, ib_access_t, ib_cm_failover_t, ib_rep_pdata_t
+       ib_pfn_cm_rtu_cb_t, ib_pfn_cm_lap_cb_t, ib_pfn_cm_dreq_cb_t,
+       ib_qp_type_t
+
+
+
+ +

[Functions] +Access Layer/ib_cm_req

+ +

[top][index]

+

NAME

+
       ib_cm_req
+
+

DESCRIPTION

+
       Issues a connection request to a specified end-point.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_cm_req(
+        IN              const   ib_cm_req_t* const                      p_cm_req );
+
+

PARAMETERS

+
       p_cm_req
+               [in] Information describing the type of connection and the remote
+               endpoint for the connection.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The connection request was initiated.
+
+       IB_INVALID_PARAMETER
+               A reference to the connect request information was not provided.
+
+       IB_INVALID_SETTING
+               The connect request information contains one or more of the following
+               errors:
+                 - The class version, queue pair type, or path is not supported by
+                       connection manager.
+                 - The private data length exceeds the value allowed by the specified
+                       connection class version.
+                 - The primary path is not on the same channel adapter as the queue
+                       pair.
+                 - The primary and alternate paths are on different channel adapters.
+                 - The primary and alternate paths specify different MTUs.
+                 - A primary or alternate path record packet lifetime is out of range.
+                 - A primary or alternate path record pkey is out of range.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle specified in the connect request was invalid.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_STATE
+               The queue pair or end-to-end context is already connected.
+
+       IB_INVALID_QP_STATE
+               The queue pair was in an invalid state to perform the operation.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to initiate the connect request.
+
+

NOTES

+
       This routine issues a connection request through the communication
+       manager to a specified end-point.  The p_cm_req parameter contains
+       details needed to form the connection.  The connection request will
+       match with a remote ib_cm_listen or ib_cm_req connection request.
+
+

SEE ALSO

+
       ib_cm_req_t, ib_cm_listen, ib_pfn_cm_req_cb_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_req_rec_t

+ +

[top][index]

+

NAME

+
       ib_cm_req_rec_t
+
+

DESCRIPTION

+
       Connection request information returned to the user through their
+       connection request callback.
+
+

SYNOPSIS

+
#pragma warning(disable:4324)
+typedef struct _ib_cm_req_rec
+{
+        const void* __ptr64                     context;
+        ib_cm_handle_t                          h_cm_req;
+        ib_listen_handle_t                      h_cm_listen;
+
+        const uint8_t* __ptr64          p_req_pdata;
+
+        ib_qp_type_t                            qp_type;
+
+        /* valid for rc, uc & rd qp_type only */
+        uint8_t                                         resp_res;
+        boolean_t                                       flow_ctrl;
+        uint8_t                                         rnr_retry_cnt;
+        ib_path_rec_t                           primary_path;
+        ib_path_rec_t                           alt_path;
+
+        /* valid for ud qp_type only */
+        ib_net16_t                                      pkey;
+        const void* __ptr64                     sidr_context;
+
+}       ib_cm_req_rec_t;
+#pragma warning(default:4324)
+
+

FIELDS

+
       context
+               For peer-to-peer connections, this is the queue pair context associated
+               with a connection request.  For listens, this is the listen context
+               specified through the ib_cm_listen routine.
+
+       h_cm_req
+               The handle to the communication manager request.  This handle is used
+               to reply to the or reject the connection.
+
+       h_cm_listen
+               For connection request callbacks initiated in response to an
+               ib_cm_listen call, this is a handle to the listen request.  This
+               handle is provided to the user to avoid a race condition between
+               the return of the ib_cm_listen routine and the notification of a
+               connection request.
+
+       p_req_pdata
+               A reference to user-defined private data sent as part of the connection
+               request.
+
+       qp_type
+               Indicates the CM service type.
+
+       resp_res
+               The maximum number of RDMA read/atomic operations from the recipient
+               that the requestor supports on the connection.  The init_depth
+               specified in the call to ib_cm_rep must be less than or equal to
+               this value.
+
+       flow_ctrl
+               Indicates if the remote CA implements hardware end-to-end flow control.
+
+       rnr_retry_cnt
+               Requested number of RNR NAK retries to perform before generating a
+               local error.
+
+       primary_path
+               The path record to use for the primary connection.
+
+       alt_path
+               The path record to use for the alternate connection.
+
+       pkey
+               The pkey used in the user's request.
+
+       sidr_context
+               The sidr_context used in ib_cm_listen.
+
+

SEE ALSO

+
       ib_cm_req, ib_cm_listen, ib_pfn_cm_req_cb_t,
+       ib_access_t, ib_path_rec_t, ib_req_pdata_t, ib_qp_type_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_req_t

+ +

[top][index]

+

NAME

+
       ib_cm_req_t
+
+

DESCRIPTION

+
       Connection request information used to establish a new connection.
+
+

SYNOPSIS

+
typedef struct _ib_cm_req
+{
+        ib_net64_t                                      svc_id;
+
+        ib_al_flags_t                           flags;
+        uint8_t                                         max_cm_retries;
+
+        ib_path_rec_t* __ptr64          p_primary_path;
+
+        ib_pfn_cm_rep_cb_t                      pfn_cm_rep_cb;
+
+        const uint8_t* __ptr64          p_req_pdata;
+        uint8_t                                         req_length;
+
+        ib_qp_type_t                            qp_type;
+
+        /* valid for rc, uc & rd qp_type only */
+        ib_qp_handle_t                          h_qp;
+
+        uint8_t* __ptr64                        p_compare_buffer;
+        uint8_t                                         compare_offset;
+        uint8_t                                         compare_length;
+
+        uint8_t                                         resp_res;
+        uint8_t                                         init_depth;
+        uint8_t                                         remote_resp_timeout;
+        boolean_t                                       flow_ctrl;
+        uint8_t                                         local_resp_timeout;
+        uint8_t                                         rnr_nak_timeout;
+        uint8_t                                         rnr_retry_cnt;
+        uint8_t                                         retry_cnt;
+
+        ib_path_rec_t* __ptr64          p_alt_path OPTIONAL;
+
+        ib_pfn_cm_req_cb_t                      pfn_cm_req_cb;
+        ib_pfn_cm_mra_cb_t                      pfn_cm_mra_cb;
+        ib_pfn_cm_rej_cb_t                      pfn_cm_rej_cb;
+
+        /* valid for ud qp_type only */
+        ib_al_handle_t                          h_al;
+        const void* __ptr64                     sidr_context;
+        uint32_t                                        timeout_ms;
+        ib_net16_t                                      pkey;
+
+}       ib_cm_req_t;
+
+

FIELDS

+
       svc_id
+               The ID of the remote service to which the connection request is
+               being made.
+
+       flags
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
+               process the called routine synchronously.
+
+       max_cm_retries
+               The maximum number of times that either CM should resend a connection
+               establishment message.
+
+       p_primary_path
+               Path information over which to establish the primary connection.
+
+       pfn_cm_rep_cb
+               References a user-provided callback that will be invoked when
+               a reply to the connection request is received.
+
+       p_req_pdata
+               Optional user-defined private data sent as part of the connection
+               request.
+
+       req_length
+               Defines the size of the user-defined private data.
+
+       qp_type
+               Indicates the CM service type.
+
+       h_qp
+               A handle to the queue pair to use in the connection.
+
+       p_compare_buffer
+               An optionally provided buffer that will be used to match incoming
+               connection requests with a registered service.  Use of this buffer
+               permits multiple services to connect using the same service ID as
+               long as they provide different compare buffers.  Incoming requests
+               will be matched against the compare buffer.  Valid for peer-to-peer
+               connection requests only.
+
+       compare_offset
+               An offset into the user-defined data area of a connection request
+               which contains the start of the data that will be compared against.
+               The offset must be the same for all requests using the same service ID.
+               Valid for peer-to-peer connection requests only.
+
+       compare_length
+               Specifies the size of the compare buffer in bytes.  The length must
+               be the same for all requests using the same service ID.  Valid for
+               peer-to-peer connection requests only.
+
+       resp_res
+               The maximum number of outstanding RDMA read/atomic operations the
+               requestor supports from the remote QP.
+
+       init_depth
+               The maximum number of outstanding RDMA read/atomic operations the
+               requestor will have outstanding to the remote QP.
+
+       remote_resp_timeout
+               The time within which the remote CM should transmit a response to
+               the sender.  This value is expressed as
+               4.096 * (2 ^ local_resp_timeout) microseconds.
+
+       flow_ctrl
+               Indicates whether the local CA supports end-to-end flow control.
+
+       local_resp_timeout
+               The time that the remote CM should wait to receive a response from
+               the local CM.  This value is expressed as
+               4.096 * (2 ^ local_resp_timeout) microseconds.
+
+       rnr_nak_timeout
+               The time to wait before retrying a packet after receiving a RNR NAK.
+               This value is defined in section 9.7.5.2.8 of the IB Spec, table 45.
+
+       rnr_retry_cnt
+               The number of times that the local QP should retry a send operation
+               after receiving an RNR NACK before reporting an error.
+
+       retry_cnt
+               The number of times that a QP should retry a send operation before
+               reporting an error.
+
+       p_alt_path
+               Optional path information that will be used as the alternate
+               connection path in the case of failure.
+
+       pfn_cm_req_cb
+               References a user-provided callback that will be invoked when
+               a request for a connection is received.  This is required for peer-to
+               peer connection requests, and must be NULL for client/server
+               connection requests.
+
+       pfn_cm_mra_cb
+               References a user-provided callback that will be invoked when
+               a message received acknowledgement is received.
+
+       pfn_cm_rej_cb
+               References a user-provided callback that will be invoked if the
+               connection is rejected by the remote end-point.
+
+       sidr_context
+               The user-defined sidr context information that will be passed back in a
+               ib_cm_req callback.
+
+       timeout_ms
+               Timeout value in milli-seconds for the REQ to expire.  The CM will add
+               twice packet lifetime to this value to determine the actual timeout
+               value used.
+
+       pkey
+               pkey to be used as part of the request. This field is only valid for
+               IB_MCLASS_CM_VER_2 clients.
+
+

SEE ALSO

+
       ib_cm_req, ib_pfn_cm_req_cb_t, ib_pfn_cm_rep_cb_t, ib_pfn_cm_mra_cb_t,
+       ib_pfn_cm_rej_cb_t, ib_path_rec_t, ib_req_pdata_t, ib_qp_type_t
+
+
+
+ +

[Functions] +Access Layer/ib_cm_rtu

+ +

[top][index]

+

NAME

+
       ib_cm_rtu
+
+

DESCRIPTION

+
       Sends a ready to use message for a connection request, indicating that
+       the connection has been accepted and is ready for use.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_cm_rtu(
+        IN              const   ib_cm_handle_t                          h_cm_rep,
+        IN              const   ib_cm_rtu_t* const                      p_cm_rtu );
+
+

PARAMETERS

+
       h_cm_rep
+               [in] A handle to the connection reply being responded to.  This handle
+               is provided by the access layer through the ib_pfn_cm_rep_cb_t
+               callback.
+
+       p_cm_rtu
+               [in] Contains ready to use information to return to the sender of the
+               connection reply.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The connection ready to use was initiated.
+
+       IB_INVALID_HANDLE
+               The connection manager reply handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the ready to use information was not provided.
+
+       IB_INVALID_STATE
+               The current connection state does not allow sending this message.
+
+       IB_INVALID_SETTING
+               The specified queue pair attributes were invalid or the private data
+               length exceeds the value allowed by the specified connection class
+               version.
+
+       IB_UNSUPPORTED
+               The specified queue pair access control was not supported.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to send the ready to use response.
+
+

NOTES

+
       This routine results in the access layer marking a connection as ready
+       to use and notifying the remote end-point.
+
+

SEE ALSO

+
       ib_cm_rep_t, ib_pfn_cm_rep_cb_t, ib_cm_rtu_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_rtu_rec_t

+ +

[top][index]

+

NAME

+
       ib_cm_rtu_rec_t
+
+

DESCRIPTION

+
       Connection ready to use message information returned to the user through
+       their ready to use callback.
+
+

SYNOPSIS

+
typedef struct _ib_cm_rtu_rec
+{
+        const uint8_t* __ptr64          p_rtu_pdata;
+
+        ib_qp_handle_t                          h_qp;
+        const void* __ptr64                     qp_context;
+
+}       ib_cm_rtu_rec_t;
+
+

FIELDS

+
       p_rtu_pdata
+               A reference to user-defined private data sent as part of the ready
+               to use message.
+
+       h_qp
+               The queue pair handle associated with the connection request.
+
+       qp_context
+               The queue pair context associated with the connection request.
+
+

SEE ALSO

+
       ib_cm_rtu, ib_pfn_cm_rtu_cb_t, ib_cm_status_t, ib_rtu_pdata_t,
+       ib_qp_type_t
+
+
+
+ +

[Structures] +Access Layer/ib_cm_rtu_t

+ +

[top][index]

+

NAME

+
       ib_cm_rtu_t
+
+

DESCRIPTION

+
       Connection ready to use information used when establishing a connection.
+
+

SYNOPSIS

+
typedef struct _ib_cm_rtu
+{
+        ib_access_t                                     access_ctrl;
+        uint32_t                                        sq_depth;
+        uint32_t                                        rq_depth;
+
+        const uint8_t* __ptr64          p_rtu_pdata;
+        uint8_t                                         rtu_length;
+
+        ib_pfn_cm_apr_cb_t                      pfn_cm_apr_cb;
+        ib_pfn_cm_dreq_cb_t                     pfn_cm_dreq_cb;
+
+}       ib_cm_rtu_t;
+
+

FIELDS

+
       access_ctrl
+               Indicates the type of access permitted on the local QP.
+
+       sq_depth
+               The maximum number of outstanding send operations that the local
+               QP needs to support.  This field should be set to zero if the CA
+               does not support changing the work request depth after the QP is
+               created.
+
+       rq_depth
+               The maximum number of outstanding receive operations that the local
+               QP needs to support.  This field should be set to zero if the CA
+               does not support changing the work request depth after the QP is
+               created.
+
+       p_rtu_pdata
+               Optional user-defined private data sent as part of the connection
+               ready to use message.
+
+       rtu_length
+               Defines the size of the user-defined private data.
+
+       pfn_cm_apr_cb
+               References a user-defined callback that will be invoked when an
+               alternate path response is received for the connecting queue pair
+               or end-to-end context.
+
+       pfn_cm_dreq_cb
+               References a user-defined callback that will be invoked when a
+               disconnect request is received is for the connecting queue pair
+               or end-to-end context.
+
+

SEE ALSO

+
       ib_cm_rtu, ib_access_t, ib_rtu_pdata_t
+
+
+
+ +

[Structures] +Access Layer/ib_cq_create_t

+ +

[top][index]

+

NAME

+
       ib_cq_create_t
+
+

DESCRIPTION

+
       Attributes used to initialize a completion queue at creation time.
+
+

SYNOPSIS

+
typedef struct _ib_cq_create
+{
+        uint32_t                                                                size;
+        ib_pfn_comp_cb_t                                                pfn_comp_cb;
+        cl_waitobj_handle_t                                             h_wait_obj;
+
+}       ib_cq_create_t;
+
+

FIELDS

+
       size
+               Specifies the maximum number of work completions that may be on the
+               completion queue.  If the creation call is successful, the actual
+               size of the completion queue will be returned.  The actual size of
+               the CQ will be greater than or equal to the requested size.
+
+       pfn_comp_cb
+               A callback that is invoked whenever a signaled completion occurs on
+               the completion queue.  This field is mutually exclusive with the
+               p_event field.
+
+       h_wait_obj
+               A wait object that is triggered whenever a signaled completion occurs
+               on the completion queue.  This field is mutually exclusive with the
+               pfn_comp_cb field and is only valid for user-mode clients.  The wait
+               object must be ready for use when the call to ib_create_cq is invoked.
+
+

NOTES

+
       Clients must specify either an event or a callback when creating a
+       completion queue.  When a signaled completion occurs on the completion
+       queue, the client will be notified through the callback or by
+       signaling the specified event.
+
+

SEE ALSO

+
       ib_create_cq, ib_pfn_comp_cb_t
+
+
+
+ +

[Functions] +Access Layer/ib_create_av

+ +

[top][index]

+

NAME

+
       ib_create_av
+
+

DESCRIPTION

+
       Creates an address vector.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_create_av(
+        IN              const   ib_pd_handle_t                          h_pd,
+        IN              const   ib_av_attr_t* const                     p_av_attr,
+                OUT                     ib_av_handle_t* const           ph_av );
+
+

PARAMETERS

+
       h_pd
+               [in] A handle to an allocated protection domain that the address
+               vector will be associated with.
+
+       p_av_attr
+               [in] Attributes for the newly created address vector.
+
+       ph_av
+               [out] Upon successful completion of this call, this references a
+               handle to the newly created address vector.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The operation was successful.
+
+       IB_INVALID_PD_HANDLE
+               The protection domain handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the address vector attributes or handle was not
+               provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to create the address vector.
+
+       IB_INVALID_PORT
+               The port number supplied, through the address vector attributes,
+               was invalid for the given channel adapter.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to create the address vector.
+
+

NOTES

+
       This routine creates an address vector.  Clients specify the attributes
+       of the address vector through the p_av_attr parameter.
+
+

SEE ALSO

+
       ib_query_av, ib_modify_av, ib_destroy_av
+
+
+
+ +

[Functions] +Access Layer/ib_create_cq

+ +

[top][index]

+

NAME

+
       ib_create_cq
+
+

DESCRIPTION

+
       Creates a completion queue and returns its handle to the user.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_create_cq(
+        IN              const   ib_ca_handle_t                          h_ca,
+        IN      OUT                     ib_cq_create_t* const           p_cq_create,
+        IN              const   void* const                                     cq_context,
+        IN              const   ib_pfn_event_cb_t                       pfn_cq_event_cb OPTIONAL,
+                OUT                     ib_cq_handle_t* const           ph_cq );
+
+

PARAMETERS

+
       h_ca
+               [in] A handle to an open channel adapter.
+
+       p_cq_create
+               [in] Attributes necessary to allocate and initialize the
+               completion queue.
+
+       cq_context
+               [in] A user-specified context associated with the completion queue.
+
+       pfn_cq_event_cb
+               [in] User-specified error callback routine invoked after an
+               asynchronous event has occurred on the completion queue.
+
+       ph_cq
+               [out] Upon successful completion of this call, this references a
+               handle to the newly created completion queue.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The completion queue was successfully created.
+
+       IB_INVALID_CA_HANDLE
+               The channel adapter handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the completion queue attributes or handle was not
+               provided.
+
+       IB_INVALID_SETTING
+               The specified attributes that should be used to create the completion
+               queue are invalid.  Both completion callback and wait object
+               information were supplied or are missing.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to create the completion queue.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to create the completion queue.
+
+       IB_INVALID_CQ_SIZE
+               The requested size of the completion queue was larger than the
+               maximum supported by the associated channel adapter.
+
+

NOTES

+
       This routine allocates a completion queue on the specified channel
+       adapter.  If the completion queue cannot be allocated, an error is
+       returned.  When creating the completion queue, users associate a context
+       with the completion queue.  This context is returned to the user through
+       the completion and asynchronous event callbacks.
+
+

SEE ALSO

+
       ib_query_cq, ib_modify_cq, ib_destroy_cq, ib_cq_create_t, ib_pfn_event_cb_t
+
+
+
+ +

[Functions] +Access Layer/ib_create_ioc

+ +

[top][index]

+

NAME

+
       ib_create_ioc
+
+

DESCRIPTION

+
       Creates an instance of an I/O controller.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_create_ioc(
+        IN              const   ib_ca_handle_t                          h_ca,
+        IN              const   ib_ioc_profile_t* const         p_ioc_profile,
+                OUT                     ib_ioc_handle_t* const          ph_ioc );
+
+

PARAMETERS

+
       h_ca
+               [in] A handle to an opened channel adapter.  The controller will be
+               created to be exposed through the given adapter.
+
+       p_ioc_profile
+               [in] I/O controller profile information.
+
+       ph_ioc
+               [out] Upon successful completion of this call, this references a
+               handle to the created I/O controller.  This handle may be used to
+               add service entries to the controller and register it.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The I/O controller was successfully created.
+
+       IB_INVALID_CA_HANDLE
+               The channel adapter handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the I/O controller profile information or handle
+               was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to create the I/O controller.
+
+

NOTES

+
       This routine creates an I/O controller.  Once created, services may be
+       added to the controller before being registered with the local device
+       manager.
+
+

SEE ALSO

+
       ib_destroy_ioc, ib_add_svc_entry, ib_reg_ioc, ib_ioc_profile_t
+
+
+
+ +

[Functions] +Access Layer/ib_create_mad_pool

+ +

[top][index]

+

NAME

+
       ib_create_mad_pool
+
+

DESCRIPTION

+
       Creates a pool of MAD elements for use sending and receive management
+       datagrams.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_create_mad_pool(
+        IN              const   ib_al_handle_t                          h_al,
+        IN              const   size_t                                          min,
+        IN              const   size_t                                          max,
+        IN              const   size_t                                          grow_size,
+                OUT                     ib_pool_handle_t* const         ph_pool );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an open instance of the access layer.
+
+       min
+               [in] The minimum number of MAD elements to create in the pool.
+
+       max
+               [in] The maximum number of MAD elements that will be created by the
+               pool.  If max is set to 0, the pool will continue to grow as long
+               as system resources are available.
+
+       grow_size
+               [in] The number of MAD elements to add to the pool when growing it.
+               If set to 0, the pool will not grow beyond the number specified
+               at creation.  This value must be greater than 0, if min is set to 0.
+
+       ph_pool
+               [out] On successful completion of this call, this returns a handle to
+               the newly created pool.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The MAD pool was created successfully.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the pool handle was not provided.
+
+       IB_INVALID_SETTING
+               The maximum number of MAD elements was non-zero and less than the
+               minimum number of MAD elements.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to create the MAD pool.
+
+

NOTES

+
       This routine creates a pool of MAD elements.  The elements may be used
+       to send and receive MADs on alias and MAD type QPs.
+
+

SEE ALSO

+
       ib_destroy_mad_pool, ib_get_mad, ib_put_mad, ib_reg_mad_pool,
+       ib_dereg_mad_pool
+
+
+
+ +

[Functions] +Access Layer/ib_create_mw

+ +

[top][index]

+

NAME

+
       ib_create_mw
+
+

DESCRIPTION

+
       Creates a memory window associated with the specified protection domain.
+       Newly created windows are not bound to any specific memory region.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_create_mw(
+        IN              const   ib_pd_handle_t                          h_pd,
+                OUT                     net32_t* const                          p_rkey,
+                OUT                     ib_mw_handle_t* const           ph_mw );
+
+

PARAMETERS

+
       h_pd
+               [in] A handle to an existing protection domain that the memory window
+               should be created within.
+
+       p_rkey
+               [out] The current rkey associated with the memory window.  This key is
+               used to bind the window to a registered memory region.
+
+       ph_mw
+               [out] Upon successful completion of this call, this references a handle
+               to the memory window.  This handle is used to bind and destroy
+               the window.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The memory window was successfully created.
+
+       IB_INVALID_PD_HANDLE
+               The protection domain handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the memory window rkey or handle was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to create the memory window.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to create the memory window.
+
+

NOTES

+
       This routine creates an unbound memory window associated with a specified
+       protection domain.  The memory window cannot be used for data transfer
+       operations until being bound to a registered memory region.
+
+

SEE ALSO

+
       ib_destroy_mw, ib_query_mw, ib_bind_mw
+
+
+
+ +

[Functions] +Access Layer/ib_create_qp

+ +

[top][index]

+

NAME

+
       ib_create_qp
+
+

DESCRIPTION

+
       Creates a queue pair and returns its handle to the user.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_create_qp(
+        IN              const   ib_pd_handle_t                          h_pd,
+        IN              const   ib_qp_create_t* const           p_qp_create,
+        IN              const   void* const                                     qp_context,
+        IN              const   ib_pfn_event_cb_t                       pfn_qp_event_cb OPTIONAL,
+                OUT                     ib_qp_handle_t* const           ph_qp );
+
+

PARAMETERS

+
       h_pd
+               [in] This is a handle to a protection domain associated with the queue
+               pair.
+
+       p_qp_create
+               [in] Attributes necessary to allocate and initialize the queue pair.
+
+       qp_context
+               [in] A user-specified context information associated with the
+               queue pair.
+
+       pfn_qp_event_cb
+               [in] User-specified error callback routine invoked after an
+               asynchronous event has occurred on the queue pair.
+
+       ph_qp
+               [out] Upon successful completion of this call, this references a
+               handle to the newly created queue pair.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The queue pair was successfully created.
+
+       IB_INVALID_PD_HANDLE
+               The protection domain to associate with the queue pair was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the queue pair attributes or handle was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to create the queue pair.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to create the queue pair.
+
+       IB_INVALID_CQ_HANDLE
+               The send or receive completion queue to associate with the queue pair
+               was invalid.
+
+       IB_INVALID_SETTING
+               The specified queue pair creation attributes are invalid.
+
+       IB_UNSUPPORTED
+               The specified queue pair type was not supported by the channel adapter.
+
+       IB_INVALID_MAX_WRS
+               The requested maximum send or receive work request depth could not be
+               supported.
+
+       IB_INVALID_MAX_SGE
+               The requested maximum number of scatter-gather entries for the send or
+               receive queue could not be supported.
+
+

NOTES

+
       This routine allocates a queue pair with the specified attributes.  If
+       the queue pair cannot be allocated, an error is returned.  When creating
+       the queue pair, users associate a context with the queue pair.  This
+       context is returned to the user through the asynchronous event callback
+       if an event occurs.
+
+       This routine is used to create queue pairs of type:
+
+       IB_QPT_RELIABLE_CONN
+       IB_QPT_UNRELIABLE_CONN
+       IB_QPT_UNRELIABLE_DGRM
+       IB_QPT_MAD
+
+       Callers of ib_create_qp should call ib_init_dgrm_svc if the queue pair
+       is of type IB_QPT_UNRELIABLE_DGRM or IB_QPT_MAD before sending or
+       receiving data.  IB_QPT_RELIABLE_CONN, IB_QPT_UNRELIABLE_CONN type
+       queue pairs should be used by the connection establishment process
+       before data may be sent or received on the QP.
+
+       This call does not return the QP attributes as MAD QPs do not support
+       such an operation.  This is a minor specification deviation.
+
+

SEE ALSO

+
       ib_query_qp, ib_modify_qp, ib_destroy_qp, ib_cm_req, ib_cm_rep, ib_cm_rtu
+       ib_init_dgrm_svc, ib_qp_create_t, ib_pfn_event_cb_t, ib_qp_attr_t
+
+
+
+ +

[Functions] +Access Layer/ib_dealloc_pd

+ +

[top][index]

+

NAME

+
       ib_dealloc_pd
+
+

DESCRIPTION

+
       Deallocates a protection domain.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_dealloc_pd(
+        IN              const   ib_pd_handle_t                          h_pd,
+        IN              const   ib_pfn_destroy_cb_t                     pfn_destroy_cb OPTIONAL );
+
+

PARAMETERS

+
       h_pd
+               [in] A handle to an allocated protection domain.
+
+       pfn_destroy_cb
+               [in] A user-specified callback that is invoked after the protection
+               domain has been successfully destroyed.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The operation was successful.
+
+       IB_INVALID_PD_HANDLE
+               The protection domain handle was invalid.
+
+

NOTES

+
       This call deallocates a protection domain and releases all associated
+       resources, including queue pairs and registered memory regions.  Since
+       callbacks may be outstanding against one of protection domain's related
+       resources at the time the deallocation call is invoked, this call operates
+       asynchronously.  The user will be notified through a callback once the
+       deallocation call completes, indicating that no additional callbacks
+       will be invoked for a related resource.
+
+

SEE ALSO

+
       ib_alloc_pd
+
+
+
+ +

[Functions] +Access Layer/ib_dereg_mad_pool

+ +

[top][index]

+

NAME

+
       ib_dereg_mad_pool
+
+

DESCRIPTION

+
       Deregisters a MAD pool from a protection domain.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_dereg_mad_pool(
+        IN              const   ib_pool_key_t                           pool_key );
+
+

PARAMETERS

+
       pool_key
+               [in] Key to the MAD pool to deregister.  The specified pool must
+               have been registered with a protection domain through a call to
+               ib_reg_mad_pool.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The MAD pool was successfully deregistered from the protection domain.
+
+       IB_INVALID_PARAMETER
+               The MAD pool key was invalid.
+
+       IB_RESOURCE_BUSY
+               One or more MAD elements were removed from the MAD pool using the
+               specified pool key, and were not returned.
+
+

NOTES

+
       This function deregisters a MAD pool with a protection domain.  After
+       successful completion of this call, the MAD elements of the associated
+       pool are no longer usable on the protection domain.
+
+

SEE ALSO

+
       ib_create_mad_pool, ib_destroy_mad_pool, ib_reg_mad_pool
+
+
+
+ +

[Functions] +Access Layer/ib_dereg_mr

+ +

[top][index]

+

NAME

+
       ib_dereg_mr
+
+

DESCRIPTION

+
       Deregisters a registered memory region.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_dereg_mr(
+        IN              const   ib_mr_handle_t                          h_mr );
+
+

PARAMETERS

+
       h_mr
+               [in] A handle to a registered memory region that will be unregistered.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The memory region was successfully deregistered.
+
+       IB_INVALID_MR_HANDLE
+               The memory region handle was invalid.
+
+       IB_RESOURCE_BUSY
+               The memory region has memory windows bound to it.
+
+

NOTES

+
       This routine deregisters a memory region with a channel adapter.  The
+       region may be deregistered only if there are no memory  windows or
+       existing shared memory regions currently bound to the region.  Work
+       requests referencing this region when it is deregistered will fail
+       with a WRS_LOCAL_PROTECTION_ERR error.
+
+

SEE ALSO

+
       ib_reg_mem, ib_reg_phys, ib_reg_shared
+
+
+
+ +

[Functions] +Access Layer/ib_dereg_pnp

+ +

[top][index]

+

NAME

+
       ib_dereg_pnp
+
+

DESCRIPTION

+
       Routine used to cancel notification of local events or I/O controller
+       assignments.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_dereg_pnp(
+        IN              const   ib_pnp_handle_t                         h_pnp,
+        IN              const   ib_pfn_destroy_cb_t                     pfn_destroy_cb OPTIONAL );
+
+

PARAMETERS

+
       h_pnp
+               [in] A handle returned as a result of an ib_reg_pnp operation.
+
+       pfn_destroy_cb
+               [in] A user-specified callback that is invoked after the PnP
+               registration has been successfully deregistered.
+
+

NOTES

+
       This routine cancels a pending PnP operation.  To avoid a race condition
+       canceling a request at the same time a notification callback is in
+       progress, the cancel operation operates asynchronously.  For additional
+       details see ib_pfn_destroy_cb_t.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The PnP deregistration was initiated.
+
+       IB_INVALID_HANDLE
+               The PnP handle was invalid.
+
+

SEE ALSO

+
       ib_reg_pnp, ib_pfn_destroy_cb_t
+
+
+
+ +

[Functions] +Access Layer/ib_dereg_svc

+ +

[top][index]

+

NAME

+
       ib_dereg_svc
+
+

DESCRIPTION

+
       Remove a service as being registered with the subnet administrator.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_dereg_svc(
+        IN              const   ib_reg_svc_handle_t                     h_reg_svc,
+        IN              const   ib_pfn_destroy_cb_t                     pfn_destroy_cb OPTIONAL );
+
+

PARAMETERS

+
       h_reg_svc
+               [in] A handle to a registered service.
+
+       pfn_destroy_cb
+               [in] A user-specified callback that is invoked after the service
+               has been deregistered.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The service deregistration was initiated.
+
+       IB_INVALID_HANDLE
+               The registered service handle was invalid.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to perform the operation.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to perform the operation.
+
+

NOTES

+
       This routine deregisters a service with the subnet administrator.
+       To avoid a race condition deregistering a service at the same time
+       the registration completion callback is in progress, the deregister
+       operation operates asynchronously.  For additional details see
+       ib_pfn_destroy_cb_t.
+
+

SEE ALSO

+
       ib_reg_svc, ib_pfn_destroy_cb_t
+
+
+
+ +

[Functions] +Access Layer/ib_destroy_av

+ +

[top][index]

+

NAME

+
       ib_destroy_av
+
+

DESCRIPTION

+
       Destroys an existing address vector.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_destroy_av(
+        IN              const   ib_av_handle_t                          h_av );
+
+

PARAMETERS

+
       h_av
+               [in] A handle to an existing address vector.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The address vector was successfully destroyed.
+
+       IB_INVALID_AV_HANDLE
+               The address vector handle was invalid.
+
+

NOTES

+
       This routine destroys an existing address vector.
+
+

SEE ALSO

+
       ib_create_av
+
+
+
+ +

[Functions] +Access Layer/ib_destroy_cq

+ +

[top][index]

+

NAME

+
       ib_destroy_cq
+
+

DESCRIPTION

+
       Destroys a completion queue.  Once destroyed, no further access to the
+       completion queue is possible.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_destroy_cq(
+        IN              const   ib_cq_handle_t                          h_cq,
+        IN              const   ib_pfn_destroy_cb_t                     pfn_destroy_cb OPTIONAL );
+
+

PARAMETERS

+
       h_qp
+               [in] A handle to an existing completion queue.
+
+       pfn_destroy_cb
+               [in] A user-provided callback that is invoked after the
+               completion queue has been successfully destroyed.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The destroy request was registered.
+
+       IB_INVALID_CQ_HANDLE
+               The completion queue handle was invalid.
+
+

NOTES

+
       This call destroys an existing completion queue.  Since callbacks may be
+       outstanding against the completion queue at the time the destroy operation
+       is invoked, the this call operates asynchronously.  The user will be
+       notified through a callback once the destroy operation completes,
+       indicating that no additional callbacks will be invoked for the specified
+       completion queue.
+
+       If there are still queue pairs associated with the completion queue when
+       this function is invoked, the destroy operation will fail with status
+       IB_RESOURCE_BUSY.
+
+

SEE ALSO

+
       ib_create_cq, ib_pfn_destroy_cb_t
+
+
+
+ +

[Functions] +Access Layer/ib_destroy_ioc

+ +

[top][index]

+

NAME

+
       ib_destroy_ioc
+
+

DESCRIPTION

+
       Destroys an instance of an I/O controller.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_destroy_ioc(
+        IN              const   ib_ioc_handle_t                         h_ioc );
+
+

PARAMETERS

+
       h_ioc
+               [in] A handle to an existing I/O controller.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The I/O controller was successfully destroyed.
+
+       IB_INVALID_HANDLE
+               The I/O controller handle was invalid.
+
+

NOTES

+
       Once an I/O controller is destroyed, it is no longer reported by the
+       local device manager as an exported device.  This routine automatically
+       removes all services associated with the controller.
+
+

SEE ALSO

+
       ib_create_ioc
+
+
+
+ +

[Functions] +Access Layer/ib_destroy_mad_pool

+ +

[top][index]

+

NAME

+
       ib_destroy_mad_pool
+
+

DESCRIPTION

+
       Destroys a MAD pool and all associated resources.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_destroy_mad_pool(
+        IN              const   ib_pool_handle_t                        h_pool );
+
+

PARAMETERS

+
       h_pool
+               [in] A handle to a MAD pool allocated through the ib_create_mad_pool
+               routine.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The MAD pool was successfully destroyed.
+
+       IB_INVALID_HANDLE
+               The MAD pool handle was invalid.
+
+       IB_RESOURCE_BUSY
+               One or more MAD elements have not been returned to the MAD pool.
+
+

NOTES

+
       This call destroys a MAD pool and all resources allocated by the pool.
+
+

SEE ALSO

+
       ib_create_mad_pool, ib_get_mad, ib_put_mad
+
+
+
+ +

[Functions] +Access Layer/ib_destroy_mw

+ +

[top][index]

+

NAME

+
       ib_destroy_mw
+
+

DESCRIPTION

+
       Destroys a memory window.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_destroy_mw(
+        IN              const   ib_mw_handle_t                          h_mw );
+
+

PARAMETERS

+
       h_mw
+               [in] A handle to an existing memory window.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The memory window was successfully destroyed.
+
+       IB_INVALID_MW_HANDLE
+               The memory window handle was invalid.
+
+

NOTES

+
       This routine deallocates a window entry created via a ib_create_mw.
+       Once this operation is complete, future accesses to the window will fail.
+
+

SEE ALSO

+
       ib_create_mw
+
+
+
+ +

[Functions] +Access Layer/ib_destroy_qp

+ +

[top][index]

+

NAME

+
       ib_destroy_qp
+
+

DESCRIPTION

+
       Release a queue pair.  Once destroyed, no further access to this
+       queue pair is possible.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_destroy_qp(
+        IN              const   ib_qp_handle_t                          h_qp,
+        IN              const   ib_pfn_destroy_cb_t                     pfn_destroy_cb OPTIONAL );
+
+

PARAMETERS

+
       h_qp
+               [in] A handle to an existing queue pair.
+
+       pfn_destroy_cb
+               [in] A user-specified callback that is invoked after the queue pair
+               has been successfully destroyed.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The destroy request was registered.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle was invalid.
+
+

NOTES

+
       This call destroys an existing queue pair.  Since callbacks may be
+       outstanding against the queue pair at the time the destroy operation is
+       invoked, the this call operates asynchronously.  The user will be notified
+       through a callback once the destroy operation completes, indicating that
+       no additional callbacks will be invoked for the specified queue pair.
+
+

SEE ALSO

+
       ib_create_qp
+
+
+
+ +

[Definitions] +Access Layer/ib_device_attr_mask_t

+ +

[top][index]

+

NAME

+
       ib_device_attr_mask_t
+
+

DESCRIPTION

+
       Used to specify desired attributes of a device or port.
+
+

SYNOPSIS

+
#define         IB_DEV_PORT_ACTIVE              0x1
+
+

VALUES

+
       IB_DEV_PORT_ACTIVE
+               Specifies that a port state should be active.  Applies only to port
+               GUIDs.
+
+

SEE ALSO

+
       ib_get_guid
+
+
+
+ +

[Structures] +Access Layer/ib_dgrm_info_t

+ +

[top][index]

+

NAME

+
       ib_dgrm_info_t
+
+

DESCRIPTION

+
       Information specified when initializing a datagram queue pair before its
+       first use.
+
+

SYNOPSIS

+
typedef struct _ib_dgrm_info
+{
+        ib_net64_t                                      port_guid;
+        uint32_t                                        qkey;
+        uint16_t                                        pkey_index;
+
+}       ib_dgrm_info_t;
+
+

FIELDS

+
       port_guid
+               Specifies the port that the datagram service will use.  This field
+               applies only to IB_QPT_UNRELIABLE_DGRM and IB_QPT_MAD QP types.
+
+       qkey
+               Specifies the qkey that the queue pair will use.  Incoming messages
+               must have a matching qkey for the message to be accepted by the
+               receiving QP.
+
+       pkey_index
+               Specifies the pkey associated with this queue pair.
+
+

SEE ALSO

+
       ib_init_dgrm_svc
+
+
+
+ +

[Structures] +Access Layer/ib_drep_pdata_t

+ +

[top][index]

+

NAME

+
       ib_drep_pdata_t
+
+

DESCRIPTION

+
       User data sent as part of a reply to a disconnection request.
+
+

SYNOPSIS

+
typedef union _ib_drep_pdata
+{
+        uint8_t                                         data[IB_DREP_PDATA_SIZE];
+
+}       ib_drep_pdata_t;
+
+

SEE ALSO

+
       ib_cm_data_sizes_t
+
+
+
+ +

[Structures] +Access Layer/ib_dreq_pdata_t

+ +

[top][index]

+

NAME

+
       ib_dreq_pdata_t
+
+

DESCRIPTION

+
       User data sent as part of a disconnection request.
+
+

SYNOPSIS

+
typedef union _ib_dreq_pdata
+{
+        uint8_t                                         data[IB_DREQ_PDATA_SIZE];
+
+}       ib_dreq_pdata_t;
+
+

SEE ALSO

+
       ib_cm_data_sizes_t
+
+
+
+ +

[Functions] +Access Layer/ib_force_apm

+ +

[top][index]

+

NAME

+
       ib_force_apm
+
+

DESCRIPTION

+
       This routine indicates that a queue pair should immediately migrate to its
+       alternate path.  All future data transfers will occur over the new path.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_force_apm(
+        IN              const   ib_qp_handle_t                          h_qp );
+
+

PARAMETERS

+
       h_qp
+               [in] A handle to the queue pair to migrate.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The queue pair or end-to-end context was successfully modified.
+
+       IB_INVALID_PARAMETER
+               Neither or both of the queue pair or the end-to-end context handles
+               were valid.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle was invalid.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to register the modify the queue pair or end-to-end context.
+
+       IB_UNSUPPORTED
+               The requested modification was not supported.
+
+       IB_INVALID_QP_STATE
+               The queue pair was in an invalid state for the requested operation.
+
+

NOTES

+
       For this routine to operate correctly, the specified queue pair must have
+       an existing alternate path loaded.  If an alternate path is not loaded, or
+       has not yet been armed, this call will fail.
+
+       Use of this call results in additional data transfers that occur on the
+       given queue pair using the alternate path.  Once this call completes, a
+       new alternate path may be loaded using the ib_cm_lap call.
+
+

SEE ALSO

+
       ib_cm_lap
+
+
+
+ +

[Functions] +Access Layer/ib_get_ca_by_gid

+ +

[top][index]

+

NAME

+
       ib_get_ca_by_gid
+
+

DESCRIPTION

+
       Returns the GUID of a channel adapter contain the given port GID.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_get_ca_by_gid(
+        IN                              ib_al_handle_t                          h_al,
+        IN              const   ib_gid_t* const                         p_gid,
+                OUT                     ib_net64_t* const                       p_ca_guid );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an opened instance of the access layer.
+
+       p_gid
+               [in] A port GID.
+
+       p_ca_guid
+               [out] A GUID to the CA that contains the port matching the user-
+               specified GID.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The operation was successful.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the port GID or CA GUID was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to perform the operation.
+
+       IB_NOT_FOUND
+               No channel adapters in the system contain the specifed port GID.
+
+

NOTES

+
       This routine returns a CA GUID that contains the user-specified port GID.
+       If no channel adapters in the system contain the port GID, the call will
+       return IB_NOT_FOUND.
+
+

SEE ALSO

+
       ib_open_al, ib_open_ca, ib_get_ca_guids
+
+
+
+ +

[Functions] +Access Layer/ib_get_ca_guids

+ +

[top][index]

+

NAME

+
       ib_get_ca_guids
+
+

DESCRIPTION

+
       Returns a list of GUIDS for all channel adapter currently available in
+       the system.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_get_ca_guids(
+        IN                              ib_al_handle_t                          h_al,
+                OUT                     ib_net64_t* const                       p_guid_array OPTIONAL,
+        IN      OUT                     size_t* const                           p_guid_cnt );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an opened instance of the access layer.
+
+       p_guid_array
+               [out] An array of GUIDs provided by the user and filled out by the
+               access layer.  If this parameter is NULL, the access layer will return
+               the number of entries in the array necessary to retrieve the GUID list.
+
+       p_guid_cnt
+               [in/out] On input, this specifies the number of entries in the
+               GUID array.
+
+               On output, the access layer will set this to the number of valid
+               entries in the p_guid_array or the minimum number of entries needed
+               in the GUID array in order to return all channel adapter GUIDs.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The operation was successful.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the GUID count was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to perform the operation.
+
+

NOTES

+
       This routine returns a list of GUIDs for all available channel adapters.
+       When called, the access layer will examine p_guid_cnt to determine the
+       number of entries available in the p_guid_array.  If the count is too
+       small, the function will return IB_INSUFFICIENT_MEMORY, and set p_guid_cnt
+       to the number of needed entries.
+
+

SEE ALSO

+
       ib_open_al, ib_open_ca
+
+
+
+ +

[Functions] +Access Layer/ib_get_guid

+ +

[top][index]

+

NAME

+
       ib_get_guid
+
+

DESCRIPTION

+
       Returns a GUID for a device or port that matches the user-specified
+       attributes.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_get_guid(
+        IN                              ib_al_handle_t                          h_al,
+        IN              const   uint32_t                                        index,
+        IN              const   ib_pnp_class_t                          device_type,
+        IN              const   uint64_t                                        attr_mask,
+                OUT                     ib_net64_t* const                       p_guid );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an opened instance of the access layer.
+
+       index
+               [in] Specifies the location of the device or port.  Users specify this
+               value to iterate through all devices or ports on the system.  If set
+               to IB_ANY_INDEX, then the first device or port matching the given
+               attributes will be returned.
+
+       device_type
+               [in] Indicates the type of device to retrieve the GUID for.
+
+       attr_mask
+               [in] Specifies a set of attributes that the given device or port
+               must have for a successful match to occur.
+
+       p_guid
+               [out] On successful return, this parameter will reference the GUID
+               of the device or port that contains the specified attributes.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The operation was successful.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_SETTING
+               The specified device type is invalid.
+
+       IB_INVALID_PARAMETER
+               No p_guid parameter was specified.
+
+       IB_NO_MATCH
+               The device or port at the specified index does not have the given
+               attributes.
+
+       IB_INVALID_INDEX
+               No device or port exists for the specified index.
+
+

NOTES

+
       This routine returns a GUID for a device or port that matches the
+       user-specified attributes.  If index is IB_ANY_INDEX, then the first
+       device or port matching the given attributes is returned if a match is
+       found.  If no match is found, the call will return IB_NO_MATCH.  If a
+       valid index is specified, then the device or port located at that index
+       will be examined to see if it has the given attributes.  If the device
+       or port with those attributes is found, its GUID is returned.
+
+       This routine may be used to locate a device or port with a given set
+       of attributes, or iterate through all devices or ports on the system.
+       The specified index values are set by the access layer, but the index
+       associated with a GUID may change if devices are removed from the system.
+
+

SEE ALSO

+
       ib_open_al, ib_pnp_class_t, ib_get_ca_guids, ib_query_ca_by_guid
+
+
+
+ +

[Functions] +Access Layer/ib_get_mad

+ +

[top][index]

+

NAME

+
       ib_get_mad
+
+

DESCRIPTION

+
       Obtains a MAD element from the pool.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_get_mad(
+        IN              const   ib_pool_key_t                           pool_key,
+        IN              const   size_t                                          buf_size,
+                OUT                     ib_mad_element_t                        **pp_mad_element );
+
+

PARAMETERS

+
       pool_key
+               [in] Key for the pool to obtain a MAD element for the desired
+               protection domain.
+
+       buf_size
+               [in] The size of the buffer referenced by the MAD element.
+
+       pp_mad_element
+               [out] Upon successful completion of this call, this references
+               the returned MAD element.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The MAD element was successfully retrieved from the MAD pool.
+
+       IB_INVALID_PARAMETER
+               The MAD pool key was invalid or a reference to the MAD element
+               pointer was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to obtain the MAD element.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to grow and register the MAD pool.
+
+

NOTES

+
       This function obtains a MAD element containing a data segment
+       that references a data buffer for the given pool key.  The data buffer
+       referenced by the MAD element is zeroed before being returned to the
+       user.
+
+       It is recommended that elements retrieved from a MAD pool for use on
+       the receive queue of a MAD QP have a buffer size of 256 bytes.
+
+       For MADs being sent, buf_size should be set to the size of the relevant
+       data sent as part of the MAD, and should not include any padding needed
+       to make the MAD size a multiple of 256 bytes.  For most MADs, buf_size
+       may be set equal to the size of the MAD header plus the amount of user
+       data transfered as part of the MAD.
+
+

SEE ALSO

+
       ib_put_mad, ib_send_mad, ib_mad_element_t
+
+
+
+ +

[Functions] +Access Layer/ib_get_mad_buf

+ +

[top][index]

+

NAME

+
       ib_get_mad_buf
+
+

DESCRIPTION

+
       Returns a pointer to the MAD buffer associated with a MAD element.
+
+

SYNOPSIS

+
#pragma warning(push)
+#pragma warning(disable: 4244 ) 
+AL_INLINE void* AL_API
+ib_get_mad_buf(
+        IN              const   ib_mad_element_t* const         p_mad_element )
+{
+        CL_ASSERT( p_mad_element );
+        return( p_mad_element->p_mad_buf );
+}
+#pragma warning (pop)
+
+

PARAMETERS

+
       p_mad_element
+               [in] A pointer to a MAD element.
+
+

NOTES

+
       Returns a pointer to the MAD buffer associated with a MAD element.
+
+

SEE ALSO

+
       ib_mad_element_t
+
+
+
+ +

[Functions] +Access Layer/ib_get_port_by_gid

+ +

[top][index]

+

NAME

+
       ib_get_port_by_gid
+
+

DESCRIPTION

+
       Returns the GUID of a port that contains the given port GID.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_get_port_by_gid(
+        IN                              ib_al_handle_t                          h_al,
+        IN              const   ib_gid_t* const                         p_gid,
+                OUT                     ib_net64_t* const                       p_port_guid );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an opened instance of the access layer.
+
+       p_gid
+               [in] A port GID.
+
+       p_port_guid
+               [out] A GUID to the port that contains the matching user-
+               specified GID.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The operation was successful.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the port GID or port GUID was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to perform the operation.
+
+       IB_NOT_FOUND
+               No channel adapters in the system contain the specifed port GID.
+
+

NOTES

+
       This routine returns a port GUID that contains the user-specified port GID.
+       If no channel adapters in the system contain the port GID, the call will
+       return IB_NOT_FOUND.
+
+

SEE ALSO

+
       ib_open_al, ib_open_ca, ib_get_ca_guids
+
+
+
+ +

[Functions] +Access Layer/ib_get_query_node_rec

+ +

[top][index]

+

NAME

+
       ib_get_query_node_rec
+
+

DESCRIPTION

+
       Retrieves a node record result from a MAD returned by a call to
+       ib_query().
+
+

SYNOPSIS

+
AL_INLINE ib_node_record_t* AL_API
+ib_get_query_node_rec(
+        IN                              ib_mad_element_t                        *p_result_mad,
+        IN                              uint32_t                                        result_index )
+{
+        ib_sa_mad_t             *p_sa_mad;
+
+        CL_ASSERT( p_result_mad );
+        p_sa_mad = (ib_sa_mad_t*)ib_get_mad_buf( p_result_mad );
+        CL_ASSERT( p_sa_mad && p_sa_mad->attr_id == IB_MAD_ATTR_NODE_RECORD );
+
+        return( (ib_node_record_t*)ib_get_query_result( p_result_mad,
+                result_index ) );
+}
+
+

PARAMETERS

+
       p_result_mad
+               [in] This is a reference to the MAD returned as a result of the
+               query.
+
+       result_index
+               [in] A zero-based index indicating which result to return.
+
+

NOTES

+
       This call returns a pointer to the start of a node record result from
+       a call to ib_query().
+
+

SEE ALSO

+
       ib_query_rec_t, ib_mad_element_t, ib_get_query_result, ib_node_record_t
+
+
+
+ +

[Functions] +Access Layer/ib_get_query_path_rec

+ +

[top][index]

+

NAME

+
       ib_get_query_path_rec
+
+

DESCRIPTION

+
       Retrieves a path record result from a MAD returned by a call to
+       ib_query().
+
+

SYNOPSIS

+
AL_INLINE ib_path_rec_t* AL_API
+ib_get_query_path_rec(
+        IN                              ib_mad_element_t                        *p_result_mad,
+        IN                              uint32_t                                        result_index )
+{
+        ib_sa_mad_t             *p_sa_mad;
+
+        CL_ASSERT( p_result_mad );
+        p_sa_mad = (ib_sa_mad_t*)ib_get_mad_buf( p_result_mad );
+        CL_ASSERT( p_sa_mad && p_sa_mad->attr_id == IB_MAD_ATTR_PATH_RECORD );
+
+        return( (ib_path_rec_t*)ib_get_query_result( p_result_mad, result_index ) );
+}
+
+

PARAMETERS

+
       p_result_mad
+               [in] This is a reference to the MAD returned as a result of the
+               query.
+
+       result_index
+               [in] A zero-based index indicating which result to return.
+
+

NOTES

+
       This call returns a pointer to the start of a path record result from
+       a call to ib_query().
+
+

SEE ALSO

+
       ib_query_rec_t, ib_mad_element_t, ib_get_query_result, ib_path_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_get_query_portinfo_rec

+ +

[top][index]

+

NAME

+
       ib_get_query_portinfo_rec
+
+

DESCRIPTION

+
       Retrieves a port info record result from a MAD returned by a call to
+       ib_query().
+
+

SYNOPSIS

+
AL_INLINE ib_portinfo_record_t* AL_API
+ib_get_query_portinfo_rec(
+        IN                              ib_mad_element_t                        *p_result_mad,
+        IN                              uint32_t                                        result_index )
+{
+        ib_sa_mad_t             *p_sa_mad;
+
+        CL_ASSERT( p_result_mad );
+        p_sa_mad = (ib_sa_mad_t*)ib_get_mad_buf( p_result_mad );
+        CL_ASSERT( p_sa_mad && p_sa_mad->attr_id == IB_MAD_ATTR_PORTINFO_RECORD );
+
+        return( (ib_portinfo_record_t*)ib_get_query_result( p_result_mad,
+                result_index ) );
+}
+
+

PARAMETERS

+
       p_result_mad
+               [in] This is a reference to the MAD returned as a result of the
+               query.
+
+       result_index
+               [in] A zero-based index indicating which result to return.
+
+

NOTES

+
       This call returns a pointer to the start of a port info record result from
+       a call to ib_query().
+
+

SEE ALSO

+
       ib_query_rec_t, ib_mad_element_t, ib_get_query_result, ib_portinfo_record_t
+
+
+
+ +

[Functions] +Access Layer/ib_get_query_result

+ +

[top][index]

+

NAME

+
       ib_get_query_result
+
+

DESCRIPTION

+
       Retrieves a result structure from a MAD returned by a call to ib_query().
+
+

SYNOPSIS

+
AL_INLINE void* AL_API
+ib_get_query_result(
+        IN                              ib_mad_element_t                        *p_result_mad,
+        IN                              uint32_t                                        result_index )
+{
+        ib_sa_mad_t             *p_sa_mad;
+
+        CL_ASSERT( p_result_mad );
+        p_sa_mad = (ib_sa_mad_t*)ib_get_mad_buf( p_result_mad );
+        CL_ASSERT( p_sa_mad );
+        CL_ASSERT( ib_get_attr_size( p_sa_mad->attr_offset ) * (result_index + 1) +
+                IB_SA_MAD_HDR_SIZE <= p_result_mad->size );
+
+        return( p_sa_mad->data +
+                (ib_get_attr_size( p_sa_mad->attr_offset ) * result_index) );
+}
+
+

PARAMETERS

+
       p_result_mad
+               [in] This is a reference to the MAD returned as a result of the
+               query.
+
+       result_index
+               [in] A zero-based index indicating which result to return.
+
+

NOTES

+
       This call returns a pointer to the start of a result structure from a call
+       to ib_query().  The type of result structure must be known to the user
+       either through the user's context or the query_type returned as part of
+       the ib_query_rec_t structure.
+
+

SEE ALSO

+
       ib_query_rec_t, ib_mad_element_t
+
+
+
+ +

[Functions] +Access Layer/ib_get_query_svc_rec

+ +

[top][index]

+

NAME

+
       ib_get_query_svc_rec
+
+

DESCRIPTION

+
       Retrieves a service record result from a MAD returned by a call to
+       ib_query().
+
+

SYNOPSIS

+
AL_INLINE ib_service_record_t* AL_API
+ib_get_query_svc_rec(
+        IN                              ib_mad_element_t                        *p_result_mad,
+        IN                              uint32_t                                        result_index )
+{
+        ib_sa_mad_t             *p_sa_mad;
+
+        CL_ASSERT( p_result_mad );
+        p_sa_mad = (ib_sa_mad_t*)ib_get_mad_buf( p_result_mad );
+        CL_ASSERT( p_sa_mad && p_sa_mad->attr_id == IB_MAD_ATTR_SERVICE_RECORD );
+
+        return( (ib_service_record_t*)ib_get_query_result( p_result_mad,
+                result_index ) );
+}
+
+

PARAMETERS

+
       p_result_mad
+               [in] This is a reference to the MAD returned as a result of the
+               query.
+
+       result_index
+               [in] A zero-based index indicating which result to return.
+
+

NOTES

+
       This call returns a pointer to the start of a service record result from
+       a call to ib_query().
+
+

SEE ALSO

+
       ib_query_rec_t, ib_mad_element_t, ib_get_query_result, ib_service_record_t
+
+
+
+ +

[Functions] +Access Layer/ib_get_spl_qp

+ +

[top][index]

+

NAME

+
       ib_get_spl_qp
+
+

DESCRIPTION

+
       Create a special QP or QP alias.  This call provides access to queue
+       pairs 0 and 1, and the raw queue pair types.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_get_spl_qp(
+        IN              const   ib_pd_handle_t                          h_pd,
+        IN              const   ib_net64_t                                      port_guid,
+        IN              const   ib_qp_create_t* const           p_qp_create,
+        IN              const   void* const                                     qp_context,
+        IN              const   ib_pfn_event_cb_t                       pfn_qp_event_cb OPTIONAL,
+                OUT                     ib_pool_key_t* const            p_pool_key OPTIONAL,
+                OUT                     ib_qp_handle_t* const           ph_qp );
+
+

PARAMETERS

+
       h_pd
+               [in] This is a handle to a protection domain associated with the queue
+               pair.  This must be a protection domain alias for aliased QP types.
+
+       port_guid
+               [in] The port GUID that the special QP will be associated with.
+
+       p_qp_create
+               [in] Attributes necessary to allocate and initialize the queue pair.
+
+       qp_context
+               [in] A user-specified context information associated with the
+               queue pair.
+
+       pfn_qp_ervent_cb
+               [in] User-specified error callback routine invoked after an
+               asynchronous event has occurred on the queue pair.
+
+       p_pool_key
+               [in] A key to a pool of MAD elements that are used to send MADs.
+               This key is only valid for aliased QP types.
+
+       ph_qp
+               [out] Upon successful completion of this call, this references a
+               handle to the newly created queue pair.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The queue pair was successfully created.
+
+       IB_INVALID_PD_HANDLE
+               The protection domain to associate with the queue pair was invalid.
+
+       IB_INVALID_PORT
+               The port number supplied was invalid for the given channel adapter.
+
+       IB_INVALID_PARAMETER
+               A reference to the queue pair attributes or handle was not provided.
+
+       IB_INVALID_PERMISSION
+               The calling process does not have sufficient privilege to create the
+               requested queue pair type.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to create the queue pair.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to create the queue pair.
+
+       IB_INVALID_CQ_HANDLE
+               The send or receive completion queue to associate with the queue pair
+               was invalid.
+
+       IB_INVALID_SETTING
+               The specified queue pair type was invalid.
+
+       IB_UNSUPPORTED
+               The specified queue pair type was not supported by the channel adapter.
+
+       IB_INVALID_MAX_WRS
+               The requested maximum send or receive work request depth could not be
+               supported.
+
+       IB_INVALID_MAX_SGE
+               The requested maximum number of scatter-gather entries for the send or
+               receive queue could not be supported.
+
+

NOTES

+
       This routine allocates a queue pair with the specified attributes.  If
+       the queue pair cannot be allocated, an error is returned.  When creating
+       the queue pair, users associate a context with the queue pair.  This
+       context is returned to the user through the asynchronous event callback
+       if an event occurs.
+
+       This routine is used to create queue pairs of type:
+
+       IB_QPT_QP0
+       IB_QPT_QP1
+       IB_QPT_RAW_IPV6
+       IB_QPT_RAW_ETHER
+       IB_QPT_QP0_ALIAS
+       IB_QPT_QP1_ALIAS
+
+       Callers of ib_get_spl_qp should call ib_init_dgrm_svc if the queue pair is
+       of type IB_QPT_QP0, IB_QPT_QP1, IB_QPT_RAW_IPV6, IB_QPT_RAW_ETHER before
+       sending or receiving data.  MADs may be sent on aliased QPs on the
+       successful return of this routine.
+
+

SEE ALSO

+
       ib_query_qp, ib_modify_qp, ib_destroy_qp, ib_get_mad
+       ib_init_dgrm_svc, ib_qp_create_t, ib_pfn_event_cb_t, ib_qp_attr_t
+
+
+
+ +

[Structures] +Access Layer/ib_gid_pair_t

+ +

[top][index]

+

NAME

+
       ib_gid_pair_t
+
+

DESCRIPTION

+
       Source and destination GIDs.
+
+

SYNOPSIS

+
typedef struct _ib_gid_pair
+{
+        ib_gid_t                                        src_gid;
+        ib_gid_t                                        dest_gid;
+
+}       ib_gid_pair_t;
+
+

FIELDS

+
       src_gid
+               Source GID of a path.
+
+       dest_gid
+               Destination GID of a path.
+
+

NOTES

+
       This structure is used to describe the endpoints of a path.
+
+

SEE ALSO

+
       ib_gid_t
+
+
+
+ +

[Structures] +Access Layer/ib_guid_pair_t

+ +

[top][index]

+

NAME

+
       ib_guid_pair_t
+
+

DESCRIPTION

+
       Source and destination GUIDs.  These may be port or channel adapter
+       GUIDs, depending on the context in which this structure is used.
+
+

SYNOPSIS

+
typedef struct _ib_guid_pair
+{
+        ib_net64_t                                      src_guid;
+        ib_net64_t                                      dest_guid;
+
+}       ib_guid_pair_t;
+
+

FIELDS

+
       src_guid
+               Source GUID of a path.
+
+       dest_guid
+               Destination GUID of a path.
+
+

NOTES

+
       This structure is used to describe the endpoints of a path.  The given
+       GUID pair may belong to either ports or channel adapters.
+
+

SEE ALSO

+
       ib_guid_t
+
+
+
+ +

[Functions] +Access Layer/ib_init_dgrm_svc

+ +

[top][index]

+

NAME

+
       ib_init_dgrm_svc
+
+

DESCRIPTION

+
       Initializes a datagram queue pair for use.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_init_dgrm_svc(
+        IN              const   ib_qp_handle_t                          h_qp,
+        IN              const   ib_dgrm_info_t* const           p_dgrm_info OPTIONAL );
+
+

PARAMETERS

+
       h_qp
+               [in] A handle to an existing queue pair.
+
+       p_dgrm_info
+               [in] References information needed to configure the queue pair for
+               use sending and receiving datagrams.  This field is optional for
+               IB_QPT_QP0, IB_QPT_QP1 queue pair types and is not used for
+               IB_QPT_RAW_IPV6, and IB_QPT_RAW_ETHER queue pair types.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The datagram queue pair was initialized successfully.
+
+       IB_INVALID_QP_HANDLE
+               The datagram queue pair handle was invalid.
+
+       IB_INVALID_PARAMETER
+               The queue pair handle was not created as a datagram queue pair type
+               or a reference to the datagram service information was not provided.
+
+       IB_INVALID_QP_STATE
+               The queue pair was in an invalid state for the requested operation.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to initialize the datagram queue pair.
+
+

NOTES

+
       This call binds the queue pair to a given port and transitions its state
+       to ready to send and receive data.  A queue pair must be initialized
+       before it can be used to send and receive datagrams.
+
+       This routine is used to initialize queue pairs of type:
+
+       IB_QPT_QP0
+       IB_QPT_QP1
+       IB_QPT_MAD
+       IB_QPT_RAW_IPV6
+       IB_QPT_RAW_ETHER
+       IB_QPT_UNRELIABLE_DGRM
+
+       For IB_QPT_MAD type queue pairs, receive buffers are automatically posted
+       by the access layer, however, users must call ib_reg_mad_svc to receive
+       MADs.  Received MAD elements must be returned to the access layer through
+       the ib_put_mad() call.
+
+

SEE ALSO

+
       ib_create_qp, ib_get_spl_qp, ib_dgrm_info_t, ib_reg_mad_svc
+
+
+
+ +

[Functions] +Access Layer/ib_join_mcast

+ +

[top][index]

+

NAME

+
       ib_join_mcast
+
+

DESCRIPTION

+
       Attaches a queue pair to a multicast group.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_join_mcast(
+        IN              const   ib_qp_handle_t                          h_qp,
+        IN              const   ib_mcast_req_t* const           p_mcast_req );
+
+

PARAMETERS

+
       h_qp
+               [in] A handle to an unreliable datagram queue pair that will join the
+               multicast group.
+
+       p_mcast_req
+               [in] Specifies the multicast group to join.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The join multicast group request has been initiated.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the multicast group request information was not
+               provided.
+
+       IB_INVALID_SERVICE_TYPE
+               The queue pair configuration does not support this type of service.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to join the multicast group.
+
+       IB_INVALID_GUID
+               No port was found for the port_guid specified in the request.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to perform the operation.
+
+       IB_INVALID_PKEY
+               The pkey specified in the multicast join request does not match the
+               pkey of the queue pair.
+
+       IB_INVALID_PORT
+               The port GUID specified in the multicast join request does not match
+               the port of the queue pair.
+
+       IB_ERROR
+               An error occurred while performing the multicast group join operation.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available to complete
+               the request.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to complete the request.
+
+

NOTES

+
       This routine results in the specified queue pair joining a multicast
+       group.  If the multicast group does not already exist, it will be created
+       at the user's option.  Information about the multicast group is returned
+       to the user through a callback specified through the p_mcast_req
+       parameter.
+
+       If the specified queue pair is already a member of a multicast group when
+       this call is invoked, an error will occur if there are conflicting
+       membership requirements.  The QP is restricted to being bound to a single
+       port_guid and using a single pkey.
+
+

SEE ALSO

+
       ib_leave_mcast, ib_mcast_req_t, ib_create_qp, ib_init_dgrm_svc
+
+
+
+ +

[Structures] +Access Layer/ib_lap_pdata_t

+ +

[top][index]

+

NAME

+
       ib_lap_pdata_t
+
+

DESCRIPTION

+
       User data sent as part of a load alternate path message.
+
+

SYNOPSIS

+
typedef union _ib_lap_pdata
+{
+        uint8_t                                         data[IB_LAP_PDATA_SIZE];
+
+}       ib_lap_pdata_t;
+
+

SEE ALSO

+
       ib_cm_data_sizes_t
+
+
+
+ +

[Functions] +Access Layer/ib_leave_mcast

+ +

[top][index]

+

NAME

+
       ib_leave_mcast
+
+

DESCRIPTION

+
       Removes a queue pair from a multicast group.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_leave_mcast(
+        IN              const   ib_mcast_handle_t                       h_mcast,
+        IN              const   ib_pfn_destroy_cb_t                     pfn_destroy_cb OPTIONAL );
+
+

PARAMETERS

+
       h_mcast
+               [in] A handle to a joined multicast group.
+
+       pfn_destroy_cb
+               [in] An optional user-specified callback that is invoked after the
+               leave request has completed.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The leave multicast group request has been initiated.
+
+       IB_INVALID_MCAST_HANDLE
+               The multicast group handle was invalid.
+
+       IB_ERROR
+               An error occurred while performing the multicast group leave operation.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to perform the operation.
+
+

NOTES

+
       This routine detaches a queue pair from a multicast group and removes
+       it as a member of the group with the subnet administrator.
+
+

SEE ALSO

+
       ib_join_mcast, ib_pfn_destroy_cb_t
+
+
+
+ +

[Structures] +Access Layer/ib_lid_pair_t

+ +

[top][index]

+

NAME

+
       ib_lid_pair_t
+
+

DESCRIPTION

+
       Source and destination LIDs.
+
+

SYNOPSIS

+
typedef struct _ib_lid_pair
+{
+        ib_net16_t                                      src_lid;
+        ib_net16_t                                      dest_lid;
+
+}       ib_lid_pair_t;
+
+

FIELDS

+
       src_lid
+               Source LID of a path.
+
+       dest_lid
+               Destination LID of a path.
+
+

NOTES

+
       This structure is used to describe the endpoints of a path.
+
+
+
+ +

[Structures] +Access Layer/ib_listen_err_rec_t

+ +

[top][index]

+

NAME

+
       ib_listen_err_rec_t
+
+

DESCRIPTION

+
       Information returned to the user when an error occurs on a listen request.
+
+

SYNOPSIS

+
typedef struct _ib_listen_err_rec
+{
+        void* __ptr64                                                           listen_context;
+        ib_api_status_t                                                         reason;
+        ib_listen_handle_t                                                      h_cm_listen;
+
+}       ib_listen_err_rec_t;
+
+

FIELDS

+
       listen_context
+               User-defined context information associated with the listen request
+               through the ib_cm_listen call.
+
+       reason
+               A status that identifies the reason for error being reported.
+
+       h_cm_listen
+               The handle for the listen request.  This handle will match the handle
+               returned by ib_cm_listen call.  It is provided in case an error event
+               occurs before a client's call to ib_cm_listen can return.
+
+

SEE ALSO

+
       ib_pfn_listen_err_cb_t, ib_api_status_t
+
+
+
+ +

[Definitions] +Access Layer/ib_listen_info_t

+ +

[top][index]

+

NAME

+
       ib_listen_info_t
+
+

DESCRIPTION

+
       Constants used to specify directed listen requests.
+
+

SYNOPSIS

+
#define IB_ALL_CAS                                              0
+#define IB_ALL_PORTS                                    0
+#define IB_ALL_LIDS                                             0
+#define IB_ALL_PKEYS                                    0
+
+

SEE ALSO

+
       ib_cm_listen, ib_cm_listen_t
+
+
+
+ +

[Functions] +Access Layer/ib_local_mad

+ +

[top][index]

+

NAME

+
       ib_local_mad
+
+

DESCRIPTION

+
       Request that a locally received MAD be processed by the channel adapter
+       on which it was received.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_local_mad(
+        IN              const   ib_ca_handle_t                          h_ca,
+        IN              const   uint8_t                                         port_num,
+        IN              const   void* const                                     p_mad_in,
+                OUT                     void*                                           p_mad_out );
+
+

PARAMETERS

+
       h_ca
+               [in] A handle to the channel adapter that should process the MAD.
+               This must be the same adapter that the MAD was received on.
+
+       port_num
+               [in] The port number to which this request is directed.
+
+       p_mad_in
+               [in] Pointer to a management datagram (MAD) structure containing
+               the command to be processed.
+
+       p_mad_out
+               [out] References a MAD that should contain the response to the
+               received input MAD specified through the p_mad_in parameter.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The local MAD was processed successfully.
+
+       IB_INVALID_CA_HANDLE
+               The channel adapter handle was invalid.
+
+       IB_INVALID_PORT
+               The port number was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the MAD input or MAD output buffer was not provided.
+
+

NOTES

+
       This call is provided to support SMA and GSA implementations above the
+       verbs interface on ports that the access layer has disabled.  This routine
+       is used to perform local operations by the channel adapter.  On successful
+       return, the provide output MAD should be used when sending a response.
+
+

SEE ALSO

+
       ib_query_ca, ib_ca_attr_t
+
+
+
+ +

[Structures] +Access Layer/ib_mad_element_t

+ +

[top][index]

+

NAME

+
       ib_mad_element_t
+
+

DESCRIPTION

+
       Information used to submit a work request to a management datagram (MAD)
+       queue pair.
+
+

SYNOPSIS

+
typedef struct _ib_mad_element
+{
+        struct _ib_mad_element* __ptr64 p_next;
+        const void* __ptr64                     context1;
+        const void* __ptr64                     context2;
+
+        /* Request/completion data. */
+        ib_mad_t* __ptr64                       p_mad_buf;
+        uint32_t                                        size;
+        uint32_t                                        immediate_data;
+        ib_net32_t                                      remote_qp;
+
+        /* Send request information. */
+        ib_av_handle_t                          h_av;
+        ib_send_opt_t                           send_opt;
+        ib_net32_t                                      remote_qkey;
+        boolean_t                                       resp_expected;
+        uint32_t                                        timeout_ms;
+        uint32_t                                        retry_cnt;
+        uint8_t                                         rmpp_version;
+
+        /* Completion information. */
+        ib_wc_status_t                          status;
+        boolean_t                                       grh_valid;
+        ib_grh_t* __ptr64                       p_grh;
+
+        /* Completed receive data or send request information if h_av is NULL. */
+        uint32_t                                        recv_opt;
+        ib_net16_t                                      remote_lid;
+        uint8_t                                         remote_sl;
+        uint16_t                                        pkey_index;
+        uint8_t                                         path_bits;
+
+        /* Transaction completion data. */
+        void* __ptr64                           send_context1;
+        void* __ptr64                           send_context2;
+
+}       ib_mad_element_t;
+
+

FIELDS

+
       p_next
+               A pointer used to chain MAD elements together.  This value is
+               set to NULL to mark the end of the chain.
+
+       context1
+               User-defined context information associated with the datagram.
+
+       context2
+               User-defined context information associated with the datagram.
+
+       p_buffer
+               The local data buffer contain the MAD.
+
+       size
+               The size of the MAD referenced by p_buffer.
+
+       immediate_data
+               32-bit field sent or received as part of a datagram message.
+               This field is valid for send operations if the send_opt
+               IB_SEND_OPT_IMMEDIATE flag has been set.  This field is valid
+               on received datagram completions if the recv_opt
+               IB_RECV_OPT_IMMEDIATE flag is set.
+
+       remote_qp
+               Identifies the destination queue pair of a datagram send operation or
+               the source queue pair of a received datagram.
+
+       h_av
+               An address vector that specifies the path information used to route
+               the outbound datagram to the destination queue pair.  This handle may
+               be NULL when sending a directed route SMP or if the access layer
+               should create the address vector for the user.
+
+       send_opt
+               Optional send control parameters.  The following options are valid:
+               IB_SEND_OPT_IMMEDIATE and IB_SEND_OPT_SOLICITED.  IB_SEND_OPT_FENCE
+               is only valid on MAD QPs.
+
+       remote_qkey
+               The qkey for the destination queue pair.
+
+       resp_expected
+               This field is used to indicate that the submitted operation expects
+               a response.  When set, the access layer will retry this send operation
+               until the corresponding response is successfully received, or the
+               request times out.  Send operations for which a response is expected
+               will always be completed by the access layer before the corresponding
+               received response.
+
+       timeout_ms
+               Specifies the number of milliseconds to wait for a response to
+               a request until retrying or timing out the request.  This field is
+               ignored if resp_expected is set to FALSE.
+
+       retry_cnt
+               Specifies the number of times that the request will be retried
+               before failing the request.  This field is ignored if resp_expected
+               is set to FALSE.
+
+       rmpp_version
+               Indicates the version of the RMPP protocol to use when sending this
+               MAD.  For MADs posted to MAD services of type IB_MAD_SVC_DEFAULT,
+               setting this field to 0 disables RMPP on user-defined management
+               classes or invokes the default RMPP version for well-defined management
+               classes, if appropriate.  For MADs posted to MAD services of type
+               IB_MAD_SVC_RMPP, setting this field to 0 disables RMPP on the sent
+               MAD.  Note that if the RMPP header exists, but the RMPP protocol is
+               not activated for this MAD, the user must ensure that the RMPP header
+               has been zeroed.  This field is intended to help support backwards
+               compatibility.
+
+       status
+               The result of the MAD work request.
+
+       grh_valid
+               A flag indicating whether the p_grh reference is valid.
+
+       p_grh
+               A reference to the global route header information.
+
+       recv_opt
+               Indicates optional fields valid as part of a work request that
+               completed on an unreliable datagram queue pair.
+
+       remote_lid
+               The source LID of the received datagram.
+
+       remote_sl
+               The service level used by the source of the received datagram.
+
+       pkey_index
+               This is valid only for IB_QPT_QP1 and IB_QPT_QP1_ALIAS QP types.
+               For received datagrams, this field contains the pkey index for
+               the source queue pair.  For send operations, this field contains
+               the pkey index to use when posting the send work request. 
+
+       path_bits
+               The portion of the remote_lid that may be changed to vary the path
+               through the subnet to the remote port.
+
+       send_context1
+               If this datagram was received as a response to a sent datagram, this
+               field contains the context1 value of the send operation.  If this is
+               an unsolicited receive, this field will be 0.
+
+       send_context2
+               If this datagram was received as a response to a sent datagram, this
+               field contains the context2 value of the send operation.  If this is
+               an unsolicited receive, this field will be 0.
+
+       remote_qp
+               Identifies the source queue pair of a received datagram.
+
+

NOTES

+
       The format of data sent over the fabric is expected to be in the form
+       of a MAD.  MADs are expected to match the format defined by the
+       Infiniband specification and must be in network-byte order when posted
+       to a MAD service.
+
+       This structure is received to notify a user that a datagram has been
+       received for a registered management class.  Information of the source
+       of the data is provided, along with the data buffer.
+
+       The MAD element structure is defined such that a received MAD element
+       may be re-used as a sent response.  In such cases, the h_av field may be
+       NULL.  The address vector will be created and destroyed by the access
+       layer.
+
+

SEE ALSO

+
       ib_get_mad, ib_put_mad, ib_send_mad, ib_local_ds_t, ib_send_opt_t,
+       ib_pfn_mad_recv_cb_t, ib_get_mad_buf
+
+
+
+ +

[Structures] +Access Layer/ib_mad_svc_t

+ +

[top][index]

+

NAME

+
       ib_mad_svc_t
+
+

DESCRIPTION

+
       Information used to request management datagram support with a queue pair.
+
+

SYNOPSIS

+
typedef struct _ib_mad_svc
+{
+        void                                            *mad_svc_context;
+        ib_pfn_mad_comp_cb_t            pfn_mad_send_cb;
+        ib_pfn_mad_comp_cb_t            pfn_mad_recv_cb;
+
+        boolean_t                                       support_unsol;
+        uint8_t                                         mgmt_class;
+        uint8_t                                         mgmt_version;
+        boolean_t                                       method_array[IB_MAX_METHODS];
+
+        ib_mad_svc_type_t                       svc_type;
+
+}       ib_mad_svc_t;
+
+

FIELDS

+
       mad_svc_context
+               User-defined context that is returned by the access layer through
+               the pfn_mad_send_cb and pfn_mad_recv_cb.
+
+       pfn_mad_send_cb
+               A send callback that is invoked to notify the user that a send
+               operation has completed for a sent MAD.
+
+       pfn_mad_recv_cb
+               A receive callback that is invoked to notify the user that a MAD
+               has been received.
+
+       support_unsol
+               If set to TRUE, this field indicates that the registering client
+               supports processing unsolicited MADs.  Unsolicited MADs are
+               received MADs that do not have the response bit set.  If set to TRUE,
+               the following fields are required (must be non-zero): mgmt_class,
+               mgmt_version, and method_array.
+
+       mgmt_version
+               Indicates which version of a management class the client requires
+               support for.  The access layer distinguishes between clients
+               requiring different versions of the same management class.
+               This field is ignored if the support_unsol field is set to FALSE.
+
+       mgmt_class
+               Indicates the management class that should be supported by the
+               access layer.  This field is ignored if the support_unsol field is
+               set to FALSE.
+
+       method_array
+               An array of 127 entries specifying which methods are supported by
+               a client when receiving unsolicited MADs.  Each index corresponds to
+               a single method, and each entry in the array indicates if the method
+               is supported by the client.  This field is ignored if the
+               support_unsol field is set to FALSE.
+
+       svc_type
+               Indicates the type of services that should be provided by the MAD
+               service.
+
+

NOTES

+
       Clients use this structure to define which management datagram methods
+       they support, and the type of support required for each.  A received MAD
+       is distinguished by the access layer based on the following three fields:
+       management class, management version, and method.
+
+       Specific combinations of class, version, and method may be registered
+       for unsolicited MADs only once.  The access layer supports multiple
+       clients registering for unsolicited MADs as long as they do not share the
+       same methods, class, or version.
+
+       The svc_type field can be set by a client to indicate that the access
+       layer should invoke RMPP for the specified management class of MADs.  If
+       set to IB_MAD_SVC_DEFAULT, the access layer will automatically invoke RMPP
+       for well known MAD classes (those defined by the 1.1 version of the
+       InfiniBand specification).  The svc_type field is intended to be used by
+       clients sending and receiving vendor specific management class requiring
+       RMPP and clients providing their own MAD services.
+
+

SEE ALSO

+
       ib_reg_mad_svc, ib_pfn_mad_send_cb_t, ib_pfn_mad_recv_cb_t,
+       ib_mad_svc_type_t
+
+
+
+ +

[Definitions] +Access Layer/ib_mad_svc_type_t

+ +

[top][index]

+

NAME

+
       ib_mad_svc_type_t
+
+

DESCRIPTION

+
       Indicates the type of services provided by a MAD service.
+
+

SYNOPSIS

+
typedef enum _ib_mad_svc_type
+{
+        IB_MAD_SVC_DEFAULT = 0,
+        IB_MAD_SVC_RMPP,
+        IB_MAD_SVC_RAW
+
+}       ib_mad_svc_type_t;
+
+

VALUES

+
       IB_MAD_SVC_DEFAULT
+               Indicates that the access layer will provide all necessary services,
+               including retransmissions and RMPP for well-defined management classes.
+
+       IB_MAD_SVC_RMPP
+               Indicates that the MAD service requires retransmissions and the RMPP
+               header is available on all MADs.  (The RMPP protocol will be activated
+               on a per send basis.)  This service type should be used for
+               user-defined management classes requiring RMPP.
+
+       IB_MAD_SVC_RAW
+               Specifies that the MAD service will not perform retransmissions or
+               perform RMPP.  All MADs received or sent on a MAD service of this type
+
+

NOTES

+
       This enum is used to define the types of MAD services available to users.
+
+

SEE ALSO

+
       ib_mad_svc_t, ib_reg_mad_svc
+
+
+
+ +

[Structures] +Access Layer/ib_mcast_rec_t

+ +

[top][index]

+

NAME

+
       ib_mcast_rec_t
+
+

DESCRIPTION

+
       Information returned as a result of joining a multicast group.
+
+

SYNOPSIS

+
typedef struct _ib_mcast_rec
+{
+        const void* __ptr64                     mcast_context;
+        ib_api_status_t                         status;
+        ib_net16_t                                      error_status;
+
+        ib_mcast_handle_t                       h_mcast;
+        ib_member_rec_t* __ptr64        p_member_rec;
+
+}       ib_mcast_rec_t;
+
+

FIELDS

+
       mcast_context
+               User-defined context information associated with the multicast join
+               request.
+
+       status
+               Indicates the success of the multicast group join operation.
+
+       error_status
+               Provide additional error information that was provided by the SA.
+               This field is only valid if status is set to IB_REMOTE_ERROR.
+
+       h_mcast
+               Upon successful completion of a multicast join, this references a
+               handle to the multicast group.  This handle is used to leave the
+               multicast group.
+
+       p_member_rec
+               References a member record that provides information about the
+               multicast group.
+
+

NOTES

+
       This structure is returned to a client through a callback to notify them
+       of the result of a multicast join operation.
+
+

SEE ALSO

+
       ib_join_mcast, ib_pfn_mcast_cb_t, ib_leave_mcast
+
+
+
+ +

[Structures] +Access Layer/ib_mcast_req_t

+ +

[top][index]

+

NAME

+
       ib_mcast_req_t
+
+

DESCRIPTION

+
       Information used to join a multicast group.
+
+

SYNOPSIS

+
typedef struct _ib_mcast_req
+{
+        boolean_t                                       create;
+        ib_member_rec_t                         member_rec;
+
+        const void* __ptr64                     mcast_context;
+        ib_pfn_mcast_cb_t                       pfn_mcast_cb;
+
+        uint32_t                                        timeout_ms;
+        uint32_t                                        retry_cnt;
+        ib_al_flags_t                           flags;
+
+        ib_net64_t                                      port_guid;
+        uint16_t                                        pkey_index;
+
+}       ib_mcast_req_t;
+
+

FIELDS

+
       create
+               Indicates that the multicast group should be created if it does not
+               already exist.
+
+       member_rec
+               Specifies the membership information of the multicast group to join
+               or create.  The mgid and join state (scope_state) fields of the
+               member record must be set.  In addition, if create is set to TRUE,
+               the following fields must also be set: qkey, tclass, service level
+               and flow label (sl_flow_hop), and pkey.  All other fields are ignored
+               by the access layer.
+
+       mcast_context
+               User-defined context information associated with the join request.
+               This context is returned to the user through the function specified
+               by the pfn_mcast_cb field.
+
+       pfn_mcast_cb
+               A user-defined callback that is invoked upon completion of the
+               join request.
+
+       timeout_ms
+               Specifies the number of milliseconds to wait for a response for
+               the join request until retrying or timing out the request.
+
+       retry_cnt
+               Specifies the number of times that the join request will be retried
+               before failing the request.
+
+       flags
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
+               process the called routine synchronously.
+
+       port_guid
+               Indicates the port that will join the multicast group.  The QP
+               specified as part of the ib_join_mast call will bind to this port.
+
+       pkey_index
+               Specifies the pkey associated with this queue pair.
+
+

NOTES

+
       This structure is used when joining an existing multicast group or
+       creating a new multicast group.
+
+

SEE ALSO

+
       ib_join_mcast, ib_pfn_mcast_cb_t, ib_gid_t
+
+
+
+ +

[Functions] +Access Layer/ib_modify_av

+ +

[top][index]

+

NAME

+
       ib_modify_av
+
+

DESCRIPTION

+
       Modifies the attributes of an existing address vector.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_modify_av(
+        IN              const   ib_av_handle_t                          h_av,
+        IN              const   ib_av_attr_t* const                     p_av_attr );
+
+

PARAMETERS

+
       h_av
+               [in] A handle to an existing address vector.
+
+       p_av_attr
+               [in] The new attributes to use when modifying the address vector.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The address vector was successfully modified.
+
+       IB_INVALID_AV_HANDLE
+               The address vector handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the address vector attributes structure was not
+               provided.
+
+       IB_INVALID_PORT
+               The port number supplied, through the address vector attributes,
+               was invalid for the given channel adapter.
+
+

NOTES

+
       This routine modifies the attributes of an existing address vector.
+       The new attributes are specified through the p_av_attr parameter.
+
+

SEE ALSO

+
       ib_create_av, ib_destroy_av
+
+
+
+ +

[Functions] +Access Layer/ib_modify_ca

+ +

[top][index]

+

NAME

+
       ib_modify_ca
+
+

DESCRIPTION

+
       Modifies the attributes and violation counters associated with a port.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_modify_ca(
+        IN              const   ib_ca_handle_t                          h_ca,
+        IN              const   uint8_t                                         port_num,
+        IN              const   ib_ca_mod_t                                     ca_mod,
+        IN              const   ib_port_attr_mod_t* const       p_port_attr_mod );
+
+

PARAMETERS

+
       h_ca
+               [in] A handle to an opened channel adapter.
+
+       port_num
+               [in] An index to the port that is being modified.  The port_num matches
+               the index of the port as returned through the ib_query_ca call.
+
+       ca_mod
+               [in] A mask of the attributes and counters to modify.
+
+       p_port_attr_mod
+               [in] A list of the specific port attribute information to modify.  For
+               the access layer to modify an attribute, its corresponding bit must be
+               set in the ca_mod parameter.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The attributes were successfully modified.
+
+       IB_INVALID_CA_HANDLE
+               The channel adapter handle was invalid.
+
+       IB_INVALID_PORT
+               The port number supplied was invalid for the given channel adapter.
+
+       IB_INVALID_PARAMETER
+               The supplied ca_mod mask is invalid or a reference to the port
+               attribute information was not provided.
+
+       IB_UNSUPPORTED
+               The optional qkey and pkey violation counters are not supported by
+               this channel adapter, but an attempt was made to modify them.
+
+

NOTES

+
       This call sets the attributes for a port in its associated PORT_INFO
+       structure.  It will also reset pkey and qkey violation counters.
+
+

SEE ALSO

+
       ib_open_ca, ib_query_ca, ib_close_ca, ib_ca_mod_t, ib_port_attr_mod_t
+
+
+
+ +

[Functions] +Access Layer/ib_modify_cq

+ +

[top][index]

+

NAME

+
       ib_modify_cq
+
+

DESCRIPTION

+
       Modifies the attributes associated with a completion queue, allowing the
+       completion queue to be resized.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_modify_cq(
+        IN              const   ib_cq_handle_t                          h_cq,
+        IN      OUT                     uint32_t* const                         p_size );
+
+

PARAMETERS

+
       h_cq
+               [in] A handle to an existing completion queue.
+
+       p_size
+               [in/out] Specifies the new size of the completion queue.  If the
+               modify call is successful, the actual size of the completion queue
+               will be returned.  The actual size of the CQ will be greater than or
+               equal to the requested size.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The completion queue was successfully modified.
+
+       IB_INVALID_CQ_HANDLE
+               The completion queue handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the completion queue size was not provided.
+
+       IB_INVALID_CQ_SIZE
+               The requested size of the completion queue was larger than the
+               maximum supported by the associated channel adapter.
+
+       IB_OVERFLOW
+               The specified size of the completion queue is smaller than the number
+               of work completions currently on the completion queue.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to modify the completion queue.
+
+

NOTES

+
       This routine allows a client to modify the size of a completion queue.
+       If the new size is larger than what the associated channel adapter can
+       support, an error is returned.  If the completion queue has valid
+       completion entries on it and the requested size is smaller than the
+       number of entries, an overflow error is returned and the modify
+       operation is aborted.
+
+

SEE ALSO

+
       ib_create_cq
+
+
+
+ +

[Functions] +Access Layer/ib_modify_qp

+ +

[top][index]

+

NAME

+
       ib_modify_qp
+
+

DESCRIPTION

+
       Modifies the attributes of an existing queue pair.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_modify_qp(
+        IN              const   ib_qp_handle_t                          h_qp,
+        IN              const   ib_qp_mod_t* const                      p_qp_mod );
+
+

PARAMETERS

+
       h_qp
+               [in] A handle to an existing queue pair.
+
+       p_qp_mod
+               [in] The new attributes to use when modifying the queue pair.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The queue pair was successfully modified.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the queue pair attributes was not provided.
+
+       IB_INVALID_SETTING
+               The specified queue pair attributes were invalid.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to register the modify the queue pair.
+
+       IB_UNSUPPORTED
+               The requested modification was not supported.
+
+       IB_INVALID_QP_STATE
+               The queue pair was in an invalid state for the requested operation.
+
+       IB_INVALID_PKEY
+               The specified pkey was not valid.
+
+       IB_INVALID_APM_STATE
+               The specified automatic path migration state was not valid.
+
+

NOTES

+
       This routine modifies the attributes of an existing queue pair and
+       transitions it to a new state.  The new state and attributes are
+       specified through the p_qp_mod parameter.  Upon successful completion,
+       the queue pair is in the requested state.
+
+

SEE ALSO

+
       ib_create_qp, ib_destroy_qp, ib_qp_mod_t
+
+
+
+ +

[Structures] +Access Layer/ib_mra_pdata_t

+ +

[top][index]

+

NAME

+
       ib_mra_pdata_t
+
+

DESCRIPTION

+
       User data sent as part of a message receipt acknowledgement.
+
+

SYNOPSIS

+
typedef union _ib_mra_pdata
+{
+        uint8_t                                         data[IB_MRA_PDATA_SIZE];
+
+}       ib_mra_pdata_t;
+
+

SEE ALSO

+
       ib_cm_data_sizes_t
+
+
+
+ +

[Functions] +Access Layer/ib_open_al

+ +

[top][index]

+

NAME

+
       ib_open_al
+
+

DESCRIPTION

+
       This routine opens an instance of the access layer for the user and
+       returns its handle.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_open_al(
+                OUT                     ib_al_handle_t* const           ph_al );
+
+

PARAMETERS

+
       ph_al
+               [in] Upon successful completion of this call, this parameter will
+               reference a handle to the access layer.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The access layer was opened successfully.
+
+       IB_INVALID_PARAMETER
+               A reference to the access layer handle was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to perform the operation.
+
+

NOTES

+
       This function opens an instance of the access layer.  An instance of the
+       access layer is required before allocating additional resources from the
+       access layer or a channel adapter.  If successful, a handle to the access
+       layer is returned.  User-mode clients should not call ib_open_al from the
+       module initialization routine.
+
+

SEE ALSO

+
       ib_close_al
+
+
+
+ +

[Functions] +Access Layer/ib_open_ca

+ +

[top][index]

+

NAME

+
       ib_open_ca
+
+

DESCRIPTION

+
       Opens a channel adapter for additional access.  A channel adapter must
+       be opened before consuming resources on that adapter.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_open_ca(
+        IN              const   ib_al_handle_t                          h_al,
+        IN              const   ib_net64_t                                      ca_guid,
+        IN              const   ib_pfn_event_cb_t                       pfn_ca_event_cb OPTIONAL,
+        IN              const   void* const                                     ca_context,
+                OUT                     ib_ca_handle_t* const           ph_ca );
+
+

PARAMETERS

+
       h_al
+               [in] The handle to an open instance of AL.
+
+       ca_guid
+               [in] The GUID of the channel adapter to open.
+
+       pfn_ca_event_cb
+               [in] A user-specified callback that is invoked after an
+               asynchronous event has occurred on the channel adapter.
+
+       ca_context
+               [in] A client-specified context to associate with this opened instance
+               of the channel adapter.  This context is returned to the user when
+               invoking asynchronous callbacks referencing this channel adapter.
+
+       ph_ca
+               [out] Upon successful completion of this call, this references a
+               handle to the opened channel adapter.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The operation was successful.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_GUID
+               No channel adapter in the system was found for the specified ca_guid.
+
+       IB_INVALID_PARAMETER
+               A reference to the CA handle was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to open the channel adapter.
+
+

NOTES

+
       When successful, this routine returns a handle to an open instance of a CA.
+
+

SEE ALSO

+
       ib_query_ca, ib_modify_ca, ib_close_ca, ib_pfn_event_cb_t
+
+
+
+ +

[Functions] +Access Layer/ib_peek_cq

+ +

[top][index]

+

NAME

+
       ib_peek_cq
+
+

DESCRIPTION

+
       Returns the number of entries currently on the completion queue.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_peek_cq(
+        IN              const   ib_cq_handle_t                          h_cq,
+        OUT                             uint32_t* const                         p_n_cqes );
+
+

PARAMETERS

+
       h_cq
+               [in] Handle to the completion queue to peek.
+
+       p_n_cqes
+               [out] Upon successful completion of this call, contains the number
+               of completion queue entries currently on the completion queue.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The peek operation completed successfully.
+
+       IB_INVALID_CQ_HANDLE
+               The completion queue handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the completion queue entry count was not provided.
+
+       IB_UNSUPPORTED
+               This operation is not supported by the channel adapter.
+
+

NOTES

+
       The value returned is a snapshot of the number of compleiton queue
+       entries curently on the completion queue.  Support for this operation
+       is optional by a channel adapter vendor.
+
+

SEE ALSO

+
       ib_create_cq, ib_poll_cq, ib_rearm_cq, ib_rearm_n_cq
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_cm_apr_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_cm_apr_cb_t
+
+

DESCRIPTION

+
       A user-specified callback that is invoked after receiving a load
+       alternate path response message.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_cm_apr_cb_t)(
+        IN                              ib_cm_apr_rec_t                         *p_cm_apr_rec );
+
+

PARAMETERS

+
       p_cm_apr_rec
+               [in] Load alternate path response information sent by the remote side.
+
+

NOTES

+
       This callback is invoked to notify the user of a load alternate path
+       response.  If a response is not received within the specified timeout
+       period, this callback will be invoked with the status set to IB_CM_TIMEOUT.
+
+       In the kernel, this callback is typically invoked from within a tasklet,
+       depending on the implementation of the verbs provider driver.
+
+

SEE ALSO

+
       ib_cm_lap, ib_cm_apr, ib_cm_apr_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_cm_drep_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_cm_drep_cb_t
+
+

DESCRIPTION

+
       A user-specified callback that is invoked after receiving a disconnect
+       reply message.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_cm_drep_cb_t)(
+        IN                              ib_cm_drep_rec_t                        *p_cm_drep_rec );
+
+

PARAMETERS

+
       p_cm_drep_rec
+               [in] Disconnect reply information returned to the user.
+
+

NOTES

+
       This callback is invoked to notify the user of a disconnect reply.  If
+       no reply was received within the specified timeout period, this callback
+       will be invoked with the status set to IB_CM_TIMEOUT.
+
+       In the kernel, this callback is typically invoked from within a
+       tasklet, depending on the implementation of the verbs provider driver.
+
+

SEE ALSO

+
       ib_cm_dreq, ib_cm_drep, ib_cm_drep_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_cm_dreq_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_cm_dreq_cb_t
+
+

DESCRIPTION

+
       A user-specified callback that is invoked after receiving a disconnect
+       request message.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_cm_dreq_cb_t)(
+        IN                              ib_cm_dreq_rec_t                        *p_cm_dreq_rec );
+
+

PARAMETERS

+
       p_cm_dreq_rec
+               [in] Disconnect request information returned to the user.
+
+

NOTES

+
       This callback is invoked to notify the user of a disconnect request.
+       Users must call ib_cm_drep to respond to the disconnect request.  After
+       this callback returns, the queue pair associated with the connection is
+       transitioned to the time-wait state and is no longer usable for sending
+       and receiving data.
+
+       In the kernel, this callback is typically invoked from within a tasklet,
+       depending on the implementation of the verbs provider driver.
+
+

SEE ALSO

+
       ib_cm_req, ib_cm_listen, ib_cm_drep, ib_cm_dreq_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_cm_lap_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_cm_lap_cb_t
+
+

DESCRIPTION

+
       A user-specified callback that is invoked after receiving a load
+       alternate path message.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_cm_lap_cb_t)(
+        IN                              ib_cm_lap_rec_t                         *p_cm_lap_rec );
+
+

PARAMETERS

+
       p_cm_lap_rec
+               [in] Load alternate path information sent by the remote side.
+
+

NOTES

+
       This callback is invoked to notify the user of a load alternate path
+       request.  Users must call ib_cm_apr to respond to the load alternate
+       path request from within this callback.  The ib_cm_apr call is used
+       to accept or reject the load alternate path request.
+
+       In the kernel, this callback is typically invoked from within a
+       tasklet, depending on the implementation of the verbs provider driver.
+
+

SEE ALSO

+
       ib_cm_lap, ib_cm_apr, ib_cm_lap_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_cm_mra_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_cm_mra_cb_t
+
+

DESCRIPTION

+
       A user-specified callback that is invoked after receiving a message
+       received acknowledgement.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_cm_mra_cb_t)(
+        IN                              ib_cm_mra_rec_t                         *p_cm_mra_rec );
+
+

PARAMETERS

+
       p_cm_mra_rec
+               [in] Message received acknowledgement information received from the
+               remote side.
+
+

NOTES

+
       This callback is invoked to notify the user that their request was
+       successfully received, but additional processing is required.  This
+       callback may be invoked after calling ib_cm_req or ib_cm_rep
+
+       In the kernel, this callback is typically invoked from within a tasklet,
+       depending on the implementation of the verbs provider driver.
+
+

SEE ALSO

+
       ib_cm_req, ib_cm_rep, ib_cm_mra_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_cm_rej_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_cm_rej_cb_t
+
+

DESCRIPTION

+
       A user-specified callback that is invoked after receiving a connection
+       rejection message.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_cm_rej_cb_t)(
+        IN                              ib_cm_rej_rec_t                         *p_cm_rej_rec );
+
+

PARAMETERS

+
       p_cm_rej_rec
+               [in] Connection rejection information returned to the user.
+
+

NOTES

+
       This callback is invoked to notify the user that a connection has been
+       rejected.  This routine may be invoked after calling ib_cm_req or
+       ib_cm_rep.
+
+       In the kernel, this callback is typically invoked from within a tasklet,
+       depending on the implementation of the verbs provider driver.
+
+

SEE ALSO

+
       ib_cm_req, ib_cm_rep, ib_cm_rtu, ib_cm_rej, ib_cm_rej_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_cm_rep_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_cm_rep_cb_t
+
+

DESCRIPTION

+
       A user-specified callback that is invoked after receiving a connection
+       request reply message.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_cm_rep_cb_t)(
+        IN                              ib_cm_rep_rec_t                         *p_cm_rep_rec );
+
+

PARAMETERS

+
       p_cm_rep_rec
+               [in] Connection request reply information returned to the user,
+               indicating the remote connection data.
+
+

NOTES

+
       This callback is invoked to notify the user of a connection request reply.
+       This routine is invoked after calling ib_cm_req.  Users must call
+       ib_cm_rtu to accept the connection or ib_cm_rej to reject the connection
+       from the callback.
+
+       Users may also call ib_cm_mra to acknowledge the connection request reply
+       and prevent the remote side from timing out the connection request.  The
+       ib_cm_mra routine should be invoked if the user requires substantial
+       processing time to process the connection request reply.
+
+       If a reply is not received within the specified timeout period,
+       this callback will be invoked with the status set to IB_CM_TIMEOUT.  Users
+       may call ib_cm_rej to notify the remote side that the connection request
+       is being rejected due to a timeout.
+
+       In the kernel, this callback is typically invoked from within a tasklet,
+       depending on the implementation of the verbs provider driver.
+
+

SEE ALSO

+
       ib_cm_req, ib_cm_listen, ib_cm_rep, ib_cm_rej, ib_cm_mra, ib_cm_rej,
+       ib_cm_rep_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_cm_req_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_cm_req_cb_t
+
+

DESCRIPTION

+
       A user-specified callback that is invoked after receiving a connection
+       request message.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_cm_req_cb_t)(
+        IN                              ib_cm_req_rec_t                         *p_cm_req_rec );
+
+

PARAMETERS

+
       p_cm_req_rec
+               [in] Connection request information returned to the user, indicating
+               the parameters for the connection.
+
+

NOTES

+
       This callback is invoked to notify the user of a connection request.  This
+       routine is invoked for peer to peer connection request calls to ib_cm_req
+       and for calls to ib_cm_listen.  Users must call ib_cm_rep to accept the
+       connection or ib_cm_rej to reject the connection from the callback.
+
+       Users may also call ib_cm_mra to acknowledge the connection request and
+       prevent the remote side from timing out the connection request.  The
+       ib_cm_mra routine should be invoked if the user requires substantial
+       processing time to process the connection request.
+
+       In the kernel, this callback is typically invoked from within a tasklet,
+       depending on the implementation of the verbs provider driver.
+
+

SEE ALSO

+
       ib_cm_req, ib_cm_listen, ib_cm_rep, ib_cm_mra, ib_cm_rej, ib_cm_req_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_cm_rtu_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_cm_rtu_cb_t
+
+

DESCRIPTION

+
       A user-specified callback that is invoked after receiving a connection
+       ready to use message.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_cm_rtu_cb_t)(
+        IN                              ib_cm_rtu_rec_t                         *p_cm_rtu_rec );
+
+

PARAMETERS

+
       p_cm_rtu_rec
+               [in] Connection ready to use information returned to the user.
+
+

NOTES

+
       This callback is invoked to notify the user that a connection is ready
+       to use.  This routine is invoked after calling ib_cm_rep.  If a ready to
+       use message is not received within the specified timeout period, this
+       callback will be invoked with the status set to IB_CM_TIMEOUT.
+
+       This callback will be invoked before a user is notified of any completions
+       that has occurred on the associated queue pair.
+
+       In the kernel, this callback is typically invoked from within a tasklet,
+       depending on the implementation of the verbs provider driver.
+
+

SEE ALSO

+
       ib_cm_rep, ib_cm_rtu_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_comp_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_comp_cb_t
+
+

DESCRIPTION

+
       Completion callback provided by a client.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_comp_cb_t)(
+        IN              const   ib_cq_handle_t                          h_cq,
+        IN                              void                                            *cq_context );
+
+

PARAMETERS

+
       h_cq
+               [in] Handle for the completion queue on which the completion occurred.
+
+       cq_context
+               [in] User-specified context for the completion queue on which the
+               completion occurred.
+
+

NOTES

+
       This function is invoked upon completion of a work request on a queue pair
+       associated with the completion queue.  The context associated with the
+       completion queue on which the completion occurred is return to the client
+       through the callback.
+
+       In the kernel, this callback is usually invoked using a tasklet, dependent
+       on the implementation of the underlying verbs provider driver.
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_destroy_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_destroy_cb_t
+
+

DESCRIPTION

+
       Asynchronous callback invoked after a resource has been successfully
+       destroyed.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_destroy_cb_t)(
+        IN                              void                                            *context );
+
+

PARAMETERS

+
       context
+               [in] User-specified context associated with the resource being
+               destroyed.  The context for the resource is usually set during the
+               object's creation.
+
+

NOTES

+
       This callback notifies a client that a resource has been successfully
+       destroyed.  It is used to indicate that all pending callbacks associated
+       with the resource have completed, and no additional events will be
+       generated for that resource.
+
+       This callback is invoked within a system thread context in the kernel.
+
+       If the user specifies ib_sync_destroy as the asynchronous callback, then
+       the object being destroyed will be destroyed synchronously.  This may 
+       result in the calling thread blocking while outstanding callbacks complete.
+
+

SEE ALSO

+
       ib_sync_destroy
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_event_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_event_cb_t
+
+

DESCRIPTION

+
       A user-specified callback that is invoked after an asynchronous event
+       has occurred on an allocated resource.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_event_cb_t)(
+        IN                              ib_async_event_rec_t            *p_event_rec );
+
+

PARAMETERS

+
       p_event_rec
+               [in] Information returned to the user, indicating the type of
+               event and the associated user context.
+
+

NOTES

+
       This callback is invoked within a system thread context in the kernel.
+
+

SEE ALSO

+
       ib_async_event_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_listen_err_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_listen_err_cb_t
+
+

DESCRIPTION

+
       A user-specified callback that is invoked after an error has occurred on
+       a listen request.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_listen_err_cb_t)(
+        IN                              ib_listen_err_rec_t                     *p_listen_err_rec );
+
+

PARAMETERS

+
       p_listen_err_rec
+               [in] Error information returned to the user, indicating the reason
+               for the error and associated context information.
+
+

NOTES

+
       This callback is invoked within a system thread context in the kernel.
+
+

SEE ALSO

+
       p_listen_err_rec
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_mad_comp_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_mad_comp_cb_t
+
+

DESCRIPTION

+
       User-defined callback used to notify the user of a completion for a
+       sent or received datagram.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_mad_comp_cb_t)(
+        IN              const   ib_mad_svc_handle_t                     h_mad_svc,
+        IN                              void                                            *mad_svc_context,
+        IN                              ib_mad_element_t                        *p_mad_element );
+
+

PARAMETERS

+
       h_mad_svc
+               [in] Handle to the MAD service on which the completion occured.
+
+       mad_svc_context
+               [in] User-defined context information associated with the MAD service
+               on which the completion occurred.
+
+       p_mad_element
+               [in] References information on the completed MAD request.
+
+

NOTES

+
       This function is invoked upon completion of a sent or receive MAD.
+       It is separate from the normal completion callbacks in order to allow
+       the access layer to perform post processing on the MAD, such as
+       segmentation and reassembly, and retransmissions if a response was
+       expected.
+
+       The mad element returned through this call should be returned to its MAD
+       pool after completion processing on the MAD has concluded.  Completed
+       receive MAD elements should not be reposted to the receive queue of a
+       MAD QP.
+
+       In the kernel, this callback is typically invoked from within a
+       tasklet, depending on the implementation of the verbs provider driver.
+
+

SEE ALSO

+
       ib_send_mad, ib_reg_mad_svc
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_mcast_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_mcast_cb_t
+
+

DESCRIPTION

+
       User-defined callback invoked on completion of a multicast join request.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_mcast_cb_t)(
+        IN                              ib_mcast_rec_t                          *p_mcast_rec );
+
+

PARAMETERS

+
       p_mcast_rec
+               [in] References the result of the join operation.
+
+

NOTES

+
       The callback is used to notify a client of the result of a multicast
+       join request.
+
+       This callback is invoked within a system thread context in the kernel.
+
+

SEE ALSO

+
       ib_join_mcast, ib_mcast_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_pnp_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_pnp_cb_t
+
+

DESCRIPTION

+
       User-defined callback that is invoked to notify a client of the addition
+       or removal of a channel adapter, a port up or down event, port changes,
+       and the assignment of an I/O controller to a local port.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API * __ptr64 ib_pfn_pnp_cb_t)(
+        IN                              ib_pnp_rec_t                            *p_pnp_rec );
+
+

PARAMETERS

+
       p_pnp_rec
+               [in] A reference to a plug and play record.  The plug and play
+               record contains details about the type of local event that has
+               occurred, along with the relevant device information.
+
+ RETURN VALUES
+       IB_SUCCESS
+               Indicates to the PnP manager that the callback client requires it
+               to maintain a context for this event.
+
+       Other
+               Indicates to the PnP manager that the callback client does not need
+               a context for this event.
+
+

NOTES

+
       The callback is used to notify users of local events that have occurred
+       on a given channel adapter.  Information about the type of event that
+       occurred along with the associated device is returned to the user through
+       the p_pnp_rec parameter.
+
+       Users register for plug and play changes by requesting notification from
+       the access layer.  Users may register for notifications either by directly
+       invoking the appropriate function in the access layer, or indirectly by
+       adding the necessary registration data to the access layer device file.
+
+       This callback is invoked from within a system thread context.
+
+       If the callback returns a status other than IB_SUCCESS, no further
+       callback for related events will be delivered.
+
+

SEE ALSO

+
       ib_pnp_rec_t, ib_reg_pnp, ib_dereg_pnp, ib_reject_ioc
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_query_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_query_cb_t
+
+

DESCRIPTION

+
       User-defined callback invoked on completion of a subnet administrator
+       query.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_query_cb_t)(
+        IN                              ib_query_rec_t                          *p_query_rec );
+
+

PARAMETERS

+
       p_query_rec
+               [in] This is a reference to a structure containing the result of the
+               query.
+
+

NOTES

+
       This routine is invoked to notify a client of the result of a subnet
+       administration query.  The p_query_rec parameter references the result
+       of the query and, in the case of a successful query, any information
+       returned by the subnet administrator.
+
+       In the kernel, this callback is usually invoked using a tasklet, dependent
+       on the implementation of the underlying verbs provider driver.
+
+

SEE ALSO

+
       ib_query_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_reg_svc_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_reg_svc_cb_t
+
+

DESCRIPTION

+
       User-defined callback that is invoked to notify a client of the result
+       of a service registration attempt.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_reg_svc_cb_t)(
+        IN                              ib_reg_svc_rec_t                        *p_reg_svc_rec );
+
+

PARAMETERS

+
       p_reg_svc_rec
+               [in] References the result of the service registration attempt.
+
+

NOTES

+
       The callback is used to notify a client of the result of a service
+       registration attempt with the subnet administrator.
+
+       In the kernel, this callback is usually invoked using a tasklet, dependent
+       on the implementation of the underlying verbs provider driver.
+
+

SEE ALSO

+
       ib_reg_svc, ib_reg_svc_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_report_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_report_cb_t
+
+

DESCRIPTION

+
       User-defined callback that is invoked to notify a client of an event
+       that has occurred on the fabric.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_report_cb_t)(
+        IN                              ib_report_rec_t                         *p_report_rec );
+
+

PARAMETERS

+
       p_report_rec
+               [in] A reference to an event report.  The report contains
+               details about the type of event that has occurred, along with the
+               relevant device information.
+
+

NOTES

+
       The callback is used to notify users of remote events that have been seen
+       by a specified class manager.  Information about the type of event that
+       occurred along with the associated device is returned to the user through
+       the p_report_rec parameter.
+
+       Users register for device changes by subscribing with a class manager.
+       Users may subscribe for events either by directly invoking the
+       appropriate function in the access layer, or indirectly by adding the
+       necessary registration data to the access layer device file.
+
+       This callback is invoked from within a system thread context.
+
+

SEE ALSO

+
       ib_report_rec_t, ib_subscribe, ib_unsubscribe
+
+
+
+ +

[Functions] +Access Layer/ib_pfn_sub_cb_t

+ +

[top][index]

+

NAME

+
       ib_pfn_sub_cb_t
+
+

DESCRIPTION

+
       User-defined callback invoked on completion of a subscription request.
+
+

SYNOPSIS

+
typedef void
+(AL_API * __ptr64 ib_pfn_sub_cb_t)(
+        IN                              ib_sub_rec_t                            *p_sub_rec );
+
+

PARAMETERS

+
       p_sub_rec
+               [in] This is a reference to a structure containing the result of the
+               subscription request.
+
+

NOTES

+
       This routine is invoked to notify a client of the result of a
+       subscription request with a class manager.  If the subscription request
+       was successful, the client will receive future notifications of the
+       subscribed event from the class manager.
+
+       This callback will always be invoked before a client receives information
+       reported on a subscribed event that has occurred.
+
+       In the kernel, this callback is usually invoked using a tasklet, dependent
+       on the implementation of the underlying verbs provider driver.
+
+

SEE ALSO

+
       ib_subscribe, ib_sub_rec_t
+
+
+
+ +

[Structures] +Access Layer/ib_pnp_ca_rec_t

+ +

[top][index]

+

NAME

+
       ib_pnp_ca_rec_t
+
+

DESCRIPTION

+
       Notification information used to describe local channel adapter events.
+
+

SYNOPSIS

+
typedef struct _ib_pnp_ca_rec
+{
+        ib_pnp_rec_t                            pnp_rec;
+        ib_ca_attr_t* __ptr64           p_ca_attr;
+
+}       ib_pnp_ca_rec_t;
+
+

FIELDS

+
       pnp_rec
+               Structure describing the plug and play event being reported.
+
+       p_ca_attr
+               Attributes of the channel adapter that has experienced the event.
+               NULL for IB_PNP_CA_REMOVE, IB_PNP_PORT_REMOVE, and IB_PNP_IOC_REMOVE
+               events.
+
+

NOTES

+
       This structure is returned to the user to notify them of the addition
+       or the removal of a channel adapter.
+
+       The context field is NULL unless a context value has already been set
+       by the user.
+
+       Context values can be changed by updating the appropriate field
+       and will be take effect once the notification callback returns.
+
+       Once a device has been removed, all context associated with that device
+       is lost.
+
+       Recipients of CA-related PnP events should cast the ib_pnp_rec_t structure
+       returned in the PnP callback to this type to access CA-specific information.
+
+

SEE ALSO

+
       ib_open_al, ib_ca_attr_t, ib_reg_pnp, ib_dereg_pnp, ib_pfn_pnp_cb_t,
+       ib_ioc_info_t, ib_reject_ioc, ib_pnp_event_t
+
+
+
+ +

[Definitions] +Access Layer/ib_pnp_class_t

+ +

[top][index]

+

NAME

+
       ib_pnp_class_t
+
+

DESCRIPTION

+
       Specifies the class of plug and play events that are being subscribed for.
+
+

SYNOPSIS

+
#define IB_PNP_CA                                               0x00000001
+#define IB_PNP_PORT                                             0x00000002
+#define IB_PNP_IOU                                              0x00000004
+#define IB_PNP_IOC                                              0x00000008
+
+#define IB_PNP_FLAG_REG_SYNC                    0x40000000
+#define IB_PNP_FLAG_REG_COMPLETE                0x80000000
+#define IB_PNP_FLAG_MASK                                0xF0000000
+#define IB_PNP_CLASS_MASK                               0x000000FF
+
+typedef uint32_t        ib_pnp_class_t;
+
+

VALUES

+
       IB_PNP_CA
+               Value used to register for local channel adapter events.  These
+                events include the addition or removal of a local channel adapter.
+
+       IB_PNP_PORT
+               Value used to register for local port events.  These events include
+               local port up or down events and port LID or Pkey changes.
+
+       IB_PNP_IOU
+               Value used to register for I/O unit PnP events.  I/O unit events
+               include notifications of I/O unit assignment to and dissociation from
+               the local host.
+
+       IB_PNP_IOC
+               Value used to register for an I/O controller PnP event.  I/O controller
+               events include notification of an I/O controller assignment to a local
+               port and indication that an I/O controller dissociation has occurred.
+
+       IB_PNP_FLAG_REG_SYNC
+               Flag that is ORed with the PnP Class to control behavior of the
+               ib_pnp_reg call.  When set, ib_pnp_reg returns after client has
+               received all events for the current state of the system.
+
+       IB_PNP_FLAG_REG_COMPLETE
+               Flag that is ORed with the PnP Class to control whether an event
+               is generated to indicate that a client has received all events for the
+               current state of the system.
+
+

NOTES

+
       When registering for PnP notification, a client specifies the class of
+       local events that the client wishes to be notified of.  For example to
+       request notification of events on a port, a client would use IB_PNP_PORT.
+       To be notified of the assignment of an I/O controller, a client would use
+       IB_PNP_IOC.
+
+       The PnP APIs do not support registration for multiple event classes at
+       a time.
+
+

SEE ALSO

+
       ib_pfn_pnp_cb_t, ib_pfn_report_cb_t, ib_pnp_rec_t, ib_pnp_event_t
+
+
+
+ +

[Definitions] +Access Layer/ib_pnp_event_t

+ +

[top][index]

+

NAME

+
       ib_pnp_event_t
+
+

DESCRIPTION

+
       Indicates the type of plug and play event that has occurred.
+
+

SYNOPSIS

+
#define IB_PNP_EVENT_PATH                               0x00000800
+#define IB_PNP_EVENT_ADD                                0x00001000
+#define IB_PNP_EVENT_REMOVE                             0x00002000
+#define IB_PNP_EVENT_CHANGE                             0x00004000
+#define IB_PNP_EVENT_INIT                               0x00008000
+#define IB_PNP_EVENT_ARMED                              0x00010000
+#define IB_PNP_EVENT_ACTIVE                             0x00020000
+#define IB_PNP_EVENT_DOWN                               0x00040000
+#define IB_PNP_EVENT_PKEY                               0x00080000
+#define IB_PNP_EVENT_SM                                 0x00100000
+#define IB_PNP_EVENT_GID                                0x00200000
+#define IB_PNP_EVENT_LID                                0x00400000
+#define IB_PNP_EVENT_SUBNET                             0x00800000
+
+#define IB_PNP_CA_ADD                                   (IB_PNP_CA | IB_PNP_EVENT_ADD)
+#define IB_PNP_CA_REMOVE                                (IB_PNP_CA | IB_PNP_EVENT_REMOVE)
+
+#define IB_PNP_PORT_ADD                                 (IB_PNP_PORT | IB_PNP_EVENT_ADD)
+#define IB_PNP_PORT_REMOVE                              (IB_PNP_PORT | IB_PNP_EVENT_REMOVE)
+#define IB_PNP_PORT_INIT                                (IB_PNP_PORT | IB_PNP_EVENT_INIT)
+#define IB_PNP_PORT_ARMED                               (IB_PNP_PORT | IB_PNP_EVENT_ARMED)
+#define IB_PNP_PORT_ACTIVE                              (IB_PNP_PORT | IB_PNP_EVENT_ACTIVE)
+#define IB_PNP_PORT_DOWN                                (IB_PNP_PORT | IB_PNP_EVENT_DOWN)
+#define IB_PNP_PKEY_CHANGE                              (IB_PNP_PORT | IB_PNP_EVENT_PKEY)
+#define IB_PNP_SM_CHANGE                                (IB_PNP_PORT | IB_PNP_EVENT_SM)
+#define IB_PNP_GID_CHANGE                               (IB_PNP_PORT | IB_PNP_EVENT_GID)
+#define IB_PNP_LID_CHANGE                               (IB_PNP_PORT | IB_PNP_EVENT_LID)
+#define IB_PNP_SUBNET_TIMEOUT_CHANGE    (IB_PNP_PORT | IB_PNP_EVENT_SUBNET)
+
+#define IB_PNP_IOU_ADD                                  (IB_PNP_IOU | IB_PNP_EVENT_ADD)
+#define IB_PNP_IOU_REMOVE                               (IB_PNP_IOU | IB_PNP_EVENT_REMOVE)
+#define IB_PNP_IOC_ADD                                  (IB_PNP_IOC | IB_PNP_EVENT_ADD)
+#define IB_PNP_IOC_REMOVE                               (IB_PNP_IOC | IB_PNP_EVENT_REMOVE)
+#define IB_PNP_IOC_PATH_ADD                             (IB_PNP_IOC | IB_PNP_EVENT_PATH | \
+                                                                                IB_PNP_EVENT_ADD)
+#define IB_PNP_IOC_PATH_REMOVE                  (IB_PNP_IOC | IB_PNP_EVENT_PATH | \
+                                                                                IB_PNP_EVENT_REMOVE)
+
+#define IB_PNP_REG_COMPLETE                             IB_PNP_FLAG_REG_COMPLETE
+
+typedef uint32_t        ib_pnp_event_t;
+
+

VALUES

+
       IB_PNP_CA_ADD
+               Indicates that a new channel adapter has been added.
+
+       IB_PNP_CA_REMOVE
+               Indicates that a channel adapter has been removed.
+
+       IB_PNP_PORT_ADD
+               Indicates that a new port has been added.  This callback will always
+               be followed by a callback to indicate the actual port state to allow
+               clients to use the PnP callbacks to drive their state machine.
+
+       IB_PNP_PORT_REMOVE
+               Indicates that a port has been removed.
+               A CA remove event will trigger this event first.
+
+       IB_PNP_PORT_INIT
+               Indicates that a port is in the IB_LINK_INIT state.
+
+       IB_PNP_PORT_ARMED
+               Indicates that a port is in the IB_LINK_ARMED state.
+
+       IB_PNP_PORT_ACTIVE
+               Indicates that a port is in the IB_LINK_ACTIVE state.
+
+       IB_PNP_PORT_DOWN
+               Indicates that a port down event has occurred.
+
+       IB_PNP_PKEY_CHANGE
+               Indicates that port Pkey change has ocurred.
+
+       IB_PNP_SM_CHANGE
+               Indicates that the SM assignment for a port has changed.
+
+       IB_PNP_GID_CHANGE
+               Indicates that the GID assignment for a port has changed.
+
+       IB_PNP_LID_CHANGE
+               Indicates that the LID or LMC assignment for a port has changed.
+
+       IB_PNP_SUBNET_TIMEOUT_CHANGE
+               Indicates that the subnet timeout assignment for a port has changed.
+
+       IB_PNP_IOU_ADD
+               Indicates that an I/O unit assignment has occured.
+
+       IB_PNP_IOU_REMOVE
+               Indicates that an I/O unit disassociation has occured.
+
+       IB_PNP_IOC_ADD
+               Indicates that an I/O controller assignment has occurred.
+
+       IB_PNP_IOC_REMOVE
+               Indicates that an I/O controller dissociation has occurred.
+               A port down event will trigger this event first.
+
+       IB_PNP_IOC_PATH_ADD
+               Indicates that a new path to an I/O controller is available.
+
+       IB_PNP_IOC_PATH_REMOVE
+               Indiactes that a path to an I/O controller is no longer avaialble.
+
+       IB_PNP_REG_COMPLETE
+               Indicates that all events associated with a ib_reg_pnp call have been
+               reported to the user.  The user's state of the system is now in
+               sync with that of the access layer.
+
+

NOTES

+
               The Access Layer maintains a queue of client PnP registrations.
+               Using this queue, PnP events are reported to clients in a specific
+               order.  CA add, port add, and IOC add events are reported from the
+               head of the queue, while CA remove, port remove, and IOC remove events
+               are reported from the tail.  Clients are responsible for performing
+               registrations in the proper sequence to ensure that PnP event
+               notifiations occur in the desired order.
+
+

SEE ALSO

+
       ib_pfn_pnp_cb_t, ib_pfn_report_cb_t, ib_pnp_rec_t, ib_pnp_class_t
+
+
+
+ +

[Structures] +Access Layer/ib_pnp_ioc_path_rec_t

+ +

[top][index]

+

NAME

+
       ib_pnp_ioc_path_rec_t
+
+

DESCRIPTION

+
       Notification information used to describe local channel adapter, port,
+       and I/O controller events.
+
+

SYNOPSIS

+
typedef struct _ib_pnp_ioc_path_rec
+{
+        ib_pnp_rec_t                            pnp_rec;
+        net64_t                                         ca_guid;
+        net64_t                                         port_guid;
+        ib_path_rec_t                           path;
+
+}       ib_pnp_ioc_path_rec_t;
+
+

FIELDS

+
       pnp_rec
+               Structure describing the plug and play event being reported.
+
+       ca_guid
+               GUID of the local HCA through which the I/O controller is accessible.
+               Valid only for IB_PNP_IOC_PATH_ADD and IB_PNP_IOC_PATH_REMOVE events.
+
+       port_guid
+               GUID of the local HCA port through which the I/O controller is
+               accessible.  Valid only for IB_PNP_IOC_PATH_ADD and
+               IB_PNP_IOC_PATH_REMOVE events.
+
+       p_path
+               Path record that provides connectivity with a given I/O controller.
+               Valid only for IB_PNP_IOC_PATH_ADD and IB_PNP_IOC_PATH_REMOVE events.
+
+

NOTES

+
       This structure is returned to the user to notify them of the addition
+       and removal of a path to an I/O controller.  I/O controller path
+       notifications are only delivered with respect to a previously reported
+       I/O controller.
+
+       The context field is NULL unless a context value has already been set
+       by the user.
+
+       Context values can be changed by updating the appropriate field
+       and will be take effect once the notification callback returns.
+
+       Once a device has been removed, all context associated with that device
+       is lost.  Context is maintained between port down and subsequent port up
+       events provided that the channel adapter is not removed.
+
+

SEE ALSO

+
       ib_open_al, ib_ca_attr_t, ib_reg_pnp, ib_dereg_pnp, ib_pfn_pnp_cb_t,
+       ib_ioc_info_t, ib_reject_ioc, ib_pnp_event_t
+
+
+
+ +

[Structures] +Access Layer/ib_pnp_ioc_rec_t

+ +

[top][index]

+

NAME

+
       ib_pnp_ioc_rec_t
+
+

DESCRIPTION

+
       Notification information used to describe local channel adapter, port,
+       and I/O controller events.
+
+

SYNOPSIS

+
typedef struct _ib_pnp_ioc_rec
+{
+        ib_pnp_rec_t                            pnp_rec;
+        net64_t                                         ca_guid;
+        ib_ioc_info_t                           info;
+        ib_svc_entry_t                          svc_entry_array[1];
+
+}       ib_pnp_ioc_rec_t;
+
+

FIELDS

+
       pnp_rec
+               Structure describing the plug and play event being reported.
+
+       ca_guid
+               GUID of the local HCA through which the I/O controller is accessible.
+               Valid only for IB_PNP_IOC_ADD events.
+
+       p_ioc_info
+               The I/O controller information for an assigned controller, including
+               information for the I/O unit.  Valid only for IB_PNP_IOC_ADD events.
+
+       svc_entry_array
+               If an I/O controller is being reported, this will reference an array
+               of service entries associated with the I/O controller.  The actual
+               number of entries in the array may be determined by examining the
+               svc_entries field in the I/O controller profile.  Valid only for
+               IB_PNP_IOC_ADD events.
+
+

NOTES

+
       This structure is returned to the user to notify them of the addition
+       and removal of an I/O controller.
+
+       The context field is NULL unless a context value has already been set
+       by the user.
+
+       Context values can be changed by updating the appropriate field
+       and will be take effect once the notification callback returns.
+
+       Once a device has been removed, all context associated with that device
+       is lost.  Context is maintained between port down and subsequent port up
+       events provided that the channel adapter is not removed.
+
+

SEE ALSO

+
       ib_open_al, ib_ca_attr_t, ib_reg_pnp, ib_dereg_pnp, ib_pfn_pnp_cb_t,
+       ib_ioc_info_t, ib_reject_ioc, ib_pnp_event_t
+
+
+
+ +

[Structures] +Access Layer/ib_pnp_iou_rec_t

+ +

[top][index]

+

NAME

+
       ib_pnp_iou_rec_t
+
+

DESCRIPTION

+
       Notification information used to describe local I/O unit events.
+
+

SYNOPSIS

+
typedef struct _ib_pnp_iou_rec
+{
+        ib_pnp_rec_t                            pnp_rec;
+        net64_t                                         ca_guid;
+        net64_t                                         chassis_guid;
+        uint8_t                                         slot;
+        net32_t                                         vend_id;
+        net16_t                                         dev_id;
+        net32_t                                         revision;
+        char                                            desc[IB_NODE_DESCRIPTION_SIZE + 1];
+
+}       ib_pnp_iou_rec_t;
+
+

FIELDS

+
       pnp_rec
+               Structure describing the plug and play event being reported.
+
+       ca_guid
+               GUID of the local HCA through which the I/O unit is accessible.  Valid
+               only for IB_PNP_IOU_ADD events.
+
+       chassis guid
+               GUID of the chassis in which an I/O unit is installed.  Valid only for
+               IB_PNP_IOU_ADD events.
+
+       slot
+               Chassis slot number in which an I/O unit is installed.  Valid only for
+               IB_PNP_IOU_ADD events.
+
+       guid
+               GUID of an I/O unit from which one or more I/O controllers are assigned
+               to this host.  Valid only for IB_PNP_IOU_ADD events.
+
+       vend_id
+               Vendor ID of an I/O unit from which one or more I/O controllers are
+               assigned to this host.  Valid only for IB_PNP_IOU_ADD events.
+
+       dev_id
+               Device ID of an I/O unit from which one or more I/O controllers are
+               assigned to this host.  Valid only for IB_PNP_IOU_ADD events.
+
+       revision
+               Revision of an I/O unit from which one or more I/O controllers are
+               assigned to this host.  Valid only for IB_PNP_IOU_ADD events.
+
+       desc
+               Node description string for an I/O unit from which one or more I/O
+               controllers are assigned to this host.  Valid only for IB_PNP_IOU_ADD
+               events.
+
+

NOTES

+
       This structure is returned to the user to notify them of the addition
+       and removal of an I/O Unit.
+
+       The context field is NULL unless a context value has already been set
+       by the user.
+
+       Context values can be changed by updating the appropriate field
+       and will be take effect once the notification callback returns.
+
+       Once a device has been removed, all context associated with that device
+       is lost.  Context is maintained between port down and subsequent port up
+       events provided that the channel adapter is not removed.
+
+

SEE ALSO

+
       ib_open_al, ib_ca_attr_t, ib_reg_pnp, ib_dereg_pnp, ib_pfn_pnp_cb_t,
+       ib_ioc_info_t, ib_reject_ioc, ib_pnp_event_t
+
+
+
+ +

[Structures] +Access Layer/ib_pnp_port_rec_t

+ +

[top][index]

+

NAME

+
       ib_pnp_port_rec_t
+
+

DESCRIPTION

+
       Notification information used to describe local port events.
+
+

SYNOPSIS

+
typedef struct _ib_pnp_port_rec
+{
+        ib_pnp_rec_t                            pnp_rec;
+        ib_ca_attr_t* __ptr64           p_ca_attr;
+        ib_port_attr_t* __ptr64         p_port_attr;
+
+}       ib_pnp_port_rec_t;
+
+

FIELDS

+
       pnp_rec
+               Structure describing the plug and play event being reported.
+
+       p_ca_attr
+               Attributes of the channel adapter that has experienced the event.
+               NULL for IB_PNP_CA_REMOVE, IB_PNP_PORT_REMOVE, and IB_PNP_IOC_REMOVE
+               events.
+
+       p_port_attr
+               Attributes of the port that has experienced the event.  Valid only
+               for IB_PNP_PORT_UP, IB_PNP_PORT_DOWN, IB_PNP_PKEY_CHANGE, and
+               IB_PNP_IOC_ADD events.
+
+

NOTES

+
       This structure is returned to the user to notify them of port events.
+
+       The context field is NULL unless a context value has already been set
+       by the user.
+
+       Context values can be changed by updating the appropriate field
+       and will be take effect once the notification callback returns.
+
+       Once a device has been removed, all context associated with that device
+       is lost.  Context is maintained between port down and subsequent port up
+       events provided that the channel adapter is not removed.
+
+       Recipients of port related PnP events should cast the ib_pnp_rec_t structure
+       returned in the PnP callback to this type to access port specific information.
+
+

SEE ALSO

+
       ib_open_al, ib_ca_attr_t, ib_reg_pnp, ib_dereg_pnp, ib_pfn_pnp_cb_t,
+       ib_ioc_info_t, ib_reject_ioc, ib_pnp_event_t
+
+
+
+ +

[Structures] +Access Layer/ib_pnp_rec_t

+ +

[top][index]

+

NAME

+
       ib_pnp_rec_t
+
+

DESCRIPTION

+
       Notification information used to describe local channel adapter, port,
+       and I/O controller events.
+
+

SYNOPSIS

+
typedef struct _ib_pnp_rec
+{
+        ib_pnp_event_t                          pnp_event;
+
+        ib_pnp_handle_t                         h_pnp;
+        ib_pnp_handle_t                         h_ioc_event;
+
+        void* __ptr64                           pnp_context;
+        void* __ptr64                           context;
+
+        ib_net64_t                                      guid;
+
+}       ib_pnp_rec_t;
+
+

FIELDS

+
       pnp_event
+               Describes the type of plug and play event that is being reported.
+
+       h_pnp
+               A handle to the notification registration for which this PnP record
+               was generated.  This handle will match the handle returned through
+               an ib_reg_pnp call.  It is provided in case a PnP notification event
+               occurs before a client's call to ib_reg_pnp can return.  This handle
+               may be used to cancel further notification of PnP events.
+
+       h_ioc_event
+               A handle that is unique to an I/O controller assignment event.
+               This handle is used to reject the assignment of an I/O controller
+               from within the ib_pfn_pnp_cb_t callback.  Valid for IB_PNP_IOC_ADD
+               events only.
+
+       pnp_context
+               User-defined context information specified when registering for
+               notification of the event.  See the notes section below for
+               more details.
+
+       context
+               This field references a user-specified context on which the event
+               occurred.  See the notes section below for more details.
+
+       guid
+               The GUID of the adapter, port, IOU, or IOC for which
+               the PnP event occurred.
+
+

NOTES

+
       This structure is returned to the user to notify them of: the addition
+       of a channel adapter, the removal of a channel adapter, a port up or down
+       event, a port pkey change, and I/O controller addition and removal events.
+
+       The context field is NULL unless a context value has already been set
+       by the user.
+
+       The context value can be changed by updating its field
+       and will take effect once the notification callback returns.
+
+       Once a device has been removed, all context associated with that device
+       is lost.  Context is maintained between port down and subsequent port up
+       events provided that the channel adapter is not removed.
+
+       I/O controller path notifications are only delivered with respect to a
+       previously reported I/O controller.
+
+

SEE ALSO

+
       ib_open_al, ib_ca_attr_t, ib_reg_pnp, ib_dereg_pnp, ib_pfn_pnp_cb_t,
+       ib_ioc_info_t, ib_reject_ioc, ib_pnp_event_t
+
+
+
+ +

[Structures] +Access Layer/ib_pnp_req_t

+ +

[top][index]

+

NAME

+
       ib_pnp_req_t
+
+

DESCRIPTION

+
       Information used to register for notification of local and I/O
+       controller assignment events.
+
+

SYNOPSIS

+
typedef struct _ib_pnp_req
+{
+        ib_pnp_class_t                          pnp_class;
+        const void                                      *pnp_context;
+        ib_pfn_pnp_cb_t                         pfn_pnp_cb;
+
+}       ib_pnp_req_t;
+
+

FIELDS

+
       pnp_class
+               Specifies the class of PnP events that the client wishes to be
+               notified of.
+
+       pnp_context
+               User-defined context information associated with this notification.
+               The context data is returned to the user as a part of their PnP
+               notification callback.
+
+       pfn_pnp_cb
+               User-defined callback function that is invoked to notify the user of
+               the occurrance of a plug and play event.
+
+

NOTES

+
       This structure is used when requesting notification of local events from
+       the access layer.  The class of PnP events which to be notified of is
+       specified through the pnp_class field.
+
+

SEE ALSO

+
       ib_pnp_class_t, ib_pfn_pnp_cb_t, ib_reg_pnp, ib_pnp_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_poll_cq

+ +

[top][index]

+

NAME

+
       ib_poll_cq
+
+

DESCRIPTION

+
       Checks a completion queue for completed work requests.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_poll_cq(
+        IN              const   ib_cq_handle_t                          h_cq,
+        IN      OUT                     ib_wc_t** const                         pp_free_wclist,
+                OUT                     ib_wc_t** const                         pp_done_wclist );
+
+

PARAMETERS

+
       h_cq
+               [in] A handle to a completion queue to check for completions on.
+
+       pp_free_wclist
+               [in/out] On input, a list of work completion structures provided by
+               the client.  These are used to report completed work requests through
+               the pp_done_wclist.
+
+               On output, this contains the list of work completions structures for
+               which no work completion was found.
+
+       pp_done_wclist
+               [out] A list of work completions retrieved from the completion queue.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The poll operation completed successfully.  If the work completion
+               structures referenced by the pp_free_wclist list is empty there are
+               potentially more completions available to retrieve.
+
+       IB_INVALID_PARAMETER
+               A reference to the free or done work completion list was not provided.
+
+       IB_INVALID_CQ_HANDLE
+               The completion queue handle was invalid.
+
+       IB_NOT_FOUND
+               No completed work requests were removed from the completion queue.
+
+

NOTES

+
       This routine retrieves completed work requests from the specified
+       completion queue.  This call will retrieve all completed requests,
+       up to to the number of work completion structures referenced by the
+       pp_free_wclist.  Completed requests will be returned through the
+       pp_done_wclist parameter.
+
+

SEE ALSO

+
       ib_create_cq, ib_post_send, ib_post_recv, ib_bind_mw, ib_wc_t
+
+
+
+ +

[Functions] +Access Layer/ib_post_recv

+ +

[top][index]

+

NAME

+
       ib_post_recv
+
+

DESCRIPTION

+
       This routine posts a work request to the receive queue of a queue pair.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_post_recv(
+        IN              const   ib_qp_handle_t                          h_qp,
+        IN                              ib_recv_wr_t* const                     p_recv_wr,
+                OUT                     ib_recv_wr_t                            **pp_recv_failure OPTIONAL );
+
+

PARAMETERS

+
       h_qp
+               [in] The queue pair to which this work request is being submitted.
+
+       p_recv_wr
+               [in] A reference to the head of the work request list.
+
+       pp_recv_failure
+               [out] If the post receive operation failed, this references the work
+               request in the p_recv_wr list where the first failure occurred.
+               This parameter may be NULL if only a single work request is being
+               posted to the QP.
+
+ RETURN VALUES
+       IB_SUCCESS
+               All work requests were successfully posted.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the receive work request list was not provided.
+
+       IB_INSUFFICIENT_RESOURCES
+               The number of posted work requests exceed the current depth available
+               on the receive queue.
+
+       IB_INVALID_WR_TYPE
+               The work request type was invalid.
+
+       IB_INVALID_QP_STATE
+               The current queue pair state does not allow posting receives.
+
+

NOTES

+
       This routine posts a work request to the receive queue of a queue pair.
+       The type of work to perform is defined by the p_recv_wr parameter.  This
+       call is used to post data buffers to receive incoming message sends.
+
+

SEE ALSO

+
       ib_recv_wr_t
+
+
+
+ +

[Functions] +Access Layer/ib_post_send

+ +

[top][index]

+

NAME

+
       ib_post_send
+
+

DESCRIPTION

+
       This routine posts a work request to the send queue of a queue pair.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_post_send(
+        IN              const   ib_qp_handle_t                          h_qp,
+        IN                              ib_send_wr_t* const                     p_send_wr,
+                OUT                     ib_send_wr_t                            **pp_send_failure OPTIONAL );
+
+

PARAMETERS

+
       h_qp
+               [in] The queue pair to which this work request is being submitted.
+
+       p_send_wr
+               [in] A reference to the head of the work request list.
+
+       pp_send_failure
+               [out] If the post send operation failed, this references the work
+               request in the p_send_wr list where the first failure occurred.
+               This parameter may be NULL if only a single work request is being
+               posted to the QP.
+
+ RETURN VALUES
+       IB_SUCCESS
+               All work requests were successfully posted.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the send work request list was not provided.
+
+       IB_INSUFFICIENT_RESOURCES
+               The number of posted work requests exceed the current depth available
+               on the send queue.
+
+       IB_INVALID_WR_TYPE
+               The work request type was invalid.
+
+       IB_INVALID_QP_STATE
+               The current queue pair state does not allow posting sends.
+
+       IB_INVALID_MAX_SGE
+               The number of work request scatter gather elements exceed the queue
+               pair configuration.
+
+       IB_UNSUPPORTED
+               The requested operation is not supported by the channel adapter.
+
+

NOTES

+
       This routine posts a work request to the send queue of a queue pair.
+       The type of work to perform is defined by the p_send_wr parameter.
+
+

SEE ALSO

+
       ib_send_wr_t
+
+
+
+ +

[Functions] +Access Layer/ib_put_mad

+ +

[top][index]

+

NAME

+
       ib_put_mad
+
+

DESCRIPTION

+
       Returns a list of MAD elements to the pool.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_put_mad(
+        IN              const   ib_mad_element_t*                       p_mad_element_list );
+
+

PARAMETERS

+
       p_mad_element_list
+               [in] A pointer to a list of MAD elements.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The list of MAD elements was successfully returned to the MAD pool.
+
+       IB_INVALID_PARAMETER
+               A reference to the MAD element list was not provided.
+
+

NOTES

+
       This function returns a list of MAD elements to the pool.
+
+

SEE ALSO

+
       ib_get_mad, ib_mad_element_t
+
+
+
+ +

[Functions] +Access Layer/ib_query

+ +

[top][index]

+

NAME

+
       ib_query
+
+

DESCRIPTION

+
       Routine used to request an access layer provided query of the subnet
+       administrator.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_query(
+        IN              const   ib_al_handle_t                          h_al,
+        IN              const   ib_query_req_t* const           p_query_req,
+                OUT                     ib_query_handle_t* const        ph_query OPTIONAL );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an open instance of the access layer.
+
+       p_query_req
+               [in] Specifies the type of query that the access layer should perform,
+               along with information needed to process the completed query.
+
+       ph_query
+               [out] Pointer to a query handle that can be used to cancel the query.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The subnet administrator query was initiated.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the query request was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to perform the operation.
+
+       IB_INVALID_GUID
+               No port was found for the port_guid specified in the request.
+
+       IB_ERROR
+               An invalid query_type was specified in the request.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to perform the operation.
+
+

NOTES

+
       This routine directs the access layer to initiate a query to the subnet
+       administrator for desired information.  The access layer will issue the
+       query, collect the results, and report them to the client through a user-
+       specified callback.  The access layer is responsible for retrying the
+       operation as directed by the client.
+
+

SEE ALSO

+
       ib_cancel_query, ib_query_req_t
+
+
+
+ +

[Functions] +Access Layer/ib_query_av

+ +

[top][index]

+

NAME

+
       ib_query_av
+
+

DESCRIPTION

+
       Returns the attributes of an address vector.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_query_av(
+        IN              const   ib_av_handle_t                          h_av,
+                OUT                     ib_av_attr_t* const                     p_av_attr,
+                OUT                     ib_pd_handle_t* const           ph_pd );
+
+

PARAMETERS

+
       h_av
+               [in] A handle to an existing address vector.
+
+       p_av_attr
+               [out] Upon successful completion, the structure referenced by this
+               parameter contains the attributes of the specified address vector.
+
+       ph_pd
+               [out] Upon successful completion, this references a handle to the
+               protection domain associated with the address vector.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The attributes were returned successfully.
+
+       IB_INVALID_AV_HANDLE
+               The address vector handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the address vector attributes structure or protection
+               domain handle was not provided.
+
+

SEE ALSO

+
       ib_create_av, ib_modify_av, ib_destroy_av, ib_av_attr_t
+
+
+
+ +

[Functions] +Access Layer/ib_query_ca

+ +

[top][index]

+

NAME

+
       ib_query_ca
+
+

DESCRIPTION

+
       Queries the attributes of an opened channel adapter.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_query_ca(
+        IN              const   ib_ca_handle_t                          h_ca,
+                OUT                     ib_ca_attr_t* const                     p_ca_attr OPTIONAL,
+        IN      OUT                     uint32_t* const                         p_size );
+
+

PARAMETERS

+
       h_ca
+               [in] The handle to an open channel adapter.
+
+       p_ca_attr
+               [out] A reference to a buffer where the channel adapter attributes,
+               including port attribute information will be copied.  If this parameter
+               is NULL, then the required buffer size needed to return all of the CA
+               attribute information is returned through the p_size parameter.  The
+               ib_ca_attr_t structure for the specified channel adapter is stored
+               at the top of the buffer.
+
+       p_size
+               [in/out] On input, this references the size of the data buffer
+               referenced by the p_ca_attr parameter.
+
+               On output, the number of bytes used or needed to copy all CA
+               attribute information.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The attributes were returned successfully.
+
+       IB_INVALID_CA_HANDLE
+               The channel adapter handle was invalid.
+
+       IB_INSUFFICIENT_MEMORY
+               The size of the p_ca_attr buffer, specified through p_size, is
+               insufficient to store all of the CA attribute information.
+
+       IB_INVALID_PARAMETER
+               A reference to the size was not provided.
+
+

NOTES

+
       This routine returns information about the specified channel adapter,
+       including port attributes.  The amount of information returned through
+       this call is variable sized.  Users may obtain the size of the data
+       buffer required to obtain the CA attributes by calling this function
+       with p_ca_attr set to NULL.  The access layer will then return the
+       necessary size in the variable referenced by the p_size parameter.
+
+

SEE ALSO

+
       ib_open_ca, ib_query_ca_by_guid, ib_modify_ca, ib_close_ca, ib_ca_attr_t
+
+
+
+ +

[Functions] +Access Layer/ib_query_ca_by_guid

+ +

[top][index]

+

NAME

+
       ib_query_ca_by_guid
+
+

DESCRIPTION

+
       Queries the attributes of an opened channel adapter.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_query_ca_by_guid(
+        IN              const   ib_al_handle_t                          h_al,
+        IN              const   ib_net64_t                                      ca_guid,
+                OUT                     ib_ca_attr_t* const                     p_ca_attr OPTIONAL,
+        IN      OUT                     uint32_t* const                         p_size );
+
+

PARAMETERS

+
       h_al
+               [in] The handle to an open instance of AL.
+
+       ca_guid
+               [in] The GUID of the channel adapter to query.
+
+       p_ca_attr
+               [out] A reference to a buffer where the channel adapter attributes,
+               including port attribute information will be copied.  If this parameter
+               is NULL, then the required buffer size needed to return all of the CA
+               attribute information is returned through the p_size parameter.  The
+               ib_ca_attr_t structure for the specified channel adapter is stored
+               at the top of the buffer.
+
+       p_size
+               [in/out] On input, this references the size of the data buffer
+               referenced by the p_ca_attr parameter.
+
+               On output, the number of bytes used or needed to copy all CA
+               attribute information.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The attributes were returned successfully.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_GUID
+               No channel adapter in the system was found for the specified ca_guid.
+
+       IB_INSUFFICIENT_MEMORY
+               The size of the p_ca_attr buffer, specified through p_size, is
+               insufficient to store all of the CA attribute information.
+
+       IB_INVALID_PARAMETER
+               A reference to the size was not provided.
+
+

NOTES

+
       This routine returns information about the specified channel adapter,
+       including port attributes.  The amount of information returned through
+       this call is variable sized.  Users may obtain the size of the data
+       buffer required to obtain the CA attributes by calling this function
+       with p_ca_attr set to NULL.  The access layer will then return the
+       necessary size in the variable referenced by the p_size parameter.
+
+

SEE ALSO

+
       ib_open_ca, ib_query_ca, ib_modify_ca, ib_close_ca, ib_ca_attr_t
+
+
+
+ +

[Functions] +Access Layer/ib_query_cq

+ +

[top][index]

+

NAME

+
       ib_query_cq
+
+

DESCRIPTION

+
       Returns information about the specified completion queue.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_query_cq(
+        IN              const   ib_cq_handle_t          h_cq,
+        OUT             uint32_t* const                         p_size );
+
+

PARAMETERS

+
       h_cq
+               [in] A handle to an existing completion queue.
+
+       p_size
+               [out] Upon successful completion of this call, contains the actual
+               size of the completion queue.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The completion queue was successfully queried.
+
+       IB_INVALID_CQ_HANDLE
+               The completion queue handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the completion queue size was not provided.
+
+

SEE ALSO

+
       ib_create_cq
+
+
+
+ +

[Functions] +Access Layer/ib_query_mr

+ +

[top][index]

+

NAME

+
       ib_query_mr
+
+

DESCRIPTION

+
       Query the current attributes of a memory region.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_query_mr(
+        IN              const   ib_mr_handle_t                          h_mr,
+                OUT                     ib_mr_attr_t* const                     p_mr_attr );
+
+

PARAMETERS

+
       h_mr
+               [in] A handle to a registered memory region.
+
+       p_mr_attr
+               [out] A reference to a structure where the registered memory attributes
+               will be copied.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The memory region attributes were returned successfully.
+
+       IB_INVALID_MR_HANDLE
+               The memory region handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the memory region attributes was not provided.
+
+

NOTES

+
       This routine returns information about the specified registered memory
+       region.
+
+

SEE ALSO

+
       ib_dereg_mr, ib_reg_mem, ib_reg_shared, ib_mr_attr_t
+
+
+
+ +

[Functions] +Access Layer/ib_query_mw

+ +

[top][index]

+

NAME

+
       ib_query_mw
+
+

DESCRIPTION

+
       Query the current attributes of a memory window.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_query_mw(
+        IN              const   ib_mw_handle_t                          h_mw,
+                OUT                     ib_pd_handle_t* const           ph_pd,
+                OUT                     net32_t* const                          p_rkey );
+
+

PARAMETERS

+
       h_mw
+               [in] A handle to an existing memory window.
+
+       ph_pd
+               [out] Upon successful completion of this call, this will reference
+               the protection domain associated with this memory window.
+
+       p_rkey
+               [out] Upon successful completion of this call, this will reference
+               the current rkey associated with this memory window.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The memory window attributes were returned successfully.
+
+       IB_INVALID_MW_HANDLE
+               The memory window handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the protection domain handle or rkey was not provided.
+
+

NOTES

+
       This routine returns information about the specified memory window.
+
+

SEE ALSO

+
       ib_create_mw
+
+
+
+ +

[Functions] +Access Layer/ib_query_qp

+ +

[top][index]

+

NAME

+
       ib_query_qp
+
+

DESCRIPTION

+
       Query the current attributes of the queue pair.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_query_qp(
+        IN              const   ib_qp_handle_t                          h_qp,
+                OUT                     ib_qp_attr_t* const                     p_qp_attr );
+
+

PARAMETERS

+
       h_qp
+               [in] A handle to an existing queue pair.
+
+       p_qp_attr
+               [out] Upon successful completion of this call, the structure
+               referenced by this parameter contains the attributes of the specified
+               quere pair.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The queue pair attributes were returned successfully.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the queue pair attributes structure was not provided.
+
+

NOTES

+
       This routine returns information about the specified queue pair.
+
+

SEE ALSO

+
       ib_create_qp, ib_modify_qp, ib_qp_attr_t
+
+
+
+ +

[Structures] +Access Layer/ib_query_rec_t

+ +

[top][index]

+

NAME

+
       ib_query_rec_t
+
+

DESCRIPTION

+
       Contains the results of a subnet administration query.
+
+

SYNOPSIS

+
typedef struct _ib_query_rec
+{
+        const void* __ptr64                     query_context;
+        ib_api_status_t                         status;
+
+        ib_query_type_t                         query_type;
+        uint32_t                                        result_cnt;
+        ib_mad_element_t* __ptr64       p_result_mad;
+
+}       ib_query_rec_t;
+
+

FIELDS

+
       query_context
+               User-defined context information associated with the query through
+               the ib_reg_query call.
+
+       status
+               Indicates the success of the query operation.
+
+       query_type
+               Indicates the type of query for which the results are being returned.
+               This matches the query_type specified through the ib_reg_query call.
+
+       result_cnt
+               The number of result structures that were returned by the query.
+
+       p_result_mad
+               For queries returning IB_SUCCESS or IB_REMOTE_ERROR, this references
+               the MAD returned by the subnet administrator containing the list
+               of results or the returned error code.
+
+

NOTES

+
       A query result structure is returned to a client through their
+       ib_pfn_query_cb_t routine to notify them of the results of a subnet
+       administration query.  If the query was successful or received an error
+       from the subnet administrator, p_result_mad will reference a MAD element
+       containing the results.  The MAD referenced by p_result_mad is owned by
+       the user and remains available even after their callback returns.  Users
+       must call ib_put_mad() to return the MAD element back to the access layer
+       when they are done accessing the results.
+
+       To retrieve individual result structures from the p_result_mad, users
+       may call ib_get_query_result().
+
+

SEE ALSO

+
       ib_query, ib_pfn_query_cb_t, ib_api_status_t, ib_put_mad, ib_mad_element_t
+       ib_query_status_t, ib_query_type_t, ib_get_query_result
+
+
+
+ +

[Structures] +Access Layer/ib_query_req_t

+ +

[top][index]

+

NAME

+
       ib_query_req_t
+
+

DESCRIPTION

+
       Information used to request an access layer provided query of the subnet
+       administrator.
+
+

SYNOPSIS

+
typedef struct _ib_query_req
+{
+        ib_query_type_t                         query_type;
+        const void* __ptr64                     p_query_input;
+        ib_net64_t                                      port_guid;
+
+        uint32_t                                        timeout_ms;
+        uint32_t                                        retry_cnt;
+        ib_al_flags_t                           flags;
+
+        const void* __ptr64                     query_context;
+        ib_pfn_query_cb_t                       pfn_query_cb;
+
+}       ib_query_req_t;
+
+

FIELDS

+
       query_type
+               Indicates the type of query that the access layer should perform.
+
+       p_query_input
+               A pointer to the input for the query.  The data referenced by this
+               structure is dependent on the type of query being requested and is
+               determined by the specified query_type.
+
+       port_guid
+               Directs the query to use the specified port.  The request will
+               contact the management entity reachable through the given port.
+
+       timeout_ms
+               Specifies the number of milliseconds to wait for a response for
+               this query until retrying or timing out the request.
+
+       retry_cnt
+               Specifies the number of times that the query will be retried before
+               failing the request.
+
+       flags
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
+               process the called routine synchronously.
+
+       query_context
+               User-defined context information associated with this query.  The
+               context data is returned to the user as a part of their query
+               callback.
+
+       pfn_query_cb
+               A user-defined callback that is invoked upon completion of the query.
+
+

NOTES

+
       This structure is used when requesting an access layer provided query
+       of the subnet administrator.  Clients specify the type of query through
+       the query_type field.  Based on the type of query, the p_query_input
+       field is set to reference the appropriate data structure.
+
+       The information referenced by the p_query_input field is one of the
+       following:
+
+               -- a NULL terminated service name
+               -- a service id
+               -- a single GUID
+               -- a pair of GUIDs specified through an ib_guid_pair_t structure
+               -- a pair of GIDs specified through an ib_gid_pair_t structure
+
+

SEE ALSO

+
       ib_query_type_t, ib_pfn_query_cb_t, ib_guid_pair_t,
+       ib_gid_pair_t
+
+
+
+ +

[Definitions] +Access Layer/ib_query_type_t

+ +

[top][index]

+

NAME

+
       ib_query_type_t
+
+

DESCRIPTION

+
       Abstracted queries supported by the access layer.
+
+

SYNOPSIS

+
typedef enum _ib_query_type
+{
+        IB_QUERY_USER_DEFINED,
+
+        IB_QUERY_ALL_SVC_RECS,
+        IB_QUERY_SVC_REC_BY_NAME,
+        IB_QUERY_SVC_REC_BY_ID,
+
+        IB_QUERY_CLASS_PORT_INFO,
+
+        IB_QUERY_NODE_REC_BY_NODE_GUID,
+        IB_QUERY_PORT_REC_BY_LID,
+
+        IB_QUERY_VLARB_BY_LID_PORT_BLOCK,
+        IB_QUERY_SLVL_BY_LID_AND_PORTS,
+
+        IB_QUERY_PATH_REC_BY_PORT_GUIDS,
+        IB_QUERY_PATH_REC_BY_GIDS,
+        IB_QUERY_PATH_REC_BY_LIDS,
+
+}       ib_query_type_t;
+
+

VALUES

+
       IB_QUERY_USER_DEFINED
+               Query the SA based on user-defined input.  Queries of this type
+               should reference an ib_user_query_t structure as input into the
+               query.
+
+       IB_QUERY_SVC_REC_BY_NAME
+               Query for service records based on the service name.  Queries of
+               this type should reference an ib_svc_name_t structure as input
+               into the query.
+
+       IB_QUERY_SVC_REC_BY_ID
+               Query for service records based on the service ID.  Queries of
+               this type should reference an ib_net64_t value that indicates the
+               ID of the service being requested.
+
+       IB_QUERY_NODE_REC_BY_NODE_GUID
+               Query for node information based on the node's GUID.  Queries of
+               this type should reference an ib_net64_t value that indicates the
+               GUID of the node being requested.
+
+       IB_QUERY_PORT_REC_BY_LID
+               Query for port information based on the port's base LID.  Queries of
+               this type should reference an ib_net16_t value that indicates the
+               base LID of the port being requested.
+
+       IB_QUERY_PATH_REC_BY_PORT_GUIDS
+               Query for path records between the specified pair of port GUIDs.
+               Queries of this type should reference an ib_guid_pair_t structure
+               that indicates the GUIDs of the path being requested.
+
+       IB_QUERY_PATH_REC_BY_GIDS
+               Query for path records between the specified pair of port GIDs.
+               Queries of this type should reference an ib_gid_pair_t structure
+               that indicates the GIDs of the path being requested.
+
+       IB_QUERY_PATH_REC_BY_LIDS
+               Query for path records between the specified pair of port LIDs.
+               Queries of this type should reference an ib_lid_pair_t structure
+               that indicates the LIDs of the path being requested.
+
+

NOTES

+
       This enum is used to define abstracted queries provided by the access
+       layer.  Users may issue queries not listed here by sending MADs directly
+       to the subnet administrator or a class manager.  These queries are
+       intended to represent those most often used by clients.
+
+

SEE ALSO

+
       ib_query, ib_query_req_t, ib_user_query_t, ib_gid_pair_t, ib_lid_pair_t
+       ib_guid_pair_t
+
+
+
+ +

[Functions] +Access Layer/ib_rearm_cq

+ +

[top][index]

+

NAME

+
       ib_rearm_cq
+
+

DESCRIPTION

+
       This indicates that the completion queue should notify the client when
+       the next completion is added.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_rearm_cq(
+        IN              const   ib_cq_handle_t                          h_cq,
+        IN              const   boolean_t                                       solicited );
+
+

PARAMETERS

+
       h_cq
+               [in] Handle to the completion queue to rearm.
+
+       solicited
+               [in] A flag indicating whether the request is to generate a
+               notification on the next entry, if set to FALSE, or on the next
+               solicited entry being added to the completion queue, if set to TRUE.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The completion queue rearm request was registered successfully.
+
+       IB_INVALID_CQ_HANDLE
+               The completion queue handle was invalid.
+
+

NOTES

+
       This routine instructs the channel interface to invoke the completion
+       handler when the next completion queue entry is added to this CQ.
+
+

SEE ALSO

+
       ib_create_cq, ib_peek_cq, ib_poll_cq, ib_rearm_n_cq
+
+
+
+ +

[Functions] +Access Layer/ib_rearm_n_cq

+ +

[top][index]

+

NAME

+
       ib_rearm_n_cq
+
+

DESCRIPTION

+
       This indicates that the completion queue should notify the client when
+       the next N completions have been added to this CQ.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_rearm_n_cq(
+        IN              const   ib_cq_handle_t                          h_cq,
+        IN              const   uint32_t                                        n_cqes );
+
+

PARAMETERS

+
       h_cq
+               [in] Handle to the completion queue to rearm.
+
+       n_cqes
+               [in] The number of completion queue entries to be added to the
+               completion queue before notifying the client.  This value must
+               greater than or equal to one and less than or equal to the size
+               of the completion queue.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The completion queue rearm request was registered successfully.
+
+       IB_INVALID_CQ_HANDLE
+               The completion queue handle was invalid.
+
+       IB_INVALID_PARAMETER
+               The requested number of completion queue entries was invalid.
+
+       IB_UNSUPPORTED
+               This operation is not supported by the channel adapter.
+
+

NOTES

+
       This routine instructs the channel interface to invoke the completion
+       handler when the next N completions have been added to this CQ regardless
+       of the completion type (solicited or unsolicited).  Any CQ entries that
+       existed before the rearm is enabled will not result in a call to the
+       handler.  Support for this operation is optional by a channel adapter
+       vendor.
+
+

SEE ALSO

+
       ib_create_cq, ib_peek_cq, ib_poll_cq, ib_rearm_cq
+
+
+
+ +

[Functions] +Access Layer/ib_reg_ioc

+ +

[top][index]

+

NAME

+
       ib_reg_ioc
+
+

DESCRIPTION

+
       Registers an I/O controller with the local device manager, which will
+       export the controller to the fabric.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_reg_ioc(
+        IN              const   ib_ioc_handle_t                         h_ioc );
+
+

PARAMETERS

+
       h_ioc
+               [in] A handle to the controller being registered.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The I/O controller was successfully registered.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to register the I/O controller.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the I/O
+               unit to register the I/O controller.
+
+       IB_INVALID_HANDLE
+               The I/O controller handle was invalid.
+
+

NOTES

+
       This routine registers an I/O controller with the local device manager.
+       The device manager exports the controller to the fabric as part of an
+       I/O unit.  Typically, clients will call ib_add_svc_entry to add services
+       to the controller before registering it with the device manager.
+
+

SEE ALSO

+
       ib_create_ioc, ib_destroy_ioc, ib_add_svc_entry
+
+
+
+ +

[Functions] +Access Layer/ib_reg_mad_pool

+ +

[top][index]

+

NAME

+
       ib_reg_mad_pool
+
+

DESCRIPTION

+
       Registers a MAD pool for use with a protection domain.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_reg_mad_pool(
+        IN              const   ib_pool_handle_t                        h_pool,
+        IN              const   ib_pd_handle_t                          h_pd,
+                OUT                     ib_pool_key_t* const            p_pool_key );
+
+

PARAMETERS

+
       h_pool
+               [in] A handle to a MAD pool.
+
+       h_pd
+               [in] A handle to a protection domain.
+
+       p_pool_key
+               [out] A key associated with registering the MAD pool with the
+               protection domain.  This key is returned to the user and is used
+               when retrieving MADs from the pool.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The MAD pool was successfully registered with the protection domain.
+
+       IB_INVALID_HANDLE
+               The MAD pool handle was invalid.
+
+       IB_INVALID_PD_HANDLE
+               The protection domain handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the pool key was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to register the MAD pool.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to register the MAD pool.
+
+

NOTES

+
       This function registers a MAD pool with a protection domain.  After
+       successful completion of this call, the MAD elements of the associated
+       pool are usable on any queue pairs associated with the given protection
+       domain.
+
+

SEE ALSO

+
       ib_create_mad_pool, ib_destroy_mad_pool, ib_dereg_mad_pool, ib_get_mad
+
+
+
+ +

[Functions] +Access Layer/ib_reg_mad_svc

+ +

[top][index]

+

NAME

+
       ib_reg_mad_svc
+
+

DESCRIPTION

+
       Requests management datagram support for a specified class with a
+       queue pair.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_reg_mad_svc(
+        IN              const   ib_qp_handle_t                          h_qp,
+        IN              const   ib_mad_svc_t* const                     p_mad_svc,
+                OUT                     ib_mad_svc_handle_t* const      ph_mad_svc );
+
+

PARAMETERS

+
       h_qp
+               [in] A handle to queue pair.  The queue pair must have been created
+               as one of the following types: IB_QPT_QP0, IB_QPT_QP0_ALIAS,
+               IB_QPT_QP1, IB_QPT_QP1_ALIAS, or IB_QPT_MAD.
+
+       p_mad_svc
+               [in] A reference to the management class and methods supported by
+               this queue pair.
+
+       ph_mad_svc
+               [out] On successful completion of this call, this references a
+               handle to the newly created MAD service.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The queue pair was registered successfully.
+
+       IB_INVALID_QP_HANDLE
+               The queue pair handle was invalid.
+
+       IB_INVALID_PARAMETER
+               The queue pair handle was not created with the proper queue pair
+               type or a reference to the MAD service information or handle was
+               not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to register the queue pair.
+
+

NOTES

+
       This routine registers a queue pair as using a particular management
+       class.  This indicates that the access layer should perform additional
+       processing on MADs sent and received by this queue pair.  Queue pairs
+       registered for MAD support receive access layer SAR and retransmissions
+       services.  A queue pair may be registered for multiple management classes.
+
+

SEE ALSO

+
       ib_create_qp, ib_mad_svc_t
+
+
+
+ +

[Functions] +Access Layer/ib_reg_mem

+ +

[top][index]

+

NAME

+
       ib_reg_mem
+
+

DESCRIPTION

+
       Registers a virtual memory region with a channel adapter.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_reg_mem(
+        IN              const   ib_pd_handle_t                          h_pd,
+        IN              const   ib_mr_create_t* const           p_mr_create,
+                OUT                     net32_t* const                          p_lkey,
+                OUT                     net32_t* const                          p_rkey,
+                OUT                     ib_mr_handle_t* const           ph_mr );
+
+

PARAMETERS

+
       h_pd
+               [in] A handle to an existing protection domain that the memory
+               should be registered with.
+
+       p_mr_create
+               [in] Information describing the memory region to register.
+
+       p_lkey
+               [out] The local access key associated with this registered memory
+               region.
+
+       p_rkey
+               [out] A key that may be used by a remote end-point when performing
+               RDMA or atomic operations to this registered memory region.
+
+       ph_mr
+               [out] Upon successful completion of this call, this references a
+               handle to the registered memory region.  This handle is used when
+               performing data transfers and to deregister the memory.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The memory region was successfully registered.
+
+       IB_INVALID_PD_HANDLE
+               The protection domain to associate with the memory region was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the memory region information, lkey, rkey, or handle
+               was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to register the memory region.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to register the memory region.
+
+       IB_UNSUPPORTED
+               The requested access rights are not supported by the channel adapter.
+
+       IB_INVALID_PERMISSION
+               The requested access rights are invalid.
+
+

NOTES

+
       This routine registers a virtual memory region with a channel adapter.
+       Memory must be registered before being used in a data transfer operation.
+
+

SEE ALSO

+
       ib_dereg_mr, ib_reg_phys, ib_reg_shared, ib_mr_create_t
+
+
+
+ +

[Functions] +Access Layer/ib_reg_phys

+ +

[top][index]

+

NAME

+
       ib_reg_phys
+
+

DESCRIPTION

+
       Registers a physical memory region with a channel adapter.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_reg_phys(
+        IN              const   ib_pd_handle_t                          h_pd,
+        IN              const   ib_phys_create_t* const         p_phys_create,
+        IN      OUT                     uint64_t* const                         p_vaddr,
+                OUT                     net32_t* const                          p_lkey,
+                OUT                     net32_t* const                          p_rkey,
+                OUT                     ib_mr_handle_t* const           ph_mr );
+
+

PARAMETERS

+
       h_pd
+               [in] A handle to an existing protection domain that the memory
+               should be registered with.
+
+       p_phys_create
+               [in] Information describing the memory region to register.
+
+       p_vaddr
+               [in/out] On input, references the requested virtual address for the
+               start of the physical region.  On output, references the actual
+               virtual address assigned to the registered region.
+
+       p_lkey
+               [out] The local access key associated with this registered memory
+               region.
+
+       p_rkey
+               [out] A key that may be used by a remote end-point when performing
+               RDMA or atomic operations to this registered memory region.
+
+       ph_mr
+               [out] Upon successful completion of this call, this references a
+               handle to the registered memory region.  This handle is used when
+               performing data transfers and to deregister the memory.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The physical memory region was successfully registered.
+
+       IB_INVALID_PD_HANDLE
+               The protection domain to associate with the physical memory region
+               was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the physical memory region information, virtual address,
+               lkey, rkey, or handle was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to register the physical memory region.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to register the physical memory region.
+
+       IB_UNSUPPORTED
+               The requested access rights are not supported by the channel adapter.
+
+       IB_INVALID_PERMISSION
+               The requested access rights are invalid.
+
+

NOTES

+
       This routine registers an array of physical pages as a single virtually
+       contiguous region with a channel adapter.  Memory must be registered
+       before being used in a data transfer operation.
+
+

SEE ALSO

+
       ib_dereg_mr, ib_reg_mem, ib_reg_shared, ib_phys_create_t
+
+
+
+ +

[Functions] +Access Layer/ib_reg_pnp

+ +

[top][index]

+

NAME

+
       ib_reg_pnp
+
+

DESCRIPTION

+
       Routine used to register for notification of local and I/O controller
+       assignment events.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_reg_pnp(
+        IN              const   ib_al_handle_t                          h_al,
+        IN              const   ib_pnp_req_t* const                     p_pnp_req,
+                OUT                     ib_pnp_handle_t* const          ph_pnp );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an open instance of the access layer.
+
+       p_pnp_req
+               [in] Specifies the type of events that the user wishes to be notified
+               of, along with information needed to process the completed query.
+
+       ph_pnp
+               [out] Upon successful completion of this call, this references a handle
+               to the PnP notification request.  This handle may be used to cancel the
+               notification registration.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The PnP registration was successful.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the PnP request information or handle was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to register for PnP notification.
+
+

NOTES

+
       This routine registers the calling client with the access layer for
+       notification of locally occurring events, or the assignment of I/O
+       controllers to a local device.  Once registered, a client will receive
+       notification, via a callback, that a given event has occurred on a
+       local device.  Clients may restrict the types of events and devices
+       that are reported.  The p_pnp_req parameter is used to indicate which
+       device events to report to the user.
+
+       Upon invoking this routine, the client may receive a callback through
+       the ib_pfn_pnp_cb_t routine to notify them of the current system state.
+       For example, if a client registers for notification of port up events,
+       then the access layer will notify the client of all available ports when
+       this routine is first invoked.
+
+

SEE ALSO

+
       ib_dereg_pnp, ib_pnp_req_t, ib_pnp_rec_t, ib_pfn_pnp_cb_t
+
+
+
+ +

[Functions] +Access Layer/ib_reg_shared

+ +

[top][index]

+

NAME

+
       ib_reg_shared
+
+

DESCRIPTION

+
       Registers a memory region that has the same physical pages as an
+       existing registered memory region.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_reg_shared(
+        IN              const   ib_mr_handle_t                          h_mr,
+        IN              const   ib_pd_handle_t                          h_pd,
+        IN              const   ib_access_t                                     access_ctrl,
+        IN      OUT                     uint64_t* const                         p_vaddr,
+                OUT                     net32_t* const                          p_lkey,
+                OUT                     net32_t* const                          p_rkey,
+                OUT                     ib_mr_handle_t* const           ph_mr );
+
+

PARAMETERS

+
       h_mr
+               [in] A handle to an existing registered memory region that this
+               registration should share physical pages with.
+
+       h_pd
+               [in] Handle to the PD on which memory is being registered
+
+       access_ctrl
+               [in] Access rights of the registered region.
+
+       p_vaddr
+               [in/out] On input, this specifies the requested virtual address for the
+               start of the physical region.  On output, this references the actual
+               virtual address assigned to the registered region.  This is always a
+               64-bit quantity to support registering more than 4GB of memory on
+               32-bit systems with PAE.
+
+       p_lkey
+               [out] The local access key associated with this registered memory
+               region.
+
+       p_rkey
+               [out] A key that may be used by a remote end-point when performing RDMA
+               or atomic operations to this registered memory region.
+
+       ph_mr
+               [out] Upon successful completion of this call, this references a handle
+               to the registered memory region.  This handle is used when performing
+               data transfers and to deregister the memory.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The shared memory region was successfully registered.
+
+       IB_INVALID_MR_HANDLE
+               The memory region handle was invalid.
+
+       IB_INVALID_PD_HANDLE
+               The protection domain handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the virtual address, lkey, rkey, or handle was not
+               provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to register the shared memory region.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to register the shared memory region.
+
+       IB_UNSUPPORTED
+               The requested access rights are not supported by the channel adapter.
+
+       IB_INVALID_PERMISSION
+               The requested access rights are invalid.
+
+

NOTES

+
       This routine registers a memory region that shares the same set of
+       physical pages associated with an existing registered memory region.
+
+

SEE ALSO

+
       ib_dereg_mr, ib_reg_mem, ib_reg_phys, ib_reg_shared, ib_mr_create_t
+
+
+
+ +

[Functions] +Access Layer/ib_reg_shmid

+ +

[top][index]

+

NAME

+
       ib_reg_shmid
+
+

DESCRIPTION

+
       Registers a memory region to be shared across multiple processes.
+       The memory is referenced by a shared memory identifier.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_reg_shmid(
+        IN              const   ib_pd_handle_t                          h_pd,
+        IN              const   ib_shmid_t                                      shmid,
+        IN              const   ib_mr_create_t* const           p_mr_create,
+                OUT                     uint64_t* const                         p_vaddr,
+                OUT                     net32_t* const                          p_lkey,
+                OUT                     net32_t* const                          p_rkey,
+                OUT                     ib_mr_handle_t* const           ph_mr );
+
+

PARAMETERS

+
       h_pd
+               [in] A handle to an existing protection domain that the memory
+               should be registered with.
+
+       shmid
+               [in] An identifier for the shared memory region.
+
+       p_mr_create
+               [in] Information describing the attributes of the memory region to
+               register.
+
+       p_vaddr,
+               [out] The HCA assigned, HCA relative virtual address for the
+               memory region.
+
+       p_lkey
+               [out] The local access key associated with this registered memory
+               region.
+
+       p_rkey
+               [out] A key that may be used by a remote end-point when performing RDMA
+               or atomic operations to this registered memory region.
+
+       ph_mr
+               [out] Upon successful completion of this call, this references a handle
+               to the registered memory region.  This handle is used when performing
+               data transfers and to deregister the memory.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The shared memory region was successfully registered.
+
+       IB_INVALID_PD_HANDLE
+               The protection domain handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the memory region information, lkey, rkey, or handle
+               was not provided.
+
+       IB_INVALID_SETTING
+               The length and page mapping for the memory region do not match those
+               of the region identified by the provided SHMID.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to register the shared memory region.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to register the shared memory region.
+
+       IB_UNSUPPORTED
+               The requested access rights are not supported by the channel adapter.
+
+       IB_INVALID_PERMISSION
+               The requested access rights are invalid.
+
+

NOTES

+
       This routine registers a memory region that is shared between processes.
+       The region being registered is identified through a shared memory
+       identifier.  The registered region shares hardware resources as much
+       as possible.
+
+

SEE ALSO

+
       ib_dereg_mr, ib_reg_mem, ib_reg_shared, ib_mr_create_t
+
+
+
+ +

[Functions] +Access Layer/ib_reg_svc

+ +

[top][index]

+

NAME

+
       ib_reg_svc
+
+

DESCRIPTION

+
       Routine used to register for a service with the subnet administrator.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_reg_svc(
+        IN              const   ib_al_handle_t                          h_al,
+        IN              const   ib_reg_svc_req_t* const         p_reg_svc_req,
+                OUT                     ib_reg_svc_handle_t* const      ph_reg_svc );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an open instance of the access layer.
+
+       p_reg_svc_req
+               [in] Describes the service to register with the subnet administrator.
+
+       ph_reg_svc
+               [out] Pointer to a service registration handle, used to deregister
+               the service.  Set upon successful completion of the function.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The service registration was initiated.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the service registration request was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to perform the operation.
+
+       IB_NOT_FOUND
+               No channel adapters in the system contain the GID specified in the
+               service record.
+
+       IB_INVALID_GID
+               No port was found matching the GID specified in the service record.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to perform the operation.
+
+

NOTES

+
       This routine registers a service with the subnet administrator.  Registered
+       services are reported by the subnet administrator to clients querying the
+       subnet administrator for service information.
+
+       Once registered, a client will receive notification, via a callback,
+       that a service has been successfully registered.
+
+

SEE ALSO

+
       ib_dereg_svc, ib_reg_svc_req_t
+
+
+
+ +

[Structures] +Access Layer/ib_reg_svc_rec_t

+ +

[top][index]

+

NAME

+
       _ib_reg_svc_rec_t
+
+

DESCRIPTION

+
       Information returned as a result of registering a service with the subnet
+       administrator.  This includes name service registration.
+
+

SYNOPSIS

+
typedef struct _ib_reg_svc_rec
+{
+        const void* __ptr64                     svc_context;
+        ib_reg_svc_handle_t                     h_reg_svc;
+        ib_api_status_t                         req_status;
+        ib_net16_t                                      resp_status;
+        ib_service_record_t                     svc_rec;
+
+}       ib_reg_svc_rec_t;
+
+

FIELDS

+
       svc_context
+               User-defined context information associated with the registration
+               through the ib_reg_svc call.
+
+       req_status
+               Indicates the success of the registration operation.
+
+       resp_status
+               Indicates the status of the response from the SA
+
+       h_reg_svc
+               For successful queries, this references the first record of
+               information returned by the subnet administrator.  If multiple
+               records of information were returned, the ib_reg_svc_rec_t will
+               be chained together.
+
+       svc_rec
+               The service record returned by the SA for the registered service.
+
+

NOTES

+
       A query result structure is returned to a client through their
+       ib_pfn_query_cb_t routine to notify them of the results of a subnet
+       administration query.
+
+

SEE ALSO

+
       ib_reg_svc, ib_pfn_reg_svc_cb_t, ib_reg_svc_status_t
+
+
+
+ +

[Structures] +Access Layer/ib_reg_svc_req_t

+ +

[top][index]

+

NAME

+
       ib_reg_svc_req_t
+
+

DESCRIPTION

+
       Information used to request that a service be registered with the subnet
+       administrator.
+
+

SYNOPSIS

+
typedef struct _ib_reg_svc_req
+{
+        ib_service_record_t                     svc_rec;
+        ib_net64_t                                      port_guid;
+
+        uint32_t                                        timeout_ms;
+        uint32_t                                        retry_cnt;
+        ib_al_flags_t                           flags;
+
+        const void                                      *svc_context;
+        ib_net64_t                                      svc_data_mask;
+
+        ib_pfn_reg_svc_cb_t                     pfn_reg_svc_cb;
+
+}       ib_reg_svc_req_t;
+
+

FIELDS

+
       svc_rec
+               Service record that describes the service being registered.
+
+       port_guid
+               Directs the registration to use the specified port.  The request will
+               contact the management entity reachable through the given port.
+
+       timeout_ms
+               Specifies the number of milliseconds to wait for a response for
+               the registration until retrying or timing out the request.
+
+       retry_cnt
+               Specifies the number of times that the registration will be retried
+               before failing the request.
+
+       flags
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
+               process the called routine synchronously.
+
+       svc_context
+               User-defined context information associated with this registration
+               request.  This context is returned to the user through the function
+               specified by the pfn_reg_svc_cb field.
+
+       svc_data_mask
+               User-defined component mask indicating which parts of the private
+               data is populated. This is used as an extension to the svc_id
+               for data compare. Also used as a cheap way to communicate data
+               to all clients for this service.
+
+       pfn_reg_svc_cb
+               A user-defined callback that is invoked upon completion of the
+               registration request.
+
+

NOTES

+
       This structure is used to register a service with the subnet administrator.
+       The registration call operates asynchronously unless the flags field is
+       set to IB_FLAGS_SYNC.  If synchronous operation is indicated, the client
+       will receive a callback with the results of the registration attempt
+       before the ib_reg_svc call returns.  Synchronous operation results in
+       the calling thread blocking.
+
+

SEE ALSO

+
       ib_reg_svc, ib_svc_rec_t, ib_pfn_reg_svc_cb_t
+
+
+
+ +

[Structures] +Access Layer/ib_rej_pdata_t

+ +

[top][index]

+

NAME

+
       ib_rej_pdata_t
+
+

DESCRIPTION

+
       User data sent as part of a connection reject message.
+
+

SYNOPSIS

+
typedef union _ib_rej_pdata
+{
+        uint8_t                                         data[IB_REJ_PDATA_SIZE];
+
+}       ib_rej_pdata_t;
+
+

SEE ALSO

+
       ib_cm_data_sizes_t
+
+
+
+ +

[Functions] +Access Layer/ib_reject_ioc

+ +

[top][index]

+

NAME

+
       ib_reject_ioc
+
+

DESCRIPTION

+
       Rejects an I/O controller assignment to a host.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_reject_ioc(
+        IN              const   ib_al_handle_t                          h_al,
+        IN              const   ib_pnp_handle_t                         h_ioc_event );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an open instance of the access layer.
+
+       h_ioc_event
+               [in] A handle provided as part of the notification of an I/O controller
+               being assigned.  This handle is obtained through the ib_pnp_rec_t
+               structure given to a client through their ib_pfn_pnp_cb_t callback.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The I/O controller reject request was initiated.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_HANDLE
+               The I/O controller handle was invalid.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to perform the operation.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to perform the operation.
+
+

NOTES

+
       This routine rejects an I/O controller assigned by the configuration
+       manager to the local host.  The access layer sends a rejection notification
+       to the configuration manager and disable access to the controller from
+       the local host.  This routine must be called from a client's
+       ib_pfn_pnp_cb_t callback to reject a newly assigned I/O controller.
+
+

SEE ALSO

+
       ib_pfn_pnp_cb_t, ib_pnp_rec_t
+
+
+
+ +

[Functions] +Access Layer/ib_remove_svc_entry

+ +

[top][index]

+

NAME

+
       ib_remove_svc_entry
+
+

DESCRIPTION

+
       This removes a service entry from an I/O controller.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_remove_svc_entry(
+        IN              const   ib_svc_handle_t                         h_svc );
+
+

PARAMETERS

+
       h_svc
+               [in] A handle to an existing service entry.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The service entry was successfully removed.
+
+       IB_INVALID_HANDLE
+               The service entry handle was invalid.
+
+

NOTES

+
       This routine removes the specified service from its associated I/O
+       controller.  Once removed, the service information will no longer be
+       exported along with the controller.
+
+

SEE ALSO

+
       ib_add_svc_entry
+
+
+
+ +

[Structures] +Access Layer/ib_rep_pdata_t

+ +

[top][index]

+

NAME

+
       ib_rep_pdata_t
+
+

DESCRIPTION

+
       User data sent as part of a reply to a request for communication.
+
+

SYNOPSIS

+
typedef union _ib_rep_pdata
+{
+        uint8_t                                         data[IB_REP_PDATA_SIZE];
+
+}       ib_rep_pdata_t;
+
+

SEE ALSO

+
       ib_cm_data_sizes_t
+
+
+
+ +

[Structures] +Access Layer/ib_report_rec_t

+ +

[top][index]

+

NAME

+
       ib_report_rec_t
+
+

DESCRIPTION

+
       Reported event information returned to the user when a subscribed for
+       event occurs.
+
+

SYNOPSIS

+
typedef struct _ib_report_rec
+{
+        const void* __ptr64                             report_context;
+        ib_mad_notice_attr_t* __ptr64   p_notice;
+
+}       ib_report_rec_t;
+
+

FIELDS

+
       report_context
+               Client-defined context information specified when registering for
+               the report.
+
+       p_notice
+               Reported information that describes the event that has occurred.
+
+

NOTES

+
       Subscription for reported events is done through a class manager.  When
+       a class manager detects that such an event occurs, it will generate a
+       report to the subscribed client.  The reported information is referenced
+       through the p_notice field.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t
+
+
+
+ +

[Structures] +Access Layer/ib_req_pdata_t

+ +

[top][index]

+

NAME

+
       ib_req_pdata_t
+
+

DESCRIPTION

+
       User data sent as part of a request for communication.
+
+

SYNOPSIS

+
typedef union _ib_req_pdata
+{
+        uint8_t                                         data[IB_REQ_PDATA_SIZE];
+
+}       ib_req_pdata_t;
+
+

SEE ALSO

+
       ib_cm_data_sizes_t
+
+
+
+ +

[Functions] +Access Layer/ib_rereg_mem

+ +

[top][index]

+

NAME

+
       ib_rereg_mem
+
+

DESCRIPTION

+
       Modifies the attributes of an existing memory region.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_rereg_mem(
+        IN              const   ib_mr_handle_t                          h_mr,
+        IN              const   ib_mr_mod_t                                     mr_mod_mask,
+        IN              const   ib_mr_create_t* const           p_mr_create OPTIONAL,
+                OUT                     net32_t* const                          p_lkey,
+                OUT                     net32_t* const                          p_rkey,
+        IN              const   ib_pd_handle_t                          h_pd OPTIONAL );
+
+

PARAMETERS

+
       h_mr
+               [in] A handle to the registered memory region being modified.
+
+       mr_mod_mask
+               [in] A mask used to specify which attributes of the memory region are
+               being modified.
+
+       p_mr_create
+               [in] This references information needed to perform the modification on
+               the registered memory region.  This parameter may be NULL if only the
+               protection domain will be modified.
+
+       p_lkey
+               [out] The local access key associated with this registered memory
+               region.
+
+       p_rkey
+               [out] A key that may be used by a remote end-point when performing RDMA
+               or atomic operations to this registered memory region.
+
+       h_pd
+               [in] An optionally provided parameter used to modify the protection
+               domain of a registered region.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The memory region attributes were modified successfully.
+
+       IB_INVALID_MR_HANDLE
+               The memory region handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the lkey or rkey was not provided or the specified
+               modify mask is invalid.
+
+       IB_INVALID_SETTING
+               The specified memory region attributes are invalid.
+
+       IB_INVALID_PD_HANDLE
+               The protection domain handle was invalid.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to modify the memory region.
+
+       IB_UNSUPPORTED
+               The requested access rights are not supported by the channel adapter.
+
+       IB_INVALID_PERMISSION
+               The requested access rights are invalid.
+
+       IB_RESOURCE_BUSY
+               The memory region has windows bound to it.
+
+

NOTES

+
       This routine modifies the attributes of the specified memory region.
+       The memory being modified may have been registered using either virtual
+       or physical registration.  Conceptually, this routine is equivalent to
+       to calling ib_dereg_mr, followed by ib_reg_mem, but may be higher
+       performing.
+
+

SEE ALSO

+
       ib_reg_mem, ib_reg_phys, ib_dereg_mr, ib_mr_mod_t, ib_mr_create_t
+
+
+
+ +

[Functions] +Access Layer/ib_rereg_phys

+ +

[top][index]

+

NAME

+
       ib_rereg_phys
+
+

DESCRIPTION

+
       Modifies the attributes of an existing memory region.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_rereg_phys(
+        IN              const   ib_mr_handle_t                          h_mr,
+        IN              const   ib_mr_mod_t                                     mr_mod_mask,
+        IN              const   ib_phys_create_t* const         p_phys_create OPTIONAL,
+        IN      OUT                     uint64_t* const                         p_vaddr,
+                OUT                     net32_t* const                          p_lkey,
+                OUT                     net32_t* const                          p_rkey,
+        IN              const   ib_pd_handle_t                          h_pd OPTIONAL );
+
+

PARAMETERS

+
       h_mr
+               [in] A handle to the registered memory region being modified.
+
+       mr_mod_mask
+               [in] A mask used to specify which attributes of the memory region are
+               being modified.
+
+       p_phys_create
+               [in] This references information needed to perform the modification on
+               the registered memory region.  This parameter may be NULL if
+               only the protection domain will be modified.
+
+       p_vaddr
+               [in/out] On input, this specifies the requested virtual address for the
+               start of the physical region.  On output, this references the actual
+               virtual address assigned to the registered region.
+
+       p_lkey
+               [out] The local access key associated with this registered memory
+               region.
+
+       p_rkey
+               [out] A key that may be used by a remote end-point when performing RDMA
+               or atomic operations to this registered memory region.
+
+       h_pd
+               [in] An optionally provided parameter used to modify the protection
+               domain of a registered region.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The memory region attributes were modified successfully.
+
+       IB_INVALID_MR_HANDLE
+               The memory region handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the virtual address, lkey, rkey was not provided or
+               the specified modify mask is invalid.
+
+       IB_INVALID_SETTING
+               The specified memory region attributes are invalid.
+
+       IB_INVALID_PD_HANDLE
+               The protection domain handle was invalid.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to modify the memory region.
+
+       IB_UNSUPPORTED
+               The requested access rights are not supported by the channel adapter.
+
+       IB_INVALID_PERMISSION
+               The requested access rights are invalid.
+
+       IB_RESOURCE_BUSY
+               The memory region has windows bound to it.
+
+

NOTES

+
       This routine modifies the attributes of the specified memory region.
+       The memory being modified may have been registered using either virtual
+       or physical registration.  Conceptually, this routine is equivalent to
+       to calling ib_dereg_mr, followed by ib_reg_phys, but may be higher
+       performing.
+
+

SEE ALSO

+
       ib_reg_mem, ib_reg_phys, ib_dereg_mr, ib_mr_mod_t, ib_mr_create_t
+
+
+
+ +

[Structures] +Access Layer/ib_rtu_pdata_t

+ +

[top][index]

+

NAME

+
       ib_rtu_pdata_t
+
+

DESCRIPTION

+
       User data sent as part of a ready to use message.
+
+

SYNOPSIS

+
typedef union _ib_rtu_pdata
+{
+        uint8_t                                         data[IB_RTU_PDATA_SIZE];
+
+}       ib_rtu_pdata_t;
+
+

SEE ALSO

+
       ib_cm_data_sizes_t
+
+
+
+ +

[Functions] +Access Layer/ib_send_mad

+ +

[top][index]

+

NAME

+
       ib_send_mad
+
+

DESCRIPTION

+
       This routine posts a work request to the send queue of a queue pair.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_send_mad(
+        IN              const   ib_mad_svc_handle_t                     h_mad_svc,
+        IN                              ib_mad_element_t* const         p_mad_element_list,
+                OUT                     ib_mad_element_t                        **pp_mad_failure OPTIONAL );
+
+

PARAMETERS

+
       h_mad_svc
+               [in] The MAD service to which this work request is being submitted.
+
+       p_mad_element_list
+               [in] A list of MAD elements that will be posted to the send queue.
+
+       pp_mad_failure
+               [out] If the send MAD operation failed, this references the MAD
+               element in the p_mad_element_list where the first failure occurred.
+               This parameter is optional if p_mad_element_list contains a single
+               MAD.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The MAD element list was successfully posted.
+
+       IB_INVALID_HANDLE
+               The MAD service handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the MAD element list was not provided.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available to complete
+               the request.
+
+       IB_INVALID_SETTING
+               The MAD element RMPP version is not supported by the access layer.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to complete the request.
+
+

NOTES

+
       This routine posts a work request to send a MAD on a MAD service.  All
+       MAD elements successfully posted by this call are under the control of
+       the access layer and should not be accessed until the send operation
+       completes.
+
+       In order to guarantee that MADs sent by separate clients do not use the
+       same transaction ID, the access layer reserves the upper 32-bits of the
+       TID on all unsolicited MADs.  MADs sent with the response bit set will
+       not have their transaction ID's modified.  Unsolicited MADs will have the
+       upper 32-bits of their TID set to an access layer generated client ID.
+
+

SEE ALSO

+
       ib_mad_element_t, ib_cancel_mad
+
+
+
+ +

[Structures] +Access Layer/ib_shmid_t

+ +

[top][index]

+

NAME

+
       ib_shmid_t
+
+

DESCRIPTION

+
       Shared Memory Identifier, used to uniquely identify a shared memory region.
+
+

SYNOPSIS

+
typedef uint8_t         ib_shmid_t[64];
+
+

SEE ALSO

+
       ib_reg_shmid
+
+
+
+ +

[Structures] +Access Layer/ib_sidr_rep_pdata_t

+ +

[top][index]

+

NAME

+
       ib_sidr_rep_pdata_t
+
+

DESCRIPTION

+
       User data sent as part of a service ID resolution reply.
+
+

SYNOPSIS

+
typedef union _ib_sidr_rep_pdata
+{
+        uint8_t                                         data[IB_SIDR_REP_PDATA_SIZE];
+
+}       ib_sidr_rep_pdata_t;
+
+

SEE ALSO

+
       ib_cm_data_sizes_t
+
+
+
+ +

[Structures] +Access Layer/ib_sidr_req_pdata_t

+ +

[top][index]

+

NAME

+
       ib_sidr_req_pdata_t
+
+

DESCRIPTION

+
       User data sent as part of a service ID resolution request.
+
+

SYNOPSIS

+
typedef union _ib_sidr_req_pdata
+{
+        uint8_t                                         data[IB_SIDR_REQ_PDATA_SIZE];
+
+}       ib_sidr_req_pdata_t;
+
+

SEE ALSO

+
       ib_cm_data_sizes_t
+
+
+
+ +

[Structures] +Access Layer/ib_sub_rec_t

+ +

[top][index]

+

NAME

+
       ib_sub_rec_t
+
+

DESCRIPTION

+
       Information returned to a user that indicates the result of a subscription
+       request.
+
+

SYNOPSIS

+
typedef struct _ib_sub_rec
+{
+        const void* __ptr64                     sub_context;
+        ib_api_status_t                         status;
+        ib_sub_handle_t                         h_sub;
+
+}       ib_sub_rec_t;
+
+

FIELDS

+
       sub_context
+               References user-defined context information associated with the
+               subscription request.  This field is set by the user through the
+               ib_subscribe routine.
+
+       status
+               Indicates the success of the subscription request.
+
+       h_sub
+               The handle to the subscription request that was returned to the user
+               from the ib_subscribe call.  This handle is provided to the user to
+               avoid a race condition between the return of the ib_subscribe routine
+               and the notification of an event.
+
+

NOTES

+
       This structure is returned to the user to notify them of the results
+       of a subscription request.  After successfully subscribing with a
+       class manager for an event, this structure will be returned to the user
+       with the status set to IB_SUCCESS.  The sub_context field will be set
+       to the context specified through the p_sub_req parameter in the
+       ib_subscribe routine.
+
+

SEE ALSO

+
       ib_subscribe
+
+
+
+ +

[Structures] +Access Layer/ib_sub_req_t

+ +

[top][index]

+

NAME

+
       ib_sub_req_t
+
+

DESCRIPTION

+
       Information used to subscribed for event notification from a class
+       manager.
+
+

SYNOPSIS

+
typedef struct _ib_sub_req
+{
+        ib_svc_name_t* __ptr64          p_class_mgr_name;
+        ib_inform_info_t* __ptr64       p_inform_info;
+        ib_net64_t                                      port_guid;
+
+        uint32_t                                        timeout_ms;
+        uint32_t                                        retry_cnt;
+        ib_al_flags_t                           flags;
+
+        const void* __ptr64                     sub_context;
+        ib_pfn_sub_cb_t                         pfn_sub_cb;
+
+        const void* __ptr64                     report_context;
+        ib_pfn_report_cb_t                      pfn_report_cb;
+
+}       ib_sub_req_t;
+
+

FIELDS

+
       p_class_mgr_name
+               The service name of the class manager to subscribe for events with.
+
+       p_inform_info
+               Information describing the type of event being subscribed to.
+
+       port_guid
+               Directs the subscription request to use the specified port.  The
+               request will contact the subnet administrator reachable through the
+               given port.
+
+       timeout_ms
+               Specifies the number of milliseconds to wait for a response for
+               this subscription until retrying or timing out the request.
+
+       retry_cnt
+               Specifies the number of times that the query will be retried before
+               failing the request.
+
+       flags
+               Used to describe the mode of operation.  Set to IB_FLAGS_SYNC to
+               process the called routine synchronously.
+
+       sub_context
+               User-defined context information associated with this subscription
+               request.  This context is returned to the user through the function
+               specified by the pfn_sub_cb field.
+
+       pfn_sub_cb
+               A user-defined callback that is invoked upon completion of the
+               subscription request.  This is used to notify a client that of the
+               result of their subscription request.
+
+       report_context
+               User-defined context information associated with this subscription.
+               This context is returned to the user through the client's
+               ib_pfn_report_cb_t callback routine specified in ib_open_al.
+
+       pfn_report_cb
+               A user-defined callback that is invoked to notify the user that an
+               event report has been received.
+
+

NOTES

+
       This structure is used to subscribe for events with a class manager.  Both
+       the subscription request and any corresponding event notifications operate
+       asynchronously.  Clients will be notified of the result of their
+       subscription request before receiving notification of associated events.
+
+

SEE ALSO

+
       ib_subscribe, ib_svc_name_t, ib_inform_info_t, ib_pfn_sub_cb_t,
+       ib_pfn_report_cb_t, ib_open_al
+
+
+
+ +

[Functions] +Access Layer/ib_subscribe

+ +

[top][index]

+

NAME

+
       ib_subscribe
+
+

DESCRIPTION

+
       Subscribe with a class manager for event notification.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_subscribe(
+        IN              const   ib_al_handle_t                          h_al,
+        IN              const   ib_sub_req_t* const                     p_sub_req,
+                OUT                     ib_sub_handle_t* const          ph_sub );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an open instance of the access layer.
+
+       p_sub_req
+               [in] Specifies the type of events that the user wishes to be
+               notified of, along with information needed to process the completed
+               subscription.
+
+       ph_sub
+               [out] Upon successful completion of this call, this references a handle
+               to the subscription request.  This handle may be used to unsubscribe
+               from the events.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The subscription request was initiated.
+
+       IB_INVALID_AL_HANDLE
+               The access layer handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the subscription request or handle was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to perform the operation.
+
+       IB_INVALID_GUID
+               No port was found for the port_guid specified in the request.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to perform the operation.
+
+

NOTES

+
       This routine registers the calling client with a class manager for
+       notification of events.  Once registered, a client will receive
+       notification, via a callback, that a given event has occurred on
+       a device managed by the class manager.
+
+

SEE ALSO

+
       ib_unsubscribe, ib_sub_req_t, ib_pfn_sub_cb_t, ib_pfn_report_cb_t
+
+
+
+ +

[Functions] +Access Layer/ib_sync_destroy

+ +

[top][index]

+

NAME

+
       ib_sync_destroy
+
+

DESCRIPTION

+
       Access layer routine used to indicate synchronous destruction of an
+       object.
+
+

SYNOPSIS

+
AL_EXPORT void AL_API
+ib_sync_destroy(
+        IN                              void                                            *context );
+
+

PARAMETERS

+
       Not Applicable.
+
+

NOTES

+
       Users specify ib_sync_destroy as the ib_pfn_destroy_cb_t callback in order
+       to force synchronous object destruction.  This may result in the calling
+       thread blocking while outstanding callbacks complete.
+
+

SEE ALSO

+
       ib_pfn_destroy_cb_t
+
+
+
+ +

[Functions] +Access Layer/ib_unsubscribe

+ +

[top][index]

+

NAME

+
       ib_unsubscribe
+
+

DESCRIPTION

+
       Unsubscribe with a class manager for event notification.
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t AL_API
+ib_unsubscribe(
+        IN              const   ib_sub_handle_t                         h_sub,
+        IN              const   ib_pfn_destroy_cb_t                     pfn_destroy_cb OPTIONAL );
+
+

PARAMETERS

+
       h_al
+               [in] A handle to an open instance of the access layer.
+
+       h_sub
+               [in] A handle to a subscribed event.
+
+       pfn_destroy_cb
+               [in] A user-specified callback that is invoked after the subscription
+               request has been successfully canceled.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The unsubscribe request was initiated.
+
+       IB_INVALID_HANDLE
+               The subscription handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the subscription request or handle was not provided.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to perform the operation.
+
+       IB_INSUFFICIENT_RESOURCES
+               There were insufficient resources currently available on the channel
+               adapter to perform the operation.
+
+

NOTES

+
       This routine cancels an active or pending event subscription with a class
+       manager.  To avoid a race condition canceling a subscription at the same
+       time an event notification callback is in progress, the unsubscribe
+       operation operates asynchronously.  For additional details see
+       ib_pfn_destroy_cb_t.
+
+

SEE ALSO

+
       ib_subscribe, ib_pfn_destroy_cb_t
+
+
+
+ +

[Structures] +Access Layer/ib_user_query_t

+ +

[top][index]

+

NAME

+
       ib_user_query_t
+
+

DESCRIPTION

+
       User-defined query information.
+
+

SYNOPSIS

+
typedef struct _ib_user_query
+{
+        uint8_t                                 method;
+        ib_net16_t                              attr_id;
+        uint32_t                                attr_size;
+        ib_net64_t                              comp_mask;
+        void* __ptr64                   p_attr;
+
+}       ib_user_query_t;
+
+

FIELDS

+
       method
+               Method to be run
+
+       attr_id
+               Attribute identifier of query data.
+
+       attr_size
+               Size of the query attribute in bytes.  This is translated into the
+               attr_offset field of the SA MAD by the ib_query call.
+
+       comp_mask
+               Indicates the attribute components that are specified for the query.
+
+       p_attr
+               References the attribute structure used as input into the query.
+               This field is ignored if comp_mask is set to 0.
+
+

NOTES

+
       This structure is used to describe a user-defined query.  The attribute
+       ID, attribute offset, component mask, and attribute structure must match
+       those defined by the IBA specification.  Users should refer to chapter 15
+       of the IBA specification for additional details.
+
+

SEE ALSO

+
       ib_query_type_t, ib_query, ib_get_attr_offset, ib_get_attr_size
+
+
+ + diff --git a/trunk/docs/iba/ib_al_ioctl_h.html b/trunk/docs/iba/ib_al_ioctl_h.html new file mode 100644 index 00000000..3d5b32a7 --- /dev/null +++ b/trunk/docs/iba/ib_al_ioctl_h.html @@ -0,0 +1,3208 @@ + + + + +./inc_doc/iba/ib_al_ioctl_h.html + + + + +Generated from ./inc/iba/ib_al_ioctl.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:23 +
+
+ +

[Structures] +User-mode Access Layer/ual_alloc_pd_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_alloc_pd_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_alloc_pd
+
+

SYNOPSIS

+
typedef union _ual_alloc_pd_ioctl
+{
+        struct _ual_alloc_pd_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_ca;
+                ib_pd_type_t                            type;
+                void* __ptr64                           context;
+
+        }       in;
+        struct _ual_alloc_pd_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                uint64_t                                        h_pd;
+
+        }       out;
+
+}       ual_alloc_pd_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.h_ca
+               The handle to an open instance of CA returned in a ual_open_ca_ioctl.
+
+       in.context
+               UAL's pd context. This context will be provided on destroy callback.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation
+
+       out.h_pd
+               The handle to the PD to use in further PD-related IOCTLs.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_attach_mcast_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_attach_mcast_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       verbs attach multicast call.
+
+

SYNOPSIS

+
typedef union _ual_attach_mcast_ioctl
+{
+        struct _ual_attach_mcast_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_qp;
+                ib_gid_t                                        mgid;
+                ib_net16_t                                      mlid;
+
+        }       in;
+        struct _ual_attach_mcast_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                uint64_t                                        h_attach;
+
+        }       out;
+
+}       ual_attach_mcast_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.h_qp
+               Handle to the QP that is joining the multicast group.
+
+       in.mgid
+               Multicast GID address for this multicast group.
+
+       in.mlid
+               Multicast LID for this multicast group.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation.
+
+       h_attach
+               Multicast group handle.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_bind_file_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_bind_file_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       binding a file handle to an existing proxy context.
+
+

SYNOPSIS

+
typedef struct _ual_bind_file_ioctl
+{
+        void* __ptr64                   h_file;
+
+}       ual_bind_file_ioctl_t;
+
+

FIELDS

+
       h_file
+               File handle from the user-mode process intended for asynchronous requests.
+               The IOCTL code will specify the type of asynchronous requests to be
+               performed on this file handle.
+
+

SEE ALSO

+

NOTES

+ +
+ +

[Structures] +User-mode Access Layer/ual_bind_mw_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_bind_mw_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_bind_mw
+
+

SYNOPSIS

+
typedef union _ual_bind_mw_ioctl
+{
+        struct _ual_bind_mw_ioctl_in
+        {
+                uint64_t                                        h_mw;
+                uint64_t                                        h_qp;
+                ib_bind_wr_t                            mw_bind;
+
+        }       in;
+        struct _ual_bind_mw_ioctl_out
+        {
+                ib_api_status_t                         status;
+                uint32_t                                        r_key;
+
+        }       out;
+
+}       ual_bind_mw_ioctl_t;
+
+

FIELDS

+
       in.h_mw
+               A handle to an existing memory window.
+
+       in.h_qp
+               The qp handle to post the bind request.
+
+       in.mw_bind
+               Bind request.
+
+       out.status
+               Status of the operation.
+
+       out.rkey
+               RKey for the memory window.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cancel_mad_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cancel_mad_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_cancel_mad
+
+

SYNOPSIS

+
typedef union _ual_cancel_mad_ioctl
+{
+        struct _ual_cancel_mad_ioctl_in
+        {
+                uint64_t                                        h_mad_svc;
+                void* __ptr64                           h_proxy_element;
+
+        }       in;
+        struct _ual_cancel_mad_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_cancel_mad_ioctl_t;
+
+

FIELDS

+
       in.h_mad_svc
+               contains the handle to the mad service
+
+       in.h_mad_send
+               this references the handle to the sent MAD operation.
+
+       out.status
+               Status of the operation.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cancel_sa_req_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cancel_sa_req_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input parameters for cancelling an
+       SA request.
+
+

SYNOPSIS

+
typedef struct _ual_cancel_sa_req_ioctl
+{
+        uint64_t                        h_sa_req;
+
+}       ual_cancel_sa_req_ioctl_t;
+
+

PARAMETERS

+
       h_sa_req
+               Handle to the query to cancel.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_apr_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_apr_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input parameters for
+       ib_cep_apr
+
+

SYNOPSIS

+
typedef union _ual_cep_apr_ioctl
+{
+        struct _ual_cep_apr_ioctl_in
+        {
+                net32_t                                 cid;
+                ib_cm_apr_t                             cm_apr;
+                uint8_t                                 apr_info[IB_APR_INFO_SIZE];
+                uint8_t                                 pdata[IB_APR_PDATA_SIZE];
+
+        }       in;
+
+        struct _ual_cep_apr_ioctl_out
+        {
+                ib_api_status_t                 status;
+                ib_qp_mod_t                             apr;
+
+        }       out;
+
+}       ual_cep_apr_ioctl_t;
+
+

FIELDS

+
       in.h_cm_lap
+               The cm_lap connection handle got on the LAP callback.
+
+       in.cm_apr
+               CM APR parameters.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_drep_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_drep_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_cm_drep
+
+

SYNOPSIS

+
typedef struct _ual_cep_drep_ioctl
+{
+        net32_t                                         cid;
+        ib_cm_drep_t                            cm_drep;
+        uint8_t                                         pdata[IB_DREP_PDATA_SIZE];
+
+}       ual_cep_drep_ioctl_t;
+
+

FIELDS

+
       in.h_cm_dreq
+               The cm_dreq connection handle got on the callback.
+
+       in.cm_drep
+               CM DREP parameters.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_dreq_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_dreq_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input parameters for
+       ib_cm_dreq
+
+

SYNOPSIS

+
typedef struct _ual_cep_dreq_ioctl
+{
+        net32_t                                         cid;
+        uint8_t                                         pdata_len;
+        uint8_t                                         pdata[IB_DREQ_PDATA_SIZE];
+
+}       ual_cep_dreq_ioctl_t;
+
+

FIELDS

+
       cm_dreq
+               CM DREQ parameters.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_get_rtr_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_get_rtr_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the output parameters for
+       al_cep_get_rtr_attr call.
+
+

SYNOPSIS

+
typedef struct _ual_cep_get_rtr_ioctl
+{
+        ib_api_status_t                         status;
+        ib_qp_mod_t                                     rtr;
+
+}       ual_cep_get_rtr_ioctl_t;
+
+

FIELDS

+
       out.status
+               Status of the operation.
+
+       out.rtr
+               QP modify paramters for RTR state transition.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_get_rts_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_get_rts_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the output parameters for
+       al_cep_get_rts_attr call.
+
+

SYNOPSIS

+
typedef struct _ual_cep_get_rts_ioctl
+{
+        ib_api_status_t                         status;
+        ib_qp_mod_t                                     rts;
+
+}       ual_cep_get_rts_ioctl_t;
+
+

FIELDS

+
       out.status
+               Status of the operation.
+
+       out.rts
+               QP modify paramters for RTS state transition.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_get_timewait_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_get_timewait_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the output parameters for
+       ib_cep_get_timewait
+
+

SYNOPSIS

+
typedef struct _ual_cep_get_timewait_ioctl
+{
+        ib_api_status_t                         status;
+        uint64_t                                        timewait_us;
+
+}       ual_cep_get_timewait_ioctl_t;
+
+

FIELDS

+
       in.status
+               Status of the request.
+
+       in.timewait_us
+               Timewait value, in microseconds.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_handoff_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_handoff_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_cm_handoff
+
+

SYNOPSIS

+
typedef union _ual_cep_handoff_ioctl
+{
+        struct _ual_cep_handoff_ioctl_in
+        {
+                uint64_t                                        h_cm;
+                net64_t                                         sid;
+
+        }       in;
+        struct _ual_cep_handoff_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_cep_handoff_ioctl_t;
+
+

FIELDS

+
       in.h_cm
+               The connection handle got on the callback.
+
+       in.sid
+               Service ID to which to handoff the listen.
+
+       out.status
+               Status of the operation
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_lap_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_lap_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input parameters for
+       ib_cm_lap
+
+

SYNOPSIS

+
typedef struct _ual_cep_lap_ioctl
+{
+        net32_t                                         cid;
+        ib_cm_lap_t                                     cm_lap;
+        ib_path_rec_t                           alt_path;
+        uint8_t                                         pdata[IB_LAP_PDATA_SIZE];
+
+}       ual_cep_lap_ioctl_t;
+
+

FIELDS

+
       in.cm_lap
+               CM LAP parameters
+
+       in.alt_path
+               Alternate path information.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_listen_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_listen_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input parameters to
+       perform a CM listen request.
+
+

SYNOPSIS

+
typedef struct _ual_cep_listen_ioctl
+{
+        net32_t                                         cid;
+        ib_cep_listen_t                         cep_listen;
+        uint8_t                                         compare[IB_REQ_PDATA_SIZE];
+
+}       ual_cep_listen_ioctl_t;
+
+

FIELDS

+
       in.cid
+               CID of an existing CEP.
+
+       in.cep_listen
+               Information used to direct the listen request to match incoming
+               connection requests.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_mra_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_mra_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input parameters for
+       ib_cm_mra
+
+

SYNOPSIS

+
typedef struct _ual_cep_mra_ioctl
+{
+        net32_t                                         cid;
+        ib_cm_mra_t                                     cm_mra;
+        uint8_t                                         pdata[IB_MRA_PDATA_SIZE];
+
+}       ual_cep_mra_ioctl_t;
+
+

FIELDS

+
       in.cid
+               The CID for the target CEP.
+
+       in.cm_mra
+               CM MRA parameters.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_poll_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_poll_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the output parameters to
+       poll for incoming events on a CEP.  The input parameter is the CID.
+
+

SYNOPSIS

+
typedef struct _ual_cep_poll_ioctl
+{
+        ib_api_status_t                         status;
+        void* __ptr64                           context;
+        net32_t                                         new_cid;
+        ib_mad_element_t                        element;
+        ib_grh_t                                        grh;
+        uint8_t                                         mad_buf[MAD_BLOCK_SIZE];
+
+}       ual_cep_poll_ioctl_t;
+
+

FIELDS

+
       status
+               Status of the operation.
+
+       new_cep
+               For listen requests, CEP information of CEPs created in response
+               to incoming REQs.
+
+       mad_buf
+               Payload of a received MAD (or failed send)
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_rej_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_rej_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input parameters for
+       al_cep_rej
+
+

SYNOPSIS

+
typedef struct _ual_cep_rej_ioctl
+{
+        net32_t                                         cid;
+
+        ib_rej_status_t                         rej_status;
+        uint8_t                                         ari_len;
+        uint8_t                                         pdata_len;
+        uint8_t                                         ari[IB_ARI_SIZE];
+        uint8_t                                         pdata[IB_REJ_PDATA_SIZE];
+
+}       ual_cep_rej_ioctl_t;
+
+

FIELDS

+
       in.cid
+               The CID of the target CEP.
+
+       in.rej_status
+               Rejection status as defined in IB spec.
+
+       in.ari_len
+               Length of the ARI data.
+
+       in.pdata_len
+               Length of the private data.
+
+       in.ari
+               ARI data.
+
+       in.pdata
+               Private data.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_rep_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_rep_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       al_cep_pre_rep call.
+
+

SYNOPSIS

+
typedef union _ual_cep_rep_ioctl
+{
+        struct _ual_cep_rep_ioctl_in
+        {
+                void* __ptr64                           context;
+                net32_t                                         cid;
+                ib_cm_rep_t                                     cm_rep;
+                uint8_t                                         pdata[IB_REP_PDATA_SIZE];
+
+        }       in;
+        struct _ual_cep_rep_ioctl_out
+        {
+                ib_api_status_t                         status;
+                ib_qp_mod_t                                     init;
+
+        }       out;
+
+}       ual_cep_rep_ioctl_t;
+
+

FIELDS

+
       in.h_cm_req
+               The cm_req connection handle got on the callback.
+
+       in.cm_rep
+               CM REP parameters.
+
+       out.status
+               Status of the operation.
+
+       out.init
+               QP modify paramters for INIT state transition.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cep_rtu_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cep_rtu_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input parameters for
+       al_cep_rtu call.
+
+

SYNOPSIS

+
typedef struct _ual_cep_rtu_ioctl
+{
+        net32_t                                         cid;
+        uint8_t                                         pdata_len;
+        uint8_t                                         pdata[IB_RTU_PDATA_SIZE];
+
+}       ual_cep_rtu_ioctl_t;
+
+

FIELDS

+
       in.cid
+               The cm_rep connection handle got on the callback.
+
+       in.pdata_len
+               Length of private data.
+
+       in.pdata
+               Private data.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_ci_call_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_ci_call_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_ci_call
+
+

SYNOPSIS

+
typedef union _ual_ci_call_ioctl
+{
+        struct _ual_ci_call_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_ci_op_t                                      ci_op;
+                uint64_t                                        h_ca;
+                uint32_t                                        num_handles;
+                uint64_t                                        handle_array[1];
+
+        }       in;
+        struct _ual_ci_call_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_ci_op_t                                      ci_op;
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_ci_call_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.ci_op
+               Contains information on the operation that needs to be performed
+               by the verbs provider.  The proxy marshals the data buffer between
+               user mode and kernel space.
+
+       in.h_ca
+               The handle to an open instance of CA returned by a ual_open_ca_ioctl.
+
+       in.num_handles
+               The number of handles in the array at in.p_handle_array.
+
+       in.handle_array
+               First entry in an array of handles used for this operation.  Ignored if
+               in.num_handles is zero.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation
+
+       out.ci_op
+               Contains information on the operation that needs to be performed
+               by the verbs provider.  The proxy marshals the data buffer between
+               user mode and kernel space.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_close_ca_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_close_ca_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_close_ca
+
+

SYNOPSIS

+
typedef union _ual_close_ca_ioctl
+{
+        struct _ual_close_ca_ioctl_in
+        {
+                uint64_t                                        h_ca;
+
+        }       in;
+        struct _ual_close_ca_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_close_ca_ioctl_t;
+
+

FIELDS

+
       in.h_ca
+               The handle to an open instance of CA (in KAL space).
+
+       out.status
+               Status of the operation
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_cm_req_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_cm_req_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       al_cep_pre_req call.
+
+

SYNOPSIS

+
typedef union _ual_cep_req_ioctl
+{
+        struct _ual_cep_req_ioctl_in
+        {
+                net32_t                                         cid;
+                ib_cm_req_t                                     cm_req;
+                ib_path_rec_t                           paths[2];
+                uint8_t                                         pdata[IB_REQ_PDATA_SIZE];
+                uint8_t                                         compare[IB_REQ_PDATA_SIZE];
+
+        }       in;
+        struct _ual_cep_req_ioctl_out
+        {
+                ib_api_status_t                         status;
+                ib_qp_mod_t                                     init;
+
+        }       out;
+
+}       ual_cep_req_ioctl_t;
+
+

FIELDS

+
       in.cid
+               CID of the target CEP.
+
+       in.cm_req
+               CM REQ parameters.
+
+       in.paths
+               Array of paths, the first being the primary path to use for the REQ.
+
+       out.status
+               Status of the operation
+
+       out.init
+               QP modify paramters for INIT state transition.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_create_av_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_create_av_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_create_av
+
+

SYNOPSIS

+
typedef union _ual_create_av_ioctl
+{
+        struct _ual_create_av_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_pd;
+                ib_av_attr_t                            attr;
+
+        }       in;
+        struct _ual_create_av_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                uint64_t                                        h_av;
+
+        }       out;
+
+}       ual_create_av_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.h_pd
+               The handle to an already allocated PD (in KAL space).
+
+       in.attr
+               Attributes of the address vector that needs to be created.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation.
+
+       out.h_av
+               Handle to the newly created address vector.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_create_cep_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_create_cep_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the output parameters to
+       create a CEP.
+
+

SYNOPSIS

+
typedef struct _ual_create_cep_ioctl
+{
+        ib_api_status_t                         status;
+        net32_t                                         cid;
+
+}       ual_create_cep_ioctl_t;
+
+

FIELDS

+
       status
+               Status of the operation.
+
+       cid
+               CID of the created CEP.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_create_cq_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_create_cq_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_create_cq
+
+

SYNOPSIS

+
typedef union _ual_create_cq_ioctl
+{
+        struct _ual_create_cq_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_ca;
+                void* __ptr64                           h_wait_obj;
+                void* __ptr64                           context;
+                uint32_t                                        size;
+                boolean_t                                       ev_notify;
+
+        }       in;
+        struct _ual_create_cq_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                uint64_t                                        h_cq;
+                uint32_t                                        size;
+
+        }       out;
+
+}       ual_create_cq_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.h_ca
+               CA handle on which to create the CQ.
+
+       in.cq_create
+               Attributes necessary for creating the cq.
+
+       in.cq_context
+               UAL's cq context that needs to be returned on a callback.
+
+       in.ev_notify
+               Boolean indicating whether asynchronous events should be
+               forwared to user-mode.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation.
+
+       h_cq
+               Handle to the newly created CQ.
+
+       size
+               Actual size of the newly created CQ.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_create_mw_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_create_mw_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_create_mw
+
+

SYNOPSIS

+
typedef union _ual_create_mw_ioctl
+{
+        struct _ual_create_mw_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_pd;
+
+        }       in;
+        struct _ual_create_mw_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                net32_t                                         rkey;
+                uint64_t                                        h_mw;
+
+        }       out;
+
+}       ual_create_mw_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.h_pd
+               A handle to the protection domain on which the memory window should
+               be created.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation.
+
+       out.rkey
+               RKey associated with the memory window.
+
+       h_mw
+               Handle to the newly created MW.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_create_qp_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_create_qp_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_create_qp
+
+

SYNOPSIS

+
typedef union _ual_create_qp_ioctl
+{
+        struct _ual_create_qp_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_pd;
+                ib_qp_create_t                          qp_create;
+                void* __ptr64                           context;
+                boolean_t                                       ev_notify;
+
+        }       in;
+        struct _ual_create_qp_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                ib_qp_attr_t                            attr;
+                uint64_t                                        h_qp;
+
+        }       out;
+
+}       ual_create_qp_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.h_pd
+               Protection domain on which to create the QP.
+
+       in.qp_create
+               Attributes necessary for creating the QP.
+
+       in.context
+               UAL's qp context that needs to be returned on a callback.
+
+       in.ev_notify
+               Boolean indicating whether asynchronous events should be
+               forwarded to user-mode.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation.
+
+       out.attr
+               Actual attributes of the newly created QP.
+
+       out.h_qp
+               Handle for the newly created QP.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_dealloc_pd_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_dealloc_pd_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_dealloc_pd
+
+

SYNOPSIS

+
typedef union _ual_dealloc_pd_ioctl
+{
+        struct _ual_dealloc_pd_ioctl_in
+        {
+                uint64_t                                        h_pd;
+
+        }       in;
+        struct _ual_dealloc_pd_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_dealloc_pd_ioctl_t;
+
+

FIELDS

+
       in.h_pd
+               The handle of the PD that is going to be deallocated.
+
+       out.status
+               Status of the operation
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_dereg_mad_pool_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_dereg_mad_pool_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       deregistering a mad pool to be used with special qp.
+       The kernel proxy will deregister and destroy the mad pool
+       created on behalf of the user process.
+
+

SYNOPSIS

+
typedef union _ual_dereg_mad_pool_ioctl
+{
+        struct _ual_dereg_mad_pool_ioctl_in
+        {
+                uint64_t                                        pool_key;
+
+        }       in;
+        struct _ual_dereg_mad_pool_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_dereg_mad_pool_ioctl_t;
+
+

FIELDS

+
       in.pool_key
+               Pool key to the mad pool in kernel space.
+
+       out.status
+               Status of the operation
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_dereg_mad_svc_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_dereg_mad_svc_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_dereg_mad_svc
+
+

SYNOPSIS

+
typedef union _ual_dereg_mad_svc_ioctl
+{
+        struct _ual_dereg_mad_svc_ioctl_in
+        {
+                uint64_t                                        h_mad_svc;
+
+        }       in;
+        struct _ual_dereg_mad_svc_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_dereg_mad_svc_ioctl_t;
+
+

FIELDS

+
       in.h_mad_svc
+               Handle to the mad service.
+
+       out.status
+               Status of the operation.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_dereg_mr_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_dereg_mr_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_dereg_mr
+
+

SYNOPSIS

+
typedef union _ual_dereg_mr_ioctl
+{
+        struct _ual_dereg_mr_ioctl_in
+        {
+                uint64_t                                        h_mr;
+
+        }       in;
+        struct _ual_dereg_mr_ioctl_out
+        {
+                ib_api_status_t                         status;
+        
+        }       out;
+
+} ual_dereg_mr_ioctl_t;
+
+

FIELDS

+
       in.h_mr
+               A handle to a registered memory region.
+
+       out.status
+               Status of the operation.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_dereg_pnp_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_dereg_pnp_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input parameters for cancelling an
+       SA request.
+
+

SYNOPSIS

+
typedef struct _ual_dereg_pnp_ioctl
+{
+        uint64_t                        h_pnp;
+
+}       ual_dereg_pnp_ioctl_t;
+
+

NOTES

+
       This is an asynchronous IOCTL.
+
+

PARAMETERS

+
       h_pnp
+               Handle to the PnP registration to deregister.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_destroy_av_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_destroy_av_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_destroy_av
+
+

SYNOPSIS

+
typedef union _ual_destroy_av_ioctl
+{
+        struct _ual_destroy_av_ioctl_in
+        {
+                uint64_t                                        h_av;
+
+        }       in;
+        struct _ual_destroy_av_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_destroy_av_ioctl_t;
+
+

FIELDS

+
       in.h_av
+               A handle to an existing address vector.
+
+       out.status
+               Status of the operation.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_destroy_cq_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_destroy_cq_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_destroy_cq
+
+

SYNOPSIS

+
typedef union _ual_destroy_cq_ioctl
+{
+        struct _ual_destroy_cq_ioctl_in
+        {
+                uint64_t                                        h_cq;
+
+        }       in;
+        struct _ual_destroy_cq_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_destroy_cq_ioctl_t;
+
+

FIELDS

+
       in.h_cq
+               Handle of the cq that needs to be destroyed.
+
+       out.status
+               Status of the operation.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_destroy_mw_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_destroy_mw_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_destroy_mw
+
+

SYNOPSIS

+
typedef union _ual_destroy_mw_ioctl
+{
+        struct _ual_destroy_mw_ioctl_in
+        {
+                uint64_t                                        h_mw;
+
+        }       in;
+        struct _ual_destroy_mw_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_destroy_mw_ioctl_t;
+
+

FIELDS

+
       in.h_mw
+               A handle to an existing memory window.
+
+       out.status
+               Status of the operation
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_destroy_qp_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_destroy_qp_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_destroy_qp
+
+

SYNOPSIS

+
typedef union _ual_destroy_qp_ioctl
+{
+        struct _ual_destroy_qp_ioctl_in
+        {
+                uint64_t                                        h_qp;
+
+        }       in;
+        struct _ual_destroy_qp_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_destroy_qp_ioctl_t;
+
+

FIELDS

+
       in.h_qp
+               Handle of the QP that needs to be destroyed.
+
+       out.status
+               Status of the operation.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_detach_mcast_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_detach_mcast_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       verbs detach call.
+
+

SYNOPSIS

+
typedef union _ual_detach_mcast_ioctl
+{
+        struct _ual_detach_mcast_ioctl_in
+        {
+                uint64_t                                        h_attach;
+
+        }       in;
+        struct _ual_detach_mcast_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_detach_mcast_ioctl_t;
+
+

FIELDS

+
       in.h_attach
+               A handle to the multicast group.
+
+       out.status
+               Status of the operation.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_force_apm_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_force_apm_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_force_apm
+
+

SYNOPSIS

+
typedef union _ual_force_apm_ioctl
+{
+        union _ual_force_apm_ioctl_in
+        {
+                uint64_t                                        h_qp;
+
+        }       in;
+        struct _ual_force_apm_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_force_apm_ioctl_t;
+
+

FIELDS

+
       in.h_qp
+               A handle to the QP to migrate.
+
+       out.status
+               Status of the operation
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_get_uvp_name_t

+ +

[top][index]

+

NAME

+
       ual_get_uvp_name_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       getting the user library information.
+
+

SYNOPSIS

+
typedef union _ual_get_uvp_name
+{
+        struct _ual_get_uvp_name_in
+        {
+                ib_net64_t                              ca_guid;
+
+        }       in;
+        struct _ual_get_uvp_name_out
+        {
+                ib_api_status_t                 status;
+                char                                    uvp_lib_name[MAX_LIB_NAME];
+
+        }       out;
+
+}       ual_get_uvp_name_ioctl_t;
+
+

FIELDS

+
       in.ca_guid
+               The GUID of the channel adapter
+
+       out.status
+               Status of the operation
+
+       out.uvp_lib_name
+               The vendor's library name associated with the CA
+
+

SEE ALSO

+

NOTES

+ +
+ +

[Structures] +User-mode Access Layer/ual_mad_recv_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_mad_recv_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters to get
+       the mad_element information upon receiving MAD.
+
+

SYNOPSIS

+
typedef union _ual_mad_recv_ioctl
+{
+        struct _ual_mad_recv_comp_ioctl_in
+        {
+                uint64_t                                        h_mad;
+                ib_mad_element_t* __ptr64       p_user_mad;
+                ib_mad_t* __ptr64                       p_mad_buf;
+                ib_grh_t* __ptr64                       p_grh;
+
+        }       in;
+        struct _ual_mad_recv_comp_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+} ual_mad_recv_ioctl_t;
+
+

FIELDS

+
       in.h_mad
+               Received MAD handle handed to usermode in the MAD recv notification.
+
+       in.p_user_mad
+               Pointer to a user-mode mad element.
+
+       in.p_mad_buf
+               Pointer to the MAD element's user-mode buffer.
+
+       in.p_grh
+               Ponter to the MAD element's user-mode GRH buffer.
+
+       out.status
+               Status of the operation.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_modify_av_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_modify_av_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_modify_av
+
+

SYNOPSIS

+
typedef union _ual_modify_av_ioctl
+{
+        struct _ual_modify_av_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_av;
+                ib_av_attr_t                            attr;
+
+        }       in;
+        struct _ual_modify_av_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_modify_av_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.h_av
+               A handle to an existing address vector.
+
+       in.attr
+               The requested attributes to be used for modifying the address vector.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_modify_ca_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_modify_ca_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_modify_ca
+
+

SYNOPSIS

+
typedef union _ual_modify_ca_ioctl
+{
+        struct _ual_modify_ca_ioctl_in
+        {
+                uint64_t                                        h_ca;
+                uint8_t                                         port_num;
+                ib_ca_mod_t                                     ca_mod;
+                ib_port_attr_mod_t                      port_attr_mod;
+
+        }       in;
+        struct _ual_modify_ca_ioclt_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+
+}       ual_modify_ca_ioctl_t;
+
+

FIELDS

+
       in.h_ca
+               The handle to an open instance of CA (in KAL space).
+
+       in.port_num
+               An index of the port that is being modified.
+
+       in.ca_mod
+               The mask of the attributes and counters to modify.
+
+       in.port_attr_mod
+               List of port attribute information to modify.
+
+       out.status
+               Status of the operation
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_modify_cq_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_modify_cq_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_modify_cq
+
+

SYNOPSIS

+
typedef union _ual_modify_cq_ioctl
+{
+        struct _ual_modify_cq_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_cq;
+                uint32_t                                        size;
+
+        }       in;
+        struct _ual_modify_cq_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                uint32_t                                        size;
+
+        }       out;
+
+}       ual_modify_cq_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.h_cq
+               A handle to the CQ to modify.
+
+       in.size
+               The requested new size of the CQ.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation.
+
+       out.size
+               The actual size of the CQ.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_modify_qp_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_modify_qp_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_modify_qp
+
+

SYNOPSIS

+
typedef union _ual_modify_qp_ioctl
+{
+        struct _ual_modify_qp_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_qp;
+                ib_qp_mod_t                                     modify_attr;
+
+        }       in;
+        struct _ual_modify_qp_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                //ib_qp_query_t                         query_attr; // Not returned by AL
+
+        }       out;
+
+}       ual_modify_qp_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.h_qp
+               A handle to an existing Queue Pair.
+
+       in.modify_attr
+               Attributes used for modifying the QP.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation.
+
+       out.query_attr
+               On return from the ioctl, contains the actual attributes of
+               the QP just modified.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_open_ca_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_open_ca_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_open_ca
+
+

SYNOPSIS

+
typedef union _ual_open_ca_ioctl
+{
+        struct _ual_open_ca_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_net64_t                                      guid;
+                void* __ptr64                           context;
+
+        }       in;
+
+        struct _ual_open_ca_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                uint64_t                                        h_ca;
+
+        }       out;
+
+}       ual_open_ca_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.guid
+               The GUID of the channel adapter to open.
+
+       in.context
+               A caller-specified context to associate with this opened instance
+               of the channel adapter.  This context is returned to the user when
+               invoking asynchronous callbacks referencing this channel adapter.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation
+
+       out.h_ca
+               On return from IOCTL, contains the CA Handle from AL.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_peek_cq_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_peek_cq_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_peek_cq
+
+

SYNOPSIS

+
typedef union _ual_peek_cq_ioctl
+{
+        struct _ual_peek_cq_ioctl_in
+        {
+                uint64_t                                        h_cq;
+
+        }       in;
+        struct _ual_peek_cq_ioctl_out
+        {
+                ib_api_status_t                         status;
+                uint32_t                                        n_cqes;
+
+        }       out;
+
+} ual_peek_cq_ioctl_t;
+
+

FIELDS

+
       in.h_cq
+               A handle to a CQ.
+
+       out.status
+               Status of the operation.
+
+       out.n_cqes
+               The number of completion queue entries currently on the CQ.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_poll_cq_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_poll_cq_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_poll_cq
+
+

SYNOPSIS

+
typedef union _ual_poll_cq_ioctl
+{
+        struct _ual_poll_cq_ioctl_in
+        {
+                uint64_t                                        h_cq;
+                uint32_t                                        num_wc;
+
+        }       in;
+        struct _ual_poll_cq_ioctl_out
+        {
+                ib_api_status_t                         status;
+                uint32_t                                        num_wc;
+                ib_wc_t                                         wc[1];
+                /* Additional WC's follow. */
+        }       out;
+
+}       ual_poll_cq_ioctl_t;
+
+

FIELDS

+
       in.h_cq
+               A handle to cq that is going to be polled for completions.
+
+       in.num_wc
+               Number of work completions in the output array.
+
+       out.status
+               Status of the operation.
+
+       out.num_wc
+               Number of work completions polled.
+
+       out.wc
+               First work completion in the array to use for polling.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_poll_pnp_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_poll_pnp_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the parameters for retriveing data for
+       a PnP event.
+
+

SYNOPSIS

+
typedef union _ual_poll_pnp_ioctl
+{
+        struct _ual_poll_pnp_ioctl_in
+        {
+                uint64_t                                        evt_hdl;
+
+        }       in;
+        struct _ual_poll_pnp_ioctl_out
+        {
+                ib_pnp_rec_t                            pnp_rec;
+
+        }       out;
+
+}       ual_poll_pnp_ioctl_t;
+
+

NOTES

+
       This is a synchronous IOCTL.
+
+

PARAMETERS

+
       in.evt_hdl
+               Handle to a new PnP event.
+
+       out.pnp_rec
+               Buffer for the new PnP event.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_post_recv_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_post_recv_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_post_recv
+
+

SYNOPSIS

+
typedef union _ual_post_recv_ioctl
+{
+        struct _ual_post_recv_ioctl_in
+        {
+                uint64_t                                        h_qp;
+                uint32_t                                        num_wr;
+                uint32_t                                        num_ds;
+                ib_recv_wr_t                            recv_wr[1];
+                /* Additional work requests follow, followed by data segments. */
+
+        }       in;
+        struct _ual_post_recv_ioctl_out
+        {
+                ib_api_status_t                         status;
+                uint32_t                                        failed_cnt;
+
+        }       out;
+
+}       ual_post_recv_ioctl_t;
+
+

FIELDS

+
       in.h_qp
+               A handle to QP where the work request is being posted.
+
+       in.num_wr
+               Number of work request items in the array of work requests.
+
+       in.num_ds
+               Number of data segments following the array of work requests.
+
+       in.recv_wr
+               First work request in the array of work requests being posted.
+
+       out.status
+               Status of the operation.
+
+       failed_cnt
+               Number of work request that failed.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_post_send_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_post_send_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_post_send
+
+

SYNOPSIS

+
typedef union _ual_post_send_ioctl
+{
+        struct _ual_post_send_ioctl_in
+        {
+                uint64_t                                        h_qp;
+                uint32_t                                        num_wr;
+                uint32_t                                        num_ds;
+                ib_send_wr_t                            send_wr[1];
+                /* Additional work requests follow, followed by data segments. */
+
+        }       in;
+        struct _ual_post_send_ioctl_out
+        {
+                ib_api_status_t                         status;
+                uint32_t                                        failed_cnt;
+
+        }       out;
+
+}       ual_post_send_ioctl_t;
+
+

FIELDS

+
       in.h_qp
+               A handle to QP where the work request is being posted.
+
+       in.num_wr
+               Number of work request items in the array of work requests.
+
+       in.num_ds
+               Number of data segments following the array of work requests.
+
+       in.send_wr
+               First work request in the array of work requests being posted.
+
+       out.status
+               Status of the operation.
+
+       out.failed_cnt
+               Number of work request that failed.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_query_av_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_query_av_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_query_av
+
+

SYNOPSIS

+
typedef union _ual_query_av_ioctl
+{
+        struct _ual_query_av_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_av;
+
+        }       in;
+        struct _ual_query_av_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                ib_av_attr_t                            attr;
+                void* __ptr64                           pd_context;
+
+        }       out;
+
+}       ual_query_av_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.h_av
+               A handle to an existing address vector.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation.
+
+       out.attr
+               Attributes of the address vector.
+
+       pd_context
+               Context associated with the PD when created.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_query_ca_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_query_ca_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_query_ca
+
+

SYNOPSIS

+
typedef union _ual_query_ca_ioctl
+{
+        struct _ual_query_ca_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_ca;
+                uint32_t                                        byte_cnt;
+                ib_ca_attr_t* __ptr64           p_ca_attr;
+
+        }       in;
+        struct _ual_query_ca_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                uint32_t                                        byte_cnt;
+
+        }       out;
+
+}       ual_query_ca_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.h_ca
+               The handle to an open instance of CA returned via a
+               ual_open_ca_ioctl structure.
+
+       in.byte_cnt
+               Specifies the size of the data buffer referenced by the p_ca_attr
+               parameter.
+
+       p_ca_attr
+               A reference to a buffer where the channel adapter attributes,
+               including port attribute information will be copied.  If this parameter
+               is NULL, then the required buffer size needed to return all of the CA
+               attribute information is returned through the out.byte_cnt parameter.
+               The ib_ca_attr_t structure for the specified channel adapter is stored
+               at the top of this buffer.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation
+
+       out.byte_cnt
+               Contains the number of bytes used or needed to copy all CA attributes.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_query_cq_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_query_cq_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_query_cq
+
+

SYNOPSIS

+
typedef union _ual_query_cq_ioctl
+{
+        struct _ual_query_cq_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_cq;
+
+        }       in;
+        struct _ual_query_cq_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                uint32_t                                        size;
+
+        }       out;
+
+}       ual_query_cq_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.h_cq
+               A handle to an existing CQ.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation.
+
+       out.size
+               The size of the CQ.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_query_mr_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_query_mr_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_query_mr
+
+

SYNOPSIS

+
typedef union _ual_query_mr_ioctl
+{
+        struct _ual_query_mr_ioctl_in
+        {
+                uint64_t                                        h_mr;
+
+        }       in;
+        struct _ual_query_mr_ioctl_out
+        {
+                ib_api_status_t                         status;
+                ib_mr_attr_t                            attr;
+
+        }       out;
+
+}       ual_query_mr_ioctl_t;
+
+

FIELDS

+
       in.h_mr
+               A handle to a registered memory region.
+
+       out.status
+               Status of the operation.
+
+       out.attr
+               Attributes of the registered memory region.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_query_mw_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_query_mw_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_query_mw
+
+

SYNOPSIS

+
typedef union _ual_query_mw_ioctl
+{
+        struct _ual_query_mw_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_mw;
+
+        }       in;
+        struct _ual_query_mw_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                void* __ptr64                           pd_context;
+                net32_t                                         rkey;
+
+        }       out;
+
+}       ual_query_mw_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       in.h_mw
+               A handle to an existing memory window.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation.
+
+       pd_context
+               This user-mode context for the protection domain
+               associated with the memory window.
+
+       rkey
+               RKey associated with the memory window.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_query_qp_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_query_qp_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_query_qp
+
+

SYNOPSIS

+
typedef union _ual_query_qp_ioctl
+{
+        struct _ual_query_qp_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_qp;
+
+        }       in;
+        struct _ual_query_qp_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                ib_qp_attr_t                            attr;
+
+        }       out;
+
+} ual_query_qp_ioctl_t;
+
+

FIELDS

+
       in.umv_buf
+               Opaque to IBAL buffer descriptor to allow the user-mode HCA library to
+               exchange private information with the kernel-mode HCA driver.
+
+       h_qp
+               Handle to the QP whose attributes to query.
+
+       out.umv_buf
+               Returns the status from the HCA driver to the user-mode HCA library,
+               along with any vendor specific output information.
+
+       out.status
+               Status of the operation.
+
+       out.attr
+               Attributes of the QP.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_rearm_cq_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_rearm_cq_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_rearm_cq
+
+

SYNOPSIS

+
typedef union _ual_rearm_cq_ioctl
+{
+        struct _ual_rearm_cq_ioctl_in
+        {
+                uint64_t                                        h_cq;
+                boolean_t                                       solicited;
+
+        }       in;
+        struct _ual_rearm_cq_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_rearm_cq_ioctl_t;
+
+

FIELDS

+
       in.h_cq
+               A handle to a CQ.
+
+       in.solicited
+               Flag for rearm CQ.
+
+       out.status
+               Status of the operation.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_rearm_n_cq_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_rearm_n_cq_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_rearm_n_cq
+
+

SYNOPSIS

+
typedef union _ual_rearm_n_cq_ioctl
+{
+        struct _ual_rearm_n_cq_ioctl_in
+        {
+                uint64_t                                        h_cq;
+                uint32_t                                        n_cqes;
+
+        }       in;
+        struct _ual_rearm_n_cq_ioctl_out
+        {
+                ib_api_status_t                         status;
+
+        }       out;
+
+}       ual_rearm_n_cq_ioctl_t;
+
+

FIELDS

+
       in.h_cq
+               A handle to a CQ.
+
+       in.n_cqes
+               Rearm the CQ to signal when the next N completions are added.
+
+       in.status
+               Status of the operation.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_rearm_pnp_ioctl_in_t

+ +

[top][index]

+

NAME

+
       ual_rearm_pnp_ioctl_in_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input parameters for requesting
+       notification of the next PnP event.
+
+

SYNOPSIS

+
typedef struct _ual_rearm_pnp_ioctl_in
+{
+        uint64_t                                        pnp_hdl;
+        uint64_t                                        last_evt_hdl;
+        void* __ptr64                           last_evt_context;
+        ib_api_status_t                         last_evt_status;
+
+}       ual_rearm_pnp_ioctl_in_t;
+
+

NOTES

+
       This is an asynchronous IOCTL.
+
+       The output parameters are a ual_rearm_pnp_ioctl_out_t.
+
+

PARAMETERS

+
       pnp_hdl
+               Handle to the PnP registration to rearm.
+
+       last_evt_hdl
+               Handle to the last PnP event processed.
+
+       last_evt_context
+               Context value to set for the last reported PnP event.
+
+       last_evt_status
+               Status value to return for the last reported PnP event.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_rearm_pnp_ioctl_out_t

+ +

[top][index]

+

NAME

+
       ual_rearm_pnp_ioctl_out_t
+
+

DESCRIPTION

+
       IOCTL structure containing the output parameters for a PnP event.
+
+

SYNOPSIS

+
typedef struct _ual_rearm_pnp_ioctl_out
+{
+        uint64_t                                        evt_hdl;
+        uint32_t                                        evt_size;
+
+}       ual_rearm_pnp_ioctl_out_t;
+
+

NOTES

+
       This is an asynchronous IOCTL.
+
+       The output parameters are identical to that of ual_reg_pnp_ioctl_t.
+
+

PARAMETERS

+
       evt_hdl
+               Handle to a new PnP event.
+
+       evt_size
+               Buffer size needed to poll the new PnP event.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_reg_mad_pool_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_reg_mad_pool_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       registering a mad pool to be used with special qp. This ioctl
+       will result in user-mode pool registered. Additionally,
+       the kernel proxy will allocate a kernel mad pool and register it
+       so that later mad_sends will have the appropriate pool in kernel.
+
+

SYNOPSIS

+
typedef union _ual_reg_mad_pool_ioctl
+{
+        struct _ual_reg_mad_pool_ioctl_in
+        {
+                uint64_t                                        h_pd;
+
+        }       in;
+        struct _ual_reg_mad_pool_ioctl_out
+        {
+                ib_api_status_t                         status;
+                uint64_t                                        pool_key;
+
+        }       out;
+
+}       ual_reg_mad_pool_ioctl_t;
+
+

FIELDS

+
       in.h_pd
+               PD associated with the pool
+
+       out.status
+               Status of the operation.
+
+       out.pool_key
+               Pool key to the mad pool in kernel space
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_reg_mad_svc_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_reg_mad_svc_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_reg_mad_svc
+
+

SYNOPSIS

+
typedef union _ual_reg_mad_svc_ioctl
+{
+        struct _ual_reg_mad_svc_ioctl_in
+        {
+                uint64_t                                        h_qp;
+                ib_mad_svc_t                            mad_svc;
+
+        }       in;
+        struct _ual_reg_mad_svc_ioctl_out
+        {
+                ib_api_status_t                         status;
+                uint64_t                                        h_mad_svc;
+
+        }       out;
+
+}       ual_reg_mad_svc_ioctl_t;
+
+

FIELDS

+
       in.h_qp
+               Handle to the special QP or MAD QP.
+
+       in.mad_svc
+               Mad service definition.
+
+       out.status
+               Status of the operation.
+
+       out.h_mad_svc
+               Handle to the mad service.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_reg_mem_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_reg_mem_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_reg_mem
+
+

SYNOPSIS

+
typedef union _ual_reg_mem_ioctl
+{
+        struct _ual_reg_mem_ioctl_in
+        {
+                uint64_t                                        h_pd;
+                ib_mr_create_t                          mem_create;
+
+        }       in;
+        struct _ual_reg_mem_ioctl_out
+        {
+                ib_api_status_t                         status;
+                net32_t                                         lkey;
+                net32_t                                         rkey;
+                uint64_t                                        h_mr;
+
+        }       out;
+
+}       ual_reg_mem_ioctl_t;
+
+

FIELDS

+
       in.h_pd
+               Handle to the protection domain on which to register the memory.
+
+       in.mem_create
+               Information for registering the memory region.
+
+       out.status
+               Status of the operation.
+
+       out.lkey
+               LKey value returned by verb.
+
+       out.rkey
+               RKey value returned by verb.
+
+       h_mr
+               Handle to the registered memory region.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_reg_pnp_ioctl_in_t

+ +

[top][index]

+

NAME

+
       ual_reg_pnp_ioctl_in_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input parameters for registering
+       for PnP events.
+
+

SYNOPSIS

+
typedef struct _ual_reg_pnp_ioctl_in
+{
+        ib_pnp_class_t                          pnp_class;
+        void* __ptr64                           sync_event;
+        ib_api_status_t* __ptr64        p_status;
+        uint64_t* __ptr64                       p_hdl;
+
+}       ual_reg_pnp_ioctl_in_t;
+
+

NOTES

+
       This is an asynchronous IOCTL.
+
+       The output parameters are a ual_rearm_pnp_ioctl_out_t.
+
+

PARAMETERS

+
       pnp_class
+               Class of PnP events for which to register.
+
+       p_status
+               Pointer to user-mode status variable to set in failure case.
+
+       p_hdl
+               Pointer to user-mode handle variable to set in success case.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_reg_shared_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_reg_shared_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_reg_shared
+
+

SYNOPSIS

+
typedef union _ual_reg_shared_ioctl
+{
+        struct _ual_reg_shared_ioctl_in
+        {
+                uint64_t                                        h_mr;
+                uint64_t                                        h_pd;
+                ib_access_t                                     access_ctrl;
+                uint64_t                                        vaddr;
+
+        }       in;
+        struct _ual_reg_shared_ioctl_out
+        {
+                ib_api_status_t                         status;
+                uint64_t                                        vaddr;
+                net32_t                                         lkey;
+                net32_t                                         rkey;
+                uint64_t                                        h_new_mr;
+
+        }       out;
+
+}       ual_reg_shared_ioctl_t;
+
+

FIELDS

+
       in.h_mr
+               A handle to the existing registered memory region.
+
+       in.h_pd
+               A handle to the PD on which memory is being registered.
+
+       in.access_ctrl
+               Access control for the new memory region.
+
+       in.vaddr
+               Requested virtual address.
+
+       out.status
+               Status of the operation.
+
+       out.vaddr
+               Actual virtual address of the registered region.
+
+       out.l_key
+               LKey of the memory region.
+
+       out.rkey
+               RKey of the memory region.
+
+       h_new_mr
+               Handle to the registered memory region.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_reg_shmid_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_reg_shmid_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_create_shmid
+
+

SYNOPSIS

+
typedef union _ual_reg_shmid_ioctl
+{
+        struct _ual_reg_shmid_ioctl_in
+        {
+                uint64_t                                        h_pd;
+                ib_shmid_t                                      shmid;
+                ib_mr_create_t                          mr_create;
+
+        }       in;
+        struct _ual_reg_shmid_ioctl_out
+        {
+                ib_api_status_t                         status;
+                uint64_t                                        vaddr;
+                net32_t                                         lkey;
+                net32_t                                         rkey;
+                uint64_t                                        h_mr;
+
+        }       out;
+
+}       ual_reg_shmid_ioctl_t;
+
+

PARAMETERS

+
       in.h_pd
+               A handle to an existing protection domain that the memory
+               should be registered with.
+
+       in.shmid
+               An identifier to the shared memory region.
+
+       in.mr_create
+               Information describing the attributes of the memory region to
+               register.
+
+       out.status
+               Status of the operation.
+
+       out.vaddr
+               Assigned I/O virtual address for the memory region.
+
+       out.lkey
+               The local access key associated with this registered memory
+               region.
+
+       out.rkey
+               A key that may be used by a remote end-point when performing RDMA
+               or atomic operations to this registered memory region.
+
+       out.h_mr
+               Upon successful completion of this call, this references a handle
+               to the registered memory region.  This handle is used when performing
+               data transfers and to deregister the memory.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_rereg_mem_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_rereg_mem_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_modify_mr
+
+

SYNOPSIS

+
typedef union _ual_rereg_mem_ioctl
+{
+        struct _ual_rereg_mem_ioctl_in
+        {
+                uint64_t                                        h_mr;
+                ib_mr_mod_t                                     mem_mod_mask;
+                ib_mr_create_t                          mem_create;
+                uint64_t                                        h_pd;
+
+        }       in;
+        struct _ual_rereg_mem_ioctl_out
+        {
+                ib_api_status_t                         status;
+                net32_t                                         lkey;
+                net32_t                                         rkey;
+
+        }       out;
+
+}       ual_rereg_mem_ioctl_t;
+
+

FIELDS

+
       in.h_mr
+               A handle to a registered memory region that is being modified.
+
+       in.mem_mod_mask
+               The attributes to use when modifying the memory region.
+
+       in.mem_create
+               Information to use for modifying the memory region.  Required only
+               for changes other than the PD.
+
+       in.h_pd
+               PD Handle for changing protection domains.
+
+       out.status
+               Status of the operation.
+
+       out.l_key
+               LKey of the memory region.
+
+       out.rkey
+               RKey of the memory region.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_send_mad_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_send_mad_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_send_mad
+
+

SYNOPSIS

+
typedef union _ual_send_mad_ioctl
+{
+        struct _ual_send_mad_ioctl_in
+        {
+                uint64_t                                                h_mad_svc;
+                uint64_t                                                pool_key;
+                uint64_t                                                h_av;
+                ib_mad_element_t* __ptr64               p_mad_element;
+                uint32_t                                                size;
+                void* __ptr64* __ptr64          ph_proxy;
+
+        }       in;
+        struct _ual_send_mad_ioctl_out
+        {
+                ib_api_status_t                                 status;
+
+        }       out;
+
+}       ual_send_mad_ioctl_t;
+
+

FIELDS

+
       in.h_mad_svc
+               Handle to the mad service.
+
+       in.pool_key
+               Pool key associated with the pool in kernel space.
+
+       in.h_av
+               handle to address vector of MAD.
+
+       in.p_mad_element
+               Pointer to the user-mode MAD element.  The proxy marshals this data.
+
+       in.size
+               size of MAD buffer to send.
+
+       in.ph_proxy
+               Location to which to write the context used to cancel the MAD.
+
+       out.status
+               Status of the operation.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_send_sa_req_t

+ +

[top][index]

+

NAME

+
       ual_send_sa_req_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters for
+       ib_create_shmid
+
+

SYNOPSIS

+
typedef union _ual_send_sa_req_ioctl
+{
+        struct _ual_send_sa_req_ioctl_in
+        {
+                net64_t                                         port_guid;
+                uint32_t                                        timeout_ms;
+                uint32_t                                        retry_cnt;
+                ib_user_query_t                         sa_req;
+                uint8_t                                         attr[IB_SA_DATA_SIZE];
+                uint64_t* __ptr64                       ph_sa_req;
+                ib_api_status_t* __ptr64        p_status;
+
+        }       in;
+        struct _ual_send_sa_req_ioctl_out
+        {
+                ib_api_status_t                         status;
+                uint64_t                                        h_resp;
+                uint32_t                                        resp_size;
+
+        }       out;
+
+}       ual_send_sa_req_ioctl_t;
+
+

PARAMETERS

+
       in.sa_mad_data
+               The SA request to send.
+
+       in.attr
+               The SA attribute data to send.
+
+       in.ph_sa_req
+               Pointer to UAL's query handle.  The proxy fills this in
+               before returning from the IOCTL handler to allow cancelation.
+
+       in.p_status
+               Pointer to status of the query.
+
+       out.status
+               Status of the query if it was initiated successfully.
+
+       out.h_resp
+               Handle to a response MAD.
+
+       out.resp_size
+               Size, in bytes, of the response MAD's buffer.
+
+
+
+ +

[Structures] +User-mode Access Layer/ual_spl_qp_ioctl_t

+ +

[top][index]

+

NAME

+
       ual_spl_qp_ioctl_t
+
+

DESCRIPTION

+
       IOCTL structure containing the input and output parameters to get
+       the alias qp from KAL.
+
+

SYNOPSIS

+
typedef union _ual_spl_qp_ioctl
+{
+        struct _ual_spl_qp_ioctl_in
+        {
+                ci_umv_buf_t                            umv_buf;
+                uint64_t                                        h_pd;
+                ib_net64_t                                      port_guid;
+                ib_qp_create_t                          qp_create;
+                void* __ptr64                           context;
+
+        }       in;
+        struct _ual_spl_qp_ioctl_out
+        {
+                ci_umv_buf_t                            umv_buf;
+                ib_api_status_t                         status;
+                uint64_t                                        h_qp;
+
+        }       out;
+
+}       ual_spl_qp_ioctl_t;
+
+

FIELDS

+
       in.h_pd
+               Protection domain for the special qp.
+
+       in.port_guid
+               Port GUID on which to allocate the special QP.
+
+       in.qp_create
+               Special QP creation parameters.
+
+       in.qp_context
+               Context to associate with the QP, to be used in any notifications.
+
+       out.status
+               Status of the operation.
+
+       out.h_qp
+               Handle to the special QP.
+
+
+ + diff --git a/trunk/docs/iba/ib_ci_h.html b/trunk/docs/iba/ib_ci_h.html new file mode 100644 index 00000000..997a904a --- /dev/null +++ b/trunk/docs/iba/ib_ci_h.html @@ -0,0 +1,2719 @@ + + + + +./inc_doc/iba/ib_ci_h.html + + + + +Generated from ./inc/iba/ib_ci.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:23 +
+
+ +

[Modules] +IB_API/Verbs

+ +

[top][index]

+

NAME

+
       Verbs -- Verbs implements the hardware and software glue to the OS layer.
+
+

COPYRIGHT

+
       Copyright© 2001 Intel Corporation - All Rights Reserved.
+
+

DESCRIPTION

+
       The Verbs API definition defines the interface mechanism between an IHV
+       supplied driver component. It implements verbs functionality as defined
+       Volume 1, of the InfiniBand(tm) specifications.
+
+

AUTHOR

+
       Intel Corporation
+
+

CREATION DATE

+
       XX.XX.XX
+
+

NOTES

+
       Evolving Spec!!
+       Invalid Handle checks are a mere signature checks in kernel mode. Hence
+       passing invalid pointer would lead to panics in the kernel. For user mode
+       These are verified for most verbs that need to take a kernel transition.
+       Verbs those are entirely done in user mode that would affect speed path
+       do not perform consistency checks. So invalid pointers would lead to
+       application crash with core dumps.
+
+
+
+ +

[Functions] +Verbs/ci_allocate_pd

+ +

[top][parent][index]

+

NAME

+
       ci_allocate_pd -- Allocate a protection domain for this adapter.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_allocate_pd) (
+        IN              const   ib_ca_handle_t                          h_ca,
+        IN              const   ib_pd_type_t                            type,
+                OUT                     ib_pd_handle_t                          *ph_pd,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       This routine allocates a protection domain handle, which is later
+       used to create QP's, Register Memory Regions, Bind Memory Windows
+       and address vectors. Protection domain has no InfiniBand architectural
+       attributes but the OS implements policy on its usage and allocation.
+
+

PARAMETERS

+
       h_ca
+               [in] Handle returned by ci_open_ca()
+
+       type
+               [in] Type of the protection domain.  CA vendors may use this
+               information to optimize how the PD is allocated.
+
+       ph_pd
+               [out] The handle to the newly created protection domain
+
+       p_umv_buf
+               [in/out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               PD is successfully allocated and the ph_pd is valid.
+
+       IB_INSUFFICIENT_RESOURCES
+               No more PD's available for this adapter.
+
+       IB_INVALID_CA_HANDLE
+               HCA handle is not valid
+
+

SEE ALSO

+
       ci_deallocate_pd
+
+
+
+ +

[Functions] +Verbs/ci_async_event_cb_t

+ +

[top][parent][index]

+

NAME

+
       ci_async_event_cb_t
+
+

DESCRIPTION

+
       Asynchronous event notification routine.
+
+

SYNOPSIS

+
typedef void
+(*ci_async_event_cb_t)(
+        IN      const   ib_event_rec_t* const                   p_event_record );
+
+

PARAMETERS

+
       p_event_record
+               [in] Information describing the type of event that has occurred.
+
+

NOTES

+
       This routine is called when an asynchronous event is generated by a
+       channel adapter.  The event notification record passed has relevant
+       information on the type of the event, the source that caused the event,
+       and the context associated.
+
+
+
+ +

[Functions] +Verbs/ci_attach_mcast

+ +

[top][parent][index]

+

NAME

+
       ci_attach_mcast -- Attach a queue pair to a multicast group
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_attach_mcast) (
+        IN              const   ib_qp_handle_t                          h_qp,
+        IN              const   ib_gid_t                                        *p_mcast_gid,
+        IN              const   ib_net16_t                                      mcast_lid,
+                OUT                     ib_mcast_handle_t                       *ph_mcast,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       This routine attaches the given qp_handle to a multicast gid as specified
+       by mcast_gid parameter.
+
+

PARAMETERS

+
       h_qp
+               [in] Queue pair handle which needs to be added to the multicast group
+               on the adapter.
+       mcast_lid
+               [in] The multicast group LID value.
+       p_mcast_gid
+               [in] IPv6 address associated with this multicast group.
+       ph_mcast
+               [out] Multicast handle holding the association of this queue pair
+               to the multicast group.
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The queue pair handle was successfully added to the multicast
+               group.
+       IB_INVALID_QP_HANDLE
+               qp_handle supplied is invalid.
+       IB_INVALID_SERVICE_TYPE
+               Queue pair handle supplied is not of unreliable datagram type.
+       IB_INVALID_GID
+               The supplied addr is not a valid multicast ipv6 address.
+       IB_INVALID_LID
+               The supplied lid is not a valid multicast lid.
+       IB_UNSUPPORTED
+               Multicast is not supported by this HCA.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete request.
+       IB_INVALID_PARAMETER
+               One of the parameters was NULL.
+
+

SEE ALSO

+
       ci_create_qp, ci_detach_mcast
+
+
+
+ +

[Functions] +Verbs/ci_bind_mw

+ +

[top][parent][index]

+

NAME

+
       ci_bind_mw -- Bind a memory window to a memory region.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_bind_mw) (
+        IN              const   ib_mw_handle_t                          h_mw,
+        IN              const   ib_qp_handle_t                          h_qp,
+        IN                              ib_bind_wr_t* const                     p_mw_bind,
+                OUT                     net32_t* const                          p_rkey );
+
+

DESCRIPTION

+
       This routine posts a request to bind a memory window to a registered
+       memory region. If the queue pair was created with selectable signaling,
+       once the operation is completed successfully then a completion queue entry
+       is generated indicating the bind operation has completed. The IB_POST_FENCE
+       option could be specified to cause the requestor to wait until outstanding
+       RDMA operations can be completed.
+
+

PARAMETERS

+
       h_mw
+               [in] Handle to memory window that needs to be bound to a memory region.
+       h_qp
+               [in] Queue Pair to which this bind request is to be posted.
+       p_mw_bind
+               [in] Input parameters for this bind request, consisting of virtual
+               addr range of bind request etc.
+       p_rkey
+               [out] On successful completion, the new R_KEY is returned.
+               VPD is required to give this in the expected ordering on the wire. When
+               rkey's are exchanged between remote nodes, no swapping of this data
+               will be performed.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The memory bind operation was posted successfully.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete the request.
+               No more WQE's to post this request
+               No more free WQE's to post this request
+       IB_INVALID_MW_HANDLE
+               memw_handle supplied is an invalid memory window handle.
+       IB_INVALID_PERMISSION
+               Invalid access rights specified in request
+       IB_INVALID_SERVICE_TYPE
+               Invalid service type for this qp_handle.
+       IB_INVALID_PARAMETER
+               One of the pointers was not valid.
+       IB_INVALID_RKEY
+               R_KEY specified is invalid for the memory region being bound.
+       IB_INVALID_QP_HANDLE
+               h_qp supplied was an invalid QP handle.
+
+

NOTES

+
       - A previously bound memory window can be bound to the same or different
+       memory region.
+
+       - A bind operation with length of 0, invalidates any previous binding
+       and returns an R_KEY in the unbound state.
+
+

SEE ALSO

+
       ci_create_mw
+
+
+
+ +

[Functions] +Verbs/ci_close_ca

+ +

[top][parent][index]

+

NAME

+
       ci_close_ca -- Close access to adapter via this h_ca
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_close_ca) (
+        IN              ib_ca_handle_t  h_ca );
+
+

DESCRIPTION

+
       This routine is called when the client no longer wishes to use HCA
+       resources obtained via this h_ca. All resources allocated as part
+       this handle during the ci_open_ca are destroyed.
+
+

PARAMETERS

+
       h_ca
+               [in] CA handle returned via the ci_open_ca() call.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The intend to destroy is registered. No further calls for
+               completion or async event will be sent to this instance. When it is
+               appropriate to destroy this instance, the event h_kevent is signaled.
+       IB_RESOURCE_BUSY
+               Some resource allocated via this handle is not freed.
+       IB_INVALID_CA_HANDLE
+               h_ca is invalid
+
+

NOTES

+
       This call cannot be called from any of the notification functions invoked
+       by the Verbs driver. For e.g. the completion handler or the async error
+       callback provided during the ci_open_ca() call. The call will block until
+       all references to this adapter object is closed which includes all the
+       pending callbacks returning back to the verbs provider driver.
+
+       Resources allocated during the ci_open_ca() is deallocated. Other resource
+       cleanup are responsibility of the consumer .
+
+

SEE ALSO

+
       ci_open_ca
+
+
+
+ +

[Functions] +Verbs/ci_completion_cb_t

+ +

[top][parent][index]

+

NAME

+
       ci_completion_cb_t -- Completion Notification callback.
+
+

SYNOPSIS

+
typedef void
+(*ci_completion_cb_t)(
+        IN      void    *cq_context );
+
+

DESCRIPTION

+
       This function prototype indicates the parameter passed to ci_open_ca()
+       to receive completion callbacks.
+
+

PARAMETERS

+
       cq_context
+               [in] Completion queue context passed during the ci_create_cq
+
+

RETURN VALUE

+
       None
+
+

NOTES

+
       The consumer only gets the cq_context and ca_context. It is the client
+       responsibility to store the cq_handle in the context after the creation
+       time. So it can call ci_poll_cq() after the arrival of the notification.
+
+

SEE ALSO

+
       ci_open_ca, ci_create_cq
+
+
+
+ +

[Functions] +Verbs/ci_create_av

+ +

[top][parent][index]

+

NAME

+
       ci_create_av -- Create an address vector for use in UD.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_create_av) (
+        IN              const   ib_pd_handle_t                          h_pd,
+        IN              const   ib_av_attr_t                            *p_av_attr,
+                OUT                     ib_av_handle_t                          *ph_av,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       This routine creates an address vector for use in unreliable datagram
+       queue pairs. The information necessary to create the address vector
+       handle is supplied in the ib_av_attr_t parameter.
+
+

PARAMETERS

+
       h_pd
+               [in] Protection domain to which this av is associated.
+       p_av_attr
+               [in] Parameters to create the address vector handle
+       ph_av
+               [out] Handle to use for datagram sends.
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The create operation was successful
+       IB_INSUFFICIENT_RESOURCES
+               No more address handles are available
+       IB_INVALID_PD_HANDLE
+               The specified protection domain handle is invalid
+       IB_INVALID_PORT
+               Invalid port number supplied.
+       IB_INVALID_PARAMETER
+               One of the p_av_attr or p_av_attr was NULL.
+
+

NOTES

+
       The values in the p_av_attr is not validated for correctness. The values
+       in the attribute such as port number, protection domain etc are also
+       validated during processing by the channel adapter. If the attribute
+       validation fails a processing error IB_WCS_LOCAL_OP_ERR.
+
+

SEE ALSO

+
       ci_allocate_pd
+
+
+
+ +

[Functions] +Verbs/ci_create_cq

+ +

[top][parent][index]

+

NAME

+
       ci_create_cq -- Create a completion queue (CQ) on the specified HCA.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_create_cq) (
+        IN              const   ib_ca_handle_t                          h_ca,
+        IN              const   void                                            *cq_context,
+        IN      OUT                     uint32_t* const                         p_size,
+                OUT                     ib_cq_handle_t                          *ph_cq,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       The consumer must specify the minimum number of entries in the CQ. The
+       exact number of entries the Channel Interface created is returned to the
+       client. If the requested number of entries is larger than what this
+       HCA can support, an error is returned.
+
+

PARAMETERS

+
       h_ca
+               [in] A handle to the open HCA
+       cq_context
+               [in] The context that is passed during the completion callbacks.
+       p_size
+               [in out] Points to a variable containing the number of CQ entries
+               requested by the consumer. On completion points to the size of the
+               CQ that was created by the provider.
+       ph_cq
+               [out] Handle to the newly created CQ on successful creation.
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The operation was successful.
+       IB_INVALID_CA_HANDLE
+               The h_ca passed is invalid.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete request.
+       IB_INVALID_CQ_SIZE
+               Requested CQ Size is not supported.
+       IB_INVALID_PARAMETER
+               one of the parameters was NULL.
+
+

NOTES

+
       The consumer would need a way to retrieve the cq_handle associated with
+       context being returned, so it can perform ci_poll_cq() to retrieve
+       completion queue entries. The handle as such is not being passed, since
+       there is no information in the handle that is visible to the consumer.
+       Passing a context directly would help avoid any reverse lookup that the
+       consumer would need to perform in order to identify it's own internal
+       data-structures needed to process this completion completely.
+
+

SEE ALSO

+
       ci_destroy_cq, ci_query_cq, ci_resize_cq
+
+
+
+ +

[Functions] +Verbs/ci_create_mw

+ +

[top][parent][index]

+

NAME

+
       ci_create_mw -- Create a memory window entry for later use
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_create_mw) (
+        IN              const   ib_pd_handle_t                          h_pd,
+                OUT                     net32_t* const                          p_rkey,
+                OUT                     ib_mw_handle_t                          *ph_mw,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       This routine allocates a memory window. This window entry cannot be used
+       for remote access unless this window is bound to a memory region
+       via the ci_bind_mw call.
+
+

PARAMETERS

+
       h_pd
+               [in] Protection domain handle to use for this memory window
+       p_rkey
+               [out] Remote access key that can be exchanged with a remote node to
+               perform RDMA transactions on this memory window. This R_KEY is still not
+               bound to any memory regions, until a successful call to ci_bind_mw.
+               VPD is required to give this in the expected ordering on the wire. When
+               rkey's are exchanged between remote nodes, no swapping of this data
+               will be performed.
+       ph_mw
+               [out] Handle to the newly created memory window.
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The memory window allocation completed successfully.
+       IB_INSUFFICIENT_RESOURCES
+               Not enough resources to complete the request.
+       IB_INVALID_PD_HANDLE
+               pd_handle supplied is invalid.
+       IB_INVALID_PARAMETER
+               One of the pointers was not valid.
+
+

SEE ALSO

+
       ci_destroy_mw, ci_query_mw, ci_bind_mw
+
+
+
+ +

[Functions] +Verbs/ci_create_qp

+ +

[top][parent][index]

+

NAME

+
       ci_create_qp -- Create a Queue Pair for the specified HCA
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_create_qp) (
+        IN              const   ib_pd_handle_t                          h_pd,
+        IN              const   void                                            *qp_context,
+        IN              const   ib_qp_create_t                          *p_create_attr,
+                OUT                     ib_qp_attr_t                            *p_qp_attr,
+                OUT                     ib_qp_handle_t                          *ph_qp,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       A new queue pair is created on the specified HCA. The initial set of
+       parameters is provided by the qp_create_attr parameter. The newly created
+       queue pair, with its attributes such as the qp number is returned
+       in the qp_query_attr structure.
+
+

PARAMETERS

+
       h_pd
+               [in] Handle to Protection Domain
+       qp_context
+               [in] A user specified context passed in a asynchronous error callback.
+       p_create_attr
+               [in] Initial attributes with which the qp must be created.
+       p_qp_attr
+               [out] Attributes of the newly created queue pair.
+       ph_qp
+               [out] Handle to the queue pair newly created.
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The queue pair is successfully created with the provided initial
+               attributes.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete request.
+       IB_INVALID_PD_HANDLE
+               pd_handle supplied in the qp_create_attr is invalid
+       IB_INVALID_CQ_HANDLE
+               cq_handle supplied for send/receive is invalid.
+       IB_INVALID_SERVICE_TYPE
+               Invalid service type.
+       IB_INVALID_MAX_WRS
+               Max WRS capacity exceeded
+       IB_INVALID_MAX_SGE
+               Max Scatter gather element request exceeds HCA capability
+       IB_UNSUPPORTED
+               Unreliable datagram not supported
+       IB_INVALID_PARAMETER
+               The parameter p_create_attr is invalid.
+
+

NOTES

+
       If any of the initial parameters is not valid, the queue pair is not
+       created. If the routine call is not successful then the contents of
+       qp_query_attr and qp_handle is undefined.
+
+

SEE ALSO

+
       ci_create_spl_qp, ci_query_qp, ci_modify_qp, ci_destroy_qp
+
+
+
+ +

[Functions] +Verbs/ci_create_spl_qp

+ +

[top][parent][index]

+

NAME

+
       ci_create_spl_qp -- Create a special queue pair.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_create_spl_qp) (
+        IN              const   ib_pd_handle_t          h_pd,
+        IN              const   uint8_t                         port_num,
+        IN              const   void                            *qp_context,
+        IN              const   ib_qp_create_t          *p_create_attr,
+                OUT                     ib_qp_attr_t            *p_qp_attr,
+                OUT                     ib_qp_handle_t          *ph_qp );
+
+

DESCRIPTION

+
       Create and return a handle to for the indicated service type on the
+       specified port. QP service types can be one of SMI, GSI, Raw IPv6 or
+       Raw ether type as specified in qp_type_t.
+
+

PARAMETERS

+
       h_pd
+               [in] Handle to the PD on which the special queue pair is to be created.
+       port_num
+               [in] Port number for which this special queue pair is created.
+       qp_context
+               [in] User specified context passed during the async error callback
+               routine.
+       p_create_attr
+               [in] Initial set of attributes with which the queue pair is to be
+               created.
+       p_qp_attr
+               [out] QP attributes after the qp is successfully created.
+
+       ph_qp
+               [out] Handle to the special qp after its creation.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The special queue pair of the requested service type is created.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to satisfy the request.
+       IB_NOT_FOUND
+               Indicated port guid is not found on this HCA.
+       IB_INVALID_CQ_HANDLE
+               Invalid cq handle passed to send/receive side.
+       IB_INVALID_MAX_WRS
+               Max WRS capacity exceeded
+       IB_INVALID_MAX_SGE
+               Max Scatter gather element request exceeds HCA capability
+       IB_RESOURCE_BUSY
+               Applicable to SMI/GSI qp's. This return code means that the SMI/GSI
+               QP is already allocated.
+       IB_INVALID_PD
+               Invalid protection domain supplied.
+       IB_INVALID_PORT
+               Invalid port number supplied.
+       IB_UNSUPPORTED
+               Raw datagram unsupported.
+       IB_INVALID_PARAMETER
+               The parameter p_create_attr is not valid.
+
+

NOTES

+
       This verb is privileged and only available in kernel mode. The User mode
+       clients that need access to SMI/GSI qp's is recommended to do this via
+       a higher level of abstraction.
+
+

SEE ALSO

+
       ci_create_qp, ci_query_qp, ci_modify_qp, ci_destroy_qp
+
+
+
+ +

[Functions] +Verbs/ci_deallocate_pd

+ +

[top][parent][index]

+

NAME

+
       ci_deallocate_pd -- Deallocate a protection domain object.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_deallocate_pd) (
+        IN              ib_pd_handle_t          h_pd );
+
+

DESCRIPTION

+
       This routine deallocates a pd that is allocated via the ci_allocate_pd()
+       call. The PD cannot be deallocated if it is still bound to a QP, any memory
+       region, memory window or address vector.
+
+

PARAMETERS

+
       h_pd
+               [in] Handle allocated via the ci_allocate_pd()
+
+

RETURN VALUE

+
       IB_SUCCESS
+               PD is freed successfully
+       IB_INVALID_PD_HANDLE
+               pd_handle is invalid
+       IB_RESOURCE_BUSY
+               PD is probably still bound to some resource
+
+

SEE ALSO

+
       ci_allocate_pd
+
+
+
+ +

[Functions] +Verbs/ci_deregister_mr

+ +

[top][parent][index]

+

NAME

+
       ci_deregister_mr -- Deregister a memory region
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_deregister_mr) (
+        IN      const   ib_mr_handle_t          h_mr );
+
+

DESCRIPTION

+
       This routine deregisters  a memory region from the HCA. The region can
+       de-registered only if there are no existing memory windows bound to
+       this region, and if no existing shared memory regions were registered
+       that refers to the same set of physical pages associated with the memory
+       handle.  If there are outstanding work requests referring to this memory
+       region, then after this call is successful, those work requests will
+       complete with WRS_LOCAL_PROTECTION_ERR.
+
+

PARAMETERS

+
       h_mr
+               [in] Memory handle that is being de-registered.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The memory de-registration was successful
+       IB_INVALID_MR_HANDLE
+               The memory handle supplied is not a valid memory handle.
+       IB_RESOURCE_BUSY
+               The memory region has active windows bound.
+
+

NOTES

+

SEE ALSO

+
       ci_register_mr, ci_register_pmr, ci_register_smr
+
+
+
+ +

[Functions] +Verbs/ci_destroy_av

+ +

[top][parent][index]

+

NAME

+
       ci_destroy_av -- Destroy the address vector
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_destroy_av) (
+        IN      const   ib_av_handle_t          h_av );
+
+

DESCRIPTION

+
       This routine destroys the specified address handle. After the routine
+       returns, this address handle cannot be used to reference the destination.
+
+

PARAMETERS

+
       h_av
+               [in] Handle that needs to be destroyed.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               Operation was successful.
+       IB_INVALID_AV_HANDLE
+               The address vector handle was invalid
+
+

SEE ALSO

+
       ci_create_av
+
+
+
+ +

[Functions] +Verbs/ci_destroy_cq

+ +

[top][parent][index]

+

NAME

+
       ci_destroy_cq -- Destroy a completion queue.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_destroy_cq) (
+        IN      const   ib_cq_handle_t          h_cq );
+
+

DESCRIPTION

+
       Destroys a completion queue. If any queue pairs are still bound
+       to this CQ, the attempt to destroy will fail, and the CQ and associated
+       resources are *NOT* destroyed.
+
+

PARAMETERS

+
       cq_handle
+               [in] Handle to the cq that is to be destroyed.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The intend to destroy the completion queue is registered successfully.
+               The destroy_callback function will be invoked when it is safe and
+               guarantees that no more completion callbacks will be invoked for
+               this CQ. Any pending CQ notifications are discarded.
+       IB_INVALID_CQ_HANDLE
+               The CQ handle is invalid.
+       IB_RESOURCE_BUSY
+               Queue pairs may still be bound to this completion queue.
+       IB_INVALID_PARAMETER
+               one of the parameters was NULL.
+
+

SEE ALSO

+
       ci_create_cq
+
+

NOTES

+
       This call cannot be called from any of the notification functions invoked
+       by the Verbs driver. For e.g. the completion handler or the async error
+       callback provided during the ci_open_ca() call. The call will block until
+       all references to this adapter object is closed which includes all the
+       pending callbacks returning back to the verbs provider driver.
+
+
+
+ +

[Functions] +Verbs/ci_destroy_mw

+ +

[top][parent][index]

+

NAME

+
       ci_destroy_mw -- Destroy a memory window.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_destroy_mw) (
+        IN      const   ib_mw_handle_t          h_mw );
+
+

DESCRIPTION

+
       This routine deallocates a window entry created via a ci_create_mw.
+       Once this operation is complete, the channel interface guarantees that
+       no future remote accesses will be permitted to this window entry.
+
+

PARAMETERS

+
       h_mw
+               [in] Handle to the memory window that is being destroyed.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The destroy window request completed successfully.
+       IB_INVALID_MW_HANDLE
+               memw_handle supplied is invalid.
+
+

NOTES

+
       Deallocate memory window implicitly means the window is also unbound
+       once the call completes successfully. Any future remote access with
+       the same R_KEY should fail with protection violation.
+
+

SEE ALSO

+
       ci_create_mw
+
+
+
+ +

[Functions] +Verbs/ci_destroy_qp

+ +

[top][parent][index]

+

NAME

+
       ci_destroy_qp -- Destroy the specified Queue Pair.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_destroy_qp) (
+        IN      const   ib_qp_handle_t          h_qp,
+        IN      const   uint64_t                        timewait );
+
+

DESCRIPTION

+
       Destroys the associated QP. The QP could have outstanding work requests
+       when this call is made. Any outstanding work requests *SHALL NOT* be
+       completed after this routine returns.
+
+

PARAMETERS

+
       h_qp
+               [in] Handle to the qp that needs to be destroyed.
+       timewait
+               [in] Time (in microseconds) at which the QP should leave
+               the timewait state and can be reused.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The intend to destroy this queue pair is registered and no further
+               work requests will be processed. When no pending callbacks are in
+               progress, the destroy_callback function is invoked which marks the
+               destruction of the resource. The consumer can be guaranteed that
+               no future callbacks will be propagated on behalf of this resource.
+       IB_INVALID_QP_HANDLE
+               The handle passed is invalid.
+       IB_RESOURCE_BUSY
+               If the queue pair is a unreliable datagram service type, and
+               is still bound to a multicast group.
+
+

NOTES

+
       This call cannot be called from any of the notification functions invoked
+       by the Verbs driver. For e.g. the completion handler or the async error
+       callback provided during the ci_open_ca() call. The call will block until
+       all references to this adapter object is closed which includes all the
+       pending callbacks returning back to the verbs provider driver.
+
+       If the CQ associated with this QP is still not destroyed, the completions
+       on behalf of this QP can still be pulled via the ci_poll_cq() call. Any
+       resources allocated by the Channel Interface must be deallocated as part
+       of this call.
+
+

SEE ALSO

+
       ci_create_qp, ci_create_spl_qp
+
+
+
+ +

[Functions] +Verbs/ci_detach_mcast

+ +

[top][parent][index]

+

NAME

+
       ci_detach_mcast -- Detach a queue pair from a multicast group
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_detach_mcast) (
+        IN      const   ib_mcast_handle_t               h_mcast );
+
+

DESCRIPTION

+
       This routine detaches a queue pair from its previously associated multicast
+       group.
+
+

PARAMETERS

+
       h_mcast
+               [in] The multicast handle passed back to consumer after the
+               ci_mcast_attach call.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The qp was successfully detached from the multicast group.
+       IB_INVALID_MCAST_HANDLE
+               mcast_handle supplied is an invalid handle
+       IB_INVALID_PARAMETER
+               One of the parameters was NULL.
+
+

SEE ALSO

+
       ci_attach_mcast
+
+
+
+ +

[Functions] +Verbs/ci_enable_cq_notify

+ +

[top][parent][index]

+

NAME

+
       ci_enable_cq_notify -- Invoke the Completion handler, on next entry added.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_enable_cq_notify) (
+        IN      const   ib_cq_handle_t          h_cq,
+        IN      const   boolean_t                       solicited );
+
+

DESCRIPTION

+
       This routine instructs the channel interface to invoke the completion
+       handler when the next completion queue entry is added to this CQ.
+       Please refer to Volume 1, of the InfiniBand specification for a complete
+       description.
+
+

PARAMETERS

+
       h_cq
+               [in] Handle to the CQ on which the notification is being enabled.
+       solicited
+               [in] A boolean flag indicating whether the request is to generate a
+               notification on the next entry or on the next solicited entry
+               being added to the completion queue.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The notification request was registered successfully.
+       IB_INVALID_CQ_HANDLE
+               cq_handle supplied is not a valid handle.
+
+

NOTES

+
       The consumer cannot call a request for notification without emptying
+       entries from the CQ. i.e if a consumer registers for a notification
+       request in the completion callback before pulling entries from the
+       CQ via ci_poll_cq, the notification is not generated for completions
+       already in the CQ. For e.g. in the example below, if there are no calls
+   to ci_poll_cq()     after the ci_enable_cq_notify(). For any CQ entries added
+       before calling this ci_enable_cq_notify() call, the consumer does not
+       get a completion notification callback. In order to comply with the verb
+       spec, consumer is supposed to perform a ci_poll_cq() after the
+       ci_enable_cq_notify() is made to retrive any entries that might have
+       been added to the CQ before the CI registers the notification enable.
+
+                       while ((ret_val = ci_poll_cq(cq_handle, &free_list, &done_list)
+                               == FSUCCESS))
+                       {
+                               process entries;
+                       }
+                       if (ret_val == IB_NOT_FOUND)
+                               ci_enable_cq_notify(cq_handle);
+                       // Need to perform a ci_poll_cq()
+           // after the enable.
+
+

SEE ALSO

+
       ci_create_cq, ci_peek_cq, ci_poll_cq, ci_enable_ncomp_cq_notify
+
+
+
+ +

[Functions] +Verbs/ci_enable_ncomp_cq_notify

+ +

[top][parent][index]

+

NAME

+
       ci_enable_ncomp_cq_notify -- Invoke the Completion handler when the next
+       N completions are added.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_enable_ncomp_cq_notify) (
+        IN              const   ib_cq_handle_t                          h_cq,
+        IN              const   uint32_t                                        n_cqes );
+
+

DESCRIPTION

+
       This routine instructs the channel interface to invoke the completion
+       handler when the next N completions have been added to this CQ.
+
+

PARAMETERS

+
       h_cq
+               [in] Handle to the CQ on which the notification is being enabled.
+       n_cqes
+               [in] The number of completion queue entries to be added to the
+               completion queue before notifying the client.  This value must
+               greater than or equal to one and less than or equal to the size
+               of the completion queue.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The notification request was registered successfully.
+       IB_INVALID_CQ_HANDLE
+               cq_handle supplied is not a valid handle.
+       IB_INVALID_PARAMETER
+               The requested number of completion queue entries was invalid.
+       IB_UNSUPPORTED
+               This operation is not supported by the channel adapter.
+
+

NOTES

+
       This routine instructs the channel interface to invoke the completion
+       handler when the next N completions have been added to this CQ regardless
+       of the completion type (solicited or unsolicited).  Any CQ entries that
+       existed before the rearm is enabled will not result in a call to the
+       handler.  Support for this operation is optional by a channel adapter
+       vendor.
+
+

SEE ALSO

+
       ci_create_cq, ci_peek_cq, ci_poll_cq, ci_enable_cq_notify
+
+
+
+ +

[Structures] +Verbs/ci_interface_t

+ +

[top][parent][index]

+

NAME

+
       ci_interface_t -- Interface holding Channel Interface API's
+
+

PURPOSE

+
       The following structure is supplied by a Channel Interface
+       providing verbs functionality.
+
+

SOURCE

+
#define MAX_LIB_NAME            32
+
+typedef struct _ci_interface
+{
+        net64_t                         guid;
+
+        /*
+         * Device object of the HCA.  In Windows, this is a pointer to the PDO
+         * for the HCA device.
+         */
+        void                            *p_hca_dev;
+
+        /*
+         * Vendor ID, Device ID, Device Revision of the HCA
+         * libname refers to the user mode library to load
+         * to support direct user mode IO. If vendor does not support one
+         * then the fields must be initialized to all zero's.
+         */
+        uint32_t                        vend_id;
+        uint16_t                        dev_id;
+        uint16_t                        dev_revision;
+        char                            libname[MAX_LIB_NAME];
+        /*
+         * Version of the header file this interface export can handle
+         */
+        uint32_t                        version;
+
+        /*
+         * HCA Access Verbs
+         */
+        ci_open_ca                      open_ca;
+        ci_um_open_ca_t         um_open_ca;
+        ci_query_ca                     query_ca;
+        ci_modify_ca            modify_ca;
+        ci_close_ca                     close_ca;
+        ci_um_close_ca_t        um_close_ca;
+
+        ci_vendor_call          vendor_call;
+
+        /*
+         * Protection Domain
+         */
+        ci_allocate_pd          allocate_pd;
+        ci_deallocate_pd        deallocate_pd;
+
+        /*
+         * Address Vector Management Verbs
+         */
+
+        ci_create_av            create_av;
+        ci_query_av                     query_av;
+        ci_modify_av            modify_av;
+        ci_destroy_av           destroy_av;
+
+        /*
+         * QP Management Verbs
+         */
+        ci_create_qp            create_qp;
+        ci_create_spl_qp        create_spl_qp;
+        ci_modify_qp            modify_qp;
+        ci_query_qp                     query_qp;
+        ci_destroy_qp           destroy_qp;
+
+        /*
+         * Completion Queue Management Verbs
+         */
+        ci_create_cq            create_cq;
+        ci_resize_cq            resize_cq;
+        ci_query_cq                     query_cq;
+        ci_destroy_cq           destroy_cq;
+
+        /*
+         * Memory Management Verbs
+         */
+        ci_register_mr          register_mr;
+        ci_register_pmr         register_pmr;
+        ci_query_mr                     query_mr;
+        ci_modify_mr            modify_mr;
+        ci_modify_pmr           modify_pmr;
+        ci_register_smr         register_smr;
+        ci_deregister_mr        deregister_mr;
+
+        /*
+         * Memory Window Verbs
+         */
+        ci_create_mw            create_mw;
+        ci_query_mw                     query_mw;
+        ci_bind_mw                      bind_mw;
+        ci_destroy_mw           destroy_mw;
+
+        /*
+         * Work Request Processing Verbs
+         */
+        ci_post_send            post_send;
+        ci_post_recv            post_recv;
+
+        /*
+         * Completion Processing and
+         * Completion Notification Request Verbs.
+         */
+        ci_peek_cq                                      peek_cq;                                /* Optional */
+        ci_poll_cq                                      poll_cq;
+        ci_enable_cq_notify                     enable_cq_notify;
+        ci_enable_ncomp_cq_notify       enable_ncomp_cq_notify; /* Optional */
+
+        /*
+         * Multicast Support Verbs
+         */
+        ci_attach_mcast         attach_mcast;
+        ci_detach_mcast         detach_mcast;
+
+        /*
+         * Local MAD support, for HCA's that do not support
+         * Agents in the HW.
+         */
+        ci_local_mad            local_mad;
+
+} ci_interface_t;
+
+
+
+ +

[Functions] +Verbs/ci_local_mad

+ +

[top][parent][index]

+

NAME

+
       ci_local_mad -- Request a mad to be processed by the local adapter.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_local_mad) (
+        IN              const   ib_ca_handle_t          h_ca,
+        IN              const   uint8_t                         port_num,
+        IN              const   ib_mad_t                        *p_mad_in,
+                OUT                     ib_mad_t                        *p_mad_out );
+
+

DESCRIPTION

+
       This routine is OPTIONAL for the channel interface. This is required
+       for adapters which do not have the agents such as Subnet Management
+       agent (SMA) Or the GSA in the Verbs Provider driver.
+       hardware, for all such adapters the exact queue pair management of
+       special queue pairs happen above the channel interface. This routine
+       is used to perform local operations, since there is no agent below the
+       channel interface. For e.g: If a Subnet Management packet (SMP) to
+       set PORT_STATE is received, this reception is processed above the channel
+       interface, then this call is done to set the port state on the local
+       adapter. On successful return, the response is generated and sent to the
+       Subnet Manager.
+
+

PARAMETERS

+
       h_ca
+               [in] A handle to the channel adapter that should process the MAD.
+               This must be the same adapter that the MAD was received on.
+       port_num
+               [in] port number to which this request is directed is to be sent.
+       p_mad_in
+               [in] pointer to a management datagram (MAD) structure containing
+               the command to be processed.
+       p_mad_out
+               [out] Response packet after processing the command. The storage to this
+               must be allocated by the consumer.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               Command processed successfully.
+       IB_INVALID_CA_HANDLE
+               The HCA handle supplied is not valid.
+       IB_INVALID_PORT
+               The port number supplied is invalid.
+
+

PORTABILITY

+
       Kernel Mode only
+
+

NOTES

+
       This call is provided to aid adapters that don't have a agent functionality
+       built in the channel interface. Some adapters do have a local processor
+       to process these packets, hence even for local port management, we can
+       use the same mechanism we use to configure external nodes by using a
+       hop counter = 1 in the MAD packets. If the SMA indicates it has a local
+       sma in the ib_ca_attr_t, then the packets are posted to the adapter
+       instead of making a private call to the adapter.
+
+

SEE ALSO

+
       ci_query_ca, ci_ca_attr_t
+
+
+
+ +

[Functions] +Verbs/ci_modify_av

+ +

[top][parent][index]

+

NAME

+
       ci_modify_av -- Change the address vector referred by the av_handle
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_modify_av) (
+        IN              const   ib_av_handle_t                          h_av,
+        IN              const   ib_av_attr_t                            *p_av_attr,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       This routine allows a consumer to modify the address information
+       passed.
+
+

PARAMETERS

+
       h_av
+               [in] Address handle that needs to be updated with new info.
+       p_av_attr
+               [in] New address vector to associate with the addr_handle.
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               Operation was successful
+       IB_INVALID_AV_HANDLE
+               The address vector handle was invalid
+       IB_INVALID_PORT
+               Invalid port number passed in the Address Vector.
+       IB_INVALID_PARAMETER
+               The parameter p_av_attr is not valid.
+
+

NOTES

+
       The values in the p_av_attr is not validated for correctness. The values
+       in the attribute such as port number, protection domain etc are validated
+       during processing by the channel adapter. If the attribute validation fails
+       a processing error IB_WCS_LOCAL_OP_ERR.
+
+

SEE ALSO

+
       ci_create_av, ci_query_av
+
+
+
+ +

[Functions] +Verbs/ci_modify_ca

+ +

[top][parent][index]

+

NAME

+
       ci_modify_ca -- Modify port attributes and error counters
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_modify_ca) (
+        IN      const ib_ca_handle_t            h_ca,
+        IN      const uint8_t                           port_num,
+        IN      const ib_ca_mod_t                       ca_mod,
+        IN      const ib_port_attr_mod_t        *p_port_attr_mod );
+
+

DESCRIPTION

+
       Modifies either the P_KEY/Q_KEY violation counters, or sets the capability
+       mask in the port attributes. This is effectively translated to PORTINFO
+       values responded later when a MAD from SM or another node arrives to
+       retrieve port related attributes.
+
+

PARAMETERS

+
       h_ca
+               [in] Handle returned by previous call to ci_open_ca()
+       port_num
+               [in] Port number, which needs to be modified.
+       ca_mod
+               [in] Command mask to perform operations on.
+       p_port_attr_mod
+               [in] port attribute which needs this change to be performed.
+               if the capability bit is set, then that corresponding
+               port capability is turned on.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               Modify port attributes was performed
+       IB_INVALID_PORT
+               Invalid port number supplied in port_att.
+       IB_INVALID_PARAMETER
+               Unknown Command supplied in port_attr.
+       IB_UNSUPPORTED
+               Optional Q_KEY and P_KEY violation counters are not supported.
+       IB_INVALID_CA_HANDLE
+               h_ca is invalid
+
+

NOTES

+
 No ownership checks are performed in the Verbs Provider Driver.
+ All such permission checks are to be performed by the IB access layer
+ before passing requests down to the HCA driver. These operations can be
+ performed only by the special QP owner. Either the QP0 or QP1. Since port
+ attributes is really maintained by the QP0 for SMA to respond with correct
+ values, but the agent capability is really a QP1 functionality.
+
+

SEE ALSO

+
       ci_open_ca, ci_query_ca, ci_close_ca
+
+
+
+ +

[Functions] +Verbs/ci_modify_mr

+ +

[top][parent][index]

+

NAME

+
       ci_modify_mr -- Modify some or all parameters of a memory region.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_modify_mr) (
+        IN              const   ib_mr_handle_t                          h_mr,
+        IN              const   ib_mr_mod_t                                     mr_modify_mask,
+        IN              const   ib_mr_create_t* const           p_mr_create OPTIONAL,
+                OUT                     net32_t* const                          p_lkey,
+                OUT                     net32_t* const                          p_rkey,
+        IN              const   ib_pd_handle_t                          h_pd OPTIONAL,
+        IN                              boolean_t                                       um_call );
+
+

DESCRIPTION

+
       This routine modifies attributes of the specified memory region
+       irrespective of whether the handle was obtained via ci_register_mr
+       or ci_register_pmr. This verb conceptually performs a de-registration
+       followed by a ci_register_mr.
+
+

PARAMETERS

+
       h_mr
+               [in] Handle to the memory region whose attributes are to be modified.
+       mr_modify_mask
+               [in] Command specifying which parts of the mem_region is valid. The
+               command is specified as a bit mask.
+       p_mr_create
+               [in] Desired attributes that need to be modified for mem_handle.
+               This is an optional parameter which can be NULL if mr_modify_mask
+               is set to IB_MR_MOD_PD.
+       p_lkey
+               [out] The new l_key for this newly registered memory region.
+       p_rkey
+               [out] The new r_key for this newly registered memory region.
+               The verbs provider is required to give this in the expected ordering
+               on the wire. When rkey's are exchanged between remote nodes, no
+               swapping of this data will be performed.
+       h_pd
+               [in] This parameter is valid only if the IB_MR_MOD_PD flag is set
+               in the mr_modify_req parameter. This field supplies the new
+               protection domain to which the modified region should be
+               associated with.
+       um_call
+               [in] Boolean indicating whether the registration originated in user-mode.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The modify memory region request completed successfully.
+       IB_RESOURCE_BUSY
+               The memory region has windows bound to it.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete the request.
+       IB_INVALID_MR_HANDLE
+               The memory handle supplied is not a valid memory region handle.
+       IB_INVALID_PERMISSION
+               Invalid access rights specified.
+       IB_INVALID_PARAMETER
+               A reference to the lkey or rkey was not provided or the specified
+               modify mask is invalid.
+       IB_INVALID_SETTING
+               The specified memory region attributes are invalid.
+       IB_INVALID_PD_HANDLE
+               Protection domain handle supplied is not valid.
+
+

NOTES

+
       Remote and Atomic access settings in ib_access_ctrl_t, requires local
+       write access to be enabled.
+       TBD: How to handle shared memory region being passed to modify_mem?
+
+

SEE ALSO

+
       ci_register_mr, ci_register_pmr, ci_register_smr
+
+
+
+ +

[Functions] +Verbs/ci_modify_pmr

+ +

[top][parent][index]

+

NAME

+
       ci_modify_pmr -- Modify some or all parameters of a memory region.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_modify_pmr) (
+        IN              const   ib_mr_handle_t                          h_mr,
+        IN              const   ib_mr_mod_t                                     mr_modify_mask,
+        IN              const   ib_phys_create_t* const         p_pmr_create,
+        IN      OUT                     uint64_t* const                         p_vaddr,
+                OUT                     net32_t* const                          p_lkey,
+                OUT                     net32_t* const                          p_rkey,
+        IN              const   ib_pd_handle_t                          h_pd OPTIONAL,
+        IN                              boolean_t                                       um_call );
+
+

DESCRIPTION

+
       This routine modifies attributes of the specified memory region
+       irrespective of whether the handle was obtained via ci_register_mr
+       or ci_register_pmr. This verb conceptually performs a de-registration
+       followed by a ci_register_pmr.
+
+

PARAMETERS

+
       h_mr
+               [in] Handle to the memory region whose attributes are to be modified.
+       mr_modify_mask
+               [in] Command specifying which parts of the mem_region is valid. The
+               command is specified as a bit mask.
+       p_pmr_create
+               [in] Desired attributes that need to be modified for mem_handle.
+       p_vaddr
+               [in/out] On input, references the requested virtual address for the
+               start of the physical region.  On output, references the actual
+               virtual address assigned to the registered region.
+       p_lkey
+               [out] The new l_key for this newly registered physical memory region.
+       p_rkey
+               [out] The new r_key for this newly registered physical memory region.
+               VPD is required to give this in the expected ordering on the wire. When
+               rkey's are exchanged between remote nodes, no swapping of this data
+               will be performed.
+       h_pd
+               [in] This parameter is valid only if the IB_MR_MOD_PD flag is set
+               in the mr_modify_req parameter. This field supplies the new
+               protection domain to which the modified region should be
+               associated with.
+       um_call
+               [in] Boolean indicating whether the registration originated in user-mode.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The modify memory region request completed successfully.
+       IB_RESOURCE_BUSY
+               The memory region has windows bound to it.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete the request.
+       IB_INVALID_MR_HANDLE
+               The memory handle supplied is not a valid memory region handle.
+       IB_INVALID_PERMISSION
+               Invalid access rights specified.
+       IB_INVALID_PARAMETER
+               A reference to the virtual address, lkey, rkey was not provided or
+               the specified modify mask is invalid.
+       IB_INVALID_SETTING
+               The specified memory region attributes are invalid.
+
+

PORTABILITY

+
       Kernel Mode only
+
+

NOTES

+
       Remote and Atomic access settings in ib_access_ctrl_t, requires local
+       write access to be enabled.
+
+

SEE ALSO

+
       ci_register_mr, ci_register_pmr, ci_register_smr
+
+
+
+ +

[Functions] +Verbs/ci_modify_qp

+ +

[top][parent][index]

+

NAME

+
       ci_modify_qp -- Modify attributes of the specified QP.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_modify_qp) (
+        IN              const   ib_qp_handle_t                          h_qp,
+        IN              const   ib_qp_mod_t                                     *p_modify_attr,
+                OUT                     ib_qp_attr_t                            *p_qp_attr OPTIONAL,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       This routine is used to modify the qp states or other attributes of the
+       QP. On successful completion, the requested state transition is performed
+       and the QP is transitioned to the required state.
+
+

PARAMETERS

+
       h_qp
+               [in] Handle to the queue pair whose state is to be modified.
+       p_modify_attr
+               [in] Specifies what attributes need to be modified in the qp.
+       p_qp_attr
+               [out] QP attributes after the qp is successfully created.
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The operation was successful and the QP attributes are modified
+               to the requested state.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete the requested operation.
+       IB_INVALID_QP_HANDLE
+               Invalid QP handle was passed.
+       IB_UNSUPPORTED
+               Requested operation is not supported, for e.g. Atomic operations.
+       IB_QP_INVALID_STATE
+               Invalid state transition request. Current QP state not in allowable
+               state.
+       IB_INVALID_PKEY
+               Pkey specified in modify request not valid entry in P_KEY table. Or
+               index is out of range.
+       IB_INVALID_APM_STATE
+               Invalid automatic path migration state specified in the request.
+       IB_INVALID_PARAMETER
+               The parameter p_modify_attr is not valid.
+
+

NOTES

+
       Refer to Table 79 in chapter 11, Volume 1 of the InfiniBand Specifications.
+
+

SEE ALSO

+
       ci_create_qp, ci_create_spl_qp, ci_query_qp
+
+
+
+ +

[Functions] +Verbs/ci_open_ca

+ +

[top][parent][index]

+

NAME

+
       ci_open_ca -- open and possibly obtain a handle to access the HCA.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_open_ca) (
+        IN              const   ib_net64_t                                      ca_guid,
+        IN              const   ci_completion_cb_t                      pfn_completion_cb,
+        IN              const   ci_async_event_cb_t                     pfn_async_event_cb,
+        IN              const   void* const                                     ca_context,
+                OUT                     ib_ca_handle_t                          *ph_ca );
+
+

DESCRIPTION

+
       This routine returns a handle to an open instance of a HCA. Client can call
+       this routine to retrieve a new open instance. Only one instance of the
+       open call is active at any time. If a duplicate open is called by the
+       consumer or any other consumer, it IB_RESOURCE_BUSY error status is
+       returned.
+
+

PARAMETERS

+
       ca_guid
+               [in] The HCA adapter's EUI64 identifier. Clients would use other
+               enumeration API's to locate all available adapters and their
+               guids in a system, e.g. GetCaGuids(), maintained by the IB
+               Access Layer. User mode consumers also have the same mechanism
+               to retrieve this information.
+       pfn_completion_cb
+               [in] Completion Handler, one per open instance.
+       pfn_async_event_cb
+               [in] Asynchronous event handler, one per open instance.
+       ca_context
+               [in] Verbs consumer supplied value, which is returned on calls to
+               handlers which in turn is used by clients to identify the
+               open instance.
+       ph_ca
+               [out] Pointer to a handle to the newly open instance of the CA returned
+               by the Verbs Provider.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The HCA is successfully opened and returned handle is valid.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to satisfy request.
+       IB_INVALID_PARAMETER
+               Callback routine are not provided, GUID value is zero, or ph_ca is NULL
+       IB_RESOURCE_BUSY
+               The interface is already open by another consumer.
+       IB_NOT_FOUND
+               ca_guid passed is not valid
+
+

SEE ALSO

+
       ci_query_ca, ci_modify_ca, ci_close_ca
+
+
+
+ +

[Functions] +Verbs/ci_peek_cq

+ +

[top][parent][index]

+

NAME

+
       ci_peek_cq
+
+

DESCRIPTION

+
       Returns the number of entries currently on the completion queue.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_peek_cq) (
+        IN              const   ib_cq_handle_t                          h_cq,
+        OUT                             uint32_t* const                         p_n_cqes );
+
+

PARAMETERS

+
       h_cq
+               [in] Handle to the completion queue to peek.
+
+       p_n_cqes
+               [out] The number of completion entries on the CQ.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The peek operation completed successfully.
+       IB_INVALID_CQ_HANDLE
+               The completion queue handle was invalid.
+       IB_INVALID_PARAMETER
+               A reference to the completion queue entry count was not provided.
+       IB_UNSUPPORTED
+               This operation is not supported by the channel adapter.
+
+

NOTES

+
       The value returned is a snapshot of the number of compleiton queue
+       entries curently on the completion queue.  Support for this operation
+       is optional by a channel adapter vendor.
+
+

SEE ALSO

+
       ci_create_cq, ci_poll_cq, ci_enable_cq_notify, ci_enable_ncomp_cq_notify
+
+
+
+ +

[Functions] +Verbs/ci_poll_cq

+ +

[top][parent][index]

+

NAME

+
       ci_poll_cq -- Retrieve a work completion record from a completion queue
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_poll_cq) (
+        IN              const   ib_cq_handle_t                          h_cq,
+        IN      OUT                     ib_wc_t** const                         pp_free_wclist,
+                OUT                     ib_wc_t** const                         pp_done_wclist );
+
+

DESCRIPTION

+
       This routine retrieves a work completion entry from the specified
+       completion queue. The contents of the data returned in a work completion
+       is specified in ib_wc_t.
+
+

PARAMETERS

+
       h_cq
+               [in] Handle to the completion queue being polled.
+       pp_free_wclist
+               [in out] A list of work request structures provided by the consumer
+               for the channel interface to return completed Completion Queue
+               entries.  If not all the entries are consumed, this list holds the
+               list of un-utilized completion entries provided back to the consumer.
+       pp_done_wclist
+               [out] A list of work completions retrieved from the completion queue
+               and successfully processed.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               Poll completed successfully and found one or more entries. If on
+               completion the pp_free_wclist is empty, then there are potentially more
+               entries and the consumer must continue to retrieve entries.
+       IB_INVALID_CQ_HANDLE
+               The cq_handle supplied is not valid.
+       IB_NOT_FOUND
+               There were no completion entries found in the specified CQ.
+
+

SEE ALSO

+
       ci_create_cq, ci_post_send, ci_post_recv, ci_bind_mw
+
+
+
+ +

[Functions] +Verbs/ci_post_recv

+ +

[top][parent][index]

+

NAME

+
       ci_post_recv -- Post a work request to the receive queue of a queue pair.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_post_recv) (
+        IN              const   ib_qp_handle_t                  h_qp,
+        IN                              ib_recv_wr_t*   const   p_recv_wr,
+                OUT                     ib_recv_wr_t                    **pp_failed );
+
+

DESCRIPTION

+
       This routine allows to queue a work request to the receive side of a
+       queue pair. The work_req holds necessary data to satisfy an incoming
+       receive message. If an attempt is made to queue more work requests than
+       what is available, an error is returned.
+
+

PARAMETERS

+
       h_qp
+               [in] Handle to the queue pair to which the receive work request is being
+               posted.
+       p_recv_wr
+               [in] Holds the WRs to be posted to the receive queue.
+       pp_failed
+               [out] If any entry could not be posted with the CI, then this points
+               to the first WR that completed unsuccessfully. If all entries are
+               posted, then this field is set to NULL on successful exit.
+
+

RETURN VALUE

+
       Any unsuccessful status indicates the status of the first failed request.
+
+       IB_SUCCESS
+               The work request was successfully queued to the receive side of the QP.
+       IB_INVALID_QP_HANDLE
+               qp_handle supplied is not valid.
+       IB_INSUFFICIENT_RESOURCES
+               The qp has exceeded its receive queue depth than what is has been
+               configured.
+       IB_INVALID_WR_TYPE
+               Invalid work request type found in the request.
+       IB_INVALID_QP_STATE
+               QP was in reset or init state.
+               (TBD: there may be an errata that allows posting in init state)
+
+

SEE ALSO

+
       ci_post_send, ci_poll_cq.
+
+
+
+ +

[Functions] +Verbs/ci_post_send

+ +

[top][parent][index]

+

NAME

+
       ci_post_send -- Post a work request to the send side of a queue pair.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_post_send) (
+        IN              const   ib_qp_handle_t                  h_qp,
+        IN                              ib_send_wr_t*   const   p_send_wr,
+                OUT                     ib_send_wr_t                    **pp_failed );
+
+

DESCRIPTION

+
       This routine posts a work request to the send side of the queue pair.
+       The different types of work request that can be posted are explained in
+       the ib_wr_t structure. For exact details on ordering rules please consult
+       the Volume 1, of the InfiniBand Specifications. If there is more
+       outstanding requests posted that what the queue is configured for, an
+       immediate error is returned.
+
+

PARAMETERS

+
       h_qp
+               [in] The queue pair to which this work request is being submitted.
+       p_send_wr
+               [in] A pointer to the head of the list that must be posted to the
+               Send Queue.
+       pp_failed
+               [out] A pointer to the head of the list that holds the failed WRs.
+               If all the entries provided are posted with the CI, then this parameter
+               would be set to NULL.
+
+

RETURN VALUE

+
       Any unsuccessful status indicates the status of the first failed request.
+
+       IB_SUCCESS
+               All the work requests are completed successfully
+       IB_INVALID_QP_HANDLE
+               The qp_handle supplied is invalid.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete the request.
+               There are no more work elements in the channel interface to
+               process this request, and the total outstanding work request has
+               been exceeded.
+       IB_INVALID_WR_TYPE
+               The work request type was not valid.
+       IB_INVALID_QP_STATE
+               The queue pair is either in Reset, Init, RTR or Error state.
+       IB_INVALID_MAX_SGE
+               The work request has too many scatter gather elements than what the
+               QP is configured.
+       IB_UNSUPPORTED
+               Atomics or Reliable datagram request is not supported by this HCA.
+       IB_INVALID_ADDR_HANDLE
+               Address handle supplied in the work request is invalid.
+
+

NOTES

+
       Please refer to Table 81 and Table 82 for allowed operation types
+       on different types of queue pairs, and the different modifiers
+       acceptable for the work request for different QP service types.
+
+

SEE ALSO

+
       ci_post_recv, ci_poll_cq
+
+
+
+ +

[Functions] +Verbs/ci_query_av

+ +

[top][parent][index]

+

NAME

+
       ci_query_av -- Obtain the address vector associated with the handle
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_query_av) (
+        IN              const   ib_av_handle_t                          h_av,
+                OUT                     ib_av_attr_t                            *p_av_attr,
+                OUT                     ib_pd_handle_t                          *ph_pd,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       This routine returns the address vector and pd_handle associated with the
+       av_handle.
+
+

PARAMETERS

+
       h_av
+               [in] Handle to the address vector
+       p_av_attr
+               [out] address vector data referred by the av_handle
+       ph_pd
+               [out] pd handle associated with the av_handle
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               returned values are valid
+       IB_INVALID_AV_HANDLE
+               The address vector handle was invalid
+       IB_INVALID_PARAMETER
+               One of the p_av_attr or ph_pd parameters was NULL.
+       IB_INVALID_PORT
+               Invalid port number passed in the Address Vector.
+
+

SEE ALSO

+
       ci_create_av, ci_modify_av
+
+
+
+ +

[Functions] +Verbs/ci_query_ca

+ +

[top][parent][index]

+

NAME

+
       ci_query_ca -- Query the attributes of the HCA
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_query_ca) (
+        IN              const   ib_ca_handle_t                          h_ca,
+                OUT                     ib_ca_attr_t                            *p_ca_attr OPTIONAL,
+        IN      OUT                     uint32_t                                        *p_size,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       This routine retrieves vital information about this hca. It returns
+       necessary information about HCA guid, port guids, LID's assigned by
+       the master SM. Clients can use this information to communicate with the
+       Master SM node to perform path queries etc.
+
+

PARAMETERS

+
       h_ca
+               [in] Handle returned by an earlier call to ci_open_ca()
+       p_ca_attr
+               [out] CA attribute of this Host Channel adapter
+       p_size
+               [in/out] On input, this references the size of the data buffer
+               referenced by the p_ca_attr parameter.
+               On output, the number of bytes used or needed to copy all CA
+               attribute information.
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The attribute structure is returned completely.
+       IB_INSUFFICIENT_MEMORY
+               The size of the p_ca_attr buffer, specified through p_size, is
+               insufficient to store all of the CA attribute information.
+       IB_INVALID_CA_HANDLE
+               h_ca is invalid
+       IB_INVALID_PARAMETER
+               p_size is NULL.
+
+

NOTES

+
       Users may obtain the size of the data buffer required to obtain the
+       CA attributes by calling this function with p_ca_attr set to NULL.
+       The channel interface will then return the necessary size in the
+       variable referenced by the p_size parameter.  The caller can then allocate
+       exact size and call this routine again. No partial information is returned
+       if the size is not sufficient.
+
+

SEE ALSO

+
       ci_open_ca, ci_modify_ca
+
+
+
+ +

[Functions] +Verbs/ci_query_cq

+ +

[top][parent][index]

+

NAME

+
       ci_query_cq -- Query the number of entries configured for the CQ.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_query_cq) (
+        IN              const   ib_cq_handle_t                          h_cq,
+                OUT                     uint32_t                                        *p_size,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       This routine returns the maximum number of entries this completion
+       queue is configured.
+
+

PARAMETERS

+
       h_cq
+               [in] Handle to the completion queue
+       p_size
+               [out] The number of entries the completion queue is configured to hold
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The call completed successfully, and the returned values are valid
+       IB_INVALID_CQ_HANDLE
+               The cq_handle passed is invalid.
+       IB_INVALID_PARAMETER
+               one of the parameters was NULL.
+
+

SEE ALSO

+
       ci_create_cq, ci_resize_cq
+
+
+
+ +

[Functions] +Verbs/ci_query_mr

+ +

[top][parent][index]

+

NAME

+
       ci_query_mr -- Query attributes of a registered memory region
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_query_mr) (
+        IN              const   ib_mr_handle_t                  h_mr,
+                OUT                     ib_mr_attr_t*   const   p_mr_query );
+
+

DESCRIPTION

+
       This routine retrieves the memory region attributed of a
+       registered memory region. The memory handle could have been
+       obtained via ci_register_mr or ci_register_pmr.
+
+

PARAMETERS

+
       h_mr
+               [in] Memory handle for which the attributes need to be retrieved.
+       p_mr_query
+               [out] Attributes of the memory region associated with memory handle.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The routine completed successfully and attributes returned
+               are valid.
+       IB_INVALID_MR_HANDLE
+               The memory handle is not valid.
+       IB_INVALID_PARAMETER
+               One of the input pointers was NULL.
+
+

NOTES

+
       Invalid handle checks are a mere signature checks in kernel mode.
+       Drivers in kernel are expected to be good corporate citizens.
+       In user mode, proper ownership is determined before passing handles
+       down to kernel to protect from rogue applications.
+
+

SEE ALSO

+
       ci_register_mr, ci_register_pmr
+
+
+
+ +

[Functions] +Verbs/ci_query_mw

+ +

[top][parent][index]

+

NAME

+
       ci_query_mw -- Query memory window attributes for memory window handle
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_query_mw) (
+        IN              const   ib_mw_handle_t                          h_mw,
+                OUT                     ib_pd_handle_t                          *ph_pd,
+                OUT                     net32_t* const                          p_rkey,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       This routine retrieves the current R_KEY and protection domain
+       handle associated with this mw_handle.
+
+

PARAMETERS

+
       h_mw
+               [in] Memory window handle whose attributes are being retrieved.
+       ph_pd
+               [out] Protection domain handle associated with this mw_handle
+       p_rkey
+               [out] Current R_KEY associated with this mw_handle.The verbs provider
+               is required to give this in the expected ordering on the wire. When
+               rkey's are exchanged between remote nodes, no swapping of this data
+               will be performed.
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The query operation completed successfully.
+       IB_INVALID_MW_HANDLE
+               mw_handle supplied is an invalid handle
+       IB_INVALID_PARAMETER
+               One of the pointers was not valid.
+
+

SEE ALSO

+
       ci_create_mw, ci_bind_mw
+
+
+
+ +

[Functions] +Verbs/ci_query_qp

+ +

[top][parent][index]

+

NAME

+
       ci_query_qp -- Query the current QP attributes
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_query_qp) (
+        IN              const   ib_qp_handle_t                          h_qp,
+                OUT                     ib_qp_attr_t* const                     p_qp_attr,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       This routine queries the current attributes for the QP
+       corresponding to h_qp. The attributes are returned in p_query_attr.
+       Depending on the current state of the QP, some of the fields in the
+       attribute structure may not be valid.
+
+

PARAMETERS

+
       h_qp
+               [in] Handle to the QP for which the attributes are being retrieved
+       p_qp_attr
+               [out] Pointer to the ib_qp_query_t structure where the current
+               attributes of the QP is returned.
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The values returned in p_qp_attr are valid.
+       IB_INVALID_QP_HANDLE
+               The h_qp supplied is not a valid handle.
+       IB_INVALID_PARAMETER
+               Parameter p_qp_attr is not valid.
+
+

SEE ALSO

+
       ci_create_qp
+
+
+
+ +

[Functions] +Verbs/ci_register_mr

+ +

[top][parent][index]

+

NAME

+
       ci_register_mr -- Register a memory region with the HCA.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_register_mr) (
+        IN              const   ib_pd_handle_t                          h_pd,
+        IN              const   ib_mr_create_t* const           p_mr_create,
+                OUT                     net32_t* const                          p_lkey,
+                OUT                     net32_t* const                          p_rkey,
+                OUT                     ib_mr_handle_t* const           ph_mr,
+        IN                              boolean_t                                       um_call );
+
+

DESCRIPTION

+
       This routine registers a virtually contiguous region of memory with the
+       HCA. All memory regions that need to be used by the HCA must be registered
+       prior to use in data transfer operations. On successful completion
+       the region handle, lkey are returned. If remote access rights are specified
+       then the rkey is also returned.
+
+

PARAMETERS

+
       h_pd
+               [in] Handle to the PD on which memory is being registered
+       p_mr_create
+               [in] Holds attributes for the region being registered. Look at
+               ib_mr_create_t for more details.
+       p_lkey
+               [out] Local Key Attributes of the registered memory region
+       p_rkey
+               [out] Remote key of the registered memory region. The verbs provider
+               is required to give this in the expected ordering on the wire. When
+               rkey's are exchanged between remote nodes, no swapping of this data
+               will be performed.
+       ph_mr
+               [out] Handle to the registered memory region. This handle is used when
+               submitting work requests to refer to this region of memory.
+       um_call
+               [in] Boolean indicating whether the registration originated in user-mode.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               Registration with the adapter was successful.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to satisfy request.
+       IB_INVALID_PARAMETER
+               One of the input pointers was NULL.
+       IB_INVALID_PD_HANDLE
+               Invalid mr_pdhandle
+       IB_INVALID_PERMISSION
+               Invalid access rights.
+
+

NOTES

+
       In addition to registration, the routine also pins memory, so that the
+       physical page associated with the virtual address does not get swapped
+       out during the time the HCA is attempting to transfer data to this
+       address. If the memory is not pinned, this could lead to data-corruption
+       and unpredictable behavior by the operating environment.
+
+

SEE ALSO

+
       ci_deregister_mr, ci_query_mr, ci_register_pmr, ci_modify_mr,
+       ci_register_smr
+
+
+
+ +

[Functions] +Verbs/ci_register_pmr

+ +

[top][parent][index]

+

NAME

+
       ci_register_pmr -- Register a physical memory region with the HCA.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_register_pmr) (
+        IN              const   ib_pd_handle_t                          h_pd,
+        IN              const   ib_phys_create_t*const          p_pmr_create,
+        IN      OUT                     uint64_t* const                         p_vaddr,
+                OUT                     net32_t* const                          p_lkey,
+                OUT                     net32_t* const                          p_rkey,
+                OUT                     ib_mr_handle_t* const           ph_mr,
+        IN                              boolean_t                                       um_call );
+
+

DESCRIPTION

+
       This routine registers an array of physical pages as a single virtually
+       contiguous region with the HCA. All memory regions that need to be used by
+       the HCA must be registered prior to use in data transfer operations.
+       On successful completion the region handle, lkey and rkey used for
+       local and remote access authentication are returned.
+
+

PARAMETERS

+
       h_pd
+               [in] Handle to the PD on which memory is being registered
+       p_pmr_create
+               [in] Holds attributes for the region being registered.
+       p_vaddr
+               [in/out] On input, references the requested virtual address for the
+               start of the physical region.  On output, references the actual
+               virtual address assigned to the registered region.
+       p_lkey
+               [out] Local key of the registered memory region
+       p_rkey
+               [out] Remote key of the registered memory region.The verbs provider
+               is required to give this in the expected ordering on the wire. When
+               rkey's are exchanged between remote nodes, no swapping of this data
+               will be performed.
+       ph_mr
+               [out] Handle to the registered memory region. This handle is used when
+               submitting work requests to refer to this region of memory.
+       um_call
+               [in] Boolean indicating whether the registration originated in user-mode.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               Registration with the adapter was successful.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to satisfy request.
+       IB_INVALID_PARAMETER
+               Invalid length or address in p_mr_create. Also returned if the page_size
+               passed is not one of supported page sizes by the HCA.
+       IB_INVALID_PD_HANDLE
+               Invalid mr_pdhandle
+       IB_INVALID_PERMISSION
+               Invalid access rights.
+
+

PORTABILITY

+
       Kernel Mode only
+
+

NOTES

+
       Remote and Atomic access settings in ib_access_ctrl_t, requires local
+       write access to be enabled, otherwise IB_INVALID_PERMISSION is returned.
+       The p_vaddr returned could be different from the vaddr specified in
+       p_pmr_create.  If the requested virtual addr offset in a page does not
+       match, the channel interface is free to pick and assign a pseudo virtual
+       address. The address constructed is not a system virtual address, and only
+       meaningful to the adapter to which this registration is targeted.
+
+

SEE ALSO

+
       ci_deregister_mr, ci_query_mr, ci_register_mr, ci_modify_mr,
+       ci_register_smr
+
+
+
+ +

[Functions] +Verbs/ci_register_smr

+ +

[top][parent][index]

+

NAME

+
       ci_register_smr -- Register a memory region using same physical pages as
+                      an existing memory region.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_register_smr) (
+        IN              const   ib_mr_handle_t                          h_mr,
+        IN              const   ib_pd_handle_t                          h_pd,
+        IN              const   ib_access_t                                     access_ctrl,
+        IN      OUT                     uint64_t* const                         p_vaddr,
+                OUT                     net32_t* const                          p_lkey,
+                OUT                     net32_t* const                          p_rkey,
+                OUT                     ib_mr_handle_t* const           ph_mr,
+        IN                              boolean_t                                       um_call );
+
+

DESCRIPTION

+
       This routine registers a new memory region but shares the same set of
+       physical pages associated with memory handle. For user mode applications
+       the process *must* be owning memory handle for this call to be successful.
+
+

PARAMETERS

+
       h_mr
+               [in] Handle to memory region whose physical pages are being registered
+               by this shared registration.
+       h_pd
+               [in] Handle to the PD on which memory is being registered
+       access_ctrl
+               [in] Memory access restrictions on the registered memory.
+       p_vaddr
+               [in/out] On input, references the requested virtual address for the
+               start of the physical region.  On output, references the actual
+               virtual address assigned to the registered region.
+       p_lkey
+               [out] L_KEY for this memory region.
+       p_rkey
+               [out] R_KEY for this memory region. This is valid only when remote
+               access is enabled for this region. The verbs provider
+               is required to give this in the expected ordering on the wire. When
+               rkey's are exchanged between remote nodes, no swapping of this data
+               will be performed.
+       ph_mr
+               [out] Handle to the registered memory region. This handle is used when
+               submitting work requests to refer to this region of memory.
+       um_call
+               [in] Boolean indicating whether the registration originated in user-mode.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The call is successful and a new region handle returned is valid.
+       IB_INVALID_MR_HANDLE
+               mr_handle is invalid.
+       IB_INVALID_PD_HANDLE
+               mr_pdhandle supplied is invalid.
+       IB_INVALID_PERMISSION
+               Invalid access rights passed in mr_access.
+
+

NOTES

+
       ISSUE: how to deal with ci_deregister_mr, ci_modify_mr, ci_modify_pmr
+       should we treat them as memory windows and fail those if a shared region
+       was registered?
+
+

SEE ALSO

+
       ci_register_mr, ci_register_pmr, ci_modify_mr, ci_modify_pmr
+
+
+
+ +

[Functions] +Verbs/ci_resize_cq

+ +

[top][parent][index]

+

NAME

+
       ci_resize_cq -- Modify the maximum number of entries the CQ could hold.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_resize_cq) (
+        IN              const   ib_cq_handle_t                          h_cq,
+        IN      OUT                     uint32_t* const                         p_size,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

DESCRIPTION

+
       This routine allows the caller to modify the maximum number of entries
+       the CQ could hold. It is possible to resize the CQ while there are
+       entries in the CQ, and with outstanding work requests that will generate
+       completions. If the entries in the CQ are more than the new size which is
+       being created, an error is returned.
+
+

PARAMETERS

+
       h_cq
+               [in] Completion Queue handle
+       p_size
+               [in out] This parameter indicates the requested size of the CQ. On
+               successful completion, the current size allocated is returned in
+               this same parameter.
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The resize operation was successful.
+       IB_INVALID_CQ_HANDLE
+               The CQ handle is invalid.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete request.
+       IB_INVALID_PARAMETER
+               one of the parameters was NULL.
+       IB_INVALID_CQ_SIZE
+               Requested CQ Size is not supported.
+       IB_OVERFLOW
+               The CQ has more entries than the resize request. The CQ is not
+               modified, and old entries still exist.
+
+

NOTES

+
       If the consumer wishes to resize the CQ smaller than originally created,
+       it is recommended to retrieve all entries before performing a CQ resize
+       operation. It is left to the verb implementer on resize operations, to
+       actually reduce the entries, or leave it as it. The consumer must make no
+       assumptions on the successful completion, and should only rely on the
+       size returned in p_size.
+
+

SEE ALSO

+
       ci_create_cq
+
+
+
+ +

[Functions] +Verbs/ci_um_close_ca_t

+ +

[top][parent][index]

+

NAME

+
       ci_um_close_ca_t -- Close user-mode access to adapter via this h_ca
+
+

SYNOPSIS

+
typedef void
+(*ci_um_close_ca_t) (
+        IN                              ib_ca_handle_t                          h_ca,
+        IN                              ib_ca_handle_t                          h_um_ca );
+
+

DESCRIPTION

+
       This routine is called when the client no longer wishes to use HCA
+       resources obtained via this h_ca. All resources allocated as part
+       this handle during the ci_um_open_ca are destroyed.
+
+

PARAMETERS

+
       h_ca
+               [in] CA handle returned via the ci_open_ca() call.
+       h_um_ca
+               [in] CA handle returned via the ci_um_open_ca() call.
+
+

RETURN VALUE

+
       This funtion does not return a value.
+
+

NOTES

+
       This call is invoked from the context of a UM application when such an
+       appliation closes the HCA in user-mode.
+
+       Resources allocated during the ci_um_open_ca() are deallocated.
+
+

SEE ALSO

+
       ci_um_open_ca
+
+
+
+ +

[Functions] +Verbs/ci_um_open_ca

+ +

[top][parent][index]

+

NAME

+
       ci_um_open_ca -- Create a CA context for use by user-mode processes.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_um_open_ca_t) (
+        IN              const   ib_ca_handle_t                          h_ca,
+        IN      OUT                     ci_umv_buf_t* const                     p_umv_buf,
+                OUT                     ib_ca_handle_t* const           ph_um_ca );
+
+

DESCRIPTION

+
       This routine is used called on behalf of a user-mode application to
+       establish a per-CA context in user-mode.
+
+

PARAMETERS

+
       h_ca
+               [in] Handle returned by an earlier call to ci_open_ca()
+       p_umv_buf
+               [in/out] Vendor specific parameter to support user mode IO.
+       ph_um_ca
+               [out] Handle to pass into ci_um_close_ca call to free any kernel
+               resources allocated for the user-mode appliation.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The user-mode context information is returned successfully.
+       IB_INSUFFICIENT_MEMORY
+               The size of the p_ca_attr buffer, specified through p_size, is
+               insufficient to store all of the CA attribute information.
+       IB_INVALID_CA_HANDLE
+               h_ca is invalid
+       IB_INVALID_PARAMETER
+               The p_umv_buf parameters are insufficient to complete the request.
+
+

SEE ALSO

+
       ci_query_ca, ci_modify_ca, ci_close_ca
+
+
+
+ +

[Structures] +Verbs/ci_umv_buf_t

+ +

[top][parent][index]

+

NAME

+
       ci_umv_buf_t -- Vendor specific structure to facilitate user mode IO
+
+

DESCRIPTION

+
       This structure is provided to assist the vendor specific user mode
+       library to exchange information with its kernel mode driver. The
+       user mode InfiniBand(tm) Access Layer will call the vendor specific
+       module before a call is made to the kernel mode driver. The kernel mode
+       driver is expected to know the format and data in the p_inout_buf,
+       and copy any necessary data that must be handed to the user mode
+       vendor library.
+
+

PURPOSE

+
       command
+               A command code that is understood by the vendor specific kernel
+               mode driver.
+       p_inout_buf
+               The user mode component of the vendor specific library allocates
+               this memory and passes information in this buffer. vendor is expected
+               to set both the input and output buffer sizes appropriately.
+               This information is required since the kernel mode proxy that passes
+               this buffer to the kernel mode vendor specific library will copy the
+               content of this buffer to a kernel mode buffer. The kernel mode
+               vendor specific driver would copy the data that needs to be returned
+               to the user mode component, and set the output size appropriately
+               so that the proxy can now copy the data back to user mode buffer.
+
+               In the Infiniband Access Layer, it is important to know the
+               usage of umv_buf and whether the contents of the p_inout_buf
+               can have embedded user-mode pointers. When invoked from an
+               arbitrary thread context, Vendor driver can NOT access user-mode
+               pointers of a user-process.
+       input_size
+               Size of the input buffer, must be set by the user mode vendor
+               specific library.
+       output_size
+               Size of the output buffer. Must be set by the user mode component
+               to specify the maximum size of the data expected from its kernel
+               mode driver. The kernel mode driver would set the size to the exact
+               size that needs to be returned to its user mode counterpart.
+       status
+               Indicates the status of the operation from the kernel mode vendor
+               specific driver. The caller is supposed to initialize it appropriately
+               to identify if an operation succeded, or failed. For e.g. when
+               the user mode library is called after a resource creation, the user
+               mode vendor specific code must be able to identify if there is
+               post processing required, or if any resource allocation failed.
+
+

SOURCE

+
typedef struct _umv_buf
+{
+        uint32_t                command;
+        uint32_t                status;
+        uint32_t                input_size;
+        uint32_t                output_size;
+        void* __ptr64   p_inout_buf;
+} ci_umv_buf_t;
+
+
+
+ +

[Functions] +Verbs/ci_vendor_call

+ +

[top][parent][index]

+

NAME

+
       ci_vendor_call
+
+

DESCRIPTION

+
       Performs a vendor specific CA interface function call.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(*ci_vendor_call)(
+        IN              const   ib_ca_handle_t                          h_ca,
+        IN              const   void* __ptr64* const            handle_array    OPTIONAL,
+        IN                              uint32_t                                        num_handles,
+        IN                              ib_ci_op_t* const                       p_ci_op,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf OPTIONAL );
+
+

PARAMETERS

+
       h_ca
+               [in] A handle to an opened CA.
+
+       handle_array
+               [in] This parameter references an array containing handles of
+               existing CA resources.  This array should contain all of the
+               handles specified in the vendor specific data provided with this
+               call.  All handles specified through this array are validated by
+               the verbs provider driver to ensure that the number and type of
+               handles are correct for the requested operation.
+
+       num_handles
+               [in] The number of the handles in handle array.  This count is
+               verified by the access layer.
+
+       p_ci_op
+               [in] A reference to the vendor specific CA interface data
+               structure containing the operation parameters.
+
+       p_umv_buf
+               [in out] Vendor specific parameter to support user mode IO.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The operation was successful.
+
+       IB_INVALID_CA_HANDLE
+               The CA handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the vendor specific data was not provided.
+
+       IB_INVALID_HANDLE
+               A handle specified in the handle array was invalid.
+
+       IB_INSUFFICIENT_MEMORY
+               There was insufficient memory to perform the operation.
+
+       IB_ERROR
+               An error occurred while processing the command.  Additional
+               error information is provided in the p_ci_op status field.
+
+

NOTES

+
       This routine performs a vendor specific CA interface function call.
+       The p_ci_op structure provides a means to pass vendor specific data to
+       the verbs provider driver.  If the vendor specific data contains handles,
+       the client should provide the optional handle array that lists all of
+        all of the handles specified in the vendor specific data.  The handles
+       in the handle array are restricted to the following types:  ib_ca_handle_t,
+       ib_pd_handle_t, ib_cq_handle_t, ib_av_handle_t, ib_qp_handle_t,
+       ib_mr_handle_t, or ib_mw_handle_t
+       The contents of the handle array are verified by the
+       access layer and the verbs provider driver.
+
+

SEE ALSO

+
       ci_open_ca, ci_allocate_pd, ci_create_av, ci_create_cq,
+       ci_create_qp, ci_register_mr, ci_register_pmr,
+       ci_register_smr, ci_create_mw, ib_ci_op_t
+
+
+
+ +

[Functions] +Verbs/ib_deregister_ca

+ +

[top][parent][index]

+

NAME

+
       ib_deregister_ca -- Inform the IB Access Layer that this HCA is no longer available
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t
+ib_deregister_ca (
+        IN              const   net64_t                                         ca_guid );
+
+

DESCRIPTION

+
       This routine is called by the HCA driver when this HCA would no longer be
+       available for services. The access layer is expected to return all resources
+       back to the HCA driver, and perform a ci_close_ca on this interface.
+
+

PARAMETERS

+
       ca_guid
+               [in] GUID of the HCA that is being removed.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The deregistration is successful.
+
+       IB_NOT_FOUND
+               No HCA with the specified GUID is registered.
+
+       IB_BUSY
+               The HCA is still in use and cannot be released.
+
+

PORTABILITY

+
       Kernel Mode only
+
+

SEE ALSO

+
       ib_register_ca, ci_interface_t
+
+
+
+ +

[Functions] +Verbs/ib_register_ca

+ +

[top][parent][index]

+

NAME

+
       ib_register_ca -- Inform the IB Access Layer about a new HCA
+
+

SYNOPSIS

+
AL_EXPORT ib_api_status_t
+ib_register_ca (
+        IN              const   ci_interface_t                          *p_ci );
+
+

DESCRIPTION

+
       This routine is called by a HCA kernel mode driver to inform the
+       IB Access Layer about a new HCA that is ready for use. It is expected
+       that the Access Layer could immediatly turn around and call for services
+       even before the call returns back the HCA driver code. The HCA driver
+       must initialize all resources and be ready to service any calls before adding
+       its services to the IB Access Layer.
+
+

PARAMETERS

+
       p_ci
+               [in] Pointer to the ci_interface_t structure that has the function
+               vector to support verbs functionality.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The registration is successful.
+
+       IB_INVALID_PARAMETER
+               A reference to the CI interface structure was not provided.
+
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient memory to satisfy resource requirements.
+
+       IB_DUPLICATE_CA
+               HCA GUID is already registered with the IB Access Layer
+
+

PORTABILITY

+
       Kernel Mode only
+
+

SEE ALSO

+
       ib_deregister_ca, ci_interface_t
+
+
+ + diff --git a/trunk/docs/iba/ib_types_h.html b/trunk/docs/iba/ib_types_h.html new file mode 100644 index 00000000..102e1d8b --- /dev/null +++ b/trunk/docs/iba/ib_types_h.html @@ -0,0 +1,10031 @@ + + + + +./inc_doc/iba/ib_types_h.html + + + + +Generated from ./inc/iba/ib_types.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:20 +
+
+ +

[Modules] +IBA Base/Constants

+ +

[top][index]

+

NAME

+
       Constants
+
+

DESCRIPTION

+
       The following constants are used throughout the IBA code base.
+
+       Definitions are from the InfiniBand Architecture Specification v1.1
+
+
+
+ +

[Modules] +IBA Base/Type Definitions

+ +

[top][index]

+

NAME

+
       Type Definitions
+
+

DESCRIPTION

+
       Definitions are from the InfiniBand Architecture Specification v1.1
+
+
+
+ +

[Definitions] +Access Layer/ib_access_t

+ +

[top][index]

+

NAME

+
       ib_access_t
+
+

DESCRIPTION

+
       Indicates the type of access is permitted on resources such as QPs,
+       memory regions and memory windows.
+
+

SYNOPSIS

+
typedef uint32_t                                ib_access_t;
+#define IB_AC_RDMA_READ                 0x00000001
+#define IB_AC_RDMA_WRITE                0x00000002
+#define IB_AC_ATOMIC                    0x00000004
+#define IB_AC_LOCAL_WRITE               0x00000008
+#define IB_AC_MW_BIND                   0x00000010
+
+

NOTES

+
       Users may combine access rights using a bit-wise or operation to specify
+       additional access.  For example: IB_AC_RDMA_READ | IB_AC_RDMA_WRITE grants
+       RDMA read and write access.
+
+
+
+ +

[Definitions] +Access Layer/ib_api_status_t

+ +

[top][index]

+

NAME

+
       ib_api_status_t
+
+

DESCRIPTION

+
       Function return codes indicating the success or failure of an API call.
+       Note that success is indicated by the return value IB_SUCCESS, which
+       is always zero.
+
+

NOTES

+
       IB_VERBS_PROCESSING_DONE is used by UVP library to terminate a verbs call
+       in the pre-ioctl step itself.
+
+

SYNOPSIS

+
typedef enum _ib_api_status_t
+{
+        IB_SUCCESS,
+        IB_INSUFFICIENT_RESOURCES,
+        IB_INSUFFICIENT_MEMORY,
+        IB_INVALID_PARAMETER,
+        IB_INVALID_SETTING,
+        IB_NOT_FOUND,
+        IB_TIMEOUT,
+        IB_CANCELED,
+        IB_INTERRUPTED,
+        IB_INVALID_PERMISSION,
+        IB_UNSUPPORTED,
+        IB_OVERFLOW,
+        IB_MAX_MCAST_QPS_REACHED,
+        IB_INVALID_QP_STATE,
+        IB_INVALID_APM_STATE,
+        IB_INVALID_PORT_STATE,
+        IB_INVALID_STATE,
+        IB_RESOURCE_BUSY,
+        IB_INVALID_PKEY,
+        IB_INVALID_LKEY,
+        IB_INVALID_RKEY,
+        IB_INVALID_MAX_WRS,
+        IB_INVALID_MAX_SGE,
+        IB_INVALID_CQ_SIZE,
+        IB_INVALID_SERVICE_TYPE,
+        IB_INVALID_GID,
+        IB_INVALID_LID,
+        IB_INVALID_GUID,
+        IB_INVALID_CA_HANDLE,
+        IB_INVALID_AV_HANDLE,
+        IB_INVALID_CQ_HANDLE,
+        IB_INVALID_QP_HANDLE,
+        IB_INVALID_PD_HANDLE,
+        IB_INVALID_MR_HANDLE,
+        IB_INVALID_MW_HANDLE,
+        IB_INVALID_MCAST_HANDLE,
+        IB_INVALID_CALLBACK,
+        IB_INVALID_AL_HANDLE,                                   /* InfiniBand Access Layer */
+        IB_INVALID_HANDLE,                                              /* InfiniBand Access Layer */
+        IB_ERROR,                                                               /* InfiniBand Access Layer */
+        IB_REMOTE_ERROR,                                                /* Infiniband Access Layer */
+        IB_VERBS_PROCESSING_DONE,                               /* See Notes above                 */
+        IB_INVALID_WR_TYPE,
+        IB_QP_IN_TIMEWAIT,
+        IB_INVALID_PORT,
+        IB_NOT_DONE,
+        IB_INVALID_INDEX,
+        IB_NO_MATCH,
+        IB_PENDING,
+        IB_UNKNOWN_ERROR                                                /* ALWAYS LAST ENUM VALUE! */
+
+}       ib_api_status_t;
+
+
+
+ +

[Definitions] +Access Layer/ib_apm_state_t

+ +

[top][index]

+

NAME

+
       ib_apm_state_t
+
+

DESCRIPTION

+
       The current automatic path migration state of a queue pair
+
+

SYNOPSIS

+
typedef enum _ib_apm_state
+{
+        IB_APM_MIGRATED = 1,
+        IB_APM_REARM,
+        IB_APM_ARMED
+
+}       ib_apm_state_t;
+
+
+
+ +

[Definitions] +Access Layer/ib_apr_status_t

+ +

[top][index]

+

NAME

+
       ib_apr_status_t
+
+

DESCRIPTION

+
       Automatic path migration status information.
+
+

SYNOPSIS

+
typedef uint8_t                                                         ib_apr_status_t;
+
+

SEE ALSO

+
       ib_cm_apr, ib_cm_apr_rec_t
+
+

SOURCE

+
#define IB_AP_SUCCESS                                           0
+#define IB_AP_INVALID_COMM_ID                           1
+#define IB_AP_UNSUPPORTED                                       2
+#define IB_AP_REJECT                                            3
+#define IB_AP_REDIRECT                                          4
+#define IB_AP_IS_CURRENT                                        5
+#define IB_AP_INVALID_QPN                                       6
+#define IB_AP_INVALID_LID                                       7
+#define IB_AP_INVALID_GID                                       8
+#define IB_AP_INVALID_FLOW_LBL                          9
+#define IB_AP_INVALID_TCLASS                            10
+#define IB_AP_INVALID_HOP_LIMIT                         11
+#define IB_AP_INVALID_PKT_RATE                          12
+#define IB_AP_INVALID_SL                                        13
+
+
+
+ +

[Definitions] +Access Layer/ib_atomic_t

+ +

[top][index]

+

NAME

+
       ib_atomic_t
+
+

DESCRIPTION

+
       Indicates atomicity levels supported by an adapter.
+
+

SYNOPSIS

+
typedef enum _ib_atomic_t
+{
+        IB_ATOMIC_NONE,
+        IB_ATOMIC_LOCAL,
+        IB_ATOMIC_GLOBAL
+
+}       ib_atomic_t;
+
+

VALUES

+
       IB_ATOMIC_NONE
+               Atomic operations not supported.
+
+       IB_ATOMIC_LOCAL
+               Atomic operations guaranteed between QPs of a single CA.
+
+       IB_ATOMIC_GLOBAL
+               Atomic operations are guaranteed between CA and any other entity
+               in the system.
+
+
+
+ +

[Structures] +Access Layer/ib_av_attr_t

+ +

[top][index]

+

NAME

+
       ib_av_attr_t
+
+

DESCRIPTION

+
       IBA address vector.
+
+

SYNOPSIS

+
typedef struct _ib_av_attr
+{
+        uint8_t                                 port_num;
+
+        uint8_t                                 sl;
+        ib_net16_t                              dlid;
+
+        boolean_t                               grh_valid;
+        ib_grh_t                                grh;
+        uint8_t                                 static_rate;
+        uint8_t                                 path_bits;
+
+        struct _av_conn
+        {
+                uint8_t                         path_mtu;
+                uint8_t                         local_ack_timeout;
+                uint8_t                         seq_err_retry_cnt;
+                uint8_t                         rnr_retry_cnt;
+
+        }       conn;
+
+}       ib_av_attr_t;
+
+

SEE ALSO

+
       ib_gid_t
+
+
+
+ +

[Structures] +Access Layer/ib_bind_wr_t

+ +

[top][index]

+

NAME

+
       ib_bind_wr_t
+
+

DESCRIPTION

+
       Information used to submit a memory window bind work request to the send
+       queue of a queue pair.
+
+

SYNOPSIS

+
typedef struct _ib_bind_wr
+{
+        uint64_t                                wr_id;
+        ib_send_opt_t                   send_opt;
+
+        ib_mr_handle_t                  h_mr;
+        ib_access_t                             access_ctrl;
+        net32_t                                 current_rkey;
+
+        ib_local_ds_t                   local_ds;
+
+}       ib_bind_wr_t;
+
+

FIELDS

+
       wr_id
+               A 64-bit work request identifier that is returned to the consumer
+               as part of the work completion.
+
+       send_opt
+               Optional send control parameters.
+
+       h_mr
+               Handle to the memory region to which this window is being bound.
+
+       access_ctrl
+               Access rights for this memory window.
+
+       current_rkey
+               The current rkey assigned to this window for remote access.
+
+       local_ds
+               A reference to a local data segment used by the bind operation.
+
+

SEE ALSO

+
       ib_send_opt_t, ib_access_t, ib_local_ds_t
+
+
+
+ +

[Structures] +Access Layer/ib_ca_attr_t

+ +

[top][index]

+

NAME

+
       ib_ca_attr_t
+
+

DESCRIPTION

+
       Information about a channel adapter.
+
+

SYNOPSIS

+
typedef struct _ib_ca_attr
+{
+        ib_net64_t                              ca_guid;
+
+        uint32_t                                vend_id;
+        uint16_t                                dev_id;
+        uint16_t                                revision;
+        uint64_t                                fw_ver;
+
+        /*
+         * Total size of the ca attributes in bytes
+         */
+        uint32_t                                size;
+        uint32_t                                max_qps;
+        uint32_t                                max_wrs;
+
+        uint32_t                                max_sges;
+        uint32_t                                max_rd_sges;
+
+        uint32_t                                max_cqs;
+        uint32_t                                max_cqes;
+
+        uint32_t                                max_pds;
+
+        uint32_t                                init_regions;
+        uint64_t                                init_region_size;
+
+        uint32_t                                init_windows;
+        uint32_t                                max_addr_handles;
+
+        uint32_t                                max_partitions;
+
+        ib_atomic_t                             atomicity;
+
+        uint8_t                                 max_qp_resp_res;
+        uint8_t                                 max_resp_res;
+
+        uint8_t                                 max_qp_init_depth;
+
+        uint32_t                                max_ipv6_qps;
+        uint32_t                                max_ether_qps;
+
+        uint32_t                                max_mcast_grps;
+        uint32_t                                max_mcast_qps;
+        uint32_t                                max_qps_per_mcast_grp;
+
+        /*
+         * local_ack_delay:
+         * Specifies the maximum time interval between the local CA receiving
+         * a message and the transmission of the associated ACK or NAK.
+         *
+         * timeout = 4.096 microseconds * 2^local_ack_delay
+         */
+        uint8_t                                 local_ack_delay;
+
+        boolean_t                               bad_pkey_ctr_support;
+        boolean_t                               bad_qkey_ctr_support;
+        boolean_t                               raw_mcast_support;
+        boolean_t                               apm_support;
+        boolean_t                               av_port_check;
+        boolean_t                               change_primary_port;
+        boolean_t                               modify_wr_depth;
+        boolean_t                               current_qp_state_support;
+        boolean_t                               shutdown_port_capability;
+        boolean_t                               init_type_support;
+        boolean_t                               port_active_event_support;
+        boolean_t                               system_image_guid_support;
+        boolean_t                               hw_agents;
+
+        ib_net64_t                              system_image_guid;
+
+        uint32_t                                num_page_sizes;
+        uint8_t                                 num_ports;
+
+        uint32_t* __ptr64               p_page_size;
+        ib_port_attr_t* __ptr64 p_port_attr;
+
+}       ib_ca_attr_t;
+
+

FIELDS

+
       ca_guid
+               GUID for this adapter.
+
+       vend_id
+               IEEE vendor ID for this adapter
+
+       dev_id
+               Device ID of this adapter. (typically from PCI device ID)
+
+       revision
+               Revision ID of this adapter
+
+       fw_ver
+               Device Firmware version.
+
+       size
+               Total size in bytes for the HCA attributes.  This size includes total
+               size required for all the variable members of the structure.  If a
+               vendor requires to pass vendor specific fields beyond this structure,
+               the HCA vendor can choose to report a larger size.  If a vendor is
+               reporting extended vendor specific features, they should also provide
+               appropriate access functions to aid with the required interpretation.
+
+       max_qps
+               Maximum number of QP's supported by this HCA.
+
+       max_wrs
+               Maximum number of work requests supported by this HCA.
+
+       max_sges
+               Maximum number of scatter gather elements supported per work request.
+
+       max_rd_sges
+               Maximum number of scatter gather elements supported for READ work
+               requests for a Reliable Datagram QP.  This value must be zero if RD
+               service is not supported.
+
+       max_cqs
+               Maximum number of Completion Queues supported.
+
+       max_cqes
+               Maximum number of CQ elements supported per CQ.
+
+       max_pds
+               Maximum number of protection domains supported.
+
+       init_regions
+               Initial number of memory regions supported.  These are only informative
+               values.  HCA vendors can extended and grow these limits on demand.
+
+       init_region_size
+               Initial limit on the size of the registered memory region.
+
+       init_windows
+               Initial number of window entries supported.
+
+       max_addr_handles
+               Maximum number of address handles supported.
+
+       max_partitions
+               Maximum number of partitions supported.
+
+       atomicity
+               Indicates level of atomic operations supported by this HCA.
+
+       max_qp_resp_res
+               Maximum limit on number of responder resources for incomming RDMA
+               operations on QPs.
+
+       max_resp_res
+               Maximum number of responder resources per HCA, with this HCA used as
+               the target.
+
+       max_qp_init_depth
+               Maximimum initiator depth per QP for initiating RDMA reads and
+               atomic operations.
+
+       max_ipv6_qps
+       max_ether_qps
+               Maximum number of IPV6 and raw ether QP's supported by this HCA.
+
+       max_mcast_grps
+               Maximum number of multicast groups supported.
+
+       max_mcast_qps
+               Maximum number of QP's that can support multicast operations.
+
+       max_qps_per_mcast_grp
+               Maximum number of multicast QP's per multicast group.
+
+       local_ack_delay
+               Specifies the maximum time interval between the local CA receiving
+               a message and the transmission of the associated ACK or NAK.
+               timeout = 4.096 microseconds * 2^local_ack_delay
+
+       bad_pkey_ctr_support
+       bad_qkey_ctr_support
+               Indicates support for the bad pkey and qkey counters.
+
+       raw_mcast_support
+               Indicates support for raw packet multicast.
+
+       apm_support
+               Indicates support for Automatic Path Migration.
+
+       av_port_check
+               Indicates ability to check port number in address handles.
+
+       change_primary_port
+               Indicates ability to change primary port for a QP during a
+               SQD->RTS transition.
+
+       modify_wr_depth
+               Indicates ability to modify QP depth during a modify QP operation.
+               Check the verb specification for permitted states.
+
+       current_qp_state_support
+               Indicates ability of the HCA to support the current QP state modifier
+               during a modify QP operation.
+
+       shutdown_port_capability
+               Shutdown port capability support indicator.
+
+       init_type_support
+               Indicates init_type_reply and ability to set init_type is supported.
+
+       port_active_event_support
+               Port active event support indicator.
+
+       system_image_guid_support
+               System image GUID support indicator.
+
+       hw_agents
+               Indicates SMA is implemented in HW.
+
+       system_image_guid
+               Optional system image GUID.  This field is valid only if the
+               system_image_guid_support flag is set.
+
+       num_page_sizes
+               Indicates support for different page sizes supported by the HCA.
+               The variable size array can be obtained from p_page_size.
+
+       num_ports
+               Number of physical ports supported on this HCA.
+
+       p_page_size
+               Array holding different page size supported.
+
+       p_port_attr
+               Array holding port attributes.
+
+

NOTES

+
       This structure contains the attributes of a channel adapter.  Users must
+       call ib_copy_ca_attr to copy the contents of this structure to a new
+       memory region.
+
+

SEE ALSO

+
       ib_port_attr_t, ib_atomic_t, ib_copy_ca_attr
+
+
+
+ +

[Definitions] +Access Layer/ib_ca_mod_t

+ +

[top][index]

+

NAME

+
       ib_ca_mod_t -- Modify port attributes and error counters
+
+

DESCRIPTION

+
       Specifies modifications to the port attributes of a channel adapter.
+
+

SYNOPSIS

+
typedef uint32_t                                                        ib_ca_mod_t;
+#define IB_CA_MOD_IS_CM_SUPPORTED                       0x00000001
+#define IB_CA_MOD_IS_SNMP_SUPPORTED                     0x00000002
+#define IB_CA_MOD_IS_DEV_MGMT_SUPPORTED         0x00000004
+#define IB_CA_MOD_IS_VEND_SUPPORTED                     0x00000008
+#define IB_CA_MOD_IS_SM                                         0x00000010
+#define IB_CA_MOD_IS_SM_DISABLED                        0x00000020
+#define IB_CA_MOD_QKEY_CTR                                      0x00000040
+#define IB_CA_MOD_PKEY_CTR                                      0x00000080
+#define IB_CA_MOD_IS_NOTICE_SUPPORTED           0x00000100
+#define IB_CA_MOD_IS_TRAP_SUPPORTED                     0x00000200
+#define IB_CA_MOD_IS_APM_SUPPORTED                      0x00000400
+#define IB_CA_MOD_IS_SLMAP_SUPPORTED            0x00000800
+#define IB_CA_MOD_IS_PKEY_NVRAM_SUPPORTED       0x00001000
+#define IB_CA_MOD_IS_MKEY_NVRAM_SUPPORTED       0x00002000
+#define IB_CA_MOD_IS_SYSGUID_SUPPORTED          0x00004000
+#define IB_CA_MOD_IS_DR_NOTICE_SUPPORTED        0x00008000
+#define IB_CA_MOD_IS_BOOT_MGMT_SUPPORTED        0x00010000
+#define IB_CA_MOD_IS_CAPM_NOTICE_SUPPORTED      0x00020000
+#define IB_CA_MOD_IS_REINIT_SUPORTED            0x00040000
+#define IB_CA_MOD_IS_LEDINFO_SUPPORTED          0x00080000
+#define IB_CA_MOD_SHUTDOWN_PORT                         0x00100000
+#define IB_CA_MOD_INIT_TYPE_VALUE                       0x00200000
+#define IB_CA_MOD_SYSTEM_IMAGE_GUID                     0x00400000
+#define IB_CA_MOD_IS_CLIENT_REREGISTER_SUPPORTED        0x00800000
+
+

VALUES

+
       IB_CA_MOD_IS_CM_SUPPORTED
+               Indicates if there is a communication manager accessible through
+               the port.
+
+       IB_CA_MOD_IS_SNMP_SUPPORTED
+               Indicates if there is an SNMP agent accessible through the port.
+
+       IB_CA_MOD_IS_DEV_MGMT_SUPPORTED
+               Indicates if there is a device management agent accessible through
+               the port.
+
+       IB_CA_MOD_IS_VEND_SUPPORTED
+               Indicates if there is a vendor supported agent accessible through
+               the port.
+
+       IB_CA_MOD_IS_SM
+               Indicates if there is a subnet manager accessible through
+               the port.
+
+       IB_CA_MOD_IS_SM_DISABLED
+               Indicates if the port has been disabled for configuration by the subnet
+               manager.
+
+       IB_CA_MOD_QKEY_CTR
+               Used to reset the qkey violation counter associated with the port.
+
+       IB_CA_MOD_PKEY_CTR
+               Used to reset the pkey violation counter associated with the port.
+
+       IB_CA_MOD_IS_NOTICE_SUPPORTED
+               Indicates that this CA supports ability to generate Notices for
+               Port State changes. (only applicable to switches)
+
+       IB_CA_MOD_IS_TRAP_SUPPORTED
+               Indicates that this management port supports ability to generate
+               trap messages. (only applicable to switches)
+
+       IB_CA_MOD_IS_APM_SUPPORTED
+               Indicates that this port is capable of performing Automatic Migration.
+
+       IB_CA_MOD_IS_SLMAP_SUPPORTED
+               Indicates this port supports SLMAP capability.
+
+       IB_CA_MOD_IS_PKEY_NVRAM_SUPPORTED
+               Indicates that PKEY is supported in NVRAM
+
+       IB_CA_MOD_IS_MKEY_NVRAM_SUPPORTED
+               Indicates that MKEY is supported in NVRAM
+
+       IB_CA_MOD_IS_SYSGUID_SUPPORTED
+               Indicates System Image GUID support.
+
+       IB_CA_MOD_IS_DR_NOTICE_SUPPORTED
+               Indicate support for generating Direct Routed Notices
+
+       IB_CA_MOD_IS_BOOT_MGMT_SUPPORTED
+               Indicates support for Boot Management
+
+       IB_CA_MOD_IS_CAPM_NOTICE_SUPPORTED
+               Indicates capability to generate notices for changes to CAPMASK
+
+       IB_CA_MOD_IS_REINIT_SUPORTED
+               Indicates type of node init supported. Refer to Chapter 14 for
+               Initialization actions.
+
+       IB_CA_MOD_IS_LEDINFO_SUPPORTED
+               Indicates support for LED info.
+
+       IB_CA_MOD_SHUTDOWN_PORT
+               Used to modify the port active indicator.
+
+       IB_CA_MOD_INIT_TYPE_VALUE
+               Used to modify the init_type value for the port.
+
+       IB_CA_MOD_SYSTEM_IMAGE_GUID
+               Used to modify the system image GUID for the port.
+
+       IB_CA_MOD_IS_CLIENT_REREGISTER_SUPPORTED
+               Used to modify the system image GUID for the port.
+
+
+
+ +

[Structures] +Access Layer/ib_ci_op_t

+ +

[top][index]

+

NAME

+
       ib_ci_op_t
+
+

DESCRIPTION

+
       A structure used for vendor specific CA interface communication.
+
+

SYNOPSIS

+
typedef struct _ib_ci_op
+{
+        IN                              uint32_t                                        command;
+        IN                              uint32_t                                        buf_size;
+        IN                              uint32_t                                        buf_info;
+        IN      OUT                     int32_t                                         status;
+                OUT                     uint32_t                                        num_bytes_ret;
+        IN      OUT                     void* __ptr64                           p_buf OPTIONAL;
+
+}       ib_ci_op_t;
+
+

FIELDS

+
       command
+               A command code that is understood by the verbs provider.
+
+       status
+               The completion status from the verbs provider.  This field should be
+               initialize to indicate an error to allow detection and cleanup in
+               case a communication error occurs between user-mode and kernel-mode.
+
+       buf_size
+               The size of the buffer in bytes.
+
+       buf_info
+               Additional buffer information
+
+       p_buf
+               A reference to a buffer containing vendor specific data.  The verbs
+               provider must not access pointers in the p_buf between user-mode and
+               kernel-mode.  Any pointers embedded in the p_buf are invalidated by
+               the user-mode/kernel-mode transition.
+
+       num_bytes_ret
+               The size in bytes of the vendor specific data returned in the buffer.
+               This field is set by the verbs provider.  The verbs provider should
+               verify that the buffer size is sufficient to hold the data being
+               returned.
+
+

NOTES

+
       This structure is provided to allow the exchange of vendor specific
+       data between the originator and the verbs provider.  Users of this
+       structure are expected to know the format of data in the p_buf based
+       on the structure command field or the usage context.
+
+
+
+ +

[Definitions] +Access Layer/ib_cm_cap_mask_t

+ +

[top][index]

+

NAME

+
       ib_cm_cap_mask_t
+
+

DESCRIPTION

+
       Capability mask values in ClassPortInfo.
+
+

SYNOPSIS

+
#define IB_CM_RELIABLE_CONN_CAPABLE                     CL_HTON16(9)
+#define IB_CM_RELIABLE_DGRM_CAPABLE                     CL_HTON16(10)
+#define IB_CM_RDGRM_CAPABLE                                     CL_HTON16(11)
+#define IB_CM_UNRELIABLE_CONN_CAPABLE           CL_HTON16(12)
+#define IB_CM_SIDR_CAPABLE                                      CL_HTON16(13)
+
+

SEE ALSO

+
       ib_cm_rep, ib_class_port_info_t
+
+

SOURCE

+ +
+ +

[Functions] +Access layer/ib_copy_ca_attr

+ +

[top][index]

+

NAME

+
       ib_copy_ca_attr
+
+

DESCRIPTION

+
       Copies CA attributes.
+
+

SYNOPSIS

+
AL_EXPORT ib_ca_attr_t* AL_API
+ib_copy_ca_attr(
+        IN                              ib_ca_attr_t* const             p_dest,
+        IN              const   ib_ca_attr_t* const             p_src );
+
+

PARAMETERS

+
       p_dest
+               Pointer to the buffer that is the destination of the copy.
+
+       p_src
+               Pointer to the CA attributes to copy.
+
+

RETURN VALUE

+
       Pointer to the copied CA attributes.
+
+

NOTES

+
       The buffer pointed to by the p_dest parameter must be at least the size
+       specified in the size field of the buffer pointed to by p_src.
+
+

SEE ALSO

+
       ib_ca_attr_t, ib_dup_ca_attr, ib_free_ca_attr
+
+
+
+ +

[Definitions] +Access Layer/ib_init_type_t

+ +

[top][index]

+

NAME

+
       ib_init_type_t
+
+

DESCRIPTION

+
       If supported by the HCA, the type of initialization requested by
+       this port before SM moves it to the active or armed state.  If the
+       SM implements reinitialization, it shall set these bits to indicate
+       the type of initialization performed prior to activating the port.
+       Otherwise, these bits shall be set to 0.
+
+

SYNOPSIS

+
typedef uint8_t                                 ib_init_type_t;
+#define IB_INIT_TYPE_NO_LOAD                            0x01
+#define IB_INIT_TYPE_PRESERVE_CONTENT           0x02
+#define IB_INIT_TYPE_PRESERVE_PRESENCE          0x04
+#define IB_INIT_TYPE_DO_NOT_RESUSCITATE         0x08
+
+
+
+ +

[Structures] +Access Layer/ib_local_ds_t

+ +

[top][index]

+

NAME

+
       ib_local_ds_t
+
+

DESCRIPTION

+
       Local data segment information referenced by send and receive work
+       requests.  This is used to specify local data buffers used as part of a
+       work request.
+
+

SYNOPSIS

+
typedef struct _ib_local_ds
+{
+        uint64_t                                vaddr;
+        uint32_t                                length;
+        uint32_t                                lkey;
+
+}       ib_local_ds_t;
+
+
+
+ +

[Structures] +Access Layer/ib_mr_attr_t

+ +

[top][index]

+

NAME

+
       ib_mr_attr_t
+
+

DESCRIPTION

+
       Attributes of a registered memory region.
+
+

SYNOPSIS

+
typedef struct _ib_mr_attr
+{
+        ib_pd_handle_t                  h_pd;
+        uint64_t                                local_lb;
+        uint64_t                                local_ub;
+        uint64_t                                remote_lb;
+        uint64_t                                remote_ub;
+        ib_access_t                             access_ctrl;
+        net32_t                                 lkey;
+        net32_t                                 rkey;
+
+}       ib_mr_attr_t;
+
+

DESCRIPTION

+
       h_pd
+               Handle to the protection domain for this memory region.
+
+       local_lb
+               The virtual address of the lower bound of protection for local
+               memory access.  This is always a 64-bit quantity to support registering
+               more than 4GB of memory on 32-bit systems with PAE.
+
+       local_ub
+               The virtual address of the upper bound of protection for local
+               memory access.  This is always a 64-bit quantity to support registering
+               more than 4GB of memory on 32-bit systems with PAE.
+
+       remote_lb
+               The virtual address of the lower bound of protection for remote
+               memory access.  This is always a 64-bit quantity to support registering
+               more than 4GB of memory on 32-bit systems with PAE.
+
+       remote_ub
+               The virtual address of the upper bound of protection for remote
+               memory access.  This is always a 64-bit quantity to support registering
+               more than 4GB of memory on 32-bit systems with PAE.
+
+       access_ctrl
+               Access rights for the specified memory region.
+
+       lkey
+               The lkey associated with this memory region.
+
+       rkey
+               The rkey associated with this memory region.
+
+

NOTES

+
       The remote_lb, remote_ub, and rkey are only valid if remote memory access
+       is enabled for this memory region.
+
+

SEE ALSO

+
       ib_access_t
+
+
+
+ +

[Structures] +Access Layer/ib_mr_create_t

+ +

[top][index]

+

NAME

+
       ib_mr_create_t
+
+

DESCRIPTION

+
       Information required to create a registered memory region.
+
+

SYNOPSIS

+
typedef struct _ib_mr_create
+{
+        void* __ptr64                   vaddr;
+        uint64_t                                length;
+        ib_access_t                             access_ctrl;
+
+}       ib_mr_create_t;
+
+

FIELDS

+
       vaddr
+               Starting virtual address of the region being registered.
+
+       length
+               Length of the buffer to register.
+
+       access_ctrl
+               Access rights of the registered region.
+
+

SEE ALSO

+
       ib_access_t
+
+
+
+ +

[Definitions] +Access Layer/ib_mr_mod_t

+ +

[top][index]

+

NAME

+
       ib_mr_mod_t
+
+

DESCRIPTION

+
       Mask used to specify which attributes of a registered memory region are
+       being modified.
+
+

SYNOPSIS

+
typedef uint32_t                                                ib_mr_mod_t;
+#define IB_MR_MOD_ADDR                                  0x00000001
+#define IB_MR_MOD_PD                                    0x00000002
+#define IB_MR_MOD_ACCESS                                0x00000004
+
+

PARAMETERS

+
       IB_MEM_MOD_ADDR
+               The address of the memory region is being modified.
+
+       IB_MEM_MOD_PD
+               The protection domain associated with the memory region is being
+               modified.
+
+       IB_MEM_MOD_ACCESS
+               The access rights the memory region are being modified.
+
+
+
+ +

[Definitions] +Access Layer/ib_pd_type_t

+ +

[top][index]

+

NAME

+
       ib_pd_type_t
+
+

DESCRIPTION

+
       Indicates the type of protection domain being allocated.
+
+

SYNOPSIS

+
typedef enum _ib_pd_type
+{
+        IB_PDT_NORMAL,
+        IB_PDT_ALIAS,
+        IB_PDT_SQP,
+        IB_PDT_UD
+
+}       ib_pd_type_t;
+
+

VALUES

+
       IB_PDT_NORMAL
+               Protection domain for all non-aliased QPs.
+
+       IB_PDT_ALIAS
+               Protection domain for IB_QPT_QP0_ALIAS and IB_QPT_QP1_ALIAS QPs.
+
+       IB_PDT_SQP
+               Protection domain for special queue pair usage.
+
+       IB_PDT_UD
+               Protection domain for UD queue pair usage.
+
+
+
+ +

[Structures] +Access Layer/ib_phys_create_t

+ +

[top][index]

+

NAME

+
       ib_phys_create_t
+
+

DESCRIPTION

+
       Information required to create a physical memory region.
+
+

SYNOPSIS

+
typedef struct _ib_phys_create
+{
+        uint64_t                                        length;
+        uint32_t                                        num_ranges;
+        ib_phys_range_t* __ptr64        range_array;
+        uint32_t                                        buf_offset;
+        uint32_t                                        hca_page_size;
+        ib_access_t                                     access_ctrl;
+
+}       ib_phys_create_t;
+
+

FIELDS

+
       length
+               The length of the memory region in bytes.
+
+       num_ranges
+               Number of ib_phys_range structures listed in the specified range array.
+
+       range_array
+               An array of ib_phys_range structures to be registered as a single memory
+               region.
+
+       buf_offset
+               The offset into the first physical memory range of the specified memory
+               region on which to start the virtual address.
+
+       hca_page_size
+               The HCA page size to use to register the memory.
+
+       access_ctrl
+               Access rights of the registered region.
+
+

SEE ALSO

+
       ib_access_t
+
+
+
+ +

[Structures] +Access Layer/ib_phys_range_t

+ +

[top][index]

+

NAME

+
       ib_phys_range_t
+
+

DESCRIPTION

+
       Information describing a physical memory range.
+
+

SYNOPSIS

+
typedef struct _ib_phys_range
+{
+        uint64_t                                base_addr;
+        uint64_t                                size;
+
+}       ib_phys_range_t;
+
+

FIELDS

+
       base_addr
+               Physical address of the base of the memory range.
+
+       size
+               size, in bytes, of the memory range.
+
+

NOTES

+
       The base address must be start and end on an HCA-supported page boundary.
+
+

SEE ALSO

+
       ib_phys_create_t
+
+
+
+ +

[Structures] +Access Layer/ib_port_attr_mod_t

+ +

[top][index]

+

NAME

+
       ib_port_attr_mod_t
+
+

DESCRIPTION

+
       Port attributes that may be modified.
+
+

SYNOPSIS

+
typedef struct _ib_port_attr_mod
+{
+        ib_port_cap_t                   cap;
+        uint16_t                                pkey_ctr;
+        uint16_t                                qkey_ctr;
+
+        ib_init_type_t                  init_type;
+        ib_net64_t                              system_image_guid;
+
+}       ib_port_attr_mod_t;
+
+

SEE ALSO

+
       ib_port_cap_t
+
+
+
+ +

[Structures] +Access Layer/ib_port_attr_t

+ +

[top][index]

+

NAME

+
       ib_port_attr_t
+
+

DESCRIPTION

+
       Information about a port on a given channel adapter.
+
+

SYNOPSIS

+
typedef struct _ib_port_attr
+{
+        ib_net64_t                              port_guid;
+        uint8_t                                 port_num;
+        uint8_t                                 mtu;
+        uint64_t                                max_msg_size;
+        ib_net16_t                              lid;
+        uint8_t                                 lmc;
+
+        /*
+         * LinkWidthSupported as defined in PortInfo.  Required to calculate
+         * inter-packet delay (a.k.a. static rate).
+         */
+        uint8_t                                 link_width_supported;
+
+        uint16_t                                max_vls;
+
+        ib_net16_t                              sm_lid;
+        uint8_t                                 sm_sl;
+        uint8_t                                 link_state;
+
+        ib_init_type_t                  init_type_reply;        /* Optional */
+
+        /*
+         * subnet_timeout:
+         * The maximum expected subnet propagation delay to reach any port on
+         * the subnet.  This value also determines the rate at which traps can
+         * be generated from this node.
+         *
+         * timeout = 4.096 microseconds * 2^subnet_timeout
+         */
+        uint8_t                                 subnet_timeout;
+
+        ib_port_cap_t                   cap;
+        uint16_t                                pkey_ctr;
+        uint16_t                                qkey_ctr;
+
+        uint16_t                                num_gids;
+        uint16_t                                num_pkeys;
+        /*
+         * Pointers at the end of the structure to allow doing a simple
+         * memory comparison of contents up to the first pointer.
+         */
+        ib_gid_t* __ptr64               p_gid_table;
+        ib_net16_t* __ptr64             p_pkey_table;
+
+}       ib_port_attr_t;
+
+

SEE ALSO

+
       uint8_t, ib_port_cap_t, ib_link_states_t
+
+
+
+ +

[Structures] +Access Layer/ib_port_cap_t

+ +

[top][index]

+

NAME

+
       ib_port_cap_t
+
+

DESCRIPTION

+
       Indicates which management agents are currently available on the specified
+       port.
+
+

SYNOPSIS

+
typedef struct _ib_port_cap
+{
+        boolean_t               cm;
+        boolean_t               snmp;
+        boolean_t               dev_mgmt;
+        boolean_t               vend;
+        boolean_t               sm;
+        boolean_t               sm_disable;
+        boolean_t               qkey_ctr;
+        boolean_t               pkey_ctr;
+        boolean_t               notice;
+        boolean_t               trap;
+        boolean_t               apm;
+        boolean_t               slmap;
+        boolean_t               pkey_nvram;
+        boolean_t               mkey_nvram;
+        boolean_t               sysguid;
+        boolean_t               dr_notice;
+        boolean_t               boot_mgmt;
+        boolean_t               capm_notice;
+        boolean_t               reinit;
+        boolean_t               ledinfo;
+        boolean_t               port_active;
+        boolean_t               ipd;
+        boolean_t               pkey_switch_ext_port;
+        boolean_t               bm;
+        boolean_t               link_rtl;
+        boolean_t               client_reregister;
+
+}       ib_port_cap_t;
+
+
+
+ +

[Structures] +Access Layer/ib_qp_attr_t

+ +

[top][index]

+

NAME

+
       ib_qp_attr_t
+
+

DESCRIPTION

+
       Queue pair attributes returned through ib_query_qp.
+
+

SYNOPSIS

+
typedef struct _ib_qp_attr
+{
+        ib_pd_handle_t                  h_pd;
+        ib_qp_type_t                    qp_type;
+        ib_access_t                             access_ctrl;
+        uint16_t                                pkey_index;
+
+        uint32_t                                sq_max_inline;
+        uint32_t                                sq_depth;
+        uint32_t                                rq_depth;
+        uint32_t                                sq_sge;
+        uint32_t                                rq_sge;
+        uint8_t                                 init_depth;
+        uint8_t                                 resp_res;
+
+        ib_cq_handle_t                  h_sq_cq;
+        ib_cq_handle_t                  h_rq_cq;
+
+        boolean_t                               sq_signaled;
+
+        ib_qp_state_t                   state;
+        ib_net32_t                              num;
+        ib_net32_t                              dest_num;
+        ib_net32_t                              qkey;
+
+        ib_net32_t                              sq_psn;
+        ib_net32_t                              rq_psn;
+
+        uint8_t                                 primary_port;
+        uint8_t                                 alternate_port;
+        ib_av_attr_t                    primary_av;
+        ib_av_attr_t                    alternate_av;
+        ib_apm_state_t                  apm_state;
+
+}       ib_qp_attr_t;
+
+

FIELDS

+
       h_pd
+               This is a handle to a protection domain associated with the QP.
+
+       sq_max_inline
+               Maximum payload that can be inlined directly in a WQE, eliminating
+               protection checks and additional DMA operations.
+
+

NOTES

+
       Other fields are defined by the Infiniband specification.
+
+

SEE ALSO

+
       ib_qp_type_t, ib_access_t, ib_qp_state_t, ib_av_attr_t, ib_apm_state_t
+
+
+
+ +

[Structures] +Access Layer/ib_qp_create_t

+ +

[top][index]

+

NAME

+
       ib_qp_create_t
+
+

DESCRIPTION

+
       Attributes used to initialize a queue pair at creation time.
+
+

SYNOPSIS

+
typedef struct _ib_qp_create
+{
+        ib_qp_type_t                    qp_type;
+
+        uint32_t                                sq_depth;
+        uint32_t                                rq_depth;
+        uint32_t                                sq_sge;
+        uint32_t                                rq_sge;
+
+        ib_cq_handle_t                  h_sq_cq;
+        ib_cq_handle_t                  h_rq_cq;
+
+        boolean_t                               sq_signaled;
+
+}       ib_qp_create_t;
+
+

FIELDS

+
       type
+               Specifies the type of queue pair to create.
+
+       sq_depth
+               Indicates the requested maximum number of work requests that may be
+               outstanding on the queue pair's send queue.  This value must be less
+               than or equal to the maximum reported by the channel adapter associated
+               with the queue pair.
+
+       rq_depth
+               Indicates the requested maximum number of work requests that may be
+               outstanding on the queue pair's receive queue.  This value must be less
+               than or equal to the maximum reported by the channel adapter associated
+               with the queue pair.
+
+       sq_sge
+               Indicates the maximum number scatter-gather elements that may be
+               given in a send work request.  This value must be less
+               than or equal to the maximum reported by the channel adapter associated
+               with the queue pair.
+
+       rq_sge
+               Indicates the maximum number scatter-gather elements that may be
+               given in a receive work request.  This value must be less
+               than or equal to the maximum reported by the channel adapter associated
+               with the queue pair.
+
+       h_sq_cq
+               A handle to the completion queue that will be used to report send work
+               request completions.  This handle must be NULL if the type is
+               IB_QPT_MAD, IB_QPT_QP0_ALIAS, or IB_QPT_QP1_ALIAS.
+
+       h_rq_cq
+               A handle to the completion queue that will be used to report receive
+               work request completions.  This handle must be NULL if the type is
+               IB_QPT_MAD, IB_QPT_QP0_ALIAS, or IB_QPT_QP1_ALIAS.
+
+       sq_signaled
+               A flag that is used to indicate whether the queue pair will signal
+               an event upon completion of a send work request.  If set to
+               TRUE, send work requests will always generate a completion
+               event.  If set to FALSE, a completion event will only be
+               generated if the send_opt field of the send work request has the
+               IB_SEND_OPT_SIGNALED flag set.
+
+

SEE ALSO

+
       ib_qp_type_t, ib_qp_attr_t
+
+
+
+ +

[Structures] +Access Layer/ib_qp_mod_t

+ +

[top][index]

+

NAME

+
       ib_qp_mod_t
+
+

DESCRIPTION

+
       Information needed to change the state of a queue pair through the
+       ib_modify_qp call.
+
+

SYNOPSIS

+
typedef struct _ib_qp_mod
+{
+        ib_qp_state_t                           req_state;
+
+        union _qp_state
+        {
+                struct _qp_init
+                {
+                        uint8_t                         primary_port;
+                        ib_net32_t                      qkey;
+                        uint16_t                        pkey_index;
+                        ib_access_t                     access_ctrl;
+
+                }       init;
+
+                struct _qp_rtr
+                {
+                        ib_net32_t                      rq_psn;
+                        ib_net32_t                      dest_qp;
+                        ib_av_attr_t            primary_av;
+                        uint8_t                         resp_res;
+                        uint8_t                         rnr_nak_timeout;
+
+                        ib_qp_opts_t            opts;
+                        ib_av_attr_t            alternate_av;
+                        ib_net32_t                      qkey;
+                        uint16_t                        pkey_index;
+                        ib_access_t                     access_ctrl;
+                        uint32_t                        sq_depth;
+                        uint32_t                        rq_depth;
+
+                }       rtr;
+
+                struct _qp_rts
+                {
+                        ib_net32_t                      sq_psn;
+                        uint8_t                         retry_cnt;
+                        uint8_t                         rnr_retry_cnt;
+                        uint8_t                         local_ack_timeout;
+                        uint8_t                         init_depth;
+
+                        ib_qp_opts_t            opts;
+                        uint8_t                         rnr_nak_timeout;
+                        ib_qp_state_t           current_state;
+                        ib_net32_t                      qkey;
+                        ib_access_t                     access_ctrl;
+                        uint8_t                         resp_res;
+
+                        ib_av_attr_t            primary_av;
+                        ib_av_attr_t            alternate_av;
+
+                        uint32_t                        sq_depth;
+                        uint32_t                        rq_depth;
+
+                        ib_apm_state_t          apm_state;
+                        uint8_t                         primary_port;
+                        uint16_t                        pkey_index;
+
+                }       rts;
+
+                struct _qp_sqd
+                {
+                        boolean_t                       sqd_event;
+
+                }       sqd;
+
+        }       state;
+
+}       ib_qp_mod_t;
+
+

SEE ALSO

+
       ib_qp_state_t, ib_access_t, ib_av_attr_t, ib_apm_state_t
+
+
+
+ +

[Definitions] +Access Layer/ib_qp_opts_t

+ +

[top][index]

+

NAME

+
       ib_qp_opts_t
+
+

DESCRIPTION

+
       Optional fields supplied in the modify QP operation.
+
+

SYNOPSIS

+
typedef uint32_t                                ib_qp_opts_t;
+#define IB_MOD_QP_ALTERNATE_AV          0x00000001
+#define IB_MOD_QP_PKEY                          0x00000002
+#define IB_MOD_QP_APM_STATE                     0x00000004
+#define IB_MOD_QP_PRIMARY_AV            0x00000008
+#define IB_MOD_QP_RNR_NAK_TIMEOUT       0x00000010
+#define IB_MOD_QP_RESP_RES                      0x00000020
+#define IB_MOD_QP_INIT_DEPTH            0x00000040
+#define IB_MOD_QP_PRIMARY_PORT          0x00000080
+#define IB_MOD_QP_ACCESS_CTRL           0x00000100
+#define IB_MOD_QP_QKEY                          0x00000200
+#define IB_MOD_QP_SQ_DEPTH                      0x00000400
+#define IB_MOD_QP_RQ_DEPTH                      0x00000800
+#define IB_MOD_QP_CURRENT_STATE         0x00001000
+#define IB_MOD_QP_RETRY_CNT                     0x00002000
+#define IB_MOD_QP_LOCAL_ACK_TIMEOUT     0x00004000
+#define IB_MOD_QP_RNR_RETRY_CNT         0x00008000
+
+

SEE ALSO

+
       ib_qp_mod_t
+
+
+
+ +

[Definitions] +Access Layer/ib_qp_state_t

+ +

[top][index]

+

NAME

+
       ib_qp_state_t
+
+

DESCRIPTION

+
       Indicates or sets the state of a queue pair.  The current state of a queue
+       pair is returned through the ib_qp_query call and set via the
+       ib_qp_modify call.
+
+

SYNOPSIS

+
typedef uint32_t                                ib_qp_state_t;
+#define IB_QPS_RESET                    0x00000001
+#define IB_QPS_INIT                             0x00000002
+#define IB_QPS_RTR                              0x00000004
+#define IB_QPS_RTS                              0x00000008
+#define IB_QPS_SQD                              0x00000010
+#define IB_QPS_SQD_DRAINING             0x00000030
+#define IB_QPS_SQD_DRAINED              0x00000050
+#define IB_QPS_SQERR                    0x00000080
+#define IB_QPS_ERROR                    0x00000100
+#define IB_QPS_TIME_WAIT                0xDEAD0000      /* InfiniBand Access Layer */
+
+
+
+ +

[Definitions] +Access Layer/ib_qp_type_t

+ +

[top][index]

+

NAME

+
       ib_qp_type_t
+
+

DESCRIPTION

+
       Indicates the type of queue pair being created.
+
+

SYNOPSIS

+
typedef enum _ib_qp_type
+{
+        IB_QPT_RELIABLE_CONN    = 0,            /* Matches CM REQ transport type */
+        IB_QPT_UNRELIABLE_CONN  = 1,            /* Matches CM REQ transport type */
+        IB_QPT_UNRELIABLE_DGRM  = 3,            /* Purposefully skip RDD type. */
+        IB_QPT_QP0,
+        IB_QPT_QP1,
+        IB_QPT_RAW_IPV6,
+        IB_QPT_RAW_ETHER,
+        IB_QPT_MAD,                                                             /* InfiniBand Access Layer */
+        IB_QPT_QP0_ALIAS,                                               /* InfiniBand Access Layer */
+        IB_QPT_QP1_ALIAS                                                /* InfiniBand Access Layer */
+
+}       ib_qp_type_t;
+
+

VALUES

+
       IB_QPT_RELIABLE_CONN
+               Reliable, connected queue pair.
+
+       IB_QPT_UNRELIABLE_CONN
+               Unreliable, connected queue pair.
+
+       IB_QPT_UNRELIABLE_DGRM
+               Unreliable, datagram queue pair.
+
+       IB_QPT_QP0
+               Queue pair 0.
+
+       IB_QPT_QP1
+               Queue pair 1.
+
+       IB_QPT_RAW_DGRM
+               Raw datagram queue pair.
+
+       IB_QPT_RAW_IPV6
+               Raw IP version 6 queue pair.
+
+       IB_QPT_RAW_ETHER
+               Raw Ethernet queue pair.
+
+       IB_QPT_MAD
+               Unreliable, datagram queue pair that will send and receive management
+               datagrams with assistance from the access layer.
+
+       IB_QPT_QP0_ALIAS
+               Alias to queue pair 0.  Aliased QPs can only be created on an aliased
+               protection domain.
+
+       IB_QPT_QP1_ALIAS
+               Alias to queue pair 1.  Aliased QPs can only be created on an aliased
+               protection domain.
+
+
+
+ +

[Definitions] +Access Layer/ib_recv_opt_t

+ +

[top][index]

+

NAME

+
       ib_recv_opt_t
+
+

DESCRIPTION

+
       Indicates optional fields valid in a receive work completion.
+
+

SYNOPSIS

+
typedef uint32_t                                        ib_recv_opt_t;
+#define IB_RECV_OPT_IMMEDIATE           0x00000001
+#define IB_RECV_OPT_FORWARD                     0x00000002
+#define IB_RECV_OPT_GRH_VALID           0x00000004
+#define IB_RECV_OPT_VEND_MASK           0xFFFF0000
+
+

VALUES

+
       IB_RECV_OPT_IMMEDIATE
+               Indicates that immediate data is valid for this work completion.
+
+       IB_RECV_OPT_FORWARD
+               Indicates that the received trap should be forwarded to the SM.
+
+       IB_RECV_OPT_GRH_VALID
+               Indicates presence of the global route header. When set, the first
+               40 bytes received are the GRH.
+
+       IB_RECV_OPT_VEND_MASK
+               This mask indicates bits reserved in the receive options that may be
+               used by the verbs provider to indicate vendor specific options.  Bits
+               set in this area of the receive options are ignored by the Access Layer,
+               but may have specific meaning to the underlying VPD.
+
+
+
+ +

[Structures] +Access Layer/ib_recv_wr_t

+ +

[top][index]

+

NAME

+
       ib_recv_wr_t
+
+

DESCRIPTION

+
       Information used to submit a work request to the receive queue of a queue
+       pair.
+
+

SYNOPSIS

+
typedef struct _ib_recv_wr
+{
+        struct _ib_recv_wr* __ptr64     p_next;
+        uint64_t                                        wr_id;
+        uint32_t                                        num_ds;
+        ib_local_ds_t* __ptr64          ds_array;
+
+}       ib_recv_wr_t;
+
+

FIELDS

+
       p_next
+               A pointer used to chain work requests together.  This permits multiple
+               work requests to be posted to a queue pair through a single function
+               call.  This value is set to NULL to mark the end of the chain.
+
+       wr_id
+               A 64-bit work request identifier that is returned to the consumer
+               as part of the work completion.
+
+       num_ds
+               Number of local data segments specified by this work request.
+
+       ds_array
+               A reference to an array of local data segments used by the send
+               operation.
+
+

SEE ALSO

+
       ib_local_ds_t
+
+
+
+ +

[Definitions] +Access Layer/ib_rej_status_t

+ +

[top][index]

+

NAME

+
       ib_rej_status_t
+
+

DESCRIPTION

+
       Rejection reasons.
+
+

SYNOPSIS

+
typedef ib_net16_t                                                      ib_rej_status_t;
+
+

SEE ALSO

+
       ib_cm_rej, ib_cm_rej_rec_t
+
+

SOURCE

+
#define IB_REJ_INSUF_QP                                         CL_HTON16(1)
+#define IB_REJ_INSUF_EEC                                        CL_HTON16(2)
+#define IB_REJ_INSUF_RESOURCES                          CL_HTON16(3)
+#define IB_REJ_TIMEOUT                                          CL_HTON16(4)
+#define IB_REJ_UNSUPPORTED                                      CL_HTON16(5)
+#define IB_REJ_INVALID_COMM_ID                          CL_HTON16(6)
+#define IB_REJ_INVALID_COMM_INSTANCE            CL_HTON16(7)
+#define IB_REJ_INVALID_SID                                      CL_HTON16(8)
+#define IB_REJ_INVALID_XPORT                            CL_HTON16(9)
+#define IB_REJ_STALE_CONN                                       CL_HTON16(10)
+#define IB_REJ_RDC_NOT_EXIST                            CL_HTON16(11)
+#define IB_REJ_INVALID_GID                                      CL_HTON16(12)
+#define IB_REJ_INVALID_LID                                      CL_HTON16(13)
+#define IB_REJ_INVALID_SL                                       CL_HTON16(14)
+#define IB_REJ_INVALID_TRAFFIC_CLASS            CL_HTON16(15)
+#define IB_REJ_INVALID_HOP_LIMIT                        CL_HTON16(16)
+#define IB_REJ_INVALID_PKT_RATE                         CL_HTON16(17)
+#define IB_REJ_INVALID_ALT_GID                          CL_HTON16(18)
+#define IB_REJ_INVALID_ALT_LID                          CL_HTON16(19)
+#define IB_REJ_INVALID_ALT_SL                           CL_HTON16(20)
+#define IB_REJ_INVALID_ALT_TRAFFIC_CLASS        CL_HTON16(21)
+#define IB_REJ_INVALID_ALT_HOP_LIMIT            CL_HTON16(22)
+#define IB_REJ_INVALID_ALT_PKT_RATE                     CL_HTON16(23)
+#define IB_REJ_PORT_REDIRECT                            CL_HTON16(24)
+#define IB_REJ_INVALID_MTU                                      CL_HTON16(26)
+#define IB_REJ_INSUFFICIENT_RESP_RES            CL_HTON16(27)
+#define IB_REJ_USER_DEFINED                                     CL_HTON16(28)
+#define IB_REJ_INVALID_RNR_RETRY                        CL_HTON16(29)
+#define IB_REJ_DUPLICATE_LOCAL_COMM_ID          CL_HTON16(30)
+#define IB_REJ_INVALID_CLASS_VER                        CL_HTON16(31)
+#define IB_REJ_INVALID_FLOW_LBL                         CL_HTON16(32)
+#define IB_REJ_INVALID_ALT_FLOW_LBL                     CL_HTON16(33)
+
+
+
+ +

[Definitions] +Access Layer/ib_send_opt_t

+ +

[top][index]

+

NAME

+
       ib_send_opt_t
+
+

DESCRIPTION

+
       Optional flags used when posting send work requests.  These flags
+       indicate specific processing for the send operation.
+
+

SYNOPSIS

+
typedef uint32_t                                        ib_send_opt_t;
+#define IB_SEND_OPT_IMMEDIATE           0x00000001
+#define IB_SEND_OPT_FENCE                       0x00000002
+#define IB_SEND_OPT_SIGNALED            0x00000004
+#define IB_SEND_OPT_SOLICITED           0x00000008
+#define IB_SEND_OPT_INLINE                      0x00000010
+#define IB_SEND_OPT_LOCAL                       0x00000020
+#define IB_SEND_OPT_VEND_MASK           0xFFFF0000
+
+

VALUES

+
       The following flags determine the behavior of a work request when
+       posted to the send side.
+
+       IB_SEND_OPT_IMMEDIATE
+               Send immediate data with the given request.
+
+       IB_SEND_OPT_FENCE
+               The operation is fenced.  Complete all pending send operations before
+               processing this request.
+
+       IB_SEND_OPT_SIGNALED
+               If the queue pair is configured for signaled completion, then
+               generate a completion queue entry when this request completes.
+
+       IB_SEND_OPT_SOLICITED
+               Set the solicited bit on the last packet of this request.
+
+       IB_SEND_OPT_INLINE
+               Indicates that the requested send data should be copied into a VPD
+               owned data buffer.  This flag permits the user to issue send operations
+               without first needing to register the buffer(s) associated with the
+               send operation.  Verb providers that support this operation may place
+               vendor specific restrictions on the size of send operation that may
+               be performed as inline.
+
+       IB_SEND_OPT_LOCAL
+               Indicates that a sent MAD request should be given to the local VPD for
+               processing.  MADs sent using this option are not placed on the wire.
+               This send option is only valid for MAD send operations.
+
+       IB_SEND_OPT_VEND_MASK
+               This mask indicates bits reserved in the send options that may be used
+               by the verbs provider to indicate vendor specific options.  Bits set
+               in this area of the send options are ignored by the Access Layer, but
+               may have specific meaning to the underlying VPD.
+
+
+
+ +

[Structures] +Access Layer/ib_send_wr_t

+ +

[top][index]

+

NAME

+
       ib_send_wr_t
+
+

DESCRIPTION

+
       Information used to submit a work request to the send queue of a queue
+       pair.
+
+

SYNOPSIS

+
typedef struct _ib_send_wr
+{
+        struct _ib_send_wr* __ptr64     p_next;
+        uint64_t                                        wr_id;
+        ib_wr_type_t                            wr_type;
+        ib_send_opt_t                           send_opt;
+        uint32_t                                        num_ds;
+        ib_local_ds_t* __ptr64          ds_array;
+        ib_net32_t                                      immediate_data;
+
+        union _send_dgrm
+        {
+                struct _send_ud
+                {
+                        ib_net32_t              remote_qp;
+                        ib_net32_t              remote_qkey;
+                        ib_av_handle_t  h_av;
+                        uint16_t                pkey_index;
+                        void* __ptr64   rsvd;
+
+                }       ud;
+
+                struct _send_raw_ether
+                {
+                        ib_net16_t              dest_lid;
+                        uint8_t                 path_bits;
+                        uint8_t                 sl;
+                        uint8_t                 max_static_rate;
+                        ib_net16_t              ether_type;
+
+                }       raw_ether;
+
+                struct _send_raw_ipv6
+                {
+                        ib_net16_t              dest_lid;
+                        uint8_t                 path_bits;
+                        uint8_t                 sl;
+                        uint8_t                 max_static_rate;
+
+                }       raw_ipv6;
+
+        }       dgrm;
+
+        struct _send_remote_ops
+        {
+                uint64_t                        vaddr;
+                net32_t                         rkey;
+
+                ib_net64_t                      atomic1;
+                ib_net64_t                      atomic2;
+
+        }       remote_ops;
+
+}       ib_send_wr_t;
+
+

FIELDS

+
       p_next
+               A pointer used to chain work requests together.  This permits multiple
+               work requests to be posted to a queue pair through a single function
+               call.  This value is set to NULL to mark the end of the chain.
+
+       wr_id
+               A 64-bit work request identifier that is returned to the consumer
+               as part of the work completion.
+
+       wr_type
+               The type of work request being submitted to the send queue.
+
+       send_opt
+               Optional send control parameters.
+
+       num_ds
+               Number of local data segments specified by this work request.
+
+       ds_array
+               A reference to an array of local data segments used by the send
+               operation.
+
+       immediate_data
+               32-bit field sent as part of a message send or RDMA write operation.
+               This field is only valid if the send_opt flag IB_SEND_OPT_IMMEDIATE
+               has been set.
+
+       dgrm.ud.remote_qp
+               Identifies the destination queue pair of an unreliable datagram send
+               operation.
+
+       dgrm.ud.remote_qkey
+               The qkey for the destination queue pair.
+
+       dgrm.ud.h_av
+               An address vector that specifies the path information used to route
+               the outbound datagram to the destination queue pair.
+
+       dgrm.ud.pkey_index
+               The pkey index for this send work request.  This is valid only
+               for IB_QPT_QP1 and IB_QPT_QP1_ALIAS QP types.  The work request
+               is posted to using this pkey index build the GMP's BTH instead
+               of the QP's pkey.
+
+       dgrm.ud.rsvd
+               Reserved for use by the Access Layer.
+
+       dgrm.raw_ether.dest_lid
+               The destination LID that will receive this raw ether send.
+
+       dgrm.raw_ether.path_bits
+               path bits...
+
+       dgrm.raw_ether.sl
+               service level...
+
+       dgrm.raw_ether.max_static_rate
+               static rate...
+
+       dgrm.raw_ether.ether_type
+               ether type...
+
+       dgrm.raw_ipv6.dest_lid
+               The destination LID that will receive this raw ether send.
+
+       dgrm.raw_ipv6.path_bits
+               path bits...
+
+       dgrm.raw_ipv6.sl
+               service level...
+
+       dgrm.raw_ipv6.max_static_rate
+               static rate...
+
+       remote_ops.vaddr
+               The registered virtual memory address of the remote memory to access
+               with an RDMA or atomic operation.
+
+       remote_ops.rkey
+               The rkey associated with the specified remote vaddr. This data must
+               be presented exactly as obtained from the remote node. No swapping
+               of data must be performed.
+
+       atomic1
+               The first operand for an atomic operation.
+
+       atomic2
+               The second operand for an atomic operation.
+
+

NOTES

+
       The format of data sent over the fabric is user-defined and is considered
+       opaque to the access layer.  The sole exception to this are MADs posted
+       to a MAD QP service.  MADs are expected to match the format defined by
+       the Infiniband specification and must be in network-byte order when posted
+       to the MAD QP service.
+
+

SEE ALSO

+
       ib_wr_type_t, ib_local_ds_t, ib_send_opt_t
+
+
+
+ +

[Definitions] +Access Layer/ib_wc_status_t

+ +

[top][index]

+

NAME

+
       ib_wc_status_t
+
+

DESCRIPTION

+
       Indicates the status of a completed work request.  These VALUES are
+       returned to the user when retrieving completions.  Note that success is
+       identified as IB_WCS_SUCCESS, which is always zero.
+
+

SYNOPSIS

+
typedef enum _ib_wc_status_t
+{
+        IB_WCS_SUCCESS,
+        IB_WCS_LOCAL_LEN_ERR,
+        IB_WCS_LOCAL_OP_ERR,
+        IB_WCS_LOCAL_PROTECTION_ERR,
+        IB_WCS_WR_FLUSHED_ERR,
+        IB_WCS_MEM_WINDOW_BIND_ERR,
+        IB_WCS_REM_ACCESS_ERR,
+        IB_WCS_REM_OP_ERR,
+        IB_WCS_RNR_RETRY_ERR,
+        IB_WCS_TIMEOUT_RETRY_ERR,
+        IB_WCS_REM_INVALID_REQ_ERR,
+        IB_WCS_BAD_RESP_ERR,
+        IB_WCS_LOCAL_ACCESS_ERR,
+        IB_WCS_GENERAL_ERR,
+        IB_WCS_UNMATCHED_RESPONSE,                      /* InfiniBand Access Layer */
+        IB_WCS_CANCELED,                                        /* InfiniBand Access Layer */
+        IB_WCS_UNKNOWN                                          /* Must be last. */
+
+}       ib_wc_status_t;
+
+

VALUES

+
       IB_WCS_SUCCESS
+               Work request completed successfully.
+
+       IB_WCS_MAD
+               The completed work request was associated with a managmenet datagram
+               that requires post processing.  The MAD will be returned to the user
+               through a callback once all post processing has completed.
+
+       IB_WCS_LOCAL_LEN_ERR
+               Generated for a work request posted to the send queue when the
+               total of the data segment lengths exceeds the message length of the
+               channel.  Generated for a work request posted to the receive queue when
+               the total of the data segment lengths is too small for a
+               valid incoming message.
+
+       IB_WCS_LOCAL_OP_ERR
+               An internal QP consistency error was generated while processing this
+               work request.  This may indicate that the QP was in an incorrect state
+               for the requested operation.
+
+       IB_WCS_LOCAL_PROTECTION_ERR
+               The data segments of the locally posted work request did not refer to
+               a valid memory region.  The memory may not have been properly
+               registered for the requested operation.
+
+       IB_WCS_WR_FLUSHED_ERR
+               The work request was flushed from the QP before being completed.
+
+       IB_WCS_MEM_WINDOW_BIND_ERR
+               A memory window bind operation failed due to insufficient access
+               rights.
+
+       IB_WCS_REM_ACCESS_ERR,
+               A protection error was detected at the remote node for a RDMA or atomic
+               operation.
+
+       IB_WCS_REM_OP_ERR,
+               The operation could not be successfully completed at the remote node.
+               This may indicate that the remote QP was in an invalid state or
+               contained an invalid work request.
+
+       IB_WCS_RNR_RETRY_ERR,
+               The RNR retry count was exceeded while trying to send this message.
+
+       IB_WCS_TIMEOUT_RETRY_ERR
+               The local transport timeout counter expired while trying to send this
+               message.
+
+       IB_WCS_REM_INVALID_REQ_ERR,
+               The remote node detected an invalid message on the channel.  This error
+               is usually a result of one of the following:
+                       - The operation was not supported on receive queue.
+                       - There was insufficient buffers to receive a new RDMA request.
+                       - There was insufficient buffers to receive a new atomic operation.
+                       - An RDMA request was larger than 2^31 bytes.
+
+      IB_WCS_BAD_RESP_ERR,
+              An unexpected transport layer opcode was returned
+              by the responder.
+
+      IB_WCS_LOCAL_ACCESS_ERR,
+              A protection error occurred on a local data buffer
+              during the processing of a RDMA Write with Immediate Data 
+              operation sent from the remote node.
+
+       IB_WCS_UNMATCHED_RESPONSE
+               A response MAD was received for which there was no matching send.  The
+               send operation may have been canceled by the user or may have timed
+               out.
+
+       IB_WCS_CANCELED
+               The completed work request was canceled by the user.
+
+      IB_WCS_GENERAL_ERR,
+              Any other error
+
+
+
+ +

[Structures] +Access Layer/ib_wc_t

+ +

[top][index]

+

NAME

+
       ib_wc_t
+
+

DESCRIPTION

+
       Work completion information.
+
+

SYNOPSIS

+
typedef struct _ib_wc
+{
+        struct _ib_wc* __ptr64  p_next;
+        uint64_t                                wr_id;
+        ib_wc_type_t                    wc_type;
+
+        uint32_t                                length;
+        ib_wc_status_t                  status;
+        uint64_t                                vendor_specific;
+
+        union _wc_recv
+        {
+                struct _wc_conn
+                {
+                        ib_recv_opt_t   recv_opt;
+                        ib_net32_t              immediate_data;
+
+                }       conn;
+
+                struct _wc_ud
+                {
+                        ib_recv_opt_t   recv_opt;
+                        ib_net32_t              immediate_data;
+                        ib_net32_t              remote_qp;
+                        uint16_t                pkey_index;
+                        ib_net16_t              remote_lid;
+                        uint8_t                 remote_sl;
+                        uint8_t                 path_bits;
+
+                }       ud;
+
+                struct _wc_raw_ipv6
+                {
+                        ib_net16_t              remote_lid;
+                        uint8_t                 remote_sl;
+                        uint8_t                 path_bits;
+
+                }       raw_ipv6;
+
+                struct _wc_raw_ether
+                {
+                        ib_net16_t              remote_lid;
+                        uint8_t                 remote_sl;
+                        uint8_t                 path_bits;
+                        ib_net16_t              ether_type;
+
+                }       raw_ether;
+
+        }       recv;
+
+}       ib_wc_t;
+
+

FIELDS

+
       p_next
+               A pointer used to chain work completions.  This permits multiple
+               work completions to be retrieved from a completion queue through a
+               single function call.  This value is set to NULL to mark the end of
+               the chain.
+
+       wr_id
+               The 64-bit work request identifier that was specified when posting the
+               work request.
+
+       wc_type
+               Indicates the type of work completion.
+
+       length
+               The total length of the data sent or received with the work request.
+
+       status
+               The result of the work request.
+
+       vendor_specific
+               HCA vendor specific information returned as part of the completion.
+
+       recv.conn.recv_opt
+               Indicates optional fields valid as part of a work request that
+               completed on a connected (reliable or unreliable) queue pair.
+
+       recv.conn.immediate_data
+               32-bit field received as part of an inbound message on a connected
+               queue pair.  This field is only valid if the recv_opt flag
+               IB_RECV_OPT_IMMEDIATE has been set.
+
+       recv.ud.recv_opt
+               Indicates optional fields valid as part of a work request that
+               completed on an unreliable datagram queue pair.
+
+       recv.ud.immediate_data
+               32-bit field received as part of an inbound message on a unreliable
+               datagram queue pair.  This field is only valid if the recv_opt flag
+               IB_RECV_OPT_IMMEDIATE has been set.
+
+       recv.ud.remote_qp
+               Identifies the source queue pair of a received datagram.
+
+       recv.ud.pkey_index
+               The pkey index of the source queue pair. This is valid only for
+               IB_QPT_QP1 and IB_QPT_QP1_ALIAS QP types.
+
+       recv.ud.remote_lid
+               The source LID of the received datagram.
+
+       recv.ud.remote_sl
+               The service level used by the source of the received datagram.
+
+       recv.ud.path_bits
+               path bits...
+
+       recv.raw_ipv6.remote_lid
+               The source LID of the received message.
+
+       recv.raw_ipv6.remote_sl
+               The service level used by the source of the received message.
+
+       recv.raw_ipv6.path_bits
+               path bits...
+
+       recv.raw_ether.remote_lid
+               The source LID of the received message.
+
+       recv.raw_ether.remote_sl
+               The service level used by the source of the received message.
+
+       recv.raw_ether.path_bits
+               path bits...
+
+       recv.raw_ether.ether_type
+               ether type...
+
+

NOTES

+
       When the work request completes with error, the only values that the
+       consumer can depend on are the wr_id field, and the status of the
+       operation.
+
+       If the consumer is using the same CQ for completions from more than
+       one type of QP (i.e Reliable Connected, Datagram etc), then the consumer
+       must have additional information to decide what fields of the union are
+       valid.
+
+

SEE ALSO

+
       ib_wc_type_t, ib_qp_type_t, ib_wc_status_t, ib_recv_opt_t
+
+
+
+ +

[Definitions] +Access Layer/ib_wc_type_t

+ +

[top][index]

+

NAME

+
       ib_wc_type_t
+
+

DESCRIPTION

+
       Indicates the type of work completion.
+
+

SYNOPSIS

+
typedef enum _ib_wc_type_t
+{
+        IB_WC_SEND,
+        IB_WC_RDMA_WRITE,
+        IB_WC_RECV,
+        IB_WC_RDMA_READ,
+        IB_WC_MW_BIND,
+        IB_WC_FETCH_ADD,
+        IB_WC_COMPARE_SWAP,
+        IB_WC_RECV_RDMA_WRITE,
+        IB_WC_UNKNOWN
+
+}       ib_wc_type_t;
+
+
+
+ +

[Definitions] +Access Layer/ib_wr_type_t

+ +

[top][index]

+

NAME

+
       ib_wr_type_t
+
+

DESCRIPTION

+
       Identifies the type of work request posted to a queue pair.
+
+

SYNOPSIS

+
typedef enum _ib_wr_type_t
+{
+        WR_SEND = 1,
+        WR_RDMA_WRITE,
+        WR_RDMA_READ,
+        WR_COMPARE_SWAP,
+        WR_FETCH_ADD,
+        WR_UNKNOWN
+
+}       ib_wr_type_t;
+
+
+
+ +

[Structures] +IBA Base: Constants/IB_CLASS_CAP_GETSET

+ +

[top][index]

+

NAME

+
       IB_CLASS_CAP_GETSET
+
+

DESCRIPTION

+
       ClassPortInfo CapabilityMask bits.  This bit will be set
+       if the class supports Get(Notice) and Set(Notice) MADs (13.4.8.1).
+
+

SEE ALSO

+
       ib_class_port_info_t, IB_CLASS_CAP_TRAP
+
+

SOURCE

+
#define IB_CLASS_CAP_GETSET                                     0x0002
+
+
+
+ +

[Structures] +IBA Base: Constants/IB_CLASS_CAP_TRAP

+ +

[top][index]

+

NAME

+
       IB_CLASS_CAP_TRAP
+
+

DESCRIPTION

+
       ClassPortInfo CapabilityMask bits.  This bit will be set
+       if the class supports Trap() MADs (13.4.8.1).
+
+

SEE ALSO

+
       ib_class_port_info_t, IB_CLASS_CAP_GETSET
+
+

SOURCE

+
#define IB_CLASS_CAP_TRAP                                       0x0001
+
+
+
+ +

[Structures] +IBA Base: Constants/IB_CLASS_RESP_TIME_MASK

+ +

[top][index]

+

NAME

+
       IB_CLASS_RESP_TIME_MASK
+
+

DESCRIPTION

+
       Mask bits to extract the reponse time value from the
+       resp_time_val field of ib_class_port_info_t.
+
+

SEE ALSO

+
       ib_class_port_info_t
+
+

SOURCE

+
#define IB_CLASS_RESP_TIME_MASK                         0x1F
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_DEFAULT_PKEY

+ +

[top][index]

+

NAME

+
       IB_DEFAULT_PKEY
+
+

DESCRIPTION

+
       P_Key value for the default partition.
+
+

SOURCE

+
#define IB_DEFAULT_PKEY                                         0xFFFF
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_DEFAULT_SUBNET_PREFIX

+ +

[top][index]

+

NAME

+
       IB_DEFAULT_SUBNET_PREFIX
+
+

DESCRIPTION

+
       Default subnet GID prefix.
+
+

SOURCE

+
#define IB_DEFAULT_SUBNET_PREFIX                        (CL_HTON64(CL_CONST64(0xFE80000000000000)))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_INVALID_PORT_NUM

+ +

[top][index]

+

NAME

+
       IB_INVALID_PORT_NUM
+
+

DESCRIPTION

+
       Value used to indicate an invalid port number (14.2.5.10).
+
+

SOURCE

+
#define IB_INVALID_PORT_NUM                                     0xFF
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_LID_MCAST_END

+ +

[top][index]

+

NAME

+
       IB_LID_MCAST_END
+
+

DESCRIPTION

+
       Highest valid multicast LID value.
+
+

SOURCE

+
#define IB_LID_MCAST_END_HO                                     0xFFFE
+#define IB_LID_MCAST_END                                        (CL_HTON16(IB_LID_MCAST_END_HO))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_LID_MCAST_START

+ +

[top][index]

+

NAME

+
       IB_LID_MCAST_START
+
+

DESCRIPTION

+
       Lowest valid multicast LID value.
+
+

SOURCE

+
#define IB_LID_MCAST_START_HO                           0xC000
+#define IB_LID_MCAST_START                                      (CL_HTON16(IB_LID_MCAST_START_HO))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_LID_PERMISSIVE

+ +

[top][index]

+

NAME

+
       IB_LID_PERMISSIVE
+
+

DESCRIPTION

+
       Permissive LID
+
+

SOURCE

+
#define IB_LID_PERMISSIVE                                       0xFFFF
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_LID_UCAST_END

+ +

[top][index]

+

NAME

+
       IB_LID_UCAST_END
+
+

DESCRIPTION

+
       Highest valid unicast LID value.
+
+

SOURCE

+
#define IB_LID_UCAST_END_HO                                     0xBFFF
+#define IB_LID_UCAST_END                                        (CL_HTON16(IB_LID_UCAST_END_HO))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_LID_UCAST_START

+ +

[top][index]

+

NAME

+
       IB_LID_UCAST_START
+
+

DESCRIPTION

+
       Lowest valid unicast LID value.
+
+

SOURCE

+
#define IB_LID_UCAST_START_HO                           0x0001
+#define IB_LID_UCAST_START                                      (CL_HTON16(IB_LID_UCAST_START_HO))
+
+
+
+ +

[Definitions] +IBA Base: Constants/ib_link_states_t

+ +

[top][index]

+

NAME

+
       ib_link_states_t
+
+

DESCRIPTION

+
       Defines the link states of a port.
+
+

SOURCE

+
#define IB_LINK_NO_CHANGE 0
+#define IB_LINK_DOWN      1
+#define IB_LINK_INIT      2
+#define IB_LINK_ARMED     3
+#define IB_LINK_ACTIVE    4
+#define IB_LINK_ACT_DEFER 5
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_CLASS_PORT_INFO

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_CLASS_PORT_INFO
+
+

DESCRIPTION

+
       ClassPortInfo attribute (13.4.8)
+
+

SOURCE

+
#define IB_MAD_ATTR_CLASS_PORT_INFO                     (CL_NTOH16(0x0001))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_DIAG_CODE

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_DIAG_CODE
+
+

DESCRIPTION

+
       DiagCode attribute (16.3.3)
+
+

SOURCE

+
#define IB_MAD_ATTR_DIAG_CODE                           (CL_NTOH16(0x0024))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT
+
+

DESCRIPTION

+
       DiagnosticTimeout attribute (16.3.3)
+
+

SOURCE

+
#define IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT          (CL_NTOH16(0x0020))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_GUID_INFO

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_GUID_INFO
+
+

DESCRIPTION

+
       GUIDInfo attribute (14.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_GUID_INFO                           (CL_NTOH16(0x0014))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_INFORM_INFO

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_INFORM_INFO
+
+

DESCRIPTION

+
       InformInfo attribute (13.4.8)
+
+

SOURCE

+
#define IB_MAD_ATTR_INFORM_INFO                         (CL_NTOH16(0x0003))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_IO_UNIT_INFO

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_IO_UNIT_INFO
+
+

DESCRIPTION

+
       IOUnitInfo attribute (16.3.3)
+
+

SOURCE

+
#define IB_MAD_ATTR_IO_UNIT_INFO                        (CL_NTOH16(0x0010))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_IOC_PROFILE

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_IOC_PROFILE
+
+

DESCRIPTION

+
       IOControllerProfile attribute (16.3.3)
+
+

SOURCE

+
#define IB_MAD_ATTR_IOC_PROFILE                         (CL_NTOH16(0x0011))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_LED_INFO

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_LED_INFO
+
+

DESCRIPTION

+
       LedInfo attribute (14.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_LED_INFO                            (CL_NTOH16(0x0031))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_LFT_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_LFT_RECORD
+
+

DESCRIPTION

+
       LinearForwardingRecord attribute (15.2.5.6)
+
+

SOURCE

+
#define IB_MAD_ATTR_LFT_RECORD                  (CL_NTOH16(0x0015))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_LIN_FWD_TBL

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_LIN_FWD_TBL
+
+

DESCRIPTION

+
       Switch linear forwarding table
+
+

SOURCE

+
#define IB_MAD_ATTR_LIN_FWD_TBL                         (CL_NTOH16(0x0019))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_LINK_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_LINK_RECORD
+
+

DESCRIPTION

+
       LinkRecord attribute (15.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_LINK_RECORD                         (CL_NTOH16(0x0020))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_MCAST_FWD_TBL

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_MCAST_FWD_TBL
+
+

DESCRIPTION

+
       Switch multicast forwarding table
+
+

SOURCE

+
#define IB_MAD_ATTR_MCAST_FWD_TBL                       (CL_NTOH16(0x001B))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_MCMEMBER_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_MCMEMBER_RECORD
+
+

DESCRIPTION

+
       MCMemberRecord attribute (15.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_MCMEMBER_RECORD                     (CL_NTOH16(0x0038))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_MULTIPATH_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_MULTIPATH_RECORD
+
+

DESCRIPTION

+
       MultiPath attribute (15.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_MULTIPATH_RECORD                    (CL_NTOH16(0x003A))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_NODE_DESC

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_NODE_DESC
+
+

DESCRIPTION

+
       NodeDescription attribute (14.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_NODE_DESC                           (CL_NTOH16(0x0010))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_NODE_INFO

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_NODE_INFO
+
+

DESCRIPTION

+
       NodeInfo attribute (14.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_NODE_INFO                           (CL_NTOH16(0x0011))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_NODE_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_NODE_RECORD
+
+

DESCRIPTION

+
       NodeRecord attribute (15.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_NODE_RECORD                         (CL_NTOH16(0x0011))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_NOTICE

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_NOTICE
+
+

DESCRIPTION

+
       Notice attribute (13.4.8)
+
+

SOURCE

+
#define IB_MAD_ATTR_NOTICE                                      (CL_NTOH16(0x0002))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_P_KEY_TABLE

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_P_KEY_TABLE
+
+

DESCRIPTION

+
       PartitionTable attribute (14.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_P_KEY_TABLE                         (CL_NTOH16(0x0016))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_PATH_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_PATH_RECORD
+
+

DESCRIPTION

+
       PathRecord attribute (15.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_PATH_RECORD                         (CL_NTOH16(0x0035))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_PKEYTBL_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_PKEYTBL_RECORD
+
+

DESCRIPTION

+
       P-KEY table attribute (15.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_PKEY_TBL_RECORD                     (CL_NTOH16(0x0033))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_PORT_CNTRS

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_PORT_CNTRS
+
+

DESCRIPTION

+
       SwitchInfo attribute (16.1.2)
+
+

SOURCE

+
#define IB_MAD_ATTR_PORT_CNTRS                          (CL_NTOH16(0x0012))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_PORT_INFO

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_PORT_INFO
+
+

DESCRIPTION

+
       PortInfo attribute (14.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_PORT_INFO                           (CL_NTOH16(0x0015))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_CTRL

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_PORT_SMPL_CTRL
+
+

DESCRIPTION

+
       NodeDescription attribute (16.1.2)
+
+

SOURCE

+
#define IB_MAD_ATTR_PORT_SMPL_CTRL                      (CL_NTOH16(0x0010))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_PORT_SMPL_RSLT

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_PORT_SMPL_RSLT
+
+

DESCRIPTION

+
       NodeInfo attribute (16.1.2)
+
+

SOURCE

+
#define IB_MAD_ATTR_PORT_SMPL_RSLT                      (CL_NTOH16(0x0011))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_PORTINFO_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_PORTINFO_RECORD
+
+

DESCRIPTION

+
       PortInfoRecord attribute (15.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_PORTINFO_RECORD                     (CL_NTOH16(0x0012))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_PREPARE_TO_TEST

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_PREPARE_TO_TEST
+
+

DESCRIPTION

+
       PrepareToTest attribute (16.3.3)
+
+

SOURCE

+
#define IB_MAD_ATTR_PREPARE_TO_TEST                     (CL_NTOH16(0x0021))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_RND_FWD_TBL

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_RND_FWD_TBL
+
+

DESCRIPTION

+
       Switch random forwarding table
+
+

SOURCE

+
#define IB_MAD_ATTR_RND_FWD_TBL                         (CL_NTOH16(0x001A))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_SERVICE_ENTRIES

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_SERVICE_ENTRIES
+
+

DESCRIPTION

+
       ServiceEntries attribute (16.3.3)
+
+

SOURCE

+
#define IB_MAD_ATTR_SERVICE_ENTRIES                     (CL_NTOH16(0x0012))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_SERVICE_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_SERVICE_RECORD
+
+

DESCRIPTION

+
       ServiceRecord attribute (15.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_SERVICE_RECORD                      (CL_NTOH16(0x0031))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_SLVL_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_SLVL_RECORD
+
+

DESCRIPTION

+
       VSLtoL Map Table attribute (15.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_SLVL_RECORD                         (CL_NTOH16(0x0013))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_SLVL_TABLE

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_SLVL_TABLE
+
+

DESCRIPTION

+
       SL VL Mapping Table attribute (14.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_SLVL_TABLE                          (CL_NTOH16(0x0017))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_SM_INFO

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_SM_INFO
+
+

DESCRIPTION

+
       SMInfo attribute (14.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_SM_INFO                                     (CL_NTOH16(0x0020))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_SMINFO_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_SMINFO_RECORD
+
+

DESCRIPTION

+
       SmInfoRecord attribute (15.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_SMINFO_RECORD                       (CL_NTOH16(0x0018))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_SVC_ASSOCIATION_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
+
+

DESCRIPTION

+
       Service Association attribute (15.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_SVC_ASSOCIATION_RECORD              (CL_NTOH16(0x003B))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_SWITCH_INFO

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_SWITCH_INFO
+
+

DESCRIPTION

+
       SwitchInfo attribute (14.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_SWITCH_INFO                         (CL_NTOH16(0x0012))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_LOOP

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_TEST_DEVICE_LOOP
+
+

DESCRIPTION

+
       TestDeviceLoop attribute (16.3.3)
+
+

SOURCE

+
#define IB_MAD_ATTR_TEST_DEVICE_LOOP            (CL_NTOH16(0x0023))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_TEST_DEVICE_ONCE

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_TEST_DEVICE_ONCE
+
+

DESCRIPTION

+
       TestDeviceOnce attribute (16.3.3)
+
+

SOURCE

+
#define IB_MAD_ATTR_TEST_DEVICE_ONCE            (CL_NTOH16(0x0022))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_TRACE_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_MTRACE_RECORD
+
+

DESCRIPTION

+
       TraceRecord attribute (15.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_TRACE_RECORD                        (CL_NTOH16(0x0039))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_VENDOR_DIAG

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_VENDOR_DIAG
+
+

DESCRIPTION

+
       VendorDiag attribute (14.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_VENDOR_DIAG                         (CL_NTOH16(0x0030))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_VL_ARBITRATION

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_VL_ARBITRATION
+
+

DESCRIPTION

+
       VL Arbitration Table attribute (14.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_VL_ARBITRATION                      (CL_NTOH16(0x0018))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_ATTR_VLARB_RECORD

+ +

[top][index]

+

NAME

+
       IB_MAD_ATTR_VLARB_RECORD
+
+

DESCRIPTION

+
       VL Arbitration Table attribute (15.2.5)
+
+

SOURCE

+
#define IB_MAD_ATTR_VLARB_RECORD                        (CL_NTOH16(0x0036))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_METHOD_GET

+ +

[top][index]

+

NAME

+
       IB_MAD_METHOD_GET
+
+

DESCRIPTION

+
       Get() Method (13.4.5)
+
+

SOURCE

+
#define IB_MAD_METHOD_GET                                       0x01
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_METHOD_GET_RESP

+ +

[top][index]

+

NAME

+
       IB_MAD_METHOD_GET_RESP
+
+

DESCRIPTION

+
       GetResp() Method (13.4.5)
+
+

SOURCE

+
#define IB_MAD_METHOD_GET_RESP                          0x81
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_METHOD_GETTABLE

+ +

[top][index]

+

NAME

+
       IB_MAD_METHOD_GETTABLE
+
+

DESCRIPTION

+
       SubnAdmGetTable() Method (15.2.2)
+
+

SOURCE

+
#define IB_MAD_METHOD_GETTABLE                          0x12
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_METHOD_GETTABLE_RESP

+ +

[top][index]

+

NAME

+
       IB_MAD_METHOD_GETTABLE_RESP
+
+

DESCRIPTION

+
       SubnAdmGetTableResp() Method (15.2.2)
+
+

SOURCE

+
#define IB_MAD_METHOD_GETTABLE_RESP                     0x92
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_METHOD_REPORT

+ +

[top][index]

+

NAME

+
       IB_MAD_METHOD_REPORT
+
+

DESCRIPTION

+
       Report() Method (13.4.5)
+
+

SOURCE

+
#define IB_MAD_METHOD_REPORT                            0x06
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_METHOD_REPORT_RESP

+ +

[top][index]

+

NAME

+
       IB_MAD_METHOD_REPORT_RESP
+
+

DESCRIPTION

+
       ReportResp() Method (13.4.5)
+
+

SOURCE

+
#define IB_MAD_METHOD_REPORT_RESP                       0x86
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_METHOD_RESP_MASK

+ +

[top][index]

+

NAME

+
       IB_MAD_METHOD_RESP_MASK
+
+

DESCRIPTION

+
       Response mask to extract 'R' bit from the method field. (13.4.5)
+
+

SOURCE

+
#define IB_MAD_METHOD_RESP_MASK                         0x80
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_METHOD_SEND

+ +

[top][index]

+

NAME

+
       IB_MAD_METHOD_SEND
+
+

DESCRIPTION

+
       Send() Method (13.4.5)
+
+

SOURCE

+
#define IB_MAD_METHOD_SEND                                      0x03
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_METHOD_SET

+ +

[top][index]

+

NAME

+
       IB_MAD_METHOD_SET
+
+

DESCRIPTION

+
       Set() Method (13.4.5)
+
+

SOURCE

+
#define IB_MAD_METHOD_SET                                       0x02
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_METHOD_TRAP

+ +

[top][index]

+

NAME

+
       IB_MAD_METHOD_TRAP
+
+

DESCRIPTION

+
       Trap() Method (13.4.5)
+
+

SOURCE

+
#define IB_MAD_METHOD_TRAP                                      0x05
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_METHOD_TRAP_REPRESS

+ +

[top][index]

+

NAME

+
       IB_MAD_METHOD_TRAP_REPRESS
+
+

DESCRIPTION

+
       TrapRepress() Method (13.4.5)
+
+

SOURCE

+
#define IB_MAD_METHOD_TRAP_REPRESS                      0x07
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_STATUS_BUSY

+ +

[top][index]

+

NAME

+
       IB_MAD_STATUS_BUSY
+
+

DESCRIPTION

+
       Temporarily busy, MAD discarded (13.4.7)
+
+

SOURCE

+
#define IB_MAD_STATUS_BUSY                                      (CL_HTON16(0x0001))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_STATUS_INVALID_FIELD

+ +

[top][index]

+

NAME

+
       IB_MAD_STATUS_INVALID_FIELD
+
+

DESCRIPTION

+
       Attribute contains one or more invalid fields (13.4.7)
+
+

SOURCE

+
#define IB_MAD_STATUS_INVALID_FIELD                     (CL_HTON16(0x001C))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_STATUS_REDIRECT

+ +

[top][index]

+

NAME

+
       IB_MAD_STATUS_REDIRECT
+
+

DESCRIPTION

+
       QP Redirection required (13.4.7)
+
+

SOURCE

+
#define IB_MAD_STATUS_REDIRECT                          (CL_HTON16(0x0002))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_STATUS_UNSUP_CLASS_VER

+ +

[top][index]

+

NAME

+
       IB_MAD_STATUS_UNSUP_CLASS_VER
+
+

DESCRIPTION

+
       Unsupported class version (13.4.7)
+
+

SOURCE

+
#define IB_MAD_STATUS_UNSUP_CLASS_VER           (CL_HTON16(0x0004))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD

+ +

[top][index]

+

NAME

+
       IB_MAD_STATUS_UNSUP_METHOD
+
+

DESCRIPTION

+
       Unsupported method (13.4.7)
+
+

SOURCE

+
#define IB_MAD_STATUS_UNSUP_METHOD                      (CL_HTON16(0x0008))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAD_STATUS_UNSUP_METHOD_ATTR

+ +

[top][index]

+

NAME

+
       IB_MAD_STATUS_UNSUP_METHOD_ATTR
+
+

DESCRIPTION

+
       Unsupported method/attribute combination (13.4.7)
+
+

SOURCE

+
#define IB_MAD_STATUS_UNSUP_METHOD_ATTR         (CL_HTON16(0x000C))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MAX_METHOD

+ +

[top][index]

+

NAME

+
       IB_MAX_METHOD
+
+

DESCRIPTION

+
       Total number of methods available to a class, not including the R-bit.
+
+

SOURCE

+
#define IB_MAX_METHODS                                          128
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCAST_BLOCK_ID_MASK_HO

+ +

[top][index]

+

NAME

+
       IB_MCAST_BLOCK_ID_MASK_HO
+
+

DESCRIPTION

+
       Mask (host order) to recover the Multicast block ID.
+
+

SOURCE

+
#define IB_MCAST_BLOCK_ID_MASK_HO                       0x000001FF
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCAST_BLOCK_SIZE

+ +

[top][index]

+

NAME

+
       IB_MCAST_BLOCK_SIZE
+
+

DESCRIPTION

+
       Number of port mask entries in a multicast forwarding table block.
+
+

SOURCE

+
#define IB_MCAST_BLOCK_SIZE                                     32
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCAST_MASK_SIZE

+ +

[top][index]

+

NAME

+
       IB_MCAST_MASK_SIZE
+
+

DESCRIPTION

+
       Number of port mask bits in each entry in the multicast forwarding table.
+
+

SOURCE

+
#define IB_MCAST_MASK_SIZE                                      16
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCAST_MAX_BLOCK_ID

+ +

[top][index]

+

NAME

+
       IB_MCAST_MAX_BLOCK_ID
+
+

DESCRIPTION

+
       Maximum number of Multicast port mask blocks
+
+

SOURCE

+
#define IB_MCAST_MAX_BLOCK_ID                           511
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCAST_POSITION_MASK_HO

+ +

[top][index]

+

NAME

+
       IB_MCAST_POSITION_MASK_HO
+
+

DESCRIPTION

+
       Mask (host order) to recover the multicast block position.
+
+

SOURCE

+
#define IB_MCAST_POSITION_MASK_HO                               0xF0000000
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCAST_POSITION_MAX

+ +

[top][index]

+

NAME

+
       IB_MCAST_POSITION_MAX
+
+

DESCRIPTION

+
       Maximum value for the multicast block position.
+
+

SOURCE

+
#define IB_MCAST_POSITION_MAX                           0xF
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCAST_POSITION_SHIFT

+ +

[top][index]

+

NAME

+
       IB_MCAST_POSITION_SHIFT
+
+

DESCRIPTION

+
       Shift value to normalize the multicast block position value.
+
+

SOURCE

+
#define IB_MCAST_POSITION_SHIFT                         28
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCLASS_BM

+ +

[top][index]

+

NAME

+
       IB_MCLASS_BM
+
+

DESCRIPTION

+
       Subnet Management Class, Baseboard Manager (13.4.4)
+
+

SOURCE

+
#define IB_MCLASS_BM                                            0x05
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCLASS_COMM_MGMT

+ +

[top][index]

+

NAME

+
       IB_MCLASS_COMM_MGMT
+
+

DESCRIPTION

+
       Subnet Management Class, Communication Management (13.4.4)
+
+

SOURCE

+
#define IB_MCLASS_COMM_MGMT                                     0x07
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCLASS_DEV_MGMT

+ +

[top][index]

+

NAME

+
       IB_MCLASS_DEV_MGMT
+
+

DESCRIPTION

+
       Subnet Management Class, Device Management (13.4.4)
+
+

SOURCE

+
#define IB_MCLASS_DEV_MGMT                                      0x06
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCLASS_PERF

+ +

[top][index]

+

NAME

+
       IB_MCLASS_PERF
+
+

DESCRIPTION

+
       Subnet Management Class, Performance Manager (13.4.4)
+
+

SOURCE

+
#define IB_MCLASS_PERF                                          0x04
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCLASS_SNMP

+ +

[top][index]

+

NAME

+
       IB_MCLASS_SNMP
+
+

DESCRIPTION

+
       Subnet Management Class, SNMP Tunneling (13.4.4)
+
+

SOURCE

+
#define IB_MCLASS_SNMP                                          0x08
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCLASS_SUBN_ADM

+ +

[top][index]

+

NAME

+
       IB_MCLASS_SUBN_ADM
+
+

DESCRIPTION

+
       Subnet Management Class, Subnet Administration (13.4.4)
+
+

SOURCE

+
#define IB_MCLASS_SUBN_ADM                                      0x03
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCLASS_SUBN_DIR

+ +

[top][index]

+

NAME

+
       IB_MCLASS_SUBN_DIR
+
+

DESCRIPTION

+
       Subnet Management Class, Subnet Manager directed route (13.4.4)
+
+

SOURCE

+
#define IB_MCLASS_SUBN_DIR                                      0x81
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCLASS_SUBN_LID

+ +

[top][index]

+

NAME

+
       IB_MCLASS_SUBN_LID
+
+

DESCRIPTION

+
       Subnet Management Class, Subnet Manager LID routed (13.4.4)
+
+

SOURCE

+
#define IB_MCLASS_SUBN_LID                                      0x01
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MAX

+ +

[top][index]

+

NAME

+
       IB_MCLASS_VENDOR_HIGH_RANGE_MAX
+
+

DESCRIPTION

+
       Subnet Management Class, Vendor Specific High Range End
+
+

SOURCE

+
#define IB_MCLASS_VENDOR_HIGH_RANGE_MAX 0x4f
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCLASS_VENDOR_HIGH_RANGE_MIN

+ +

[top][index]

+

NAME

+
       IB_MCLASS_VENDOR_HIGH_RANGE_MIN
+
+

DESCRIPTION

+
       Subnet Management Class, Vendor Specific High Range Start
+
+

SOURCE

+
#define IB_MCLASS_VENDOR_HIGH_RANGE_MIN 0x30
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MAX

+ +

[top][index]

+

NAME

+
       IB_MCLASS_VENDOR_LOW_RANGE_MAX
+
+

DESCRIPTION

+
       Subnet Management Class, Vendor Specific Low Range End
+
+

SOURCE

+
#define IB_MCLASS_VENDOR_LOW_RANGE_MAX 0x0f
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MCLASS_VENDOR_LOW_RANGE_MIN

+ +

[top][index]

+

NAME

+
       IB_MCLASS_VENDOR_LOW_RANGE_MIN
+
+

DESCRIPTION

+
       Subnet Management Class, Vendor Specific Low Range Start
+
+

SOURCE

+
#define IB_MCLASS_VENDOR_LOW_RANGE_MIN 0x09
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_MTU_TYPE

+ +

[top][index]

+

NAME

+
       IB_MTU_TYPE
+
+

DESCRIPTION

+
       Encoded path MTU.
+               1: 256
+               2: 512
+               3: 1024
+               4: 2048
+               5: 4096
+               others: reserved
+
+

SOURCE

+
#define IB_MTU_256                                                      1
+#define IB_MTU_512                                                      2
+#define IB_MTU_1024                                                     3
+#define IB_MTU_2048                                                     4
+#define IB_MTU_4096                                                     5
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_NODE_NUM_PORTS_MAX

+ +

[top][index]

+

NAME

+
       IB_NODE_NUM_PORTS_MAX
+
+

DESCRIPTION

+
       Maximum number of ports in a single node (14.2.5.7).
+
+

SOURCE

+
#define IB_NODE_NUM_PORTS_MAX                           0xFE
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_NODE_TYPE_CA

+ +

[top][index]

+

NAME

+
       IB_NODE_TYPE_CA
+
+

DESCRIPTION

+
       Encoded generic node type used in MAD attributes (13.4.8.2)
+
+

SOURCE

+
#define IB_NODE_TYPE_CA                                         0x01
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_NODE_TYPE_ROUTER

+ +

[top][index]

+

NAME

+
       IB_NODE_TYPE_ROUTER
+
+

DESCRIPTION

+
       Encoded generic node type used in MAD attributes (13.4.8.2)
+
+

SOURCE

+
#define IB_NODE_TYPE_ROUTER                                     0x03
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_NODE_TYPE_SWITCH

+ +

[top][index]

+

NAME

+
       IB_NODE_TYPE_SWITCH
+
+

DESCRIPTION

+
       Encoded generic node type used in MAD attributes (13.4.8.2)
+
+

SOURCE

+
#define IB_NODE_TYPE_SWITCH                                     0x02
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_NOTICE_NODE_TYPE_CA

+ +

[top][index]

+

NAME

+
       IB_NOTICE_NODE_TYPE_CA
+
+

DESCRIPTION

+
       Encoded generic node type used in MAD attributes (13.4.8.2)
+
+

SOURCE

+
#define IB_NOTICE_NODE_TYPE_CA                          (CL_NTOH32(0x000001))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_NOTICE_NODE_TYPE_ROUTER

+ +

[top][index]

+

NAME

+
       IB_NOTICE_NODE_TYPE_ROUTER
+
+

DESCRIPTION

+
       Encoded generic node type used in MAD attributes (13.4.8.2)
+
+

SOURCE

+
#define IB_NOTICE_NODE_TYPE_ROUTER                      (CL_NTOH32(0x000003))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_NOTICE_NODE_TYPE_SUBN_MGMT

+ +

[top][index]

+

NAME

+
       IB_NOTICE_NODE_TYPE_SUBN_MGMT
+
+

DESCRIPTION

+
       Encoded generic node type used in MAD attributes (13.4.8.2).
+       Note that this value is not defined for the NodeType field
+       of the NodeInfo attribute (14.2.5.3).
+
+

SOURCE

+
#define IB_NOTICE_NODE_TYPE_SUBN_MGMT           (CL_NTOH32(0x000004))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_NOTICE_NODE_TYPE_SWITCH

+ +

[top][index]

+

NAME

+
       IB_NOTICE_NODE_TYPE_SWITCH
+
+

DESCRIPTION

+
       Encoded generic node type used in MAD attributes (13.4.8.2)
+
+

SOURCE

+
#define IB_NOTICE_NODE_TYPE_SWITCH                      (CL_NTOH32(0x000002))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_PATH_REC_BASE_MASK

+ +

[top][index]

+

NAME

+
       IB_PATH_REC_BASE_MASK
+
+

DESCRIPTION

+
       Mask for the base value field for path record MTU, rate
+       and packet lifetime.
+
+

SOURCE

+
#define IB_PATH_REC_BASE_MASK                           0x3F
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_PATH_REC_SELECTOR_MASK

+ +

[top][index]

+

NAME

+
       IB_PATH_REC_SELECTOR_MASK
+
+

DESCRIPTION

+
       Mask for the selector field for path record MTU, rate
+       and packet lifetime.
+
+

SOURCE

+
#define IB_PATH_REC_SELECTOR_MASK                       0xC0
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_PATH_SELECTOR_TYPE

+ +

[top][index]

+

NAME

+
       IB_PATH_SELECTOR_TYPE
+
+

DESCRIPTION

+
       Path selector.
+               0: greater than rate specified
+               1: less than rate specified
+               2: exactly the rate specified
+               3: largest rate available
+
+

SOURCE

+
#define IB_PATH_SELECTOR_GREATER_THAN           0
+#define IB_PATH_SELECTOR_LESS_THAN                      1
+#define IB_PATH_SELECTOR_EXACTLY                        2
+#define IB_PATH_SELECTOR_LARGEST                        3
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_PKEY_BASE_MASK

+ +

[top][index]

+

NAME

+
       IB_PKEY_BASE_MASK
+
+

DESCRIPTION

+
       Masks for the base P_Key value given a P_Key Entry.
+
+

SOURCE

+
#define IB_PKEY_BASE_MASK                                       (CL_NTOH16(0x7FFF))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_PKEY_ENTRIES_MAX

+ +

[top][index]

+

NAME

+
       IB_PKEY_ENTRIES_MAX
+
+

DESCRIPTION

+
       Maximum number of PKEY entries per port (14.2.5.7).
+
+

SOURCE

+
#define IB_PKEY_ENTRIES_MAX (IB_PKEY_MAX_BLOCKS * IB_PKEY_BLOCK_SIZE)
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_PKEY_MAX_BLOCKS

+ +

[top][index]

+

NAME

+
       IB_PKEY_MAX_BLOCKS
+
+

DESCRIPTION

+
       Maximum number of PKEY blocks (14.2.5.7).
+
+

SOURCE

+
#define IB_PKEY_MAX_BLOCKS                                      2048
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_PKEY_TYPE_MASK

+ +

[top][index]

+

NAME

+
       IB_PKEY_TYPE_MASK
+
+

DESCRIPTION

+
       Masks for the P_Key membership type given a P_Key Entry.
+
+

SOURCE

+
#define IB_PKEY_TYPE_MASK                                       (CL_NTOH16(0x8000))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_QP1_WELL_KNOWN_Q_KEY

+ +

[top][index]

+

NAME

+
       IB_QP1_WELL_KNOWN_Q_KEY
+
+

DESCRIPTION

+
       Well-known Q_Key for QP1 privileged mode access (15.4.2).
+
+

SOURCE

+
#define IB_QP1_WELL_KNOWN_Q_KEY                         CL_NTOH32(0x80010000)
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_SMINFO_ATTR_MOD_ACKNOWLEDGE

+ +

[top][index]

+

NAME

+
       IB_SMINFO_ATTR_MOD_ACKNOWLEDGE
+
+

DESCRIPTION

+
       Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.
+
+

SOURCE

+
#define IB_SMINFO_ATTR_MOD_ACKNOWLEDGE          (CL_NTOH32(0x000002))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_SMINFO_ATTR_MOD_DISABLE

+ +

[top][index]

+

NAME

+
       IB_SMINFO_ATTR_MOD_DISABLE
+
+

DESCRIPTION

+
       Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.
+
+

SOURCE

+
#define IB_SMINFO_ATTR_MOD_DISABLE                      (CL_NTOH32(0x000003))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_SMINFO_ATTR_MOD_DISCOVER

+ +

[top][index]

+

NAME

+
       IB_SMINFO_ATTR_MOD_DISCOVER
+
+

DESCRIPTION

+
       Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.
+
+

SOURCE

+
#define IB_SMINFO_ATTR_MOD_DISCOVER                     (CL_NTOH32(0x000005))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_SMINFO_ATTR_MOD_HANDOVER

+ +

[top][index]

+

NAME

+
       IB_SMINFO_ATTR_MOD_HANDOVER
+
+

DESCRIPTION

+
       Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.
+
+

SOURCE

+
#define IB_SMINFO_ATTR_MOD_HANDOVER             (CL_NTOH32(0x000001))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_SMINFO_ATTR_MOD_STANDBY

+ +

[top][index]

+

NAME

+
       IB_SMINFO_ATTR_MOD_STANDBY
+
+

DESCRIPTION

+
       Encoded attribute modifier value used on SubnSet(SMInfo) SMPs.
+
+

SOURCE

+
#define IB_SMINFO_ATTR_MOD_STANDBY                      (CL_NTOH32(0x000004))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_SMINFO_STATE_DISCOVERING

+ +

[top][index]

+

NAME

+
       IB_SMINFO_STATE_DISCOVERING
+
+

DESCRIPTION

+
       Encoded state value used in the SMInfo attribute.
+
+

SOURCE

+
#define IB_SMINFO_STATE_DISCOVERING                     1
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_SMINFO_STATE_INIT

+ +

[top][index]

+

NAME

+
       IB_SMINFO_STATE_INIT
+
+

DESCRIPTION

+
       Encoded state value used in the SMInfo attribute.
+
+

SOURCE

+
#define IB_SMINFO_STATE_INIT                                    4
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_SMINFO_STATE_MASTER

+ +

[top][index]

+

NAME

+
       IB_SMINFO_STATE_MASTER
+
+

DESCRIPTION

+
       Encoded state value used in the SMInfo attribute.
+
+

SOURCE

+
#define IB_SMINFO_STATE_MASTER                          3
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_SMINFO_STATE_NOTACTIVE

+ +

[top][index]

+

NAME

+
       IB_SMINFO_STATE_NOTACTIVE
+
+

DESCRIPTION

+
       Encoded state value used in the SMInfo attribute.
+
+

SOURCE

+
#define IB_SMINFO_STATE_NOTACTIVE                       0
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_SMINFO_STATE_STANDBY

+ +

[top][index]

+

NAME

+
       IB_SMINFO_STATE_STANDBY
+
+

DESCRIPTION

+
       Encoded state value used in the SMInfo attribute.
+
+

SOURCE

+
#define IB_SMINFO_STATE_STANDBY                         2
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_SMP_DIRECTION

+ +

[top][index]

+

NAME

+
       IB_SMP_DIRECTION
+
+

DESCRIPTION

+
       The Direction bit for directed route SMPs.
+
+

SOURCE

+
#define IB_SMP_DIRECTION                        (CL_HTON16(0x8000))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_SMP_STATUS_MASK

+ +

[top][index]

+

NAME

+
       IB_SMP_STATUS_MASK
+
+

DESCRIPTION

+
       Mask value for extracting status from a directed route SMP.
+
+

SOURCE

+
#define IB_SMP_STATUS_MASK                      (CL_HTON16(0x7FFF))
+
+
+
+ +

[Definitions] +IBA Base: Constants/IB_SUBNET_PATH_HOPS_MAX

+ +

[top][index]

+

NAME

+
       IB_SUBNET_PATH_HOPS_MAX
+
+

DESCRIPTION

+
       Maximum number of directed route switch hops in a subnet (14.2.1.2).
+
+

SOURCE

+
#define IB_SUBNET_PATH_HOPS_MAX                         64
+
+
+
+ +

[Definitions] +IBA Base: Constants/Join States

+ +

[top][index]

+

NAME

+
       Join States
+
+

DESCRIPTION

+
       Defines the join state flags for multicast group management.
+
+

SOURCE

+
#define IB_JOIN_STATE_FULL                      1
+#define IB_JOIN_STATE_NON                       2
+#define IB_JOIN_STATE_SEND_ONLY         4
+
+
+
+ +

[Definitions] +IBA Base: Constants/MAD_BLOCK_GRH_SIZE

+ +

[top][index]

+

NAME

+
       MAD_BLOCK_GRH_SIZE
+
+

DESCRIPTION

+
       Size of a MAD datagram, including the GRH.
+
+

SOURCE

+
#define MAD_BLOCK_GRH_SIZE                                      296
+
+
+
+ +

[Definitions] +IBA Base: Constants/MAD_BLOCK_SIZE

+ +

[top][index]

+

NAME

+
       MAD_BLOCK_SIZE
+
+

DESCRIPTION

+
       Size of a non-RMPP MAD datagram.
+
+

SOURCE

+
#define MAD_BLOCK_SIZE                                          256
+
+
+
+ +

[Definitions] +IBA Base: Constants/MAD_RMPP_DATA_SIZE

+ +

[top][index]

+

NAME

+
       MAD_RMPP_DATA_SIZE
+
+

DESCRIPTION

+
       Size of an RMPP transaction data section.
+
+

SOURCE

+
#define MAD_RMPP_DATA_SIZE              (MAD_BLOCK_SIZE - MAD_RMPP_HDR_SIZE)
+
+
+
+ +

[Definitions] +IBA Base: Constants/MAD_RMPP_HDR_SIZE

+ +

[top][index]

+

NAME

+
       MAD_RMPP_HDR_SIZE
+
+

DESCRIPTION

+
       Size of an RMPP header, including the common MAD header.
+
+

SOURCE

+
#define MAD_RMPP_HDR_SIZE                                       36
+
+
+
+ +

[Definitions] +IBA Base: Types/DM_SVC_NAME

+ +

[top][index]

+

NAME

+
       DM_SVC_NAME
+
+

DESCRIPTION

+
       IBA defined Device Management service name (16.3)
+
+

SYNOPSIS

+
#define DM_SVC_NAME                             "DeviceManager.IBTA"
+
+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_class_is_vendor_specific

+ +

[top][index]

+

NAME

+
       ib_class_is_vendor_specific
+
+

DESCRIPTION

+
       Indicitates if the Class Code if a vendor specific class
+
+

SYNOPSIS

+
static inline boolean_t
+ib_class_is_vendor_specific(
+        IN              const   uint8_t class_code )
+{
+  return( ib_class_is_vendor_specific_low(class_code) ||
+                         ib_class_is_vendor_specific_high(class_code) );
+}
+
+

PARAMETERS

+
       class_code
+               [in] The Management Datagram Class Code
+
+

RETURN VALUE

+
       TRUE if the class is a Vendor Specific MAD
+       FALSE otherwise.
+
+

NOTES

+

SEE ALSO

+
  ib_class_is_vendor_specific_low, ib_class_is_vendor_specific_high
+
+
+
+ +

[Functions] +IBA Base: Types/ib_class_is_vendor_specific_high

+ +

[top][index]

+

NAME

+
       ib_class_is_vendor_specific_high
+
+

DESCRIPTION

+
       Indicitates if the Class Code if a vendor specific class from 
+  the high range
+
+

SYNOPSIS

+
static inline boolean_t
+ib_class_is_vendor_specific_high(
+        IN              const   uint8_t class_code )
+{
+        return( (class_code >= IB_MCLASS_VENDOR_HIGH_RANGE_MIN) &&
+           (class_code <= IB_MCLASS_VENDOR_HIGH_RANGE_MAX)) ;
+}
+
+

PARAMETERS

+
       class_code
+               [in] The Management Datagram Class Code
+
+

RETURN VALUE

+
       TRUE if the class is in the High range of Vendor Specific MADs 
+       FALSE otherwise.
+
+

NOTES

+

SEE ALSO

+
 IB_MCLASS_VENDOR_HIGH_RANGE_MIN, IB_MCLASS_VENDOR_HIGH_RANGE_MAX
+
+
+
+ +

[Functions] +IBA Base: Types/ib_class_is_vendor_specific_low

+ +

[top][index]

+

NAME

+
       ib_class_is_vendor_specific_low
+
+

DESCRIPTION

+
       Indicitates if the Class Code if a vendor specific class from 
+  the low range
+
+

SYNOPSIS

+
static inline boolean_t
+ib_class_is_vendor_specific_low(
+        IN              const   uint8_t class_code )
+{
+        return( (class_code >= IB_MCLASS_VENDOR_LOW_RANGE_MIN) &&
+           (class_code <= IB_MCLASS_VENDOR_LOW_RANGE_MAX)) ;
+}
+
+

PARAMETERS

+
       class_code
+               [in] The Management Datagram Class Code
+
+

RETURN VALUE

+
       TRUE if the class is in the Low range of Vendor Specific MADs 
+       FALSE otherwise.
+
+

NOTES

+

SEE ALSO

+
 IB_MCLASS_VENDOR_LOW_RANGE_MIN, IB_MCLASS_VENDOR_LOW_RANGE_MAX
+
+
+
+ +

[Structures] +IBA Base: Types/ib_class_port_info_t

+ +

[top][index]

+

NAME

+
       ib_class_port_info_t
+
+

DESCRIPTION

+
       IBA defined ClassPortInfo attribute (13.4.8.1)
+       route between two end-points on a subnet.
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_class_port_info
+{
+        uint8_t                                 base_ver;
+        uint8_t                                 class_ver;
+        ib_net16_t                              cap_mask;
+        ib_net32_t                              resp_time_val;
+        ib_gid_t                                redir_gid;
+        ib_net32_t                              redir_tc_sl_fl;
+        ib_net16_t                              redir_lid;
+        ib_net16_t                              redir_pkey;
+        ib_net32_t                              redir_qp;
+        ib_net32_t                              redir_qkey;
+        ib_gid_t                                trap_gid;
+        ib_net32_t                              trap_tc_sl_fl;
+        ib_net16_t                              trap_lid;
+        ib_net16_t                              trap_pkey;
+        ib_net32_t                              trap_hop_qp;
+        ib_net32_t                              trap_qkey;
+
+}       PACK_SUFFIX ib_class_port_info_t;
+#include <complib/cl_packoff.h>
+
+

FIELDS

+
       base_ver
+               Maximum supported MAD Base Version.
+
+       class_ver
+               Maximum supported management class version.
+
+       cap_mask
+               Supported capabilities of this management class.
+
+       resp_time_value
+               Maximum expected response time.
+
+       redr_gid
+               GID to use for redirection, or zero
+
+       recdir_tc_sl_fl
+               Traffic class, service level and flow label the requester
+               should use if the service is redirected.
+
+       redir_lid
+               LID used for redirection, or zero
+
+       redir_pkey
+               P_Key used for redirection
+
+       redir_qp
+               QP number used for redirection
+
+       redir_qkey
+               Q_Key associated with the redirected QP.  This shall be the
+               well known Q_Key value.
+
+       trap_gid
+               GID value used for trap messages from this service.
+
+       trap_tc_sl_fl
+               Traffic class, service level and flow label used for
+               trap messages originated by this service.
+
+       trap_lid
+               LID used for trap messages, or zero
+
+       trap_pkey
+               P_Key used for trap messages
+
+       trap_hop_qp
+               Hop limit (upper 8 bits) and QP number used for trap messages
+
+       trap_qkey
+               Q_Key associated with the trap messages QP.
+
+

SEE ALSO

+
       IB_CLASS_CAP_GETSET, IB_CLASS_CAP_TRAP
+
+
+
+ +

[Structures] +IBA Base: Types/ib_dm_mad_t

+ +

[top][index]

+

NAME

+
       ib_dm_mad_t
+
+

DESCRIPTION

+
       IBA defined Device Management MAD (16.3.1)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_dm_mad
+{
+        ib_mad_t                hdr;
+        uint8_t                 resv[40];
+
+#define IB_DM_DATA_SIZE                 192
+        uint8_t                 data[IB_DM_DATA_SIZE];
+
+}       PACK_SUFFIX ib_dm_mad_t;
+#include <complib/cl_packoff.h>
+
+

FIELDS

+
       hdr
+               Common MAD header.
+
+       resv
+               Reserved.
+
+       data
+               Device Management payload.  The structure and content of this field
+               depend upon the method, attr_id, and attr_mod fields in the header.
+
+

SEE ALSO

+
 ib_mad_t
+
+
+
+ +

[Structures] +IBA Base: Types/ib_field32_t

+ +

[top][index]

+

NAME

+
       ib_field32_t
+
+

DESCRIPTION

+
       Represents a 32-bit field, and allows access as a 32-bit network byte
+       ordered or a 4-byte array.
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef union _ib_field32_t
+{
+        net32_t         val;
+        uint8_t         bytes[4];
+
+}       PACK_SUFFIX ib_field32_t;
+#include <complib/cl_packoff.h>
+
+

FIELDS

+
       val
+               Full field value.
+
+       bytes
+               Byte array representing the field.  The byte array provides identical
+               access independently from CPU byte-ordering.
+
+
+
+ +

[Functions] +IBA Base: Types/ib_get_async_event_str

+ +

[top][index]

+

NAME

+
       ib_get_async_event_str
+
+

DESCRIPTION

+
       Returns a string for the specified asynchronous event.
+
+

SYNOPSIS

+
AL_EXPORT const char* AL_API
+ib_get_async_event_str(
+        IN                              ib_async_event_t                        event );
+
+

PARAMETERS

+
       event
+               [in] event value
+
+ RETURN VALUES
+       Pointer to the asynchronous event description string.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_get_err_str

+ +

[top][index]

+

NAME

+
       ib_get_err_str
+
+

DESCRIPTION

+
       Returns a string for the specified status value.
+
+

SYNOPSIS

+
AL_EXPORT const char* AL_API
+ib_get_err_str(
+        IN                              ib_api_status_t                         status );
+
+

PARAMETERS

+
       status
+               [in] status value
+
+ RETURN VALUES
+       Pointer to the status description string.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_get_node_type_str

+ +

[top][index]

+

NAME

+
       ib_get_node_type_str
+
+

DESCRIPTION

+
       Returns a string for the specified node type.
+
+

SYNOPSIS

+
AL_INLINE const char* AL_API
+ib_get_node_type_str(
+        IN                              uint8_t                                         node_type )
+{
+        if( node_type >= IB_NODE_TYPE_ROUTER )
+                node_type = 0;
+        return( __ib_node_type_str[node_type] );
+}
+
+

PARAMETERS

+
       node_type
+               [in] Encoded node type as returned in the NodeInfo attribute.
+ RETURN VALUES
+       Pointer to the node type string.
+
+

NOTES

+

SEE ALSO

+
 ib_node_info_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_get_port_state_from_str

+ +

[top][index]

+

NAME

+
       ib_get_port_state_from_str
+
+

DESCRIPTION

+
       Returns a string for the specified port state.
+
+

SYNOPSIS

+
AL_INLINE const uint8_t AL_API
+ib_get_port_state_from_str(
+        IN                              char*                                           p_port_state_str )
+{
+        if( !strncmp(p_port_state_str,"No State Change (NOP)",12) )
+                return(0);
+        else if( !strncmp(p_port_state_str, "DOWN",4) )
+                return(1);
+        else if( !strncmp(p_port_state_str, "INIT", 4) )
+                return(2);
+        else if( !strncmp(p_port_state_str,"ARMED" , 5) )
+                return(3);
+        else if( !strncmp(p_port_state_str, "ACTIVE", 6) )
+                return(4);
+        else if( !strncmp(p_port_state_str, "ACTDEFER", 8) )
+                return(5);
+        return(6);
+}
+
+

PARAMETERS

+
       p_port_state_str
+               [in] A string matching one returned by ib_get_port_state_str
+
+ RETURN VALUES
+       The appropriate code.
+
+

NOTES

+

SEE ALSO

+
       ib_port_info_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_get_port_state_str

+ +

[top][index]

+

NAME

+
       ib_get_port_state_str
+
+

DESCRIPTION

+
       Returns a string for the specified port state.
+
+

SYNOPSIS

+
AL_INLINE const char* AL_API
+ib_get_port_state_str(
+        IN                              uint8_t                                         port_state )
+{
+        if( port_state > IB_LINK_ACTIVE )
+                port_state = IB_LINK_ACTIVE + 1;
+        return( __ib_port_state_str[port_state] );
+}
+
+

PARAMETERS

+
       port_state
+               [in] Encoded port state as returned in the PortInfo attribute.
+ RETURN VALUES
+       Pointer to the port state string.
+
+

NOTES

+

SEE ALSO

+
 ib_port_info_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_get_wc_status_str

+ +

[top][index]

+

NAME

+
       ib_get_wc_status_str
+
+

DESCRIPTION

+
       Returns a string for the specified work completion status.
+
+

SYNOPSIS

+
AL_EXPORT const char* AL_API
+ib_get_wc_status_str(
+        IN                              ib_wc_status_t                          wc_status );
+
+

PARAMETERS

+
       wc_status
+               [in] work completion status value
+
+ RETURN VALUES
+       Pointer to the work completion status description string.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_get_wc_type_str

+ +

[top][index]

+

NAME

+
       ib_get_wc_type_str
+
+

DESCRIPTION

+
       Returns a string for the specified work completion type.
+
+

SYNOPSIS

+
AL_EXPORT const char* AL_API
+ib_get_wc_type_str(
+        IN                              ib_wc_type_t                            wc_type );
+
+

PARAMETERS

+
       wc_type
+               [in] work completion type value
+
+ RETURN VALUES
+       Pointer to the work completion type description string.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_get_wr_type_str

+ +

[top][index]

+

NAME

+
       ib_get_wr_type_str
+
+

DESCRIPTION

+
       Returns a string for the specified work request type
+
+

SYNOPSIS

+
AL_EXPORT const char* AL_API
+ib_get_wr_type_str(
+        IN                              uint8_t                                         wr_type );
+
+

PARAMETERS

+
       wr_type
+               [in] Encoded work request type as defined in the
+ RETURN VALUES
+       Pointer to the work request type string.
+
+

NOTES

+

SEE ALSO

+
 ib_wr_type_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_gid_get_guid

+ +

[top][index]

+

NAME

+
       ib_gid_get_guid
+
+

DESCRIPTION

+
       Gets the guid from a GID.
+
+

SYNOPSIS

+
AL_INLINE ib_net64_t AL_API
+ib_gid_get_guid(
+        IN              const   ib_gid_t* const                         p_gid )
+{
+        return( p_gid->unicast.interface_id );
+}
+
+

PARAMETERS

+
       p_gid
+               [in] Pointer to the GID object.
+
+ RETURN VALUES
+       64-bit GUID value.
+
+

NOTES

+

SEE ALSO

+
       ib_gid_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_gid_get_subnet_prefix

+ +

[top][index]

+

NAME

+
       ib_gid_get_subnet_prefix
+
+

DESCRIPTION

+
       Gets the subnet prefix from a GID.
+
+

SYNOPSIS

+
AL_INLINE ib_net64_t AL_API
+ib_gid_get_subnet_prefix(
+        IN              const   ib_gid_t* const                         p_gid )
+{
+        return( p_gid->unicast.prefix );
+}
+
+

PARAMETERS

+
       p_gid
+               [in] Pointer to the GID object.
+
+ RETURN VALUES
+       64-bit subnet prefix value.
+
+

NOTES

+

SEE ALSO

+
       ib_gid_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_gid_is_link_local

+ +

[top][index]

+

NAME

+
       ib_gid_is_link_local
+
+

DESCRIPTION

+
       Returns TRUE if the unicast GID scoping indicates link local,
+       FALSE otherwise.
+
+

SYNOPSIS

+
static inline boolean_t
+ib_gid_is_link_local(
+        IN              const   ib_gid_t* const                         p_gid )
+{
+        return( ib_gid_get_subnet_prefix( p_gid ) == IB_DEFAULT_SUBNET_PREFIX );
+}
+
+

PARAMETERS

+
       p_gid
+               [in] Pointer to the GID object.
+
+ RETURN VALUES
+       Returns TRUE if the unicast GID scoping indicates link local,
+       FALSE otherwise.
+
+

NOTES

+

SEE ALSO

+
       ib_gid_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_gid_is_site_local

+ +

[top][index]

+

NAME

+
       ib_gid_is_site_local
+
+

DESCRIPTION

+
       Returns TRUE if the unicast GID scoping indicates site local,
+       FALSE otherwise.
+
+

SYNOPSIS

+
static inline boolean_t
+ib_gid_is_site_local(
+        IN              const   ib_gid_t* const                         p_gid )
+{
+        return( ( ib_gid_get_subnet_prefix( p_gid ) &
+                CL_HTON64( CL_CONST64(0xFFFFFFFFFFFF0000) ) ) ==
+                CL_HTON64( CL_CONST64(0xFEC0000000000000) ) );
+}
+
+

PARAMETERS

+
       p_gid
+               [in] Pointer to the GID object.
+
+ RETURN VALUES
+       Returns TRUE if the unicast GID scoping indicates link local,
+       FALSE otherwise.
+
+

NOTES

+

SEE ALSO

+
       ib_gid_t
+
+
+
+ +

[Definitions] +IBA Base: Types/ib_gid_prefix_t

+ +

[top][index]

+

NAME

+
       ib_gid_prefix_t
+
+

DESCRIPTION

+

SOURCE

+
typedef ib_net64_t              ib_gid_prefix_t;
+
+
+
+ +

[Functions] +IBA Base: Types/ib_gid_set_default

+ +

[top][index]

+

NAME

+
       ib_gid_set_default
+
+

DESCRIPTION

+
       Sets a GID to the default value.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_gid_set_default(
+        IN                              ib_gid_t* const                         p_gid,
+        IN              const   ib_net64_t                                      interface_id )
+{
+        p_gid->unicast.prefix = IB_DEFAULT_SUBNET_PREFIX;
+        p_gid->unicast.interface_id = interface_id;
+}
+
+

PARAMETERS

+
       p_gid
+               [in] Pointer to the GID object.
+
+       interface_id
+               [in] Manufacturer assigned EUI64 value of a port.
+
+ RETURN VALUES
+       None.
+
+

NOTES

+

SEE ALSO

+
       ib_gid_t
+
+
+
+ +

[Definitions] +IBA Base: Types/ib_gid_t

+ +

[top][index]

+

NAME

+
       ib_gid_t
+
+

DESCRIPTION

+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef union _ib_gid
+{
+        uint8_t                                 raw[16];
+        struct _ib_gid_unicast
+        {
+                ib_gid_prefix_t         prefix;
+                ib_net64_t                      interface_id;
+
+        } PACK_SUFFIX unicast;
+
+        struct _ib_gid_multicast
+        {
+                uint8_t                         header[2];
+                uint8_t                         raw_group_id[14];
+
+        } PACK_SUFFIX multicast;
+
+}       PACK_SUFFIX ib_gid_t;
+#include <complib/cl_packoff.h>
+
+

FIELDS

+
       raw
+               GID represented as an unformated byte array.
+
+       unicast
+               Typical unicast representation with subnet prefix and
+               port GUID.
+
+       multicast
+               Representation for multicast use.
+
+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_grh_get_ver_class_flow

+ +

[top][index]

+

NAME

+
       ib_grh_get_ver_class_flow
+
+

DESCRIPTION

+
       Get encoded version, traffic class and flow label in grh
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_grh_get_ver_class_flow(
+        IN              const   ib_net32_t                                      ver_class_flow,
+                OUT                     uint8_t* const                          p_ver OPTIONAL,
+                OUT                     uint8_t* const                          p_tclass OPTIONAL,
+                OUT                     net32_t* const                          p_flow_lbl OPTIONAL )
+{
+        ib_net32_t tmp_ver_class_flow;
+
+        tmp_ver_class_flow = cl_ntoh32( ver_class_flow );
+
+        if (p_ver)
+                *p_ver = (uint8_t)(tmp_ver_class_flow >> 28);
+
+        if (p_tclass)
+                *p_tclass = (uint8_t)(tmp_ver_class_flow >> 20);
+
+        if (p_flow_lbl)
+                *p_flow_lbl = (ver_class_flow & CL_HTON32( 0x000FFFFF ));
+}
+
+

PARAMETERS

+
       ver_class_flow
+               [in] the version, traffic class and flow label info.
+
+ RETURN VALUES
+       p_ver
+               [out] pointer to the version info.
+
+       p_tclass
+               [out] pointer to the traffic class info.
+
+       p_flow_lbl
+               [out] pointer to the flow label info
+
+

NOTES

+

SEE ALSO

+
       ib_grh_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_grh_set_ver_class_flow

+ +

[top][index]

+

NAME

+
       ib_grh_set_ver_class_flow
+
+

DESCRIPTION

+
       Set encoded version, traffic class and flow label in grh
+
+

SYNOPSIS

+
AL_INLINE ib_net32_t AL_API
+ib_grh_set_ver_class_flow(
+        IN              const   uint8_t                                         ver,
+        IN              const   uint8_t                                         tclass,
+        IN              const   net32_t                                         flow_lbl )
+{
+        ib_net32_t              ver_class_flow;
+
+        ver_class_flow = cl_hton32( (ver << 28) | (tclass << 20) );
+        ver_class_flow |= (flow_lbl & CL_HTON32( 0x000FFFFF ));
+        return (ver_class_flow);
+}
+
+

PARAMETERS

+
       ver
+               [in] the version info.
+
+       tclass
+               [in] the traffic class info.
+
+       flow_lbl
+               [in] the flow label info
+
+ RETURN VALUES
+       ver_class_flow
+               [out] the version, traffic class and flow label info.
+
+

NOTES

+

SEE ALSO

+
       ib_grh_t
+
+
+
+ +

[Structures] +IBA Base: Types/ib_grh_t

+ +

[top][index]

+

NAME

+
       ib_grh_t
+
+

DESCRIPTION

+
       Global route header information received with unreliable datagram messages
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_grh
+{
+        ib_net32_t                              ver_class_flow;
+        ib_net16_t                              resv1;
+        uint8_t                                 resv2;
+        uint8_t                                 hop_limit;
+        ib_gid_t                                src_gid;
+        ib_gid_t                                dest_gid;
+
+}       PACK_SUFFIX ib_grh_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Structures] +IBA Base: Types/ib_guid_info_t

+ +

[top][index]

+

NAME

+
       ib_guid_info_t
+
+

DESCRIPTION

+
       IBA defined GuidInfo. (14.2.5.5)
+
+

SYNOPSIS

+
#define GUID_TABLE_MAX_ENTRIES          8
+
+#include <complib/cl_packon.h>
+typedef struct _ib_guid_info
+{
+        ib_net64_t                      guid[GUID_TABLE_MAX_ENTRIES];
+
+}       PACK_SUFFIX ib_guid_info_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Functions] +IBA Base: Types/ib_inform_get_dev_id

+ +

[top][index]

+

NAME

+
       ib_inform_get_dev_id
+
+

DESCRIPTION

+
       Retrieves the device ID from a vendor specific inform trap.
+
+

SYNOPSIS

+
AL_INLINE uint16_t AL_API
+ib_inform_get_dev_id(
+        IN              const   ib_inform_info_t* const         p_inform_info )
+{
+        return ib_inform_get_trap_num( p_inform_info );
+}
+
+

PARAMETERS

+
       p_inform_info
+               [in] Pointer to the inform info structure whose
+               device ID to return.
+
+ RETURN VALUES
+       Returns the vendor ID of the inform info, in host byte order.
+
+

SEE ALSO

+
       ib_inform_info_t, ib_inform_set_dev_id
+
+
+
+ +

[Functions] +IBA Base: Types/ib_inform_get_prod_type

+ +

[top][index]

+

NAME

+
       ib_inform_get_prod_type
+
+

DESCRIPTION

+
       Retrieves the producer type from an inform info structure.
+
+

SYNOPSIS

+
AL_INLINE uint32_t AL_API
+ib_inform_get_prod_type(
+        IN              const   ib_inform_info_t* const         p_inform_info )
+{
+        return (cl_ntoh32( p_inform_info->combo3 ) >> 8);
+}
+
+

PARAMETERS

+
       p_inform_info
+               [in] Pointer to the inform info structure whose
+               prducer type to return.
+
+ RETURN VALUES
+       Returns the producer type of the infrom info, in host byte order.
+
+

SEE ALSO

+
       ib_inform_info_t, ib_inform_set_prod_type
+
+
+
+ +

[Functions] +IBA Base: Types/ib_inform_get_qpn

+ +

[top][index]

+

NAME

+
       ib_inform_get_qpn
+
+

DESCRIPTION

+
       Retrieves the QPN from an inform info structure.
+
+

SYNOPSIS

+
AL_INLINE net32_t AL_API
+ib_inform_get_qpn(
+        IN              const   ib_inform_info_t* const         p_inform_info )
+{
+        return (p_inform_info->combo2 & CL_NTOH32( 0x00FFFFFF ));
+}
+
+

PARAMETERS

+
       p_inform_info
+               [in] Pointer to the inform info structure whose
+               QPN to return.
+
+ RETURN VALUES
+       Returns the QPN of the infrom info.
+
+

SEE ALSO

+
       ib_inform_info_t, ib_inform_set_qpn
+
+
+
+ +

[Functions] +IBA Base: Types/ib_inform_get_resp_time_val

+ +

[top][index]

+

NAME

+
       ib_inform_get_resp_time_val
+
+

DESCRIPTION

+
       Retrieves the response time value from an inform info structure.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_inform_get_resp_time_val(
+        IN              const   ib_inform_info_t* const         p_inform_info )
+{
+        return (uint8_t)(cl_ntoh32( p_inform_info->combo2 ) >> 27);
+}
+
+

PARAMETERS

+
       p_inform_info
+               [in] Pointer to the inform info structure whose
+               response time value to return.
+
+ RETURN VALUES
+       Returns the response time value of the infrom info.
+
+

SEE ALSO

+
       ib_inform_info_t, ib_inform_set_resp_time_val
+
+
+
+ +

[Functions] +IBA Base: Types/ib_inform_get_trap_num

+ +

[top][index]

+

NAME

+
       ib_inform_get_trap_num
+
+

DESCRIPTION

+
       Retrieves the trap number from an inform info structure.
+
+

SYNOPSIS

+
AL_INLINE uint16_t AL_API
+ib_inform_get_trap_num(
+        IN              const   ib_inform_info_t* const         p_inform_info )
+{
+        return cl_ntoh16( p_inform_info->combo1 );
+}
+
+

PARAMETERS

+
       p_inform_info
+               [in] Pointer to the inform info structure whose
+               trap number to return.
+
+ RETURN VALUES
+       Returns the trap number of the infrom info, in host byte order.
+
+

SEE ALSO

+
       ib_inform_info_t, ib_inform_set_trap_num
+
+
+
+ +

[Functions] +IBA Base: Types/ib_inform_get_vend_id

+ +

[top][index]

+

NAME

+
       ib_inform_get_vend_id
+
+

DESCRIPTION

+
       Retrieves the vendor ID from an inform info structure.
+
+

SYNOPSIS

+
AL_INLINE uint32_t AL_API
+ib_inform_get_vend_id(
+        IN              const   ib_inform_info_t* const         p_inform_info )
+{
+        return ib_inform_get_prod_type( p_inform_info );
+}
+
+

PARAMETERS

+
       p_inform_info
+               [in] Pointer to the inform info structure whose
+               vendor ID to return.
+
+ RETURN VALUES
+       Returns the vendor ID of the infrom info, in host byte order.
+
+

SEE ALSO

+
       ib_inform_info_t, ib_inform_set_vend_id
+
+
+
+ +

[Structures] +IBA Base: Types/ib_inform_info_record_t

+ +

[top][index]

+

NAME

+
       ib_inform_info_record_t
+
+

DESCRIPTION

+
       IBA defined InformInfo Record. (15.2.5.12)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_inform_info_record
+{
+        ib_gid_t                                subscriber_gid;
+        net16_t                                 subscriber_enum;
+        uint16_t                                reserved[3];
+        ib_inform_info_t                inform_info;
+
+}       PACK_SUFFIX ib_inform_info_record_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Functions] +IBA Base: Types/ib_inform_set_dev_id

+ +

[top][index]

+

NAME

+
       ib_inform_set_dev_id
+
+

DESCRIPTION

+
       Sets the producer type of a vendor specific inform trap.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_inform_set_dev_id(
+        IN      OUT                     ib_inform_info_t* const         p_inform_info,
+        IN              const   uint16_t                                        dev_id )
+{
+        ib_inform_set_trap_num( p_inform_info, dev_id );
+}
+
+

PARAMETERS

+
       p_inform_info
+               [in/out] Pointer to the inform info structure
+               whose device ID to set.
+
+       dev_id
+               [in] Device ID of inform trap.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_inform_info_t, ib_inform_get_dev_id
+
+
+
+ +

[Functions] +IBA Base: Types/ib_inform_set_prod_type

+ +

[top][index]

+

NAME

+
       ib_inform_set_prod_type
+
+

DESCRIPTION

+
       Sets the producer type of an inform info structure.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_inform_set_prod_type(
+        IN      OUT                     ib_inform_info_t* const         p_inform_info,
+        IN              const   uint32_t                                        prod_type )
+{
+        p_inform_info->combo3 = cl_hton32( prod_type << 8 );
+}
+
+

PARAMETERS

+
       p_inform_info
+               [in/out] Pointer to the inform info structure
+               whose producer type to set.
+
+       prod_type
+               [in] Producer type of inform trap.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_inform_info_t, ib_inform_get_prod_type
+
+
+
+ +

[Functions] +IBA Base: Types/ib_inform_set_qpn

+ +

[top][index]

+

NAME

+
       ib_inform_set_qpn
+
+

DESCRIPTION

+
       Sets the QPN of an inform info structure.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_inform_set_qpn(
+        IN      OUT                     ib_inform_info_t* const         p_inform_info,
+        IN              const   net32_t                                         qpn )
+{
+        p_inform_info->combo2 &= CL_NTOH32( 0xFF000000 );
+        p_inform_info->combo2 |= (qpn & CL_NTOH32( 0x00FFFFFF ));
+}
+
+

PARAMETERS

+
       p_inform_info
+               [in/out] Pointer to the inform info structure
+               whose QPN to set.
+
+       qpn
+               [in] QPN of the inform info.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_inform_info_t, ib_inform_get_qpn
+
+
+
+ +

[Functions] +IBA Base: Types/ib_inform_set_resp_time_val

+ +

[top][index]

+

NAME

+
       ib_inform_set_resp_time_val
+
+

DESCRIPTION

+
       Sets the response time value of an inform info structure.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_inform_set_resp_time_val(
+        IN      OUT                     ib_inform_info_t* const         p_inform_info,
+        IN              const   uint8_t                                         resp_time_val )
+{
+        uint32_t        val;
+
+        val = cl_ntoh32( p_inform_info->combo2 );
+        val &= 0x07FFFFFF;
+        val |= (resp_time_val << 27);
+        p_inform_info->combo2 = cl_hton32( val );
+}
+
+

PARAMETERS

+
       p_inform_info
+               [in/out] Pointer to the inform info structure
+               whose response time value to set.
+
+       resp_time_val
+               [in] Response time value of the inform info.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_inform_info_t, ib_inform_get_resp_time_val
+
+
+
+ +

[Functions] +IBA Base: Types/ib_inform_set_trap_num

+ +

[top][index]

+

NAME

+
       ib_inform_set_trap_num
+
+

DESCRIPTION

+
       Sets the trap number of an inform info structure.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_inform_set_trap_num(
+        IN      OUT                     ib_inform_info_t* const         p_inform_info,
+        IN              const   uint16_t                                        trap_num )
+{
+        p_inform_info->combo1 = cl_hton16( trap_num );
+}
+
+

PARAMETERS

+
       p_inform_info
+               [in/out] Pointer to the inform info structure
+               whose trap number to set.
+
+       trap_num
+               [in] Trap number to set.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_inform_info_t, ib_inform_get_trap_num
+
+
+
+ +

[Functions] +IBA Base: Types/ib_inform_set_vend_id

+ +

[top][index]

+

NAME

+
       ib_inform_set_vend_id
+
+

DESCRIPTION

+
       Sets the vendor ID of an inform info structure.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_inform_set_vend_id(
+        IN      OUT                     ib_inform_info_t* const         p_inform_info,
+        IN              const   uint32_t                                        vend_id )
+{
+        ib_inform_set_prod_type( p_inform_info, vend_id );
+}
+
+

PARAMETERS

+
       p_inform_info
+               [in/out] Pointer to the inform info structure
+               whose vendor ID to set.
+
+       vend_id
+               [in] Vendor ID of inform trap.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_mad_inform_info_t, ib_inform_get_vend_id
+
+
+
+ +

[Structures] +IBA Base: Types/ib_ioc_profile_t

+ +

[top][index]

+

NAME

+
       ib_ioc_profile_t
+
+

DESCRIPTION

+
       IBA defined IO Controller profile structure (16.3.3.4)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef __declspec(align(8)) struct _ib_ioc_profile
+{
+        ib_net64_t                              ioc_guid;
+
+        ib_net32_t                              vend_id;
+
+        ib_net32_t                              dev_id;
+        ib_net16_t                              dev_ver;
+        ib_net16_t                              resv2;
+
+        ib_net32_t                              subsys_vend_id;
+        ib_net32_t                              subsys_id;
+
+        ib_net16_t                              io_class;
+        ib_net16_t                              io_subclass;
+        ib_net16_t                              protocol;
+        ib_net16_t                              protocol_ver;
+
+        ib_net32_t                              resv3;
+        ib_net16_t                              send_msg_depth;
+        uint8_t                                 resv4;
+        uint8_t                                 rdma_read_depth;
+        ib_net32_t                              send_msg_size;
+        ib_net32_t                              rdma_size;
+
+        uint8_t                                 ctrl_ops_cap;
+#define CTRL_OPS_CAP_ST         0x01
+#define CTRL_OPS_CAP_SF         0x02
+#define CTRL_OPS_CAP_RT         0x04
+#define CTRL_OPS_CAP_RF         0x08
+#define CTRL_OPS_CAP_WT         0x10
+#define CTRL_OPS_CAP_WF         0x20
+#define CTRL_OPS_CAP_AT         0x40
+#define CTRL_OPS_CAP_AF         0x80
+
+        uint8_t                                 resv5;
+
+        uint8_t                                 num_svc_entries;
+#define MAX_NUM_SVC_ENTRIES     0xff
+
+        uint8_t                                 resv6[9];
+
+#define CTRL_ID_STRING_LEN      64
+        char                                    id_string[CTRL_ID_STRING_LEN];
+
+}       PACK_SUFFIX ib_ioc_profile_t;
+#include <complib/cl_packoff.h>
+
+

FIELDS

+
       ioc_guid
+               An EUI-64 GUID used to uniquely identify the IO controller.
+
+       vend_id
+               IO controller vendor ID, IEEE format.
+
+       dev_id
+               A number assigned by the vendor to identify the type of controller.
+
+       dev_ver
+               A number assigned by the vendor to identify the divice version.
+
+       subsys_vend_id
+               ID of the vendor of the enclosure, if any, in which the IO controller
+               resides in IEEE format; otherwise zero.
+
+       subsys_id
+               A number identifying the subsystem where the controller resides.
+
+       io_class
+               0x0000 - 0xfffe = reserved for IO classes encompased by InfiniBand
+               Architecture.  0xffff = Vendor specific.
+
+       io_subclass
+               0x0000 - 0xfffe = reserved for IO subclasses encompased by InfiniBand
+               Architecture.  0xffff = Vendor specific.  This shall be set to 0xfff
+               if the io_class component is 0xffff.
+
+       protocol
+               0x0000 - 0xfffe = reserved for IO subclasses encompased by InfiniBand
+               Architecture.  0xffff = Vendor specific.  This shall be set to 0xfff
+               if the io_class component is 0xffff.
+
+       protocol_ver
+               Protocol specific.
+
+       send_msg_depth
+               Maximum depth of the send message queue.
+
+       rdma_read_depth
+               Maximum depth of the per-channel RDMA read queue.
+
+       send_msg_size
+               Maximum size of send messages.
+
+       ctrl_ops_cap
+               Supported operation types of this IO controller.  A bit set to one
+               for affirmation of supported capability.
+
+       num_svc_entries
+               Number of entries in the service entries table.
+
+       id_string
+               UTF-8 encoded string for identifying the controller to an operator.
+
+

SEE ALSO

+
 ib_dm_mad_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_iou_info_diag_dev_id

+ +

[top][index]

+

NAME

+
       ib_iou_info_diag_dev_id
+
+

DESCRIPTION

+
       Returns the DiagDeviceID.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_iou_info_diag_dev_id(
+        IN              const   ib_iou_info_t* const            p_iou_info )
+{
+        return( (uint8_t)(p_iou_info->diag_rom >> 6 & 1) );
+}
+
+

PARAMETERS

+
       p_iou_info
+               [in] Pointer to the IO Unit information structure.
+
+ RETURN VALUES
+       DiagDeviceID field of the IO Unit information.
+
+

NOTES

+

SEE ALSO

+
       ib_iou_info_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_iou_info_option_rom

+ +

[top][index]

+

NAME

+
       ib_iou_info_option_rom
+
+

DESCRIPTION

+
       Returns the OptionROM.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_iou_info_option_rom(
+        IN              const   ib_iou_info_t*  const   p_iou_info )
+{
+        return( (uint8_t)(p_iou_info->diag_rom >> 7) );
+}
+
+

PARAMETERS

+
       p_iou_info
+               [in] Pointer to the IO Unit information structure.
+
+ RETURN VALUES
+       OptionROM field of the IO Unit information.
+
+

NOTES

+

SEE ALSO

+
       ib_iou_info_t
+
+
+
+ +

[Structures] +IBA Base: Types/ib_iou_info_t

+ +

[top][index]

+

NAME

+
       ib_iou_info_t
+
+

DESCRIPTION

+
       IBA defined IO Unit information structure (16.3.3.3)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_iou_info
+{
+        ib_net16_t              change_id;
+        uint8_t                 max_controllers;
+        uint8_t                 diag_rom;
+
+#define IB_DM_CTRL_LIST_SIZE    128
+#define IB_DM_MAX_CTRL                  0xFF;
+
+        uint8_t                 controller_list[IB_DM_CTRL_LIST_SIZE];
+#define IOC_NOT_INSTALLED               0x0
+#define IOC_INSTALLED                   0x1
+//              Reserved values                         0x02-0xE
+#define SLOT_DOES_NOT_EXIST             0xF
+
+}       PACK_SUFFIX ib_iou_info_t;
+#include <complib/cl_packoff.h>
+
+

FIELDS

+
       change_id
+               Value incremented, with rollover, by any change to the controller_list.
+
+       max_controllers
+               Number of slots in controller_list.
+
+       diag_rom
+               A byte containing two fields: DiagDeviceID and OptionROM.
+               These fields may be read using the ib_iou_info_diag_dev_id
+               and ib_iou_info_option_rom functions.
+
+       controller_list
+               A series of 4-bit nibbles, with each nibble representing a slot
+               in the IO Unit.  Individual nibbles may be read using the
+               ioc_at_slot function.
+
+

SEE ALSO

+
 ib_dm_mad_t, ib_iou_info_diag_dev_id, ib_iou_info_option_rom, ioc_at_slot
+
+
+
+ +

[Structures] +IBA Base: Types/ib_lft_record_t

+ +

[top][index]

+

NAME

+
       ib_lft_record_t
+
+

DESCRIPTION

+
       IBA defined LinearForwardingTable. (14.2.5.6)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_lft_record
+{
+        ib_net16_t              lid;
+        ib_net16_t              block_num;
+        uint32_t                resv0;
+        uint8_t                 lft[64];
+
+}       PACK_SUFFIX ib_lft_record_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Functions] +IBA Base: Types/ib_mad_init_new

+ +

[top][index]

+

NAME

+
       ib_mad_init_new
+
+

DESCRIPTION

+
       Initializes a MAD common header.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_mad_init_new(
+        IN                              ib_mad_t* const                         p_mad,
+        IN              const   uint8_t                                         mgmt_class,
+        IN              const   uint8_t                                         class_ver,
+        IN              const   uint8_t                                         method,
+        IN              const   ib_net64_t                                      trans_id,
+        IN              const   ib_net16_t                                      attr_id,
+        IN              const   ib_net32_t                                      attr_mod )
+{
+        CL_ASSERT( p_mad );
+        p_mad->base_ver = 1;
+        p_mad->mgmt_class = mgmt_class;
+        p_mad->class_ver = class_ver;
+        p_mad->method = method;
+        p_mad->status = 0;
+        p_mad->class_spec = 0;
+        p_mad->trans_id = trans_id;
+        p_mad->attr_id = attr_id;
+        p_mad->resv = 0;
+        p_mad->attr_mod = attr_mod;
+}
+
+

PARAMETERS

+
       p_mad
+               [in] Pointer to the MAD common header.
+
+       mgmt_class
+               [in] Class of operation.
+
+       class_ver
+               [in] Version of MAD class-specific format.
+
+       method
+               [in] Method to perform, including 'R' bit.
+
+       trans_Id
+               [in] Transaction ID.
+
+       attr_id
+               [in] Attribute ID.
+
+       attr_mod
+               [in] Attribute modifier.
+
+ RETURN VALUES
+       None.
+
+

NOTES

+

SEE ALSO

+
       ib_mad_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_mad_init_response

+ +

[top][index]

+

NAME

+
       ib_mad_init_response
+
+

DESCRIPTION

+
       Initializes a MAD common header as a response.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_mad_init_response(
+        IN              const   ib_mad_t* const                         p_req_mad,
+        IN                              ib_mad_t* const                         p_mad,
+        IN              const   ib_net16_t                                      status )
+{
+        CL_ASSERT( p_req_mad );
+        CL_ASSERT( p_mad );
+        *p_mad = *p_req_mad;
+        p_mad->status = status;
+        if( p_mad->method == IB_MAD_METHOD_SET )
+                p_mad->method = IB_MAD_METHOD_GET;
+        p_mad->method |= IB_MAD_METHOD_RESP_MASK;
+}
+
+

PARAMETERS

+
       p_req_mad
+               [in] Pointer to the MAD common header in the original request MAD.
+
+       p_mad
+               [in] Pointer to the MAD common header to initialize.
+
+       status
+               [in] MAD Status value to return;
+
+ RETURN VALUES
+       None.
+
+

NOTES

+
       p_req_mad and p_mad may point to the same MAD.
+
+

SEE ALSO

+
       ib_mad_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_mad_is_response

+ +

[top][index]

+

NAME

+
       ib_mad_is_response
+
+

DESCRIPTION

+
       Returns TRUE if the MAD is a response ('R' bit set),
+       FALSE otherwise.
+
+

SYNOPSIS

+
AL_INLINE boolean_t AL_API
+ib_mad_is_response(
+        IN              const   ib_mad_t* const                         p_mad )
+{
+        CL_ASSERT( p_mad );
+        return( (p_mad->method & IB_MAD_METHOD_RESP_MASK) ==
+                        IB_MAD_METHOD_RESP_MASK );
+}
+
+

PARAMETERS

+
       p_mad
+               [in] Pointer to the MAD.
+
+ RETURN VALUES
+       Returns TRUE if the MAD is a response ('R' bit set),
+       FALSE otherwise.
+
+

NOTES

+

SEE ALSO

+
       ib_mad_t
+
+
+
+ +

[Structures] +IBA Base: Types/ib_mad_t

+ +

[top][index]

+

NAME

+
       ib_mad_t
+
+

DESCRIPTION

+
       IBA defined MAD header (13.4.3)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_mad
+{
+        uint8_t                                 base_ver;
+        uint8_t                                 mgmt_class;
+        uint8_t                                 class_ver;
+        uint8_t                                 method;
+        ib_net16_t                              status;
+        ib_net16_t                              class_spec;
+        ib_net64_t                              trans_id;
+        ib_net16_t                              attr_id;
+        ib_net16_t                              resv;
+        ib_net32_t                              attr_mod;
+
+}       PACK_SUFFIX ib_mad_t;
+#include <complib/cl_packoff.h>
+
+

FIELDS

+
       base_ver
+               MAD base format.
+
+       mgmt_class
+               Class of operation.
+
+       class_ver
+               Version of MAD class-specific format.
+
+       method
+               Method to perform, including 'R' bit.
+
+       status
+               Status of operation.
+
+       class_spec
+               Reserved for subnet management.
+
+       trans_id
+               Transaction ID.
+
+       attr_id
+               Attribute ID.
+
+       resv
+               Reserved field.
+
+       attr_mod
+               Attribute modifier.
+
+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_member_get_scope

+ +

[top][index]

+

NAME

+
       ib_member_get_scope
+
+

DESCRIPTION

+
       Get encoded MGID scope
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_member_get_scope(
+        IN              const   uint8_t                                         scope_state )
+{
+        return (scope_state >> 4);
+}
+
+

PARAMETERS

+
       scope_state
+               [in] the scope and state
+
+ RETURN VALUES
+       Encoded scope.
+
+

SEE ALSO

+
       ib_member_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_member_get_scope_state

+ +

[top][index]

+

NAME

+
       ib_member_get_scope_state
+
+

DESCRIPTION

+
       Get encoded MGID scope and JoinState
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_member_get_scope_state(
+        IN              const   uint8_t                                         scope_state,
+                OUT                     uint8_t* const                          p_scope,
+                OUT                     uint8_t* const                          p_state )
+{
+        if (p_scope)
+                *p_scope = ib_member_get_scope( scope_state );
+
+        if (p_state)
+                *p_state = ib_member_get_state( scope_state );
+}
+
+

PARAMETERS

+
       scope_state
+               [in] the scope and state
+
+ RETURN VALUES
+       p_scope
+               [out] pointer to the MGID scope
+
+       p_state
+               [out] pointer to the join state
+
+

NOTES

+

SEE ALSO

+
       ib_member_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_member_get_sl_flow_hop

+ +

[top][index]

+

NAME

+
       ib_member_get_sl_flow_hop
+
+

DESCRIPTION

+
       Get encoded sl flow label and hop limit
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_member_get_sl_flow_hop(
+        IN              const   ib_net32_t                                      sl_flow_hop,
+                OUT                     uint8_t* const                          p_sl OPTIONAL,
+                OUT                     net32_t* const                          p_flow_lbl OPTIONAL,
+                OUT                     uint8_t* const                          p_hop OPTIONAL )
+{
+        ib_net32_t tmp_sl_flow_hop;
+
+        if (p_sl)
+                *p_sl = (uint8_t)(sl_flow_hop & 0x0f);
+
+        tmp_sl_flow_hop = sl_flow_hop >> 4;
+
+        if (p_flow_lbl)
+                *p_flow_lbl = (uint32_t)(tmp_sl_flow_hop & 0xffffff);
+
+        tmp_sl_flow_hop = tmp_sl_flow_hop >> 20;
+
+        if (p_hop)
+                *p_hop = (uint8_t)(tmp_sl_flow_hop & 0xff);
+}
+
+

PARAMETERS

+
       sl_flow_hop
+               [in] the sl flow label and hop limit of MC Group
+
+ RETURN VALUES
+       p_sl
+               [out] pointer to the service level
+
+       p_flow_lbl
+               [out] pointer to the flow label info
+
+       p_hop
+               [out] pointer to the hop count limit.
+
+

NOTES

+

SEE ALSO

+
       ib_member_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_member_get_state

+ +

[top][index]

+

NAME

+
       ib_member_get_state
+
+

DESCRIPTION

+
       Get encoded MGID JoinState
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_member_get_state(
+        IN              const   uint8_t                                         scope_state )
+{
+        return (scope_state & 0x0f);
+}
+
+

PARAMETERS

+
       scope_state
+               [in] the scope and state
+
+ RETURN VALUES
+               Encoded JoinState
+
+

SEE ALSO

+
       ib_member_rec_t
+
+
+
+ +

[Structures] +IBA Base: Types/ib_member_rec_t

+ +

[top][index]

+

NAME

+
       ib_member_rec_t
+
+

DESCRIPTION

+
       Multicast member record, used to create, join, and leave multicast
+       groups.
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_member_rec
+{
+        ib_gid_t                                mgid;
+        ib_gid_t                                port_gid;
+        ib_net32_t                              qkey;
+        ib_net16_t                              mlid;
+        uint8_t                                 mtu;
+        uint8_t                                 tclass;
+        ib_net16_t                              pkey;
+        uint8_t                                 rate;
+        uint8_t                                 pkt_life;
+        ib_net32_t                              sl_flow_hop;
+        uint8_t                                 scope_state;
+        uint8_t                                 proxy_join;
+        uint8_t                                 reserved[2];
+        uint8_t                                 pad[4];
+
+}       PACK_SUFFIX ib_member_rec_t;
+#include <complib/cl_packoff.h>
+
+

FIELDS

+
       mgid
+               Multicast GID address for this multicast group.
+
+       port_gid
+               Valid GID of the endpoint joining this multicast group.
+
+       requestor_gid
+               GID of the endpoint making this request on hehave of port_gid.
+
+       qkey
+               Q_Key to be used by this multicast group.
+
+       mlid
+               Multicast LID for this multicast group.
+
+       mtu
+               MTU and MTU selector fields to use on this path
+
+       tclass
+               Another global routing parameter.
+
+       pkey
+               Partition key (P_Key) to use for this member.
+
+       rate
+               Rate and rate selector fields to use on this path.
+
+       pkt_life
+               Packet lifetime
+
+       sl_flow_hop
+               Global routing parameters: service level, hop count, and flow label.
+
+       scope_state
+               MGID scope and JoinState of multicast request.
+
+       proxy_join
+               Enables others in the Partition to proxy add/remove from the group
+
+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_member_set_join_state

+ +

[top][index]

+

NAME

+
       ib_member_set_join_state
+
+

DESCRIPTION

+
       Set JoinState
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_member_set_join_state(
+        IN      OUT                     ib_member_rec_t                         *p_mc_rec,
+        IN              const   uint8_t                                         state )
+{
+        p_mc_rec->scope_state &= 0xF0;
+        p_mc_rec->scope_state |= (state & 0x0F);
+}
+
+

PARAMETERS

+
       p_mc_rec
+               [in] pointer to the member record
+
+       state
+               [in] the JoinState
+
+ RETURN VALUES
+       NONE
+
+

NOTES

+

SEE ALSO

+
       ib_member_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_member_set_scope

+ +

[top][index]

+

NAME

+
       ib_member_set_scope
+
+

DESCRIPTION

+
       Set encoded scope of a MCR.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_member_set_scope(
+        IN      OUT                     uint8_t* const                          p_scope_state,
+        IN              const   uint8_t                                         scope )
+{
+        CL_ASSERT( scope <= 0x0F );
+        /* Scope is MS 4-bits. */
+        *p_scope_state &= 0xF0;
+        *p_scope_state |= (scope << 4);
+}
+
+

PARAMETERS

+
       scope_state
+               [in/out] Pointer to the MCR scope_state field.
+
+       scope
+               [in] The desired scope.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_member_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_member_set_scope_state

+ +

[top][index]

+

NAME

+
       ib_member_set_scope_state
+
+

DESCRIPTION

+
       Set encoded version, MGID scope and JoinState
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_member_set_scope_state(
+        IN              const   uint8_t                                         scope,
+        IN              const   uint8_t                                         state )
+{
+        /* Scope is MS 4-bits, state is LS 4-bits */
+        return ((scope << 4) | (state & 0xF));
+}
+
+

PARAMETERS

+
       scope
+               [in] the MGID scope
+
+       state
+               [in] the JoinState
+
+ RETURN VALUES
+       scope_state
+               [out] the encoded one
+
+

NOTES

+

SEE ALSO

+
       ib_member_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_member_set_sl_flow_hop

+ +

[top][index]

+

NAME

+
       ib_member_set_sl_flow_hop
+
+

DESCRIPTION

+
       Set encoded version, sl flow and hop
+
+

SYNOPSIS

+
AL_INLINE ib_net32_t AL_API
+ib_member_set_sl_flow_hop(
+        IN              const   uint8_t                                         sl,
+        IN              const   net32_t                                         flow_lbl,
+        IN              const   uint8_t                                         hop_limit )
+{
+        ib_net32_t              sl_flow_hop;
+
+        sl_flow_hop = sl;
+        sl_flow_hop <<= 20;
+        sl_flow_hop |= (cl_ntoh32( flow_lbl ) & 0x000FFFFF);
+        sl_flow_hop <<= 8;
+        sl_flow_hop |= hop_limit;
+        return cl_hton32(sl_flow_hop);
+}
+
+

PARAMETERS

+
       sl
+               [in] the service level.
+
+       flow_lbl
+               [in] the flow label info
+
+       hop_limit
+               [in] the hop limit.
+
+ RETURN VALUES
+       sl_flow_hop
+               [out] the sl flow label and hop limit
+
+

NOTES

+

SEE ALSO

+
       ib_member_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_member_set_state

+ +

[top][index]

+

NAME

+
       ib_member_set_state
+
+

DESCRIPTION

+
       Set encoded JoinState of a MCR.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_member_set_state(
+        IN      OUT                     uint8_t* const                          p_scope_state,
+        IN              const   uint8_t                                         state )
+{
+        CL_ASSERT( state <= 0x0F );
+        /* State is LS 4-bits. */
+        *p_scope_state &= 0x0F;
+        *p_scope_state |= (state & 0x0F);
+}
+
+

PARAMETERS

+
       scope_state
+               [in/out] Pointer to the MCR scope_state field to modify.
+
+       state
+               [in] the JoinState
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_member_rec_t
+
+
+
+ +

[Definitions] +IBA Base: Types/ib_net16_t

+ +

[top][index]

+

NAME

+
       ib_net16_t
+
+

DESCRIPTION

+
       Defines the network ordered type for 16-bit values.
+
+

SOURCE

+
typedef uint16_t        ib_net16_t;
+
+
+
+ +

[Definitions] +IBA Base: Types/ib_net32_t

+ +

[top][index]

+

NAME

+
       ib_net32_t
+
+

DESCRIPTION

+
       Defines the network ordered type for 32-bit values.
+
+

SOURCE

+
typedef uint32_t        ib_net32_t;
+
+
+
+ +

[Definitions] +IBA Base: Types/ib_net64_t

+ +

[top][index]

+

NAME

+
       ib_net64_t
+
+

DESCRIPTION

+
       Defines the network ordered type for 64-bit values.
+
+

SOURCE

+
typedef uint64_t        ib_net64_t;
+
+
+
+ +

[Functions] +IBA Base: Types/ib_node_info_get_local_port_num

+ +

[top][index]

+

NAME

+
       ib_node_info_get_local_port_num
+
+

DESCRIPTION

+
       Gets a the local port number from the NodeInfo attribute.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_node_info_get_local_port_num(
+        IN              const   ib_node_info_t* const           p_ni )
+{
+        return( (uint8_t)(( p_ni->port_num_vendor_id &
+                        IB_NODE_INFO_PORT_NUM_MASK )
+                        >> IB_NODE_INFO_PORT_NUM_SHIFT ));
+}
+
+

PARAMETERS

+
       p_ni
+               [in] Pointer to a NodeInfo attribute.
+
+ RETURN VALUES
+       Local port number that returned the attribute.
+
+

NOTES

+

SEE ALSO

+
       ib_node_info_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_node_info_get_vendor_id

+ +

[top][index]

+

NAME

+
       ib_node_info_get_vendor_id
+
+

DESCRIPTION

+
       Gets the VendorID from the NodeInfo attribute.
+
+

SYNOPSIS

+
AL_INLINE ib_net32_t AL_API
+ib_node_info_get_vendor_id(
+        IN              const   ib_node_info_t* const           p_ni )
+{
+        return( (ib_net32_t)( p_ni->port_num_vendor_id &
+                        IB_NODE_INFO_VEND_ID_MASK ) );
+}
+
+

PARAMETERS

+
       p_ni
+               [in] Pointer to a NodeInfo attribute.
+
+ RETURN VALUES
+       VendorID that returned the attribute.
+
+

NOTES

+

SEE ALSO

+
       ib_node_info_t
+
+
+
+ +

[Structures] +IBA Base: Types/ib_node_info_t

+ +

[top][index]

+

NAME

+
       ib_node_info_t
+
+

DESCRIPTION

+
       IBA defined NodeInfo. (14.2.5.3)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_node_info
+{
+        uint8_t                         base_version;
+        uint8_t                         class_version;
+        uint8_t                         node_type;
+        uint8_t                         num_ports;
+        ib_net64_t                      sys_guid;
+        ib_net64_t                      node_guid;
+        ib_net64_t                      port_guid;
+        ib_net16_t                      partition_cap;
+        ib_net16_t                      device_id;
+        ib_net32_t                      revision;
+        ib_net32_t                      port_num_vendor_id;
+
+}       PACK_SUFFIX ib_node_info_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_get_count

+ +

[top][index]

+

NAME

+
       ib_notice_get_count
+
+

DESCRIPTION

+
       Retrieves the notice toggle count from a notice trap.
+
+

SYNOPSIS

+
AL_INLINE boolean_t AL_API
+ib_notice_get_count(
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )
+{
+        return ((cl_ntoh16( p_notice_attr->combo3 ) & 0xFFFE) >> 1);
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in] Pointer to the notice attribute structure whose
+               notice toggle count to return.
+
+ RETURN VALUES
+       Returns the notice toggle count of the notice.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_set_count
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_get_dev_id

+ +

[top][index]

+

NAME

+
       ib_notice_get_dev_id
+
+

DESCRIPTION

+
       Retrieves the device ID from a vendor specific notice trap.
+
+

SYNOPSIS

+
AL_INLINE uint16_t AL_API
+ib_notice_get_dev_id(
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )
+{
+        return ib_notice_get_trap_num( p_notice_attr );
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in] Pointer to the notice attribute structure whose
+               device ID to return.
+
+ RETURN VALUES
+       Returns the vendor ID of the notice, in host byte order.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_set_dev_id
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_get_generic

+ +

[top][index]

+

NAME

+
       ib_notice_get_generic
+
+

DESCRIPTION

+
       Retrieves whether a notice trap is generic.
+
+

SYNOPSIS

+
AL_INLINE boolean_t AL_API
+ib_notice_get_generic(
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )
+{
+        if( cl_ntoh32( p_notice_attr->combo1 ) & 0x00000001 )
+                return TRUE;
+        return FALSE;
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in] Pointer to the notice attribute structure for which to return
+               whether it is generic or not.
+
+ RETURN VALUES
+       Returns TRUE if the notice is generic.
+
+       Returns FALSE if the notice is vendor specific.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_set_generic
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_get_prod_type

+ +

[top][index]

+

NAME

+
       ib_notice_get_prod_type
+
+

DESCRIPTION

+
       Retrieves the producer type from a generic notice trap.
+
+

SYNOPSIS

+
AL_INLINE uint32_t AL_API
+ib_notice_get_prod_type(
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )
+{
+        return (cl_ntoh32( p_notice_attr->combo1 ) >> 8);
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in] Pointer to the notice attribute structure whose
+               prducer type to return.
+
+ RETURN VALUES
+       Returns the producer type of the notice, in host byte order.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_set_prod_type
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_get_toggle

+ +

[top][index]

+

NAME

+
       ib_notice_get_toggle
+
+

DESCRIPTION

+
       Retrieves the notice toggle bit from a notice trap.
+
+

SYNOPSIS

+
AL_INLINE boolean_t AL_API
+ib_notice_get_toggle(
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )
+{
+        return (cl_ntoh16( p_notice_attr->combo3 ) & 0x0001);
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in] Pointer to the notice attribute structure whose
+               notice toggle bit value to return.
+
+ RETURN VALUES
+       Returns TRUE if the notice toggle bit of the notice is set.
+
+       Returns FALSE otherwise.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_set_toggle
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_get_trap_num

+ +

[top][index]

+

NAME

+
       ib_notice_get_trap_num
+
+

DESCRIPTION

+
       Retrieves the trap number from a generic notice trap.
+
+

SYNOPSIS

+
AL_INLINE uint16_t AL_API
+ib_notice_get_trap_num(
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )
+{
+        return cl_ntoh16( p_notice_attr->combo2 );
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in] Pointer to the notice attribute structure whose
+               trap number to return.
+
+ RETURN VALUES
+       Returns the vendor ID of the notice, in host byte order.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_set_trap_num
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_get_type

+ +

[top][index]

+

NAME

+
       ib_notice_get_type
+
+

DESCRIPTION

+
       Retrieves the type of a notice trap.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_notice_get_type(
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )
+{
+        return (uint8_t)((cl_ntoh32( p_notice_attr->combo1 ) >> 1) & 0x0000007F);
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in] Pointer to the notice attribute structure whose type to return.
+
+ RETURN VALUES
+       Returns the type of the notice.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_set_type
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_get_vend_id

+ +

[top][index]

+

NAME

+
       ib_notice_get_vend_id
+
+

DESCRIPTION

+
       Retrieves the vendor ID from a vendor specific notice trap.
+
+

SYNOPSIS

+
AL_INLINE uint32_t AL_API
+ib_notice_get_vend_id(
+        IN              const   ib_mad_notice_attr_t* const     p_notice_attr )
+{
+        return ib_notice_get_prod_type( p_notice_attr );
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in] Pointer to the notice attribute structure whose
+               vendor ID to return.
+
+ RETURN VALUES
+       Returns the vendor ID of the notice, in host byte order.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_set_vend_id
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_set_count

+ +

[top][index]

+

NAME

+
       ib_notice_set_count
+
+

DESCRIPTION

+
       Sets the toggle count of a notice trap.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_notice_set_count(
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,
+        IN              const   uint16_t                                        toggle_cnt )
+{
+        uint16_t        val;
+        val = cl_ntoh16( p_notice_attr->combo3 );
+        val &= 0x0001;
+        val |= (toggle_cnt << 1);
+        p_notice_attr->combo3 = cl_hton16( val );
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in/out] Pointer to the notice attribute structure
+               whose device ID to set.
+
+       toggle_cnt
+               [in] Toggle count value of the notice.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_get_count
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_set_dev_id

+ +

[top][index]

+

NAME

+
       ib_notice_set_dev_id
+
+

DESCRIPTION

+
       Sets the producer type of a vendor specific notice trap.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_notice_set_dev_id(
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,
+        IN              const   uint16_t                                        dev_id )
+{
+        ib_notice_set_trap_num( p_notice_attr, dev_id );
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in/out] Pointer to the notice attribute structure
+               whose device ID to set.
+
+       dev_id
+               [in] Device ID of notice trap.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_get_dev_id
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_set_generic

+ +

[top][index]

+

NAME

+
       ib_notice_set_generic
+
+

DESCRIPTION

+
       Sets whether a notice trap is generic.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_notice_set_generic(
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,
+        IN              const   boolean_t                                       is_generic )
+{
+        uint32_t        val;
+
+        val = cl_ntoh32( p_notice_attr->combo1 );
+        if( is_generic )
+                val |= 0x00000001;
+        else
+                val &= 0xFFFFFFFE;
+        p_notice_attr->combo1 = cl_hton32( val );
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in/out] Pointer to the notice attribute structure for which to set
+               the generic bit.
+
+       is_generic
+               [in] TRUE if the notice is generic, FALSE if vendor specific.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_get_generic
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_set_prod_type

+ +

[top][index]

+

NAME

+
       ib_notice_set_prod_type
+
+

DESCRIPTION

+
       Sets the producer type of a generic notice trap.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_notice_set_prod_type(
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,
+        IN              const   uint32_t                                        prod_type )
+{
+        uint32_t        val;
+
+        val = cl_ntoh32( p_notice_attr->combo1 );
+        /* Clear the type. */
+        val &= 0x000000FF;
+        /* Set new value. */
+        val |= (prod_type << 8);
+        p_notice_attr->combo1 = cl_hton32( val );
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in/out] Pointer to the notice attribute structure
+               whose producer type to set.
+
+       prod_type
+               [in] Producer type of notice trap.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_get_prod_type
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_set_toggle

+ +

[top][index]

+

NAME

+
       ib_notice_set_toggle
+
+

DESCRIPTION

+
       Sets the notice toggle bit of a notice trap.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_notice_set_toggle(
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,
+        IN              const   boolean_t                                       toggle_val )
+{
+        uint16_t        val;
+        val = cl_ntoh16( p_notice_attr->combo3 );
+        if( toggle_val )
+                val |= 0x0001;
+        else
+                val &= 0xFFFE;
+        p_notice_attr->combo3 = cl_hton16( val );
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in/out] Pointer to the notice attribute structure
+               whose notice toggle bit to set or clear.
+
+       toggle_val
+               [in] Boolean value indicating whether the toggle bit of the notice
+               should be set or cleared.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_get_toggle
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_set_trap_num

+ +

[top][index]

+

NAME

+
       ib_notice_set_trap_num
+
+

DESCRIPTION

+
       Sets the trap number of a generic notice trap.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_notice_set_trap_num(
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,
+        IN              const   uint16_t                                        trap_num )
+{
+        p_notice_attr->combo2 = cl_hton16( trap_num );
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in/out] Pointer to the notice attribute structure
+               whose trap number to set.
+
+       trap_num
+               [in] Trap number to set.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_get_trap_num
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_set_type

+ +

[top][index]

+

NAME

+
       ib_notice_set_type
+
+

DESCRIPTION

+
       Sets the type of a notice trap.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_notice_set_type(
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,
+        IN              const   uint8_t                                         type )
+{
+        uint32_t        val;
+
+        val = cl_ntoh32( p_notice_attr->combo1 );
+        /* Clear the type. */
+        val &= 0xFFFFFF01;
+        /* Set new value. */
+        val |= (((uint32_t)(type & 0x7F)) << 1);
+        p_notice_attr->combo1 = cl_hton32( val );
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in/out] Pointer to the notice attribute structure whose type to set.
+
+       type
+               [in] Type of notice trap.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_get_type
+
+
+
+ +

[Functions] +IBA Base: Types/ib_notice_set_vend_id

+ +

[top][index]

+

NAME

+
       ib_notice_set_vend_id
+
+

DESCRIPTION

+
       Sets the vendor ID of a vendor specific notice trap.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_notice_set_vend_id(
+        IN      OUT                     ib_mad_notice_attr_t* const     p_notice_attr,
+        IN              const   uint32_t                                        vend_id )
+{
+        ib_notice_set_prod_type( p_notice_attr, vend_id );
+}
+
+

PARAMETERS

+
       p_notice_attr
+               [in/out] Pointer to the notice attribute structure
+               whose vendor ID to set.
+
+       vend_id
+               [in] Vendor ID of notice trap.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_mad_notice_attr_t, ib_notice_get_vend_id
+
+
+
+ +

[Functions] +IBA Base: Types/ib_path_get_ipd

+ +

[top][index]

+

NAME

+
       ib_path_get_ipd
+
+

DESCRIPTION

+
       Returns the encoded value for the inter packet delay.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_path_get_ipd(
+        IN                              uint8_t                                         local_link_width_supported,
+        IN                              uint8_t                                         path_rec_rate )
+{
+        uint8_t ipd = 0;
+
+        switch(local_link_width_supported)
+        {
+                //link_width_supported = 1: 1x
+                case 1:
+                        break;
+
+                //link_width_supported = 3: 1x or 4x
+                case 3:
+                        switch(path_rec_rate & 0x3F)
+                        {
+                                case IB_PATH_RECORD_RATE_2_5_GBS:
+                                        ipd = 3;
+                                        break;
+                                default:
+                                        break;
+                        }
+                        break;
+
+                //link_width_supported = 11: 1x or 4x or 12x
+                case 11:
+                        switch(path_rec_rate & 0x3F)
+                        {
+                                case IB_PATH_RECORD_RATE_2_5_GBS:
+                                        ipd = 11;
+                                        break;
+                                case IB_PATH_RECORD_RATE_10_GBS:
+                                        ipd = 2;
+                                        break;
+                                default:
+                                        break;
+                        }
+                        break;
+
+                default:
+                        break;
+        }
+
+        return ipd;
+}
+
+

PARAMETERS

+
       local_link_width_supported
+               [in] link with supported for this port
+
+       path_rec_rate
+               [in] rate field of the path record
+
+ RETURN VALUES
+       Returns the ipd
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_path_rec_flow_lbl

+ +

[top][index]

+

NAME

+
       ib_path_rec_flow_lbl
+
+

DESCRIPTION

+
       Get flow label.
+
+

SYNOPSIS

+
AL_INLINE net32_t AL_API
+ib_path_rec_flow_lbl(
+        IN              const   ib_path_rec_t* const            p_rec )
+{
+        return( cl_hton32( (cl_ntoh32(p_rec->hop_flow_raw.val) >> 8) & 0x000FFFFF ) );
+}
+
+

PARAMETERS

+
       p_rec
+               [in] Pointer to the path record object.
+
+ RETURN VALUES
+       Flow label of the path record.
+
+

NOTES

+

SEE ALSO

+
       ib_path_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_path_rec_hop_limit

+ +

[top][index]

+

NAME

+
       ib_path_rec_hop_limit
+
+

DESCRIPTION

+
       Get hop limit.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_path_rec_hop_limit(
+        IN              const   ib_path_rec_t* const            p_rec )
+{
+        return( p_rec->hop_flow_raw.bytes[3] );
+}
+
+

PARAMETERS

+
       p_rec
+               [in] Pointer to the path record object.
+
+ RETURN VALUES
+       Hop limit of the path record.
+
+

NOTES

+

SEE ALSO

+
       ib_path_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_path_rec_init_local

+ +

[top][index]

+

NAME

+
       ib_path_rec_init_local
+
+

DESCRIPTION

+
       Initializes a subnet local path record.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_path_rec_init_local(
+        IN                              ib_path_rec_t*  const           p_rec,
+        IN              const   ib_gid_t*               const           p_dgid,
+        IN              const   ib_gid_t*               const           p_sgid,
+        IN              const   ib_net16_t                                      dlid,
+        IN              const   ib_net16_t                                      slid,
+        IN              const   uint8_t                                         num_path,
+        IN              const   ib_net16_t                                      pkey,
+        IN              const   uint8_t                                         sl,
+        IN              const   uint8_t                                         mtu_selector,
+        IN              const   uint8_t                                         mtu,
+        IN              const   uint8_t                                         rate_selector,
+        IN              const   uint8_t                                         rate,
+        IN              const   uint8_t                                         pkt_life_selector,
+        IN              const   uint8_t                                         pkt_life,
+        IN              const   uint8_t                                         preference )
+{
+        p_rec->dgid = *p_dgid;
+        p_rec->sgid = *p_sgid;
+        p_rec->dlid = dlid;
+        p_rec->slid = slid;
+        p_rec->num_path = num_path;
+        p_rec->pkey = pkey;
+        /* Lower 4 bits of path rec's SL are reserved. */
+        p_rec->sl = cl_ntoh16( sl );
+        p_rec->mtu = (uint8_t)((mtu & IB_PATH_REC_BASE_MASK) |
+                        (uint8_t)(mtu_selector << 6));
+        p_rec->rate = (uint8_t)((rate & IB_PATH_REC_BASE_MASK) |
+                        (uint8_t)(rate_selector << 6));
+        p_rec->pkt_life = (uint8_t)((pkt_life & IB_PATH_REC_BASE_MASK) |
+                        (uint8_t)(pkt_life_selector << 6));
+        p_rec->preference = preference;
+
+        /* Clear global routing fields for local path records */
+        p_rec->hop_flow_raw.val = 0;
+        p_rec->tclass = 0;
+
+        p_rec->resv0 = 0;
+        p_rec->resv1 = 0;
+        p_rec->resv2 = 0;
+}
+
+

PARAMETERS

+
       p_rec
+               [in] Pointer to the path record object.
+
+       dgid
+               [in] GID of destination port.
+
+       sgid
+               [in] GID of source port.
+
+       dlid
+               [in] LID of destination port.
+
+       slid
+               [in] LID of source port.
+
+       num_path
+               [in] In queries, maximum number of paths to return.
+               In responses, undefined.
+
+       pkey
+               [in] Partition key (P_Key) to use on this path.
+
+       sl
+               [in] Service level to use on this path.  Lower 4-bits are valid.
+
+       mtu_selector
+               [in] Encoded MTU selector value to use on this path
+
+       mtu
+               [in] Encoded MTU to use on this path
+
+       rate_selector
+               [in] Encoded rate selector value to use on this path.
+
+       rate
+               [in] Encoded rate to use on this path.
+
+       pkt_life_selector
+               [in] Encoded Packet selector value lifetime for this path.
+
+       pkt_life
+               [in] Encoded Packet lifetime for this path.
+
+       preference
+               [in] Indicates the relative merit of this path versus other path
+               records returned from the SA.  Lower numbers are better.
+
+ RETURN VALUES
+       None.
+
+

NOTES

+

SEE ALSO

+
       ib_gid_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_path_rec_mtu

+ +

[top][index]

+

NAME

+
       ib_path_rec_mtu
+
+

DESCRIPTION

+
       Get encoded path MTU.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_path_rec_mtu(
+        IN              const   ib_path_rec_t* const            p_rec )
+{
+        return( (uint8_t)(p_rec->mtu & IB_PATH_REC_BASE_MASK) );
+}
+
+

PARAMETERS

+
       p_rec
+               [in] Pointer to the path record object.
+
+ RETURN VALUES
+       Encoded path MTU.
+               1: 256
+               2: 512
+               3: 1024
+               4: 2048
+               5: 4096
+               others: reserved
+
+

NOTES

+

SEE ALSO

+
       ib_path_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_path_rec_mtu_sel

+ +

[top][index]

+

NAME

+
       ib_path_rec_mtu_sel
+
+

DESCRIPTION

+
       Get encoded path MTU selector.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_path_rec_mtu_sel(
+        IN              const   ib_path_rec_t* const            p_rec )
+{
+        return( (uint8_t)((p_rec->mtu & IB_PATH_REC_SELECTOR_MASK) >> 6) );
+}
+
+

PARAMETERS

+
       p_rec
+               [in] Pointer to the path record object.
+
+ RETURN VALUES
+       Encoded path MTU selector value (for queries).
+               0: greater than MTU specified
+               1: less than MTU specified
+               2: exactly the MTU specified
+               3: largest MTU available
+
+

NOTES

+

SEE ALSO

+
       ib_path_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_path_rec_pkt_life

+ +

[top][index]

+

NAME

+
       ib_path_rec_pkt_life
+
+

DESCRIPTION

+
       Get encoded path pkt_life.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_path_rec_pkt_life(
+        IN              const   ib_path_rec_t* const            p_rec )
+{
+        return( (uint8_t)(p_rec->pkt_life & IB_PATH_REC_BASE_MASK) );
+}
+
+

PARAMETERS

+
       p_rec
+               [in] Pointer to the path record object.
+
+ RETURN VALUES
+       Encoded path pkt_life = 4.096 µsec * 2 PacketLifeTime.
+
+

NOTES

+

SEE ALSO

+
       ib_path_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_path_rec_pkt_life_sel

+ +

[top][index]

+

NAME

+
       ib_path_rec_pkt_life_sel
+
+

DESCRIPTION

+
       Get encoded path pkt_lifetime selector.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_path_rec_pkt_life_sel(
+        IN              const   ib_path_rec_t* const            p_rec )
+{
+        return( (uint8_t)((p_rec->pkt_life & IB_PATH_REC_SELECTOR_MASK) >> 6 ));
+}
+
+

PARAMETERS

+
       p_rec
+               [in] Pointer to the path record object.
+
+ RETURN VALUES
+       Encoded path pkt_lifetime selector value (for queries).
+               0: greater than rate specified
+               1: less than rate specified
+               2: exactly the rate specified
+               3: smallest packet lifetime available
+
+

NOTES

+

SEE ALSO

+
       ib_path_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_path_rec_rate

+ +

[top][index]

+

NAME

+
       ib_path_rec_rate
+
+

DESCRIPTION

+
       Get encoded path rate.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_path_rec_rate(
+        IN              const   ib_path_rec_t* const            p_rec )
+{
+        return( (uint8_t)(p_rec->rate & IB_PATH_REC_BASE_MASK) );
+}
+
+

PARAMETERS

+
       p_rec
+               [in] Pointer to the path record object.
+
+ RETURN VALUES
+       Encoded path rate.
+               2: 2.5 Gb/sec.
+               3: 10 Gb/sec.
+               4: 30 Gb/sec.
+               others: reserved
+
+

NOTES

+

SEE ALSO

+
       ib_path_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_path_rec_rate_sel

+ +

[top][index]

+

NAME

+
       ib_path_rec_rate_sel
+
+

DESCRIPTION

+
       Get encoded path rate selector.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_path_rec_rate_sel(
+        IN              const   ib_path_rec_t* const            p_rec )
+{
+        return( (uint8_t)((p_rec->rate & IB_PATH_REC_SELECTOR_MASK) >> 6) );
+}
+
+

PARAMETERS

+
       p_rec
+               [in] Pointer to the path record object.
+
+ RETURN VALUES
+       Encoded path rate selector value (for queries).
+               0: greater than rate specified
+               1: less than rate specified
+               2: exactly the rate specified
+               3: largest rate available
+
+

NOTES

+

SEE ALSO

+
       ib_path_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_path_rec_set_hop_flow_raw

+ +

[top][index]

+

NAME

+
       ib_path_rec_set_hop_flow_raw
+
+

DESCRIPTION

+
       Sets the hop limit, flow label, and raw traffic bits of a path record.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_path_rec_set_hop_flow_raw(
+                OUT                     ib_path_rec_t* const            p_rec,
+        IN              const   uint8_t                                         hop_limit,
+        IN              const   net32_t                                         flow_lbl,
+        IN              const   boolean_t                                       raw )
+{
+        p_rec->hop_flow_raw.val = (cl_ntoh32( flow_lbl ) & 0x000FFFFF) << 8;
+        if( raw )
+                p_rec->hop_flow_raw.val |= 0x80000000;
+        p_rec->hop_flow_raw.val = cl_hton32( p_rec->hop_flow_raw.val );
+        p_rec->hop_flow_raw.bytes[3] = hop_limit;
+}
+
+

PARAMETERS

+
       p_rec
+               Pointer to the path record whose hop limit, flow label, and rab
+               traffic fields to set.
+
+       hop_limit
+               Hop limit to set in the path record.
+
+       flow_lbl
+               Flow label, in network byte order, to set in the path record.
+
+       raw
+               Boolean flag to indicate whether the path record is for raw traffic.
+
+

SEE ALSO

+
       ib_path_rec_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_path_rec_sl

+ +

[top][index]

+

NAME

+
       ib_path_rec_sl
+
+

DESCRIPTION

+
       Get path service level.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_path_rec_sl(
+        IN              const   ib_path_rec_t* const            p_rec )
+{
+        return( (uint8_t)((cl_ntoh16( p_rec->sl )) & 0xF) );
+}
+
+

PARAMETERS

+
       p_rec
+               [in] Pointer to the path record object.
+
+ RETURN VALUES
+       Encoded path MTU.
+               1: 256
+               2: 512
+               3: 1024
+               4: 2048
+               5: 4096
+               others: reserved
+
+

NOTES

+

SEE ALSO

+
       ib_path_rec_t
+
+
+
+ +

[Structures] +IBA Base: Types/ib_path_rec_t

+ +

[top][index]

+

NAME

+
       ib_path_rec_t
+
+

DESCRIPTION

+
       Path records encapsulate the properties of a given
+       route between two end-points on a subnet.
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef __declspec(align(8)) struct _ib_path_rec
+{
+        uint64_t                                resv0;
+        ib_gid_t                                dgid;
+        ib_gid_t                                sgid;
+        ib_net16_t                              dlid;
+        ib_net16_t                              slid;
+        ib_field32_t                    hop_flow_raw;
+        uint8_t                                 tclass;
+        uint8_t                                 num_path;
+        ib_net16_t                              pkey;
+        ib_net16_t                              sl;
+        uint8_t                                 mtu;
+        uint8_t                                 rate;
+        uint8_t                                 pkt_life;
+        uint8_t                                 preference;
+        uint16_t                                resv1;
+        uint32_t                                resv2;
+
+}       PACK_SUFFIX ib_path_rec_t;
+#include <complib/cl_packoff.h>
+
+

FIELDS

+
       resv0
+               Reserved bytes.
+
+       dgid
+               GID of destination port.
+
+       sgid
+               GID of source port.
+
+       dlid
+               LID of destination port.
+
+       slid
+               LID of source port.
+
+       hop_flow_raw
+               Global routing parameters: hop count, flow label and raw bit.
+
+       tclass
+               Another global routing parameter.
+
+       num_path
+               In queries, maximum number of paths to return.
+               In responses, undefined.
+
+       pkey
+               Partition key (P_Key) to use on this path.
+
+       resv1
+               Reserved byte.
+
+       sl
+               Service level to use on this path.
+
+       mtu
+               MTU and MTU selector fields to use on this path
+
+       rate
+               Rate and rate selector fields to use on this path.
+
+       pkt_life
+               Packet lifetime
+
+       preference
+               Indicates the relative merit of this path versus other path
+               records returned from the SA.  Lower numbers are better.
+
+       resv1
+               Reserved bytes.
+
+       resv2
+               Reserved bytes.
+
+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_pkey_get_base

+ +

[top][index]

+

NAME

+
       ib_pkey_get_base
+
+

DESCRIPTION

+
       Returns the base P_Key value with the membership bit stripped.
+
+

SYNOPSIS

+
AL_INLINE ib_net16_t AL_API
+ib_pkey_get_base(
+        IN              const   ib_net16_t                                      pkey )
+{
+        return( (ib_net16_t)(pkey & IB_PKEY_BASE_MASK) );
+}
+
+

PARAMETERS

+
       pkey
+               [in] P_Key value
+
+

RETURN VALUE

+
       Returns the base P_Key value with the membership bit stripped.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_pkey_is_full_member

+ +

[top][index]

+

NAME

+
       ib_pkey_is_full_member
+
+

DESCRIPTION

+
       Indicitates if the port is a full member of the parition.
+
+

SYNOPSIS

+
AL_INLINE boolean_t AL_API
+ib_pkey_is_full_member(
+        IN              const   ib_net16_t                                      pkey )
+{
+        return( (pkey & IB_PKEY_TYPE_MASK) == IB_PKEY_TYPE_MASK );
+}
+
+

PARAMETERS

+
       pkey
+               [in] P_Key value
+
+

RETURN VALUE

+
       TRUE if the port is a full member of the partition.
+       FALSE otherwise.
+
+

NOTES

+

SEE ALSO

+
 ib_pkey_get_base, ib_net16_t
+
+
+
+ +

[Structures] +IBA Base: Types/ib_pkey_table_info_t

+ +

[top][index]

+

NAME

+
       ib_pkey_table_info_t
+
+

DESCRIPTION

+
       IBA defined PKey table. (14.2.5.7)
+
+

SYNOPSIS

+
#define PKEY_TABLE_MAX_ENTRIES          32
+
+#include <complib/cl_packon.h>
+typedef struct _ib_pkey_table_info
+{
+        ib_net16_t                      pkey[PKEY_TABLE_MAX_ENTRIES];
+
+}       PACK_SUFFIX ib_pkey_table_info_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Functions] +IBA Base: Types/ib_port_info_compute_rate

+ +

[top][index]

+

NAME

+
       ib_port_info_compute_rate
+
+

DESCRIPTION

+
       Returns the encoded value for the path rate.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_port_info_compute_rate(
+        IN              const   ib_port_info_t* const           p_pi )
+{
+        switch( p_pi->link_width_active * p_pi->link_width_active *
+                ib_port_info_get_link_speed_active( p_pi ) )
+        {
+        case 1:
+                return IB_PATH_RECORD_RATE_2_5_GBS;
+
+        case 2:
+                return IB_PATH_RECORD_RATE_5_GBS;
+
+        case 4:
+                return IB_PATH_RECORD_RATE_10_GBS;
+
+        case 8:
+                return IB_PATH_RECORD_RATE_20_GBS;
+
+        case 16:
+                return IB_PATH_RECORD_RATE_40_GBS;
+
+        case 64:
+                return IB_PATH_RECORD_RATE_30_GBS;
+
+        case 128:
+                return IB_PATH_RECORD_RATE_60_GBS;
+
+        case 256:
+                return IB_PATH_RECORD_RATE_120_GBS;
+
+        default:
+                return IB_PATH_RECORD_RATE_2_5_GBS;
+        }
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+       Returns the encoded value for the link speed supported.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_get_link_speed_active

+ +

[top][index]

+

NAME

+
       ib_port_info_get_link_speed_active
+
+

DESCRIPTION

+
       Returns the Link Speed Active value assigned to this port.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_port_info_get_link_speed_active(
+        IN              const   ib_port_info_t* const           p_pi )
+{
+        return( (uint8_t)((p_pi->link_speed & IB_PORT_LINK_SPEED_ACTIVE_MASK) >>
+                IB_PORT_LINK_SPEED_SHIFT) );
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+       Returns the link speed active value assigned to this port.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_get_link_speed_sup

+ +

[top][index]

+

NAME

+
       ib_port_info_get_link_speed_sup
+
+

DESCRIPTION

+
       Returns the encoded value for the link speed supported.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_port_info_get_link_speed_sup(
+        IN              const   ib_port_info_t* const           p_pi )
+{
+        return( (uint8_t)((p_pi->state_info1 &
+                        IB_PORT_LINK_SPEED_SUPPORTED_MASK) >>
+                        IB_PORT_LINK_SPEED_SHIFT) );
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+       Returns the encoded value for the link speed supported.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_get_lmc

+ +

[top][index]

+

NAME

+
       ib_port_info_get_lmc
+
+

DESCRIPTION

+
       Returns the LMC value assigned to this port.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_port_info_get_lmc(
+        IN              const   ib_port_info_t* const           p_pi )
+{
+        return( (uint8_t)(p_pi->mkey_lmc & IB_PORT_LMC_MASK) );
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+       Returns the LMC value assigned to this port.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_get_mpb

+ +

[top][index]

+

NAME

+
       ib_port_info_get_mpb
+
+

DESCRIPTION

+
       Returns the M_Key protect bits assigned to this port.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_port_info_get_mpb(
+        IN              const   ib_port_info_t* const           p_pi )
+{
+        return( (uint8_t)((p_pi->mkey_lmc & IB_PORT_MPB_MASK) >>
+                        IB_PORT_MPB_SHIFT) );
+}
+
+

PARAMETERS

+
       p_ni
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+       Returns the M_Key protect bits assigned to this port.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_get_mtu_cap

+ +

[top][index]

+

NAME

+
       ib_port_info_get_mtu_cap
+
+

DESCRIPTION

+
       Returns the encoded value for the maximum MTU supported by this port.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_port_info_get_mtu_cap(
+        IN              const   ib_port_info_t* const           p_pi )
+{
+        return( (uint8_t)(p_pi->mtu_cap & 0x0F) );
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+       Returns the LMC value assigned to this port.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_get_neighbor_mtu

+ +

[top][index]

+

NAME

+
       ib_port_info_get_neighbor_mtu
+
+

DESCRIPTION

+
       Returns the encoded value for the neighbor MTU at this port.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_port_info_get_neighbor_mtu(
+        IN const ib_port_info_t* const p_pi )
+{
+        return( (uint8_t)((p_pi->mtu_smsl & 0xF0) >> 4) );
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+       Returns the encoded value for the neighbor MTU at this port.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_get_op_vls

+ +

[top][index]

+

NAME

+
       ib_port_info_get_op_vls
+
+

DESCRIPTION

+
       Gets the operational VLs on a port.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_port_info_get_op_vls(
+        IN const ib_port_info_t* const p_pi)
+{
+        return((p_pi->vl_enforce >> 4) & 0x0F);
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+       OP_VLS field
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_get_port_state

+ +

[top][index]

+

NAME

+
       ib_port_info_get_port_state
+
+

DESCRIPTION

+
       Returns the port state.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_port_info_get_port_state(
+        IN              const   ib_port_info_t* const           p_pi )
+{
+        return( (uint8_t)(p_pi->state_info1 & IB_PORT_STATE_MASK) );
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+       Port state.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_get_vl_cap

+ +

[top][index]

+

NAME

+
       ib_port_info_get_vl_cap
+
+

DESCRIPTION

+
       Gets the VL Capability of a port.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_port_info_get_vl_cap(
+        IN const ib_port_info_t* const p_pi)
+{
+        return((p_pi->vl_cap >> 4) & 0x0F);
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+       VL_CAP field
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_set_link_speed_sup

+ +

[top][index]

+

NAME

+
       ib_port_info_set_link_speed_sup
+
+

DESCRIPTION

+
       Given an integer of the supported link speed supported.
+       Set the appropriate bits in state_info1
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_port_info_set_link_speed_sup(
+        IN                              uint8_t const                           speed,
+        IN                              ib_port_info_t*                         p_pi )
+{
+        p_pi->state_info1 =
+                ( ~IB_PORT_LINK_SPEED_SUPPORTED_MASK & p_pi->state_info1 ) |
+                ( IB_PORT_LINK_SPEED_SUPPORTED_MASK &
+                        (speed << IB_PORT_LINK_SPEED_SHIFT) );
+}
+
+

PARAMETERS

+
       speed
+               [in] Supported Speeds Code.
+
+       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_set_lmc

+ +

[top][index]

+

NAME

+
       ib_port_info_set_lmc
+
+

DESCRIPTION

+
       Sets the LMC value in the PortInfo attribute.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_port_info_set_lmc(
+        IN                              ib_port_info_t* const           p_pi,
+        IN              const   uint8_t                                         lmc )
+{
+        CL_ASSERT( lmc <= 0x7 );
+        p_pi->mkey_lmc = (uint8_t)((p_pi->mkey_lmc & 0xF8) | lmc);
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+       lmc
+               [in] LMC value to set, must be less than 7.
+
+ RETURN VALUES
+       None.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_set_mpb

+ +

[top][index]

+

NAME

+
       ib_port_info_set_mpb
+
+

DESCRIPTION

+
       Set the M_Key protect bits of this port.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_port_info_set_mpb(
+        IN                              ib_port_info_t*                         p_pi,
+        IN                              uint8_t                                         mpb )
+{
+        p_pi->mkey_lmc =
+                ((p_pi->mkey_lmc & ~IB_PORT_MPB_MASK) |
+                (mpb << IB_PORT_MPB_SHIFT));
+}
+
+

PARAMETERS

+
       mpb
+               [in] M_Key protect bits
+       p_ni
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_set_neighbor_mtu

+ +

[top][index]

+

NAME

+
       ib_port_info_set_neighbor_mtu
+
+

DESCRIPTION

+
       Sets the Neighbor MTU value in the PortInfo attribute.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_port_info_set_neighbor_mtu(
+        IN                              ib_port_info_t* const           p_pi,
+        IN              const   uint8_t                                         mtu )
+{
+        CL_ASSERT( mtu <= 5 );
+        CL_ASSERT( mtu != 0 );
+        p_pi->mtu_smsl = (uint8_t)((p_pi->mtu_smsl & 0x0F) | (mtu << 4));
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+       mtu
+               [in] Encoded MTU value to set
+
+ RETURN VALUES
+       None.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_set_op_vls

+ +

[top][index]

+

NAME

+
       ib_port_info_set_op_vls
+
+

DESCRIPTION

+
       Sets the operational VLs on a port.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_port_info_set_op_vls(
+        IN                              ib_port_info_t* const           p_pi,
+        IN              const   uint8_t                                         op_vls )
+{
+        p_pi->vl_enforce = (uint8_t)((p_pi->vl_enforce & 0x0F) | (op_vls << 4) );
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+       op_vls
+               [in] Encoded operation VLs value.
+
+ RETURN VALUES
+       None.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_set_port_state

+ +

[top][index]

+

NAME

+
       ib_port_info_set_port_state
+
+

DESCRIPTION

+
       Sets the port state.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_port_info_set_port_state(
+        IN                              ib_port_info_t* const           p_pi,
+        IN              const   uint8_t                                         port_state )
+{
+        p_pi->state_info1 = (uint8_t)((p_pi->state_info1 & 0xF0) | port_state );
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+       port_state
+               [in] Port state value to set.
+
+ RETURN VALUES
+       None.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_set_state_no_change

+ +

[top][index]

+

NAME

+
       ib_port_info_set_state_no_change
+
+

DESCRIPTION

+
       Sets the port state fields to the value for "no change".
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_port_info_set_state_no_change(
+        IN                              ib_port_info_t* const           p_pi )
+{
+        ib_port_info_set_port_state( p_pi, 0 );
+        p_pi->state_info2 = 0;
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+       None.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_port_info_set_timeout

+ +

[top][index]

+

NAME

+
       ib_port_info_set_timeout
+
+

DESCRIPTION

+
       Sets the encoded subnet timeout value in the PortInfo attribute.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_port_info_set_timeout(
+        IN                              ib_port_info_t* const           p_pi,
+        IN              const   uint8_t                                         timeout )
+{
+        CL_ASSERT( timeout <= 0x1F );
+        p_pi->subnet_timeout = (uint8_t)(timeout & 0x1F);
+}
+
+

PARAMETERS

+
       p_pi
+               [in] Pointer to a PortInfo attribute.
+
+       timeout
+               [in] Encoded timeout value to set
+
+ RETURN VALUES
+       None.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Structures] +IBA Base: Types/ib_port_info_t

+ +

[top][index]

+

NAME

+
       ib_port_info_t
+
+

DESCRIPTION

+
       IBA defined PortInfo. (14.2.5.6)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_port_info
+{
+        ib_net64_t                      m_key;
+        ib_net64_t                      subnet_prefix;
+        ib_net16_t                      base_lid;
+        ib_net16_t                      master_sm_base_lid;
+        ib_net32_t                      capability_mask;
+        ib_net16_t                      diag_code;
+        ib_net16_t                      m_key_lease_period;
+        uint8_t                         local_port_num;
+        uint8_t                         link_width_enabled;
+        uint8_t                         link_width_supported;
+        uint8_t                         link_width_active;
+        uint8_t                         state_info1; // LinkSpeedSupported and PortState
+        uint8_t                         state_info2; // PortPhysState and LinkDownDefaultState
+        uint8_t                         mkey_lmc;
+        uint8_t                         link_speed;      // LinkSpeedEnabled and LinkSpeedActive
+        uint8_t                         mtu_smsl;
+        uint8_t                         vl_cap;          // VlCap and InitType
+        uint8_t                         vl_high_limit;
+        uint8_t                         vl_arb_high_cap;
+        uint8_t                         vl_arb_low_cap;
+        uint8_t                         mtu_cap;
+        uint8_t                         vl_stall_life;
+        uint8_t                         vl_enforce;
+        ib_net16_t                      m_key_violations;
+        ib_net16_t                      p_key_violations;
+        ib_net16_t                      q_key_violations;
+        uint8_t                         guid_cap;
+        uint8_t                         subnet_timeout;
+        uint8_t                         resp_time_value;
+        uint8_t                         error_threshold;
+
+}       PACK_SUFFIX ib_port_info_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Functions] +IBA Base: Types/ib_rmpp_is_flag_set

+ +

[top][index]

+

NAME

+
       ib_rmpp_is_flag_set
+
+

DESCRIPTION

+
       Returns TRUE if the MAD has the given RMPP flag set.
+
+

SYNOPSIS

+
AL_INLINE boolean_t AL_API
+ib_rmpp_is_flag_set(
+        IN              const   ib_rmpp_mad_t* const            p_rmpp_mad,
+        IN              const   uint8_t                                         flag )
+{
+        CL_ASSERT( p_rmpp_mad );
+        return( (p_rmpp_mad->rmpp_flags & flag) == flag );
+}
+
+

PARAMETERS

+
       ib_rmpp_mad_t
+               [in] Pointer to a MAD with an RMPP header.
+
+       flag
+               [in] The RMPP flag being examined.
+
+ RETURN VALUES
+       Returns TRUE if the MAD has the given RMPP flag set.
+
+

NOTES

+

SEE ALSO

+
       ib_mad_t, ib_rmpp_mad_t
+
+
+
+ +

[Structures] +IBA Base: Types/ib_rmpp_mad_t

+ +

[top][index]

+

NAME

+
       ib_rmpp_mad_t
+
+

DESCRIPTION

+
       IBA defined MAD RMPP header (13.6.2.1)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_rmpp_mad
+{
+        ib_mad_t                                common_hdr;
+
+        uint8_t                                 rmpp_version;
+        uint8_t                                 rmpp_type;
+        uint8_t                                 rmpp_flags;
+        uint8_t                                 rmpp_status;
+
+        ib_net32_t                              seg_num;
+        ib_net32_t                              paylen_newwin;
+
+}       PACK_SUFFIX ib_rmpp_mad_t;
+#include <complib/cl_packoff.h>
+
+

SEE ALSO

+
       ib_mad_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_sa_mad_get_payload_ptr

+ +

[top][index]

+

NAME

+
       ib_sa_mad_get_payload_ptr
+
+

DESCRIPTION

+
       Gets a pointer to the SA MAD's payload area.
+
+

SYNOPSIS

+
AL_INLINE void* AL_API
+ib_sa_mad_get_payload_ptr(
+        IN              const   ib_sa_mad_t* const                      p_sa_mad )
+{
+        return( (void*)p_sa_mad->data );
+}
+
+

PARAMETERS

+
       p_smp
+               [in] Pointer to the SA MAD packet.
+
+ RETURN VALUES
+       Pointer to SA MAD payload area.
+
+

NOTES

+

SEE ALSO

+
       ib_mad_t
+
+
+
+ +

[Structures] +IBA Base: Types/ib_sa_mad_t

+ +

[top][index]

+

NAME

+
       ib_sa_mad_t
+
+

DESCRIPTION

+
       IBA defined SA MAD format. (15.2.1)
+
+

SYNOPSIS

+
#define IB_SA_DATA_SIZE 200
+
+#include <complib/cl_packon.h>
+typedef struct _ib_sa_mad
+{
+        uint8_t                                 base_ver;
+        uint8_t                                 mgmt_class;
+        uint8_t                                 class_ver;
+        uint8_t                                 method;
+        ib_net16_t                              status;
+        ib_net16_t                              resv;
+        ib_net64_t                              trans_id;
+        ib_net16_t                              attr_id;
+        ib_net16_t                              resv1;
+        ib_net32_t                              attr_mod;
+
+        uint8_t                                 rmpp_version;
+        uint8_t                                 rmpp_type;
+        uint8_t                                 rmpp_flags;
+        uint8_t                                 rmpp_status;
+
+        ib_net32_t                              seg_num;
+        ib_net32_t                              paylen_newwin;
+
+        ib_net64_t                              sm_key;
+
+        ib_net16_t                              attr_offset;
+        ib_net16_t                              resv3;
+
+        ib_net64_t                              comp_mask;
+
+        uint8_t                                 data[IB_SA_DATA_SIZE];
+}       PACK_SUFFIX ib_sa_mad_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Functions] +IBA Base: Types/ib_slvl_table_get_vl

+ +

[top][index]

+

NAME

+
       ib_slvl_table_get_vl
+
+

DESCRIPTION

+
       Retrieves the VL for a given SL from an SL to VL mapping table.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_slvl_table_get_vl(
+        IN              const   ib_slvl_table_t* const          p_slvl_tbl,
+        IN              const   uint8_t                                         sl )
+{
+        uint8_t vl;
+
+        /* There are two VL's per byte. */
+        vl = p_slvl_tbl->vl_table[sl/2];
+        /* If odd, shift down 4 bits. */
+        if( sl % 2 )
+                vl >>= 4;
+
+        /* Mask off upper bits and return. */
+        return vl & 0x0F;
+}
+
+

PARAMETERS

+
       p_slvl_tbl
+               [in] Pointer to the SL to VL mapping table from which to return the VL.
+
+       sl
+               [in] SL in the table for which to return the VL.
+
+ RETURN VALUES
+       Returns the VL value for the specified SL in the provided table.
+
+

SEE ALSO

+
       ib_slvl_table_t, ib_slvl_table_set_vl
+
+
+
+ +

[Structures] +IBA Base: Types/ib_slvl_table_record_t

+ +

[top][index]

+

NAME

+
       ib_slvl_table_record_t
+
+

DESCRIPTION

+
       IBA defined Sl to VL Mapping Table Record for SA Query. (15.2.5.4)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_slvl_table_record
+{
+        ib_net16_t              lid; // for CA: lid of port, for switch lid of port 0
+        uint8_t                 in_port_num;    // reserved for CA's
+        uint8_t                 out_port_num;   // reserved for CA's
+        uint32_t                resv;
+        ib_slvl_table_t slvl_tbl;
+
+}       PACK_SUFFIX ib_slvl_table_record_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Functions] +IBA Base: Types/ib_slvl_table_set_vl

+ +

[top][index]

+

NAME

+
       ib_slvl_table_set_vl
+
+

DESCRIPTION

+
       Sets the VL for a given SL in an SL to VL mapping table.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_slvl_table_set_vl(
+        IN      OUT                     ib_slvl_table_t* const          p_slvl_tbl,
+        IN              const   uint8_t                                         sl,
+        IN              const   uint8_t                                         vl )
+{
+        uint8_t entry;
+
+        /* Get the current value for the byte in which the VL is stored. */
+        entry = p_slvl_tbl->vl_table[sl/2];
+
+        /* Clear the appropriate bits and set the new VL value. */
+        if( sl % 2 )
+        {
+                entry &= 0x0F;
+                entry |= ((vl & 0x0F) << 4);
+        }
+        else
+        {
+                entry &= 0xF0;
+                entry |= (vl & 0x0F);
+        }
+        /* Store the updated entry back into the table. */
+        p_slvl_tbl->vl_table[sl/2] = entry;
+}
+
+

PARAMETERS

+
       slvl_tbl
+               [in/out] Pointer to the SL to VL mapping table in which to store the VL.
+
+       sl
+               [in] SL in the table for which to store the VL.
+
+       vl
+               [in] VL to store at the specifed SL.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       ib_slvl_table_t, ib_slvl_table_get_vl
+
+
+
+ +

[Structures] +IBA Base: Types/ib_slvl_table_t

+ +

[top][index]

+

NAME

+
       ib_slvl_table_t
+
+

DESCRIPTION

+
       IBA defined SL2VL Mapping Table Attribute. (14.2.5.8)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_slvl_table
+{
+        uint8_t         vl_table[IB_MAX_NUM_VLS/2];
+
+}       PACK_SUFFIX ib_slvl_table_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Structures] +IBA Base: Types/ib_sm_info_t

+ +

[top][index]

+

NAME

+
       ib_sm_info_t
+
+

DESCRIPTION

+
       SMInfo structure (14.2.5.13).
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_sm_info
+{
+        ib_net64_t                      guid;
+        ib_net64_t                      sm_key;
+        ib_net32_t                      act_count;
+        uint8_t                         pri_state;
+
+}       PACK_SUFFIX ib_sm_info_t;
+#include <complib/cl_packoff.h>
+
+

FIELDS

+
       guid
+               Port GUID for this SM.
+
+       sm_key
+               SM_Key of this SM.
+
+       act_count
+               Activity counter used as a heartbeat.
+
+       pri_state
+               Priority and State information
+
+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_sminfo_get_priority

+ +

[top][index]

+

NAME

+
       ib_sminfo_get_priority
+
+

DESCRIPTION

+
       Returns the priority value.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_sminfo_get_priority(
+        IN              const   ib_sm_info_t* const                     p_smi )
+{
+        return( (uint8_t)((p_smi->pri_state & 0xF0)>>4) );
+}
+
+

PARAMETERS

+
       p_smi
+               [in] Pointer to the SMInfo Attribute.
+
+ RETURN VALUES
+       Returns the priority value.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_sminfo_get_state

+ +

[top][index]

+

NAME

+
       ib_sminfo_get_state
+
+

DESCRIPTION

+
       Returns the state value.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_sminfo_get_state(
+        IN              const   ib_sm_info_t* const                     p_smi )
+{
+        return( (uint8_t)(p_smi->pri_state & 0x0F) );
+}
+
+

PARAMETERS

+
       p_smi
+               [in] Pointer to the SMInfo Attribute.
+
+ RETURN VALUES
+       Returns the state value.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_smp_get_payload_ptr

+ +

[top][index]

+

NAME

+
       ib_smp_get_payload_ptr
+
+

DESCRIPTION

+
       Gets a pointer to the SMP payload area.
+
+

SYNOPSIS

+
AL_INLINE void* AL_API
+ib_smp_get_payload_ptr(
+        IN              const   ib_smp_t* const                         p_smp )
+{
+        return( (void*)p_smp->data );
+}
+
+

PARAMETERS

+
       p_smp
+               [in] Pointer to the SMP packet.
+
+ RETURN VALUES
+       Pointer to SMP payload area.
+
+

NOTES

+

SEE ALSO

+
       ib_mad_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_smp_get_status

+ +

[top][index]

+

NAME

+
       ib_smp_get_status
+
+

DESCRIPTION

+
       Returns the SMP status value in network order.
+
+

SYNOPSIS

+
AL_INLINE ib_net16_t AL_API
+ib_smp_get_status(
+        IN              const   ib_smp_t* const                         p_smp )
+{
+        return( (ib_net16_t)(p_smp->status & IB_SMP_STATUS_MASK) );
+}
+
+

PARAMETERS

+
       p_smp
+               [in] Pointer to the SMP packet.
+
+ RETURN VALUES
+       Returns the SMP status value in network order.
+
+

NOTES

+

SEE ALSO

+
       ib_smp_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_smp_init_new

+ +

[top][index]

+

NAME

+
       ib_smp_init_new
+
+

DESCRIPTION

+
       Initializes a MAD common header.
+
+

TODO

+
       This is too big for inlining, but leave it here for now
+       since there is not yet another convient spot.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_smp_init_new(
+        IN                              ib_smp_t* const                         p_smp,
+        IN              const   uint8_t                                         method,
+        IN              const   ib_net64_t                                      trans_id,
+        IN              const   ib_net16_t                                      attr_id,
+        IN              const   ib_net32_t                                      attr_mod,
+        IN              const   uint8_t                                         hop_count,
+        IN              const   ib_net64_t                                      m_key,
+        IN              const   uint8_t*                                        path_out,
+        IN              const   ib_net16_t                                      dr_slid,
+        IN              const   ib_net16_t                                      dr_dlid )
+{
+        CL_ASSERT( p_smp );
+        CL_ASSERT( hop_count < IB_SUBNET_PATH_HOPS_MAX );
+        p_smp->base_ver = 1;
+        p_smp->mgmt_class = IB_MCLASS_SUBN_DIR;
+        p_smp->class_ver = 1;
+        p_smp->method = method;
+        p_smp->status = 0;
+        p_smp->hop_ptr = 0;
+        p_smp->hop_count = hop_count;
+        p_smp->trans_id = trans_id;
+        p_smp->attr_id = attr_id;
+        p_smp->resv = 0;
+        p_smp->attr_mod = attr_mod;
+        p_smp->m_key = m_key;
+        p_smp->dr_slid = dr_slid;
+        p_smp->dr_dlid = dr_dlid;
+
+        cl_memclr( p_smp->resv1,
+                        sizeof(p_smp->resv1) +
+                        sizeof(p_smp->data) +
+                        sizeof(p_smp->initial_path) +
+                        sizeof(p_smp->return_path) );
+
+        /* copy the path */
+        cl_memcpy( &p_smp->initial_path, path_out,
+                        sizeof( p_smp->initial_path ) );
+}
+
+

PARAMETERS

+
       p_smp
+               [in] Pointer to the SMP packet.
+
+       method
+               [in] Method to perform, including 'R' bit.
+
+       trans_Id
+               [in] Transaction ID.
+
+       attr_id
+               [in] Attribute ID.
+
+       attr_mod
+               [in] Attribute modifier.
+
+       hop_count
+               [in] Number of hops in the path.
+
+       m_key
+               [in] Management key for this SMP.
+
+       path_out
+               [in] Port array for outbound path.
+
+
+ RETURN VALUES
+       None.
+
+

NOTES

+
       Payload area is initialized to zero.
+
+

SEE ALSO

+
       ib_mad_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_smp_is_d

+ +

[top][index]

+

NAME

+
       ib_smp_is_d
+
+

DESCRIPTION

+
       Returns TRUE if the SMP 'D' (direction) bit is set.
+
+

SYNOPSIS

+
AL_INLINE boolean_t AL_API
+ib_smp_is_d(
+        IN              const   ib_smp_t* const                         p_smp )
+{
+        return( (p_smp->status & IB_SMP_DIRECTION) == IB_SMP_DIRECTION );
+}
+
+

PARAMETERS

+
       p_smp
+               [in] Pointer to the SMP packet.
+
+ RETURN VALUES
+       Returns TRUE if the SMP 'D' (direction) bit is set.
+
+

NOTES

+

SEE ALSO

+
       ib_smp_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_smp_is_response

+ +

[top][index]

+

NAME

+
       ib_smp_is_response
+
+

DESCRIPTION

+
       Returns TRUE if the SMP is a response MAD, FALSE otherwise.
+
+

SYNOPSIS

+
AL_INLINE boolean_t AL_API
+ib_smp_is_response(
+        IN              const   ib_smp_t* const                         p_smp )
+{
+        return( ib_mad_is_response( (const ib_mad_t*)p_smp ) );
+}
+
+

PARAMETERS

+
       p_smp
+               [in] Pointer to the SMP packet.
+
+ RETURN VALUES
+       Returns TRUE if the SMP is a response MAD, FALSE otherwise.
+
+

NOTES

+

SEE ALSO

+
       ib_smp_t
+
+
+
+ +

[Structures] +IBA Base: Types/ib_smp_t

+ +

[top][index]

+

NAME

+
       ib_smp_t
+
+

DESCRIPTION

+
       IBA defined SMP. (14.2.1.2)
+
+

SYNOPSIS

+
#define IB_SMP_DATA_SIZE 64
+#include <complib/cl_packon.h>
+typedef struct _ib_smp
+{
+        uint8_t                                 base_ver;
+        uint8_t                                 mgmt_class;
+        uint8_t                                 class_ver;
+        uint8_t                                 method;
+        ib_net16_t                              status;
+        uint8_t                                 hop_ptr;
+        uint8_t                                 hop_count;
+        ib_net64_t                              trans_id;
+        ib_net16_t                              attr_id;
+        ib_net16_t                              resv;
+        ib_net32_t                              attr_mod;
+        ib_net64_t                              m_key;
+        ib_net16_t                              dr_slid;
+        ib_net16_t                              dr_dlid;
+        uint32_t                                resv1[7];
+        uint8_t                                 data[IB_SMP_DATA_SIZE];
+        uint8_t                                 initial_path[IB_SUBNET_PATH_HOPS_MAX];
+        uint8_t                                 return_path[IB_SUBNET_PATH_HOPS_MAX];
+
+}       PACK_SUFFIX ib_smp_t;
+#include <complib/cl_packoff.h>
+
+

FIELDS

+
       base_ver
+               MAD base format.
+
+       mgmt_class
+               Class of operation.
+
+       class_ver
+               Version of MAD class-specific format.
+
+       method
+               Method to perform, including 'R' bit.
+
+       status
+               Status of operation.
+
+       hop_ptr
+               Hop pointer for directed route MADs.
+
+       hop_count
+               Hop count for directed route MADs.
+
+       trans_Id
+               Transaction ID.
+
+       attr_id
+               Attribute ID.
+
+       resv
+               Reserved field.
+
+       attr_mod
+               Attribute modifier.
+
+       m_key
+               Management key value.
+
+       dr_slid
+               Directed route source LID.
+
+       dr_dlid
+               Directed route destination LID.
+
+       resv0
+               Reserved for 64 byte alignment.
+
+       data
+               MAD data payload.
+
+       initial_path
+               Outbound port list.
+
+       return_path
+               Inbound port list.
+
+

SEE ALSO

+ +
+ +

[Structures] +IBA Base: Types/ib_svc_entries_t

+ +

[top][index]

+

NAME

+
       ib_svc_entries_t
+
+

DESCRIPTION

+
       IBA defined IO Controller service entry array (16.3.3.5)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_svc_entries
+{
+#define SVC_ENTRY_COUNT                         4
+        ib_svc_entry_t                  service_entry[SVC_ENTRY_COUNT];
+
+}       PACK_SUFFIX ib_svc_entries_t;
+#include <complib/cl_packoff.h>
+
+

FIELDS

+
       service_entry
+               An array of IO controller service entries.
+
+

SEE ALSO

+
 ib_dm_mad_t, ib_svc_entry_t
+
+
+
+ +

[Structures] +IBA Base: Types/ib_svc_entry_t

+ +

[top][index]

+

NAME

+
       ib_svc_entry_t
+
+

DESCRIPTION

+
       IBA defined IO Controller service entry structure (16.3.3.5)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_svc_entry
+{
+#define MAX_SVC_ENTRY_NAME_LEN          40
+        char                                    name[MAX_SVC_ENTRY_NAME_LEN];
+
+        ib_net64_t                              id;
+
+}       PACK_SUFFIX ib_svc_entry_t;
+#include <complib/cl_packoff.h>
+
+

FIELDS

+
       name
+               UTF-8 encoded, null-terminated name of the service.
+
+       id
+               An identifier of the associated Service.
+
+

SEE ALSO

+
 ib_svc_entries_t
+
+
+
+ +

[Functions] +IBA Base: Types/ib_switch_info_clear_state_change

+ +

[top][index]

+

NAME

+
       ib_switch_info_clear_state_change
+
+

DESCRIPTION

+
       Clears the switch's state change bit.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_switch_info_clear_state_change(
+        IN                              ib_switch_info_t* const         p_si )
+{
+        p_si->life_state = (uint8_t)(p_si->life_state & 0xFB);
+}
+
+

PARAMETERS

+
       p_ni
+               [in] Pointer to a PortInfo attribute.
+
+ RETURN VALUES
+       Returns the LMC value assigned to this port.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Functions] +IBA Base: Types/ib_switch_info_get_state_change

+ +

[top][index]

+

NAME

+
       ib_switch_info_get_state_change
+
+

DESCRIPTION

+
       Returns the value of the state change flag.
+
+

SYNOPSIS

+
AL_INLINE boolean_t AL_API
+ib_switch_info_get_state_change(
+        IN              const   ib_switch_info_t* const         p_si )
+{
+        return( (p_si->life_state & IB_SWITCH_PSC) == IB_SWITCH_PSC );
+}
+
+

PARAMETERS

+
       p_si
+               [in] Pointer to a SwitchInfo attribute.
+
+ RETURN VALUES
+       Returns the value of the state change flag.
+
+

NOTES

+

SEE ALSO

+ +
+ +

[Structures] +IBA Base: Types/ib_switch_info_t

+ +

[top][index]

+

NAME

+
       ib_switch_info_t
+
+

DESCRIPTION

+
       IBA defined SwitchInfo. (14.2.5.4)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_switch_info
+{
+        ib_net16_t                      lin_cap;
+        ib_net16_t                      rand_cap;
+        ib_net16_t                      mcast_cap;
+        ib_net16_t                      lin_top;
+        uint8_t                         def_port;
+        uint8_t                         def_mcast_pri_port;
+        uint8_t                         def_mcast_not_port;
+        uint8_t                         life_state;
+        ib_net16_t                      lids_per_port;
+        ib_net16_t                      enforce_cap;
+        uint8_t                         flags;
+
+}       PACK_SUFFIX ib_switch_info_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Functions] +IBA Base: Types/ib_vl_arb_element_get_vl

+ +

[top][index]

+

NAME

+
       ib_vl_arb_element_get_vl
+
+

DESCRIPTION

+
       Retrieves the VL from a VL arbitration table element.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ib_vl_arb_element_get_vl(
+        IN              const   ib_vl_arb_element_t                     vl_arb_element )
+{
+        return (vl_arb_element.res_vl >> 4);
+}
+
+

PARAMETERS

+
       vl_arb_element
+               [in] VL arbitration table element from which to return the VL.
+
+ RETURN VALUES
+       Returns the VL value for the specified VL arbitration table element.
+
+

SEE ALSO

+
       vl_arb_element, ib_vl_arb_element_set_vl
+
+
+
+ +

[Functions] +IBA Base: Types/ib_vl_arb_element_set_vl

+ +

[top][index]

+

NAME

+
       ib_vl_arb_element_set_vl
+
+

DESCRIPTION

+
       Retrieves the VL from a VL arbitration table element.
+
+

SYNOPSIS

+
AL_INLINE void AL_API
+ib_vl_arb_element_set_vl(
+        IN      OUT                     ib_vl_arb_element_t* const      p_vl_arb_element,
+        IN              const   uint8_t                                         vl )
+{
+        p_vl_arb_element->res_vl = vl << 4;
+}
+
+

PARAMETERS

+
       vl_arb_element
+               [in/out] VL arbitration table element in which to store the VL.
+
+       vl
+               [in] VL to store in the specified element.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       vl_arb_element, ib_vl_arb_element_get_vl
+
+
+
+ +

[Structures] +IBA Base: Types/ib_vl_arb_element_t

+ +

[top][index]

+

NAME

+
       ib_vl_arb_element_t
+
+

DESCRIPTION

+
       IBA defined VL Arbitration Table Element. (14.2.5.9)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_vl_arb_element
+{
+        uint8_t res_vl;
+        uint8_t weight;
+
+}       PACK_SUFFIX ib_vl_arb_element_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Structures] +IBA Base: Types/ib_vl_arb_table_record_t

+ +

[top][index]

+

NAME

+
       ib_vl_arb_table_record_t
+
+

DESCRIPTION

+
       IBA defined VL Arbitration Table Record for SA Query. (15.2.5.9)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_vl_arb_table_record
+{
+        ib_net16_t                      lid; // for CA: lid of port, for switch lid of port 0
+        uint8_t                         port_num;
+        uint8_t                         block_num;
+        uint32_t                        reserved;
+        ib_vl_arb_table_t       vl_arb_tbl;
+
+}       PACK_SUFFIX ib_vl_arb_table_record_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Structures] +IBA Base: Types/ib_vl_arb_table_t

+ +

[top][index]

+

NAME

+
       ib_vl_arb_table_t
+
+

DESCRIPTION

+
       IBA defined VL Arbitration Table. (14.2.5.9)
+
+

SYNOPSIS

+
#include <complib/cl_packon.h>
+typedef struct _ib_vl_arb_table
+{
+        ib_vl_arb_element_t vl_entry[IB_NUM_VL_ARB_ELEMENTS_IN_BLOCK];
+
+}       PACK_SUFFIX ib_vl_arb_table_t;
+#include <complib/cl_packoff.h>
+
+
+
+ +

[Functions] +IBA Base: Types/ioc_at_slot

+ +

[top][index]

+

NAME

+
       ioc_at_slot
+
+

DESCRIPTION

+
       Returns the IOC value at the specified slot.
+
+

SYNOPSIS

+
AL_INLINE uint8_t AL_API
+ioc_at_slot(
+        IN              const   ib_iou_info_t*  const   p_iou_info,
+        IN                              uint8_t                                 slot )
+{
+        if( !slot )
+                return SLOT_DOES_NOT_EXIST;
+        else if( slot-- & 0x01 )
+                return (p_iou_info->controller_list[slot >> 1] >> 4);
+        else
+                return (p_iou_info->controller_list[slot >> 1] & 0x0F);
+}
+
+

PARAMETERS

+
       p_iou_info
+               [in] Pointer to the IO Unit information structure.
+
+       slot
+               [in] 1-based slot number of the IOC slot to check.
+
+ RETURN VALUES
+       Returns the encoded value for the desired slot.  Possible values are
+       SLOT_DOES_NOT_EXIST, IOC_NOT_INSTALLED, and IOC_INSTALLED.
+
+

NOTES

+
       The input slot number is 1-based, not zero based.
+
+

SEE ALSO

+
       ib_iou_info_t
+
+
+
+ +

[Functions] +IBA Bases: Types/ib_dm_get_slot_lo_hi

+ +

[top][index]

+

DESCRIPTION

+
       Returns the IOC slot number, and the lower and upper bound of the
+       service entries given the attribute modifier of ServiceEntries response.
+
+

SEE ALSO

+
 ib_dm_set_slot_lo_hi
+
+
+
+ +

[Functions] +IBA Bases: Types/ib_dm_set_slot_lo_hi

+ +

[top][index]

+

DESCRIPTION

+
       Joins the IOC slot number, and the lower and upper bound of the service 
+       entries and returns it.
+
+

SEE ALSO

+
 ib_dm_get_slot_lo_hi
+
+
+
+ +

[Definitions] +Verbs/ib_async_event_t

+ +

[top][parent][index]

+

NAME

+
       ib_async_event_t -- Async event types
+
+

DESCRIPTION

+
       This type indicates the reason the async callback was called.
+       The context in the ib_event_rec_t indicates the resource context
+       that associated with the callback.  For example, for IB_AE_CQ_ERROR
+       the context provided during the ib_create_cq is returned in the event.
+
+

SYNOPSIS

+
typedef enum _ib_async_event_t
+{
+        IB_AE_SQ_ERROR = 1,
+        IB_AE_SQ_DRAINED,
+        IB_AE_RQ_ERROR,
+        IB_AE_CQ_ERROR,
+        IB_AE_QP_FATAL,
+        IB_AE_QP_COMM,
+        IB_AE_QP_APM,
+        IB_AE_LOCAL_FATAL,
+        IB_AE_PKEY_TRAP,
+        IB_AE_QKEY_TRAP,
+        IB_AE_MKEY_TRAP,
+        IB_AE_PORT_TRAP,
+        IB_AE_SYSIMG_GUID_TRAP,
+        IB_AE_BUF_OVERRUN,
+        IB_AE_LINK_INTEGRITY,
+        IB_AE_FLOW_CTRL_ERROR,
+        IB_AE_BKEY_TRAP,
+        IB_AE_QP_APM_ERROR,
+        IB_AE_WQ_REQ_ERROR,
+        IB_AE_WQ_ACCESS_ERROR,
+        IB_AE_PORT_ACTIVE,
+        IB_AE_PORT_DOWN,
+        IB_AE_CLIENT_REREGISTER,
+        IB_AE_UNKNOWN           /* ALWAYS LAST ENUM VALUE */
+
+}       ib_async_event_t;
+
+

VALUES

+
       IB_AE_SQ_ERROR
+               An error occurred when accessing the send queue of the QP.
+               This event is optional.
+
+       IB_AE_SQ_DRAINED
+               The send queue of the specified QP has completed the outstanding
+               messages in progress when the state change was requested and, if
+               applicable, has received all acknowledgements for those messages.
+
+       IB_AE_RQ_ERROR
+               An error occurred when accessing the receive queue of the QP.
+               This event is optional.
+
+       IB_AE_CQ_ERROR
+               An error occurred when writing an entry to the CQ.
+
+       IB_AE_QP_FATAL
+               A catastrophic error occurred while accessing or processing the
+               work queue that prevents reporting of completions.
+
+       IB_AE_QP_COMM
+               The first packet has arrived for the receive work queue where the
+               QP is still in the RTR state.
+
+       IB_AE_QP_APM
+               If alternate path migration is supported, this event indicates that
+               the QP connection has migrated to the alternate path.
+
+       IB_AE_LOCAL_FATAL
+               A catastrophic HCA error occurred which cannot be attributed to any
+               resource; behavior is indeterminate.
+
+       IB_AE_PKEY_TRAP
+               A PKEY violation was detected.  This event is optional.
+
+       IB_AE_QKEY_TRAP
+               A QKEY violation was detected.  This event is optional.
+
+       IB_AE_MKEY_TRAP
+               An MKEY violation was detected.  This event is optional.
+
+       IB_AE_PORT_TRAP
+               A port capability change was detected.  This event is optional.
+
+       IB_AE_SYSIMG_GUID_TRAP
+               If the system image GUID is supported, this event indicates that the
+               system image GUID of this HCA has been changed.  This event is
+               optional.
+
+       IB_AE_BUF_OVERRUN
+               The number of consecutive flow control update periods with at least
+               one overrun error in each period has exceeded the threshold specified
+               in the port info attributes.  This event is optional.
+
+       IB_AE_LINK_INTEGRITY
+               The detection of excessively frequent local physical errors has
+               exceeded the threshold specified in the port info attributes.  This
+               event is optional.
+
+       IB_AE_FLOW_CTRL_ERROR
+               An HCA watchdog timer monitoring the arrival of flow control updates
+               has expired without receiving an update.  This event is optional.
+
+       IB_AE_BKEY_TRAP
+               An BKEY violation was detected.  This event is optional.
+
+       IB_AE_QP_APM_ERROR
+               If alternate path migration is supported, this event indicates that
+               an incoming path migration request to this QP was not accepted.
+
+       IB_AE_WQ_REQ_ERROR
+               An OpCode violation was detected at the responder.
+
+       IB_AE_WQ_ACCESS_ERROR
+               An access violation was detected at the responder.
+
+       IB_AE_PORT_ACTIVE
+               If the port active event is supported, this event is generated
+               when the link becomes active: IB_LINK_ACTIVE.
+
+       IB_AE_PORT_DOWN
+               The link is declared unavailable: IB_LINK_INIT, IB_LINK_ARMED,
+               IB_LINK_DOWN.
+
+       IB_AE_CLIENT_REREGISTER
+               The SM idicate to client to reregister its SA records.
+
+       IB_AE_UNKNOWN
+               An unknown error occurred which cannot be attributed to any
+               resource; behavior is indeterminate.
+
+
+
+ +

[Structures] +Verbs/ib_event_rec_t

+ +

[top][parent][index]

+

NAME

+
       ib_event_rec_t -- Async event notification record
+
+

DESCRIPTION

+
       When an async event callback is made, this structure is passed to indicate
+       the type of event, the source of event that caused it, and the context
+       associated with this event.
+
+       context -- Context of the resource that caused the event.
+               -- ca_context if this is a port/adapter event.
+               -- qp_context if the source is a QP event
+               -- cq_context if the source is a CQ event.
+               -- ee_context if the source is an EE event.
+
+

SYNOPSIS

+
typedef struct _ib_event_rec
+{
+        void* __ptr64                   context;
+        ib_async_event_t                type;
+
+        /* HCA vendor specific event information. */
+        uint64_t                                vendor_specific;
+
+        /* The following structures are valid only for trap types. */
+        union _trap
+        {
+                struct
+                {
+                        uint16_t                        lid;
+                        ib_net64_t                      port_guid;
+                        uint8_t                         port_num;
+
+                        /*
+                         * The following structure is valid only for
+                         * P_KEY, Q_KEY, and M_KEY violation traps.
+                         */
+                        struct
+                        {
+                                uint8_t                 sl;
+                                uint16_t                src_lid;
+                                uint16_t                dest_lid;
+                                union _key
+                                {
+                                        uint16_t        pkey;
+                                        uint32_t        qkey;
+                                        uint64_t        mkey;
+                                } key;
+                                uint32_t                src_qp;
+                                uint32_t                dest_qp;
+                                ib_gid_t                src_gid;
+                                ib_gid_t                dest_gid;
+
+                        }       violation;
+
+                } info;
+
+                ib_net64_t      sysimg_guid;
+
+        }       trap;
+
+}       ib_event_rec_t;
+
+
+ + diff --git a/trunk/docs/kernel/complib/cl_bus_ifc_h.html b/trunk/docs/kernel/complib/cl_bus_ifc_h.html new file mode 100644 index 00000000..0e2d381d --- /dev/null +++ b/trunk/docs/kernel/complib/cl_bus_ifc_h.html @@ -0,0 +1,50 @@ + + + + +./inc_doc/kernel/complib/cl_bus_ifc_h.html + + + + +Generated from ./inc/kernel/complib/cl_bus_ifc.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+
+ +

[Functions] +Component Library: Plug and Play/cl_fwd_query_ifc

+ +

[top][index]

+

NAME

+
       cl_fwd_query_ifc
+
+

DESCRIPTION

+
       Forwards a IRP_MN_QUERY_INTERFACE request to the device stack
+       represented by the input device object.
+
+

SYNOPSIS

+
CL_EXPORT NTSTATUS
+cl_fwd_query_ifc(
+        IN                              DEVICE_OBJECT* const            p_dev_obj,
+        IN                              IO_STACK_LOCATION* const        p_io_stack );
+
+

PARAMETERS

+
       p_dev_obj
+               Pointer to the device object that is the IRP target.
+
+       p_io_stack
+               Pointer to the original IRP's I/O stack location, used to format
+               the forwarded IRP.
+
+ RETURN VALUES
+       IRP status value.
+
+

NOTES

+
       The IRP forwarded is synchronous, so this call must be invoked at PASSIVE.
+
+

SEE ALSO

+
       Plug and Play
+
+
+ + diff --git a/trunk/docs/kernel/complib/cl_pnp_po_h.html b/trunk/docs/kernel/complib/cl_pnp_po_h.html new file mode 100644 index 00000000..7e3dc4cf --- /dev/null +++ b/trunk/docs/kernel/complib/cl_pnp_po_h.html @@ -0,0 +1,1010 @@ + + + + +./inc_doc/kernel/complib/cl_pnp_po_h.html + + + + +Generated from ./inc/kernel/complib/cl_pnp_po.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:24 +
+
+ +

[Modules] +Component Library/Plug and Play

+ +

[top][index]

+

NAME

+
       Plug and Play
+
+

DESCRIPTION

+
       Provides plug and play support for kernel drivers.
+
+

SEE ALSO

+
       Callback Types:
+               cl_pfn_pnp_po_t
+
+       Structures:
+               cl_vfptr_pnp_t
+
+
+
+ +

[Functions] +Component Library: Plug and Play/cl_alloc_relations

+ +

[top][index]

+

NAME

+
       cl_alloc_relations
+
+

DESCRIPTION

+
       Allocates device relations and copies existing device relations, if any.
+
+

SYNOPSIS

+
CL_EXPORT NTSTATUS
+cl_alloc_relations(
+        IN                              IRP* const                                      p_irp,
+        IN              const   size_t                                          n_devs );
+
+

PARAMETERS

+
       p_irp
+               Pointer to the IPR_MN_QUERY_DEVICE_RELATIONS IRP for which the
+               relations are being allocated.
+
+       n_devs
+               Number of devices the caller will report in the DEVICE_RELATIONS
+               structure stored at pIrp->IoStatus.Infomation upon success.
+
+ RETURN VALUES
+       STATUS_SUCCESS if the DEVICE_RELATIONS structure was allocated successfully.
+
+       STATUS_INSUFFICIENT_RESOURCES if there was not enough memory to complete
+       the operation.
+
+

NOTES

+
       Upon failure, any original relations buffer is freed.  Users should fail
+       the IRP with the returned status value.
+
+

SEE ALSO

+
       Plug and Play
+
+
+
+ +

[Functions] +Component Library: Plug and Play/cl_do_remove

+ +

[top][index]

+

NAME

+
       cl_do_remove
+
+

DESCRIPTION

+
       Propagates an IRP_MN_REMOVE_DEVICE IRP, detaches, and deletes the
+       device object.  Useable by function and filter drivers only.
+
+

SYNOPSIS

+
CL_EXPORT NTSTATUS
+cl_do_remove(
+        IN                                      DEVICE_OBJECT* const    pDevObj,
+        IN                                      IRP* const                              pIrp, 
+                OUT                             cl_irp_action_t* const  pAction );
+
+
+
+ +

[Functions] +Component Library: Plug and Play/cl_do_sync_pnp

+ +

[top][index]

+

NAME

+
       cl_do_sync_pnp
+
+

DESCRIPTION

+
       Sends an IRP to the next driver synchronously.  Returns when the lower 
+       drivers have completed the IRP.  Used to process IRPs on the way up the
+       device node.
+
+

SYNOPSIS

+
CL_EXPORT NTSTATUS
+cl_do_sync_pnp(
+        IN                              DEVICE_OBJECT* const            p_dev_obj,
+        IN                              IRP* const                                      p_irp, 
+                OUT                     cl_irp_action_t* const          p_action );
+/*
+* PARAMETER
+*       p_dev_obj
+*               Pointer to the device object that is the IRP target.
+*
+*       p_irp
+*               Pointer to the request IRP.
+*
+*       p_action
+*               Action to take for propagating the IRP.
+*
+* RETURN VALUES
+*       IRP status value returned by lower driver.
+
+
+
+ +

[Functions] +Component Library: Plug and Play/cl_init_pnp_po_ext

+ +

[top][index]

+

NAME

+
       cl_init_pnp_po_ext
+
+

DESCRIPTION

+
       Initializes the component library device extension for use.
+
+

SYNOPSIS

+
CL_EXPORT void
+cl_init_pnp_po_ext(
+        IN      OUT                     DEVICE_OBJECT* const            p_dev_obj,
+        IN                              DEVICE_OBJECT* const            p_next_do,
+        IN                              DEVICE_OBJECT* const            p_pdo,
+        IN              const   uint32_t                                        pnp_po_dbg_lvl,
+        IN              const   cl_vfptr_pnp_po_t* const        vfptr_pnp,
+        IN              const   cl_vfptr_query_txt_t* const     vfptr_query_txt OPTIONAL );
+
+

PARAMETERS

+
       p_dev_obj
+               Pointer to the device object for the device.
+
+       p_next_do
+               Pointer to the next device object in the device stack.  Must be NULL
+               for PDO objects.
+
+       p_pdo
+               Pointer to the PDO for the device node.
+
+       pnp_po_dbg_lvl
+               Debug level to control flow of debug messages.  If the bit for
+               CL_DBG_PNP is set, verbose debug messages are generated.
+
+       vfptr_pnp_po
+               Pointer to the function table of PnP and Power Management handlers.
+
+       vfptr_query_txt
+               Pointer to the function table for IRP_MN_QUERY_DEVICE_TEXT handlers.
+
+

SEE ALSO

+
       Plug and Play, cl_pnp_po_ext_t, cl_vfptr_pnp_po_t, cl_vfptr_query_txt_t
+
+
+
+ +

[Definitions] +Component Library: Plug and Play/cl_irp_action_t

+ +

[top][index]

+

NAME

+
       cl_irp_action_t
+
+

DESCRIPTION

+
       Indicates what kind of action to take in response to an IRP.  Used
+       when processing PnP IRPs.
+
+ SYNOPSIS:
+
+ VALUES:
+       IrpPassDown
+               Pass the IRP down to the next driver.  The IRP's current stack location
+               has been setup properly.
+
+       IrpSkip
+               Skip the current IRP stack location but sets the IRP's status.
+
+       IrpIgnore
+               Skip the current IRP without setting its status value since the IRP 
+               is not interesting.
+
+       IrpComplete
+               Complete the IRP.  Sets the status in the IoStatus block, completes the
+               IRP, and returns the status.
+
+       IrpDoNothing
+               The routine assumed control of the IRP completion.  No further 
+               processing is required in the dispatch routine.  The remove lock should
+               not be released.
+
+
+
+ +

[Definitions] +Component Library: Plug and Play/cl_pfn_pnp_po_t

+ +

[top][index]

+

NAME

+
       cl_pfn_pnp_po_t
+
+

DESCRIPTION

+
       Function prototype for PnP and Power Management IRPs handlers.
+
+

SYNOPSIS

+
typedef NTSTATUS
+(*cl_pfn_pnp_po_t)(
+        IN                              DEVICE_OBJECT* const            p_dev_obj,
+        IN                              IRP* const                                      p_irp, 
+                OUT                     cl_irp_action_t* const          p_action );
+
+

PARAMETERS

+
       p_dev_obj
+               Pointer to the device object that is the IRP target.
+
+       p_irp
+               Pointer to the request IRP.
+
+       p_action
+               Action to take for propagating the IRP.
+
+ RETURN VALUES
+       IRP status value.
+
+

SEE ALSO

+
       Plug and Play, cl_irp_action_t, cl_vfptr_pnp_po_t
+
+
+
+ +

[Definitions] +Component Library: Plug and Play/cl_pfn_query_text_t

+ +

[top][index]

+

NAME

+
       cl_pfn_query_text_t
+
+

DESCRIPTION

+
       Function pointer type for handling IRP_MN_QUERY_DEVICE_TEXT IRPs.
+
+

SYNOPSIS

+
typedef NTSTATUS
+(*cl_pfn_query_text_t)(
+        IN                              DEVICE_OBJECT* const            p_dev_obj,
+                OUT                     IRP* const                                      p_irp );
+
+

PARAMETERS

+
       pDevObj
+               Pointer to the device object that is the IRP target.
+
+       pIrp
+               [out] Pointer to the request IRP.  Sets the requested device text in
+               pIrp->IoStatus.Information.
+
+ RETURN VALUES
+       NTSTATUS value indicating the result of the query.
+
+

NOTES

+
       Only bus drivers handle the IRP_MN_QUERY_DEVICE_TEXT IRP for their PDOs.
+
+

SEE ALSO

+
       Plug and Play
+
+
+
+ +

[Definitions] +Component Library: Plug and Play/cl_pfn_release_resources_t

+ +

[top][index]

+

NAME

+
       cl_pfn_release_resources_t
+
+

DESCRIPTION

+
       Function prototype for releasing resources associated with a device.
+       Called from either the remove handler or the surprise remove handler.
+
+

SYNOPSIS

+
typedef void
+(*cl_pfn_release_resources_t)(
+        IN                              DEVICE_OBJECT* const            p_dev_obj );
+
+

PARAMETERS

+
       p_dev_obj
+               Pointer to the device object whose resources to release.
+
+ RETURN VALUES
+       This function does not return a value.
+
+

SEE ALSO

+
       Plug and Play, cl_vfptr_pnp_po_t
+
+
+
+ +

[Definitions] +Component Library: Plug and Play/cl_pnp_po_ext_t

+ +

[top][index]

+

NAME

+
       cl_pnp_po_ext_t
+
+

DESCRIPTION

+
       Device extension structure required for using the component library
+       plug and play helper routines.
+
+

SYNOPSIS

+
typedef struct _cl_pnp_po_ext
+{
+        cl_pnp_state_t                          pnp_state;
+        cl_pnp_state_t                          last_pnp_state;
+
+        DEVICE_OBJECT                           *p_self_do;
+        DEVICE_OBJECT                           *p_next_do;
+        DEVICE_OBJECT                           *p_pdo;
+
+        IO_REMOVE_LOCK                          remove_lock;
+        IO_REMOVE_LOCK                          stop_lock;
+
+        atomic32_t                                      n_paging_files;
+        atomic32_t                                      n_crash_files;
+        atomic32_t                                      n_hibernate_files;
+
+        const cl_vfptr_pnp_po_t         *vfptr_pnp_po;
+        const cl_vfptr_query_txt_t      *vfptr_query_txt;
+
+        void                                            *h_cl_locked_section;
+        void                                            *h_user_locked_section;
+
+        atomic32_t                                      n_ifc_ref;
+
+        uint32_t                                        dbg_lvl;
+
+}       cl_pnp_po_ext_t;
+
+

FIELDS

+
       pnp_state
+               Current PnP device state.
+
+       last_pnp_state
+               Previous PnP device state, to restore in case a query is cancelled.
+
+       p_self_do
+               Pointer to the device's own device object.
+
+       p_next_do
+               Pointer to the next device object.  Null if the device is a PDO.
+
+       p_pdo
+               The pointer to the PDO for the device node.
+       
+       remove_lock
+               Remove lock used to synchronize access to the device when handling
+               PnP IRPs.
+
+       stop_lock
+               Lock used to track non-PnP and non-Power IO operations.  
+       
+       n_paging_files
+               Number of times the device is in a paging file path.
+
+       n_crash_files
+               Number of times the device is in a dump file path.
+
+       n_hibernate_files
+               Number of times the device is in a hibernation files path.
+       
+       vfptr_pnp
+               Funtion pointer table for the PnP and Power Management handlers.
+
+       vfptr_query_txt
+               Function pointer table for IRP_MN_QUERY_DEVICE_TEXT handlers.
+
+

NOTES

+
       This structure must be first in the device extension so that the device
+       extension can successfully be cast to a cl_pnp_po_ext_t pointer by the
+       IRP handler routines.
+
+       When performing I/O operations, users should acquire the stop lock and
+       check status before starting an I/O operation, and release the stop lock
+       after completing an I/O operation using the cl_start_io and cl_end_io
+       functions respectively.
+
+

SEE ALSO

+
       Plug and Play, cl_vfptr_pnp_po_t, cl_pnp_state_t, cl_start_io, cl_end_io
+
+
+
+ +

[Definitions] +Component Library: Plug and Play/cl_pnp_state_t

+ +

[top][index]

+

NAME

+
       cl_pnp_state_t
+
+

DESCRIPTION

+
       PnP States for device objects managed by this driver.
+
+

SYNOPSIS

+
typedef enum _cl_pnp_state
+{
+        NotStarted = 0,
+        Started,
+        StopPending,
+        Stopped,
+        RemovePending,
+        SurpriseRemoved,
+        Deleted,
+        UnKnown
+
+}       cl_pnp_state_t;
+
+

VALUES

+
       NotStarted
+               Not started yet.
+
+       Started
+               Device has received the IPR_MN_START_DEVICE IRP
+
+       StopPending
+               Device has received the IPR_MN_QUERY_STOP_DEVICE IRP
+
+       Stopped
+               Device has received the IPR_MN_STOP_DEVICE IRP
+
+       RemovePending
+               Device has received the IPR_MN_QUERY_REMOVE_DEVICE IRP
+
+       SurpriseRemoved
+               Device has received the IPR_MN_SURPRISE_REMOVE_DEVICE IRP
+
+       Deleted
+               Device has received the IPR_MN_REMOVE_DEVICE IRP
+
+       UnKnown
+               Unknown state
+
+

SEE ALSO

+
       Plug and Play, cl_pnp_po_ext_t
+
+
+
+ +

[Functions] +Component Library: Plug and Play/cl_rollback_pnp_state

+ +

[top][index]

+

NAME

+
       cl_rollback_pnp_state
+
+

DESCRIPTION

+
       Rolls back a PnP state change.
+
+

SYNOPSIS

+
CL_INLINE void
+cl_rollback_pnp_state(
+                OUT                     cl_pnp_po_ext_t* const          p_ext )
+{
+        p_ext->pnp_state = p_ext->last_pnp_state;
+}
+/*
+* PARAMTETERS
+*       p_ext
+*               Pointer to the device extension whose PnP state to set.
+*
+* RETURN VALUES
+*       This function does not return a value.
+
+

SEE ALSO

+
       Plug and Play, cl_pnp_po_ext_t
+
+
+
+ +

[Functions] +Component Library: Plug and Play/cl_set_pnp_state

+ +

[top][index]

+

NAME

+
       cl_set_pnp_state
+
+

DESCRIPTION

+
       Sets the PnP state stored in the common device extension to the desired
+       state.  Stores the previous state for rollback purposes.
+
+

SYNOPSIS

+
CL_INLINE void
+cl_set_pnp_state(
+                OUT                     cl_pnp_po_ext_t* const          p_ext,
+        IN              const   cl_pnp_state_t                          new_state )
+{
+        p_ext->last_pnp_state = p_ext->pnp_state;
+        p_ext->pnp_state = new_state;
+}
+/*
+* PARAMTETERS
+*       p_ext
+*               Pointer to the device extension whose PnP state to set.
+*
+*       new_state
+*               New PnP state to store in the device extension.
+*
+* RETURN VALUES
+*       This function does not return a value.
+
+

SEE ALSO

+
       Plug and Play, cl_pnp_po_ext_t, cl_pnp_state_t
+
+
+
+ +

[Definitions] +Component Library: Plug and Play/cl_vfptr_pnp_po_t

+ +

[top][index]

+

NAME

+
       cl_vfptr_pnp_po_t
+
+

DESCRIPTION

+
       Virtual function pointer table for PnP and Power Management IRPs.
+
+

SYNOPSIS

+
typedef struct _cl_vfptr_pnp_po
+{
+        const char*                                             identity;
+        cl_pfn_pnp_po_t                                 pfn_start;
+        cl_pfn_pnp_po_t                                 pfn_query_stop;
+        cl_pfn_pnp_po_t                                 pfn_stop;
+        cl_pfn_pnp_po_t                                 pfn_cancel_stop;
+        cl_pfn_pnp_po_t                                 pfn_query_remove;
+        cl_pfn_release_resources_t              pfn_release_resources;
+        cl_pfn_pnp_po_t                                 pfn_remove;
+        cl_pfn_pnp_po_t                                 pfn_cancel_remove;
+        cl_pfn_pnp_po_t                                 pfn_surprise_remove;
+        cl_pfn_pnp_po_t                                 pfn_query_capabilities;
+        cl_pfn_pnp_po_t                                 pfn_query_pnp_state;
+        cl_pfn_pnp_po_t                                 pfn_filter_res_req;
+        cl_pfn_pnp_po_t                                 pfn_dev_usage_notification;
+        cl_pfn_pnp_po_t                                 pfn_query_bus_relations;
+        cl_pfn_pnp_po_t                                 pfn_query_ejection_relations;
+        cl_pfn_pnp_po_t                                 pfn_query_removal_relations;
+        cl_pfn_pnp_po_t                                 pfn_query_target_relations;
+        cl_pfn_pnp_po_t                                 pfn_unknown;
+        cl_pfn_pnp_po_t                                 pfn_query_resources;
+        cl_pfn_pnp_po_t                                 pfn_query_res_req;
+        cl_pfn_pnp_po_t                                 pfn_query_bus_info;
+        cl_pfn_pnp_po_t                                 pfn_query_interface;
+        cl_pfn_pnp_po_t                                 pfn_read_config;
+        cl_pfn_pnp_po_t                                 pfn_write_config;
+        cl_pfn_pnp_po_t                                 pfn_eject;
+        cl_pfn_pnp_po_t                                 pfn_set_lock;
+        cl_pfn_pnp_po_t                                 pfn_query_power;
+        cl_pfn_pnp_po_t                                 pfn_set_power;
+        cl_pfn_pnp_po_t                                 pfn_power_sequence;
+        cl_pfn_pnp_po_t                                 pfn_wait_wake;
+
+}       cl_vfptr_pnp_po_t;
+
+

FIELDS

+
       identity
+               string identifying the target, used in generating debug output.
+
+       pfn_start
+               IRP_MN_START_DEVICE handler.  Users must send forward the IRP to lower
+               devices as required for their driver type.
+
+       pfn_query_stop
+               IRP_MN_QUERY_STOP_DEVICE handler.
+
+       pfn_stop
+               IRP_MN_STOP_DEVICE handler.
+
+       pfn_cancel_stop
+               IRP_MN_CANCEL_STOP_DEVICE handler.  Users must send forward the IRP to 
+               lower devices as required for their driver type.
+
+       pfn_query_remove
+               IRP_MN_QUERY_REMOVE_DEVICE handler.
+
+       pfn_release_resources
+               Called to release resources allocated for the device.
+
+       pfn_remove
+               IRP_MN_REMOVE_DEVICE handler.
+
+       pfn_cancel_remove
+               IRP_MN_CANCEL_REMOVE_DEVICE handler.  Users must send forward the IRP
+               to lower devices as required for their driver type.
+
+       pfn_surprise_remove
+               IRP_MN_SURPRISE_REMOVE_DEVICE handler.
+
+       pfn_query_capabilities
+               IRP_MN_QUERY_DEVICE_CAPABILITIES handler.
+
+       pfn_query_pnp_state
+               IRP_MN_QUERY_PNP_STATE handler.
+
+       pfn_filter_res_req
+               IRP_MN_FILTER_RESOURCE_REQUIREMENTS handler.
+
+       pfn_dev_usage_notification
+               IRP_MN_QUERY_DEVICE_USAGE_NOTIFICATION handler.
+
+       pfn_query_bus_relations
+               IRP_MN_QUERY_BUS_RELATIONS handler.
+
+       pfn_query_ejection_relations
+               IRP_MN_QUERY_EJECTION_RELATIONS handler.
+
+       pfn_query_removal_relations
+               IRP_MN_QUERY_REMOVAL_RELATIONS handler.
+
+       pfn_query_target_relations
+               IRP_MN_QUERY_TARGET_RELATIONS handler.
+
+       pfn_unknown
+               FDO and Filter drivers should pass this IRP down.  Bus drivers should 
+               complete the request for their PDOs without modifying the status.
+               The component library provides the cl_irp_skip and cl_irp_complete 
+               functions to skip and complete and IRP, respectively.  These functions
+               can be used to perform the required action.  This handler is invoked
+               when an undocumented PNP irp is received.
+
+       pfn_query_resources
+               IRP_MN_QUERY_RESOURCES handler.
+
+       pfn_query_res_req
+               IRP_MN_QUERY_RESOURCE_REQUIREMENTS handler.
+
+       pfn_query_bus_info
+               IRP_MN_QUERY_BUS_INFORMATION handler.
+
+       pfn_query_interface
+               IRP_MN_QUERY_INTERFACE handler.
+
+       pfn_read_config
+               IRP_MN_READ_CONFIG handler.
+
+       pfn_write_config
+               IRP_MN_WRITE_CONFIG handler.
+
+       pfn_eject
+               IRP_MN_EJECT handler.
+
+       pfn_set_lock
+               IRP_MN_SET_LOCK handler.
+
+       pfn_query_power
+               IRP_MN_QUERY_POWER handler.
+
+       pfn_set_power
+               IRP_MN_SET_POWER handler.
+
+       pfn_power_sequence
+               IRP_MN_POWER_SEQUENCE handler.
+
+       pfn_wait_wake
+               IRP_MN_WAIT_WAKE handler.
+
+

NOTES

+
       The component library provides default handlers for skiping the IRP,
+       completing the IRP without changing the status, and processing the IRP
+       on the way up the device stack.  Users can set the handler to 
+       cl_irp_skip, cl_irp_complete, cl_do_sync_pnp.
+
+       The handlers specified in pfn_query_power, pfn_set_power, 
+       pfn_power_sequence, and pfn_wait_wake, if implemented as pageable code,
+       should be marked in a single pageable code section.  The component library
+       will use the first function that is not a component library handler to
+       lock down the user's power management code.
+
+

SEE ALSO

+
       Plug and Play, cl_pfn_pnp_po_t, cl_pfn_release_resources_t, cl_do_sync_pnp,
+       cl_irp_skip, cl_irp_complete, cl_irp_unsupported, cl_irp_fail
+
+
+
+ +

[Definitions] +Component Library: Plug and Play/cl_vfptr_query_txt

+ +

[top][index]

+

NAME

+
       cl_vfptr_query_txt
+
+

DESCRIPTION

+
       Function pointer table for the various type of text requested by
+       IRP_MN_QUERY_DEVICE_TEXT IRPs.
+
+

SYNOPSIS

+
typedef struct _cl_vfptr_query_txt
+{
+        cl_pfn_query_text_t             pfn_query_device_id;
+        cl_pfn_query_text_t             pfn_query_hardware_id;
+        cl_pfn_query_text_t             pfn_query_compatible_id;
+        cl_pfn_query_text_t             pfn_query_unique_id;
+        cl_pfn_query_text_t             pfn_query_description;
+        cl_pfn_query_text_t             pfn_query_location;
+
+}       cl_vfptr_query_txt_t;
+
+

FIELDS

+
       pfn_query_device_id
+               The request is for the target device's device ID.
+
+       pfn_query_hardware_id
+               The request is for the target device's device IDs.
+
+       pfn_query_compatible_id
+               The request is for the target device's comptible IDs.
+
+       pfn_query_unique_id
+               The request is for the target device's unique ID.
+
+       pfn_query_description
+               The request is for the target device's description.
+
+       pfn_query_location
+               The request is for the target device's location text.
+
+

NOTES

+
       Hardware and compatible IDs should be returned in the most specific to
+       most general order.  The IDs are used to match drivers to devices.
+
+       The query text function pointer table is maintained separately from the
+       PnP function pointer table to allow FDO and filter drivers to not define
+       the table since they typically do not handle these requests.
+
+

SEE ALSO

+
       Plug and Play, cl_pfn_query_text_t
+
+
+
+ +

[Functions] +Component Library: Plug and Play:/cl_irp_complete

+ +

[top][index]

+

NAME

+
       cl_irp_complete
+
+

DESCRIPTION

+
       Default handler for completeing a PnP or Power Management IRP with no 
+       action.  Should only be used by bus drivers for their PDOs to complete 
+       an IRP with no change in status.
+
+

SYNOPSIS

+
CL_EXPORT NTSTATUS
+cl_irp_complete(
+        IN                              DEVICE_OBJECT* const            p_dev_obj,
+        IN                              IRP* const                                      p_irp, 
+                OUT                     cl_irp_action_t* const          p_action );
+
+

PARAMETERS

+
       p_dev_obj
+               Pointer to the device object that is the IRP target.
+
+       p_irp
+               Pointer to the request IRP.
+
+       p_action
+               Action to take for propagating the IRP.
+
+ RETURN VALUES
+       IRP status value.
+
+

SEE ALSO

+
       Plug and Play, cl_irp_action_t, cl_vfptr_pnp_po_t
+
+
+
+ +

[Functions] +Component Library: Plug and Play:/cl_irp_ignore

+ +

[top][index]

+

NAME

+
       cl_irp_ignore
+
+

DESCRIPTION

+
       Default function for skipping a PnP IRP without setting the IRP's status.
+       Useable only by function and filter drivers.  Bus drivers should use 
+       cl_irp_complete for their PDOs to complete an IRP with no change in status.
+
+

SYNOPSIS

+
CL_EXPORT NTSTATUS
+cl_irp_ignore(
+        IN                              DEVICE_OBJECT* const            p_dev_obj,
+        IN                              IRP* const                                      p_irp, 
+                OUT                     cl_irp_action_t* const          p_action );
+
+

PARAMETERS

+
       p_dev_obj
+               Pointer to the device object that is the IRP target.
+
+       p_irp
+               Pointer to the request IRP.
+
+       p_action
+               Action to take for propagating the IRP.
+
+ RETURN VALUES
+       IRP status value.
+
+

SEE ALSO

+
       Plug and Play, cl_irp_action_t
+
+
+
+ +

[Functions] +Component Library: Plug and Play:/cl_irp_skip

+ +

[top][index]

+

NAME

+
       cl_irp_skip
+
+

DESCRIPTION

+
       Default function for skipping a PnP IRP.  Sets the IRP's status value.
+       Useable only by function and filter drivers.  Bus drivers should use 
+       cl_irp_complete for their PDOs to complete an IRP with no change in status.
+
+

SYNOPSIS

+
CL_EXPORT NTSTATUS
+cl_irp_skip(
+        IN                              DEVICE_OBJECT* const            p_dev_obj,
+        IN                              IRP* const                                      p_irp, 
+                OUT                     cl_irp_action_t* const          p_action );
+
+

PARAMETERS

+
       p_dev_obj
+               Pointer to the device object that is the IRP target.
+
+       p_irp
+               Pointer to the request IRP.
+
+       p_action
+               Action to take for propagating the IRP.
+
+ RETURN VALUES
+       IRP status value.
+
+

SEE ALSO

+
       Plug and Play, cl_irp_action_t
+
+
+
+ +

[Functions] +Component Library: Plug and Play:/cl_irp_succeed

+ +

[top][index]

+

NAME

+
       cl_irp_succeed
+
+

DESCRIPTION

+
       Default handler for succeeding an IRP with STATUS_SUCCESS.
+
+

SYNOPSIS

+
CL_EXPORT NTSTATUS
+cl_irp_succeed(
+        IN                              DEVICE_OBJECT* const            p_dev_obj,
+        IN                              IRP* const                                      p_irp, 
+                OUT                     cl_irp_action_t* const          p_action );
+
+

PARAMETERS

+
       p_dev_obj
+               Pointer to the device object that is the IRP target.
+
+       p_irp
+               Pointer to the request IRP.
+
+       p_action
+               Action to take for propagating the IRP.
+
+ RETURN VALUES
+       IRP status value.
+
+

SEE ALSO

+
       Plug and Play, cl_irp_action_t
+
+
+
+ +

[Functions] +Component Library: Plug and Play:/cl_irp_unsupported

+ +

[top][index]

+

NAME

+
       cl_irp_unsupported
+
+

DESCRIPTION

+
       Default handler for failing an IRP with STATUS_UNSUPPORTED.
+
+

SYNOPSIS

+
CL_EXPORT NTSTATUS
+cl_irp_unsupported(
+        IN                              DEVICE_OBJECT* const            p_dev_obj,
+        IN                              IRP* const                                      p_irp, 
+                OUT                     cl_irp_action_t* const          p_action );
+
+

PARAMETERS

+
       p_dev_obj
+               Pointer to the device object that is the IRP target.
+
+       p_irp
+               Pointer to the request IRP.
+
+       p_action
+               Action to take for propagating the IRP.
+
+ RETURN VALUES
+       IRP status value.
+
+

SEE ALSO

+
       Plug and Play, cl_irp_action_t
+
+
+
+ +

[Functions] +Component Library: Plug and Play:/cl_pnp

+ +

[top][index]

+

NAME

+
       cl_pnp
+
+

DESCRIPTION

+
       Main PnP entry point for the driver.
+
+

SYNOPSIS

+
CL_EXPORT NTSTATUS
+cl_pnp(
+        IN                              PDEVICE_OBJECT                          p_dev_obj,
+        IN                              PIRP                                            p_irp );
+/*
+* PARAMTETERS
+*       p_dev_obj
+*               Pointer to the device object that is the target of the PnP IRP.
+*
+*       p_irp
+*               Pointer to the PnP IRP to perform on the specified device.
+*
+* RETURN VALUES
+*       STATUS_SUCCESS if the operation is successful
+*
+*       Other NTSTATUS values in case of error.
+
+

SEE ALSO

+
       Plug and Play
+
+
+
+ +

[Functions] +Component Library: Plug and Play:/cl_power

+ +

[top][index]

+

NAME

+
       cl_power
+
+

DESCRIPTION

+
       Main Power Management entry point for the driver.
+
+

SYNOPSIS

+
CL_EXPORT NTSTATUS
+cl_power(
+        IN                              PDEVICE_OBJECT                          p_dev_obj,
+        IN                              PIRP                                            p_irp );
+/*
+* PARAMTETERS
+*       p_dev_obj
+*               Pointer to the device object that is the target of the PnP IRP.
+*
+*       p_irp
+*               Pointer to the PnP IRP to perform on the specified device.
+*
+* RETURN VALUES
+*       STATUS_SUCCESS if the operation is successful
+*
+*       Other NTSTATUS values in case of error.
+
+

SEE ALSO

+
       Plug and Play
+
+
+ + diff --git a/trunk/docs/kernel/iba/ib_al_ifc_h.html b/trunk/docs/kernel/iba/ib_al_ifc_h.html new file mode 100644 index 00000000..df1a07d2 --- /dev/null +++ b/trunk/docs/kernel/iba/ib_al_ifc_h.html @@ -0,0 +1,27 @@ + + + + +./inc_doc/kernel/iba/ib_al_ifc_h.html + + + + +Generated from ./inc/kernel/iba/ib_al_ifc.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:23 +
+
+ +

[Modules] +Access Layer/ib_al_ifc.h

+ +

[top][index]

+

NAME

+
       ib_al_ifc.h
+
+

DESCRIPTION

+
       Header file for the interface exported to ICT client drivers for access to
+       IB resources provided by HCAs.
+
+
+ + diff --git a/trunk/docs/kernel/iba/ib_ci_ifc_h.html b/trunk/docs/kernel/iba/ib_ci_ifc_h.html new file mode 100644 index 00000000..c4fee383 --- /dev/null +++ b/trunk/docs/kernel/iba/ib_ci_ifc_h.html @@ -0,0 +1,27 @@ + + + + +./inc_doc/kernel/iba/ib_ci_ifc_h.html + + + + +Generated from ./inc/kernel/iba/ib_ci_ifc.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:23 +
+
+ +

[Modules] +Access Layer/ib_ci_ifc.h

+ +

[top][index]

+

NAME

+
       ib_ci_ifc.h
+
+

DESCRIPTION

+
       Header file for the interface exported to HCA drivers to allow them
+       to register with AL for use by AL clients.
+
+
+ + diff --git a/trunk/docs/kernel/iba/ioc_ifc_h.html b/trunk/docs/kernel/iba/ioc_ifc_h.html new file mode 100644 index 00000000..72441bbc --- /dev/null +++ b/trunk/docs/kernel/iba/ioc_ifc_h.html @@ -0,0 +1,29 @@ + + + + +./inc_doc/kernel/iba/ioc_ifc_h.html + + + + +Generated from ./inc/kernel/iba/ioc_ifc.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:19 +
+
+ +

[Modules] +Access Layer/ioc_ifc.h

+ +

[top][index]

+

NAME

+
       ioc_ifc.h
+
+

DESCRIPTION

+
       Header file for the interface exported to IOC client drivers to retrieve
+       IOC device information.
+
+       The interface contains information about the particular instance of an IOC.
+
+
+ + diff --git a/trunk/docs/kernel/iba/iou_ifc_h.html b/trunk/docs/kernel/iba/iou_ifc_h.html new file mode 100644 index 00000000..4459592e --- /dev/null +++ b/trunk/docs/kernel/iba/iou_ifc_h.html @@ -0,0 +1,29 @@ + + + + +./inc_doc/kernel/iba/iou_ifc_h.html + + + + +Generated from ./inc/kernel/iba/iou_ifc.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:19 +
+
+ +

[Modules] +Access Layer/iou_ifc.h

+ +

[top][index]

+

NAME

+
       iou_ifc.h
+
+

DESCRIPTION

+
       Header file for the interface exported to IOU client drivers to retrieve
+       IOU device information.
+
+       The interface contains information about the particular instance of an IOU.
+
+
+ + diff --git a/trunk/docs/kernel/iba/ipoib_ifc_h.html b/trunk/docs/kernel/iba/ipoib_ifc_h.html new file mode 100644 index 00000000..c898cec3 --- /dev/null +++ b/trunk/docs/kernel/iba/ipoib_ifc_h.html @@ -0,0 +1,30 @@ + + + + +./inc_doc/kernel/iba/ipoib_ifc_h.html + + + + +Generated from ./inc/kernel/iba/ipoib_ifc.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:19 +
+
+ +

[Modules] +Access Layer/ipoib_ifc.h

+ +

[top][index]

+

NAME

+
       ipoib_ifc.h
+
+

DESCRIPTION

+
       Header file for the interface exported to IPoIB client drivers for access
+       to IB resources provided by HCAs.
+
+       The actual interface returned is an contains information about the
+       particular instance of an IPoIB device.
+
+
+ + diff --git a/trunk/docs/masterindex.html b/trunk/docs/masterindex.html new file mode 100644 index 00000000..5dd5bad7 --- /dev/null +++ b/trunk/docs/masterindex.html @@ -0,0 +1,3246 @@ + + + + +Index + + + + +Generated from ./inc/ with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+

+[Sourcefiles] +[Index] +[Definitions] +[Functions] +[Modules] +[Structures] +

+

Index

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+64-bit Print Format +Asynchronous Processor +Atomic Operations
+ATS +Byte Swapping +ci_allocate_pd
+ci_async_event_cb_t +ci_attach_mcast +ci_bind_mw
+ci_close_ca +ci_completion_cb_t +ci_create_av
+ci_create_cq +ci_create_mw +ci_create_qp
+ci_create_spl_qp +ci_deallocate_pd +ci_deregister_mr
+ci_destroy_av +ci_destroy_cq +ci_destroy_mw
+ci_destroy_qp +ci_detach_mcast +ci_enable_cq_notify
+ci_enable_ncomp_cq_notify +ci_interface_t +ci_local_mad
+ci_modify_av +ci_modify_ca +ci_modify_mr
+ci_modify_pmr +ci_modify_qp +ci_open_ca
+ci_peek_cq +ci_poll_cq +ci_post_recv
+ci_post_send +ci_query_av +ci_query_ca
+ci_query_cq +ci_query_mr +ci_query_mw
+ci_query_qp +ci_register_mr +ci_register_pmr
+ci_register_smr +ci_resize_cq +ci_um_close_ca_t
+ci_um_open_ca +ci_umv_buf_t +ci_vendor_call
+cl_alloc_relations +cl_async_proc.h +cl_async_proc_construct
+cl_async_proc_destroy +cl_async_proc_init +cl_async_proc_item_t
+cl_async_proc_queue +cl_async_proc_t +cl_atomic.h
+cl_atomic_add +cl_atomic_comp_xchg +cl_atomic_dec
+cl_atomic_inc +cl_atomic_sub +cl_atomic_xchg
+cl_break +cl_bus_ifc.h +cl_byteswap.h
+cl_check_for_read +cl_check_for_write +cl_comppool.h
+cl_copy_from_user +cl_copy_to_user +cl_cpool_construct
+cl_cpool_count +cl_cpool_destroy +cl_cpool_get
+cl_cpool_grow +cl_cpool_init +cl_cpool_put
+cl_cpool_t +cl_dbg_out +cl_debug.h
+cl_destroy_type_t +cl_do_remove +cl_do_sync_pnp
+CL_ENTER +cl_event.h +cl_event_construct
+cl_event_destroy +cl_event_init +cl_event_reset
+cl_event_signal +cl_event_wait_on +CL_EXIT
+cl_fleximap.h +cl_fmap_apply_func +cl_fmap_count
+cl_fmap_delta +cl_fmap_end +cl_fmap_get
+cl_fmap_head +cl_fmap_init +cl_fmap_insert
+cl_fmap_item_t +cl_fmap_key +cl_fmap_merge
+cl_fmap_next +cl_fmap_prev +cl_fmap_remove
+cl_fmap_remove_all +cl_fmap_remove_item +cl_fmap_t
+cl_fmap_tail +cl_free +cl_fwd_query_ifc
+cl_get_pagesize +cl_get_physaddr +cl_get_tick_count
+cl_get_tick_freq +cl_get_time_stamp +cl_get_time_stamp_sec
+cl_get_time_stamp_usec +cl_hton16 +CL_HTON16
+CL_HTON32 +cl_hton32 +CL_HTON64
+cl_hton64 +cl_init_pnp_po_ext +cl_ioctl.h
+cl_ioctl_cmd +cl_ioctl_complete +cl_ioctl_ctl_code
+cl_ioctl_handle_t +cl_ioctl_in_buf +cl_ioctl_in_size
+cl_ioctl_out_buf +cl_ioctl_out_size +cl_ioctl_process
+cl_ioctl_request +cl_ioctl_result +cl_ioctl_type
+cl_irp_action_t +cl_irp_complete +cl_irp_ignore
+cl_irp_skip +cl_irp_succeed +cl_irp_unsupported
+cl_irqlock.h +cl_irqlock_acquire +cl_irqlock_construct
+cl_irqlock_destroy +cl_irqlock_init +cl_irqlock_release
+cl_is_blockable +cl_is_cpool_inited +cl_is_fmap_empty
+cl_is_item_in_qlist +cl_is_list_empty +cl_is_list_inited
+cl_is_map_empty +cl_is_map_inited +cl_is_object_in_list
+cl_is_pool_inited +cl_is_qcpool_inited +cl_is_qlist_empty
+cl_is_qmap_empty +cl_is_qpool_inited +cl_is_rbmap_empty
+cl_is_state_valid +cl_is_sys_callback_inited +cl_list.h
+cl_list_apply_func +cl_list_construct +cl_list_count
+cl_list_destroy +cl_list_end +cl_list_find_from_head
+cl_list_find_from_tail +cl_list_head +cl_list_init
+cl_list_insert_array_head +cl_list_insert_array_tail +cl_list_insert_head
+cl_list_insert_next +cl_list_insert_prev +cl_list_insert_tail
+cl_list_item_t +cl_list_iterator_t +cl_list_next
+cl_list_obj +cl_list_obj_t +cl_list_prev
+cl_list_remove_all +cl_list_remove_head +cl_list_remove_item
+cl_list_remove_object +cl_list_remove_tail +cl_list_t
+cl_list_tail +cl_log.h +cl_log_event
+cl_log_type_t +cl_malloc +cl_map.h
+cl_map_construct +cl_map_count +cl_map_delta
+cl_map_destroy +cl_map_end +cl_map_get
+cl_map_head +cl_map_init +cl_map_insert
+cl_map_item_t +cl_map_iterator_t +cl_map_key
+cl_map_merge +cl_map_next +cl_map_obj
+cl_map_obj_t +cl_map_prev +cl_map_remove
+cl_map_remove_all +cl_map_remove_item +cl_map_t
+cl_map_tail +cl_math.h +cl_mem_display
+cl_memclr +cl_memcmp +cl_memcpy
+cl_memory.h +cl_memset +cl_msg_out
+cl_mutex.h +cl_mutex_acquire +cl_mutex_construct
+cl_mutex_destroy +cl_mutex_init +cl_mutex_release
+cl_ntoh +cl_ntoh16 +CL_NTOH16
+CL_NTOH32 +cl_ntoh32 +CL_NTOH64
+cl_ntoh64 +cl_obj.h +cl_obj_construct
+cl_obj_deinit +cl_obj_deref +cl_obj_destroy
+cl_obj_init +cl_obj_insert_rel +cl_obj_insert_rel_parent_locked
+cl_obj_lock +cl_obj_mgr_create +cl_obj_mgr_destroy
+cl_obj_mgr_t +cl_obj_ref +cl_obj_rel_t
+cl_obj_remove_rel +cl_obj_reset +cl_obj_t
+cl_obj_type +cl_obj_unlock +cl_palloc
+cl_panic +cl_passivelock.h +cl_perf.h
+cl_perf_clr +cl_perf_construct +cl_perf_destroy
+cl_perf_display +cl_perf_inc +cl_perf_init
+cl_perf_log +cl_perf_reset +cl_perf_start
+cl_perf_stop +cl_perf_update +cl_perf_update_ctr
+cl_pfn_async_proc_cb_t +cl_pfn_cpool_dtor_t +cl_pfn_cpool_init_t
+cl_pfn_fmap_apply_t +cl_pfn_fmap_cmp_t +cl_pfn_ioctl_handler_t
+cl_pfn_list_apply_t +cl_pfn_list_find_t +cl_pfn_obj_call_t
+cl_pfn_pnp_po_t +cl_pfn_pool_dtor_t +cl_pfn_pool_init_t
+cl_pfn_ptr_vec_apply_t +cl_pfn_ptr_vec_find_t +cl_pfn_qcpool_dtor_t
+cl_pfn_qcpool_init_t +cl_pfn_qlist_apply_t +cl_pfn_qlist_find_t
+cl_pfn_qmap_apply_t +cl_pfn_qpool_dtor_t +cl_pfn_qpool_init_t
+cl_pfn_query_text_t +cl_pfn_release_resources_t +cl_pfn_req_cb_t
+cl_pfn_reqmgr_get_count_t +cl_pfn_sys_callback_t +cl_pfn_thread_callback_t
+cl_pfn_timer_callback_t +cl_pfn_vec_apply_t +cl_pfn_vec_dtor_t
+cl_pfn_vec_find_t +cl_pfn_vec_init_t +cl_plock_acquire
+cl_plock_construct +cl_plock_destroy +cl_plock_excl_acquire
+cl_plock_init +cl_plock_release +cl_plock_t
+cl_pnp +cl_pnp_po.h +cl_pnp_po_ext_t
+cl_pnp_state_t +cl_pool.h +cl_pool_construct
+cl_pool_count +cl_pool_destroy +cl_pool_get
+cl_pool_grow +cl_pool_init +cl_pool_item_t
+cl_pool_put +cl_pool_t +cl_power
+CL_PRINT +cl_proc_count +cl_ptr_vector.h
+cl_ptr_vector_apply_func +cl_ptr_vector_at +cl_ptr_vector_construct
+cl_ptr_vector_destroy +cl_ptr_vector_find_from_end +cl_ptr_vector_find_from_start
+cl_ptr_vector_get +cl_ptr_vector_get_capacity +cl_ptr_vector_get_size
+cl_ptr_vector_init +cl_ptr_vector_insert +cl_ptr_vector_remove
+cl_ptr_vector_set +cl_ptr_vector_set_capacity +cl_ptr_vector_set_min_size
+cl_ptr_vector_set_size +cl_ptr_vector_t +cl_pzalloc
+cl_qcomppool.h +cl_qcpool_construct +cl_qcpool_count
+cl_qcpool_destroy +cl_qcpool_get +cl_qcpool_grow
+cl_qcpool_init +cl_qcpool_put +cl_qcpool_put_list
+cl_qcpool_t +cl_qlist.h +cl_qlist_apply_func
+cl_qlist_count +cl_qlist_end +cl_qlist_find_from_head
+cl_qlist_find_from_tail +cl_qlist_find_next +cl_qlist_find_prev
+cl_qlist_head +cl_qlist_init +cl_qlist_insert_array_head
+cl_qlist_insert_array_tail +cl_qlist_insert_head +cl_qlist_insert_list_head
+cl_qlist_insert_list_tail +cl_qlist_insert_next +cl_qlist_insert_prev
+cl_qlist_insert_tail +cl_qlist_move_items +cl_qlist_next
+cl_qlist_obj +cl_qlist_prev +cl_qlist_remove_all
+cl_qlist_remove_head +cl_qlist_remove_item +cl_qlist_remove_tail
+cl_qlist_set_obj +cl_qlist_t +cl_qlist_tail
+cl_qlock_pool_construct +cl_qlock_pool_destroy +cl_qlock_pool_get
+cl_qlock_pool_init +cl_qlock_pool_put +cl_qlock_pool_t
+cl_qlockpool.h +cl_qmap.h +cl_qmap_apply_func
+cl_qmap_count +cl_qmap_delta +cl_qmap_end
+cl_qmap_get +cl_qmap_head +cl_qmap_init
+cl_qmap_insert +cl_qmap_key +cl_qmap_merge
+cl_qmap_next +cl_qmap_obj +cl_qmap_prev
+cl_qmap_remove +cl_qmap_remove_all +cl_qmap_remove_item
+cl_qmap_set_obj +cl_qmap_t +cl_qmap_tail
+cl_qpool.h +cl_qpool_construct +cl_qpool_count
+cl_qpool_destroy +cl_qpool_get +cl_qpool_grow
+cl_qpool_init +cl_qpool_put +cl_qpool_put_list
+cl_qpool_t +cl_rbmap.h +cl_rbmap_count
+cl_rbmap_end +cl_rbmap_init +cl_rbmap_insert
+cl_rbmap_item_t +cl_rbmap_left +cl_rbmap_remove_item
+cl_rbmap_reset +cl_rbmap_right +cl_rbmap_root
+cl_rbmap_t +cl_rel_alloc +cl_rel_free
+cl_req_mgr_construct +cl_req_mgr_destroy +cl_req_mgr_get
+cl_req_mgr_init +cl_req_mgr_resume +cl_req_mgr_t
+cl_req_type_t +cl_reqmgr.h +cl_rollback_pnp_state
+cl_set_pnp_state +cl_spinlock.h +cl_spinlock_acquire
+cl_spinlock_construct +cl_spinlock_destroy +cl_spinlock_init
+cl_spinlock_release +CL_STATUS_MSG +cl_status_t
+cl_sys_callback_get +cl_sys_callback_put +cl_sys_callback_queue
+cl_syscallback.h +cl_thread.h +cl_thread_pool_construct
+cl_thread_pool_destroy +cl_thread_pool_init +cl_thread_pool_signal
+cl_thread_pool_t +cl_thread_stall +cl_thread_suspend
+cl_threadpool.h +cl_timer.h +cl_timer_construct
+cl_timer_destroy +cl_timer_init +cl_timer_start
+cl_timer_stop +cl_timer_trim +CL_TRACE
+CL_TRACE_EXIT +cl_types.h +cl_vector.h
+cl_vector_apply_func +cl_vector_at +cl_vector_construct
+cl_vector_destroy +cl_vector_find_from_end +cl_vector_find_from_start
+cl_vector_get +cl_vector_get_capacity +cl_vector_get_ptr
+cl_vector_get_size +cl_vector_init +cl_vector_set
+cl_vector_set_capacity +cl_vector_set_min_size +cl_vector_set_size
+cl_vector_t +cl_vfptr_pnp_po_t +cl_vfptr_query_txt
+cl_waitobj.h +cl_waitobj_create +cl_waitobj_deref
+cl_waitobj_destroy +cl_waitobj_handle_t +cl_waitobj_ref
+cl_waitobj_reset +cl_waitobj_signal +cl_waitobj_wait_on
+cl_zalloc +comp_lib.h +Composite Pool
+Constants +Data Types +Debug Levels
+Debug Output +DM_SVC_NAME +Event
+Flexi Map +ib_access_t +ib_add_svc_entry
+ib_al.h +ib_al_flags_t +ib_al_ifc.h
+ib_al_ifc.h +ib_al_ioctl.h +ib_alloc_pd
+ib_api_status_t +ib_apm_state_t +ib_apr_info_t
+ib_apr_pdata_t +ib_apr_status_t +ib_ari_t
+ib_async_event_rec_t +ib_async_event_t +ib_atomic_t
+ib_av_attr_t +ib_bind_mw +ib_bind_wr_t
+ib_ca_attr_t +ib_ca_mod_t +ib_cancel_mad
+ib_cancel_query +ib_cep_listen_t +ib_ci.h
+ib_ci_call +ib_ci_ifc.h +ib_ci_ifc.h
+ib_ci_op_t +IB_CLASS_CAP_GETSET +IB_CLASS_CAP_TRAP
+ib_class_is_vendor_specific +ib_class_is_vendor_specific_high +ib_class_is_vendor_specific_low
+ib_class_port_info_t +IB_CLASS_RESP_TIME_MASK +ib_close_al
+ib_close_ca +ib_cm_apr +ib_cm_apr_rec_t
+ib_cm_apr_t +ib_cm_cancel +ib_cm_cap_mask_t
+ib_cm_drep +ib_cm_drep_rec_t +ib_cm_drep_t
+ib_cm_dreq +ib_cm_dreq_rec_t +ib_cm_dreq_t
+ib_cm_failover_t +ib_cm_handoff +ib_cm_lap
+ib_cm_lap_rec_t +ib_cm_lap_t +ib_cm_listen
+ib_cm_listen_t +ib_cm_mra +ib_cm_mra_rec_t
+ib_cm_mra_t +ib_cm_rej +ib_cm_rej_rec_t
+ib_cm_rej_t +ib_cm_rep +ib_cm_rep_rec_t
+ib_cm_rep_t +ib_cm_req +ib_cm_req_rec_t
+ib_cm_req_t +ib_cm_rtu +ib_cm_rtu_rec_t
+ib_cm_rtu_t +ib_copy_ca_attr +ib_cq_create_t
+ib_create_av +ib_create_cq +ib_create_ioc
+ib_create_mad_pool +ib_create_mw +ib_create_qp
+ib_dealloc_pd +IB_DEFAULT_PKEY +IB_DEFAULT_SUBNET_PREFIX
+ib_dereg_mad_pool +ib_dereg_mr +ib_dereg_pnp
+ib_dereg_svc +ib_deregister_ca +ib_destroy_av
+ib_destroy_cq +ib_destroy_ioc +ib_destroy_mad_pool
+ib_destroy_mw +ib_destroy_qp +ib_device_attr_mask_t
+ib_dgrm_info_t +ib_dm_get_slot_lo_hi +ib_dm_mad_t
+ib_dm_set_slot_lo_hi +ib_drep_pdata_t +ib_dreq_pdata_t
+ib_event_rec_t +ib_field32_t +ib_force_apm
+ib_get_async_event_str +ib_get_ca_by_gid +ib_get_ca_guids
+ib_get_err_str +ib_get_guid +ib_get_mad
+ib_get_mad_buf +ib_get_node_type_str +ib_get_port_by_gid
+ib_get_port_state_from_str +ib_get_port_state_str +ib_get_query_node_rec
+ib_get_query_path_rec +ib_get_query_portinfo_rec +ib_get_query_result
+ib_get_query_svc_rec +ib_get_spl_qp +ib_get_wc_status_str
+ib_get_wc_type_str +ib_get_wr_type_str +ib_gid_get_guid
+ib_gid_get_subnet_prefix +ib_gid_is_link_local +ib_gid_is_site_local
+ib_gid_pair_t +ib_gid_prefix_t +ib_gid_set_default
+ib_gid_t +ib_grh_get_ver_class_flow +ib_grh_set_ver_class_flow
+ib_grh_t +ib_guid_info_t +ib_guid_pair_t
+ib_inform_get_dev_id +ib_inform_get_prod_type +ib_inform_get_qpn
+ib_inform_get_resp_time_val +ib_inform_get_trap_num +ib_inform_get_vend_id
+ib_inform_info_record_t +ib_inform_set_dev_id +ib_inform_set_prod_type
+ib_inform_set_qpn +ib_inform_set_resp_time_val +ib_inform_set_trap_num
+ib_inform_set_vend_id +ib_init_dgrm_svc +ib_init_type_t
+IB_INVALID_PORT_NUM +ib_ioc_profile_t +ib_iou_info_diag_dev_id
+ib_iou_info_option_rom +ib_iou_info_t +ib_join_mcast
+ib_lap_pdata_t +ib_leave_mcast +ib_lft_record_t
+IB_LID_MCAST_END +IB_LID_MCAST_START +ib_lid_pair_t
+IB_LID_PERMISSIVE +IB_LID_UCAST_END +IB_LID_UCAST_START
+ib_link_states_t +ib_listen_err_rec_t +ib_listen_info_t
+ib_local_ds_t +ib_local_mad +IB_MAD_ATTR_CLASS_PORT_INFO
+IB_MAD_ATTR_DIAG_CODE +IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT +IB_MAD_ATTR_GUID_INFO
+IB_MAD_ATTR_INFORM_INFO +IB_MAD_ATTR_IO_UNIT_INFO +IB_MAD_ATTR_IOC_PROFILE
+IB_MAD_ATTR_LED_INFO +IB_MAD_ATTR_LFT_RECORD +IB_MAD_ATTR_LIN_FWD_TBL
+IB_MAD_ATTR_LINK_RECORD +IB_MAD_ATTR_MCAST_FWD_TBL +IB_MAD_ATTR_MCMEMBER_RECORD
+IB_MAD_ATTR_MULTIPATH_RECORD +IB_MAD_ATTR_NODE_DESC +IB_MAD_ATTR_NODE_INFO
+IB_MAD_ATTR_NODE_RECORD +IB_MAD_ATTR_NOTICE +IB_MAD_ATTR_P_KEY_TABLE
+IB_MAD_ATTR_PATH_RECORD +IB_MAD_ATTR_PKEYTBL_RECORD +IB_MAD_ATTR_PORT_CNTRS
+IB_MAD_ATTR_PORT_INFO +IB_MAD_ATTR_PORT_SMPL_CTRL +IB_MAD_ATTR_PORT_SMPL_RSLT
+IB_MAD_ATTR_PORTINFO_RECORD +IB_MAD_ATTR_PREPARE_TO_TEST +IB_MAD_ATTR_RND_FWD_TBL
+IB_MAD_ATTR_SERVICE_ENTRIES +IB_MAD_ATTR_SERVICE_RECORD +IB_MAD_ATTR_SLVL_RECORD
+IB_MAD_ATTR_SLVL_TABLE +IB_MAD_ATTR_SM_INFO +IB_MAD_ATTR_SMINFO_RECORD
+IB_MAD_ATTR_SVC_ASSOCIATION_RECORD +IB_MAD_ATTR_SWITCH_INFO +IB_MAD_ATTR_TEST_DEVICE_LOOP
+IB_MAD_ATTR_TEST_DEVICE_ONCE +IB_MAD_ATTR_TRACE_RECORD +IB_MAD_ATTR_VENDOR_DIAG
+IB_MAD_ATTR_VL_ARBITRATION +IB_MAD_ATTR_VLARB_RECORD +ib_mad_element_t
+ib_mad_init_new +ib_mad_init_response +ib_mad_is_response
+IB_MAD_METHOD_GET +IB_MAD_METHOD_GET_RESP +IB_MAD_METHOD_GETTABLE
+IB_MAD_METHOD_GETTABLE_RESP +IB_MAD_METHOD_REPORT +IB_MAD_METHOD_REPORT_RESP
+IB_MAD_METHOD_RESP_MASK +IB_MAD_METHOD_SEND +IB_MAD_METHOD_SET
+IB_MAD_METHOD_TRAP +IB_MAD_METHOD_TRAP_REPRESS +IB_MAD_STATUS_BUSY
+IB_MAD_STATUS_INVALID_FIELD +IB_MAD_STATUS_REDIRECT +IB_MAD_STATUS_UNSUP_CLASS_VER
+IB_MAD_STATUS_UNSUP_METHOD +IB_MAD_STATUS_UNSUP_METHOD_ATTR +ib_mad_svc_t
+ib_mad_svc_type_t +ib_mad_t +IB_MAX_METHOD
+IB_MCAST_BLOCK_ID_MASK_HO +IB_MCAST_BLOCK_SIZE +IB_MCAST_MASK_SIZE
+IB_MCAST_MAX_BLOCK_ID +IB_MCAST_POSITION_MASK_HO +IB_MCAST_POSITION_MAX
+IB_MCAST_POSITION_SHIFT +ib_mcast_rec_t +ib_mcast_req_t
+IB_MCLASS_BM +IB_MCLASS_COMM_MGMT +IB_MCLASS_DEV_MGMT
+IB_MCLASS_PERF +IB_MCLASS_SNMP +IB_MCLASS_SUBN_ADM
+IB_MCLASS_SUBN_DIR +IB_MCLASS_SUBN_LID +IB_MCLASS_VENDOR_HIGH_RANGE_MAX
+IB_MCLASS_VENDOR_HIGH_RANGE_MIN +IB_MCLASS_VENDOR_LOW_RANGE_MAX +IB_MCLASS_VENDOR_LOW_RANGE_MIN
+ib_member_get_scope +ib_member_get_scope_state +ib_member_get_sl_flow_hop
+ib_member_get_state +ib_member_rec_t +ib_member_set_join_state
+ib_member_set_scope +ib_member_set_scope_state +ib_member_set_sl_flow_hop
+ib_member_set_state +ib_modify_av +ib_modify_ca
+ib_modify_cq +ib_modify_qp +ib_mr_attr_t
+ib_mr_create_t +ib_mr_mod_t +ib_mra_pdata_t
+IB_MTU_TYPE +ib_net16_t +ib_net32_t
+ib_net64_t +ib_node_info_get_local_port_num +ib_node_info_get_vendor_id
+ib_node_info_t +IB_NODE_NUM_PORTS_MAX +IB_NODE_TYPE_CA
+IB_NODE_TYPE_ROUTER +IB_NODE_TYPE_SWITCH +ib_notice_get_count
+ib_notice_get_dev_id +ib_notice_get_generic +ib_notice_get_prod_type
+ib_notice_get_toggle +ib_notice_get_trap_num +ib_notice_get_type
+ib_notice_get_vend_id +IB_NOTICE_NODE_TYPE_CA +IB_NOTICE_NODE_TYPE_ROUTER
+IB_NOTICE_NODE_TYPE_SUBN_MGMT +IB_NOTICE_NODE_TYPE_SWITCH +ib_notice_set_count
+ib_notice_set_dev_id +ib_notice_set_generic +ib_notice_set_prod_type
+ib_notice_set_toggle +ib_notice_set_trap_num +ib_notice_set_type
+ib_notice_set_vend_id +ib_open_al +ib_open_ca
+ib_path_get_ipd +IB_PATH_REC_BASE_MASK +ib_path_rec_flow_lbl
+ib_path_rec_hop_limit +ib_path_rec_init_local +ib_path_rec_mtu
+ib_path_rec_mtu_sel +ib_path_rec_pkt_life +ib_path_rec_pkt_life_sel
+ib_path_rec_rate +ib_path_rec_rate_sel +IB_PATH_REC_SELECTOR_MASK
+ib_path_rec_set_hop_flow_raw +ib_path_rec_sl +ib_path_rec_t
+IB_PATH_SELECTOR_TYPE +ib_pd_type_t +ib_peek_cq
+ib_pfn_cm_apr_cb_t +ib_pfn_cm_drep_cb_t +ib_pfn_cm_dreq_cb_t
+ib_pfn_cm_lap_cb_t +ib_pfn_cm_mra_cb_t +ib_pfn_cm_rej_cb_t
+ib_pfn_cm_rep_cb_t +ib_pfn_cm_req_cb_t +ib_pfn_cm_rtu_cb_t
+ib_pfn_comp_cb_t +ib_pfn_destroy_cb_t +ib_pfn_event_cb_t
+ib_pfn_listen_err_cb_t +ib_pfn_mad_comp_cb_t +ib_pfn_mcast_cb_t
+ib_pfn_pnp_cb_t +ib_pfn_query_cb_t +ib_pfn_reg_svc_cb_t
+ib_pfn_report_cb_t +ib_pfn_sub_cb_t +ib_phys_create_t
+ib_phys_range_t +IB_PKEY_BASE_MASK +IB_PKEY_ENTRIES_MAX
+ib_pkey_get_base +ib_pkey_is_full_member +IB_PKEY_MAX_BLOCKS
+ib_pkey_table_info_t +IB_PKEY_TYPE_MASK +ib_pnp_ca_rec_t
+ib_pnp_class_t +ib_pnp_event_t +ib_pnp_ioc_path_rec_t
+ib_pnp_ioc_rec_t +ib_pnp_iou_rec_t +ib_pnp_port_rec_t
+ib_pnp_rec_t +ib_pnp_req_t +ib_poll_cq
+ib_port_attr_mod_t +ib_port_attr_t +ib_port_cap_t
+ib_port_info_compute_rate +ib_port_info_get_link_speed_active +ib_port_info_get_link_speed_sup
+ib_port_info_get_lmc +ib_port_info_get_mpb +ib_port_info_get_mtu_cap
+ib_port_info_get_neighbor_mtu +ib_port_info_get_op_vls +ib_port_info_get_port_state
+ib_port_info_get_vl_cap +ib_port_info_set_link_speed_sup +ib_port_info_set_lmc
+ib_port_info_set_mpb +ib_port_info_set_neighbor_mtu +ib_port_info_set_op_vls
+ib_port_info_set_port_state +ib_port_info_set_state_no_change +ib_port_info_set_timeout
+ib_port_info_t +ib_post_recv +ib_post_send
+ib_put_mad +IB_QP1_WELL_KNOWN_Q_KEY +ib_qp_attr_t
+ib_qp_create_t +ib_qp_mod_t +ib_qp_opts_t
+ib_qp_state_t +ib_qp_type_t +ib_query
+ib_query_av +ib_query_ca +ib_query_ca_by_guid
+ib_query_cq +ib_query_mr +ib_query_mw
+ib_query_qp +ib_query_rec_t +ib_query_req_t
+ib_query_type_t +ib_rearm_cq +ib_rearm_n_cq
+ib_recv_opt_t +ib_recv_wr_t +ib_reg_ioc
+ib_reg_mad_pool +ib_reg_mad_svc +ib_reg_mem
+ib_reg_phys +ib_reg_pnp +ib_reg_shared
+ib_reg_shmid +ib_reg_svc +ib_reg_svc_rec_t
+ib_reg_svc_req_t +ib_register_ca +ib_rej_pdata_t
+ib_rej_status_t +ib_reject_ioc +ib_remove_svc_entry
+ib_rep_pdata_t +ib_report_rec_t +ib_req_pdata_t
+ib_rereg_mem +ib_rereg_phys +ib_rmpp_is_flag_set
+ib_rmpp_mad_t +ib_rtu_pdata_t +ib_sa_mad_get_payload_ptr
+ib_sa_mad_t +ib_send_mad +ib_send_opt_t
+ib_send_wr_t +ib_shmid_t +ib_sidr_rep_pdata_t
+ib_sidr_req_pdata_t +ib_slvl_table_get_vl +ib_slvl_table_record_t
+ib_slvl_table_set_vl +ib_slvl_table_t +ib_sm_info_t
+IB_SMINFO_ATTR_MOD_ACKNOWLEDGE +IB_SMINFO_ATTR_MOD_DISABLE +IB_SMINFO_ATTR_MOD_DISCOVER
+IB_SMINFO_ATTR_MOD_HANDOVER +IB_SMINFO_ATTR_MOD_STANDBY +ib_sminfo_get_priority
+ib_sminfo_get_state +IB_SMINFO_STATE_DISCOVERING +IB_SMINFO_STATE_INIT
+IB_SMINFO_STATE_MASTER +IB_SMINFO_STATE_NOTACTIVE +IB_SMINFO_STATE_STANDBY
+IB_SMP_DIRECTION +ib_smp_get_payload_ptr +ib_smp_get_status
+ib_smp_init_new +ib_smp_is_d +ib_smp_is_response
+IB_SMP_STATUS_MASK +ib_smp_t +ib_sub_rec_t
+ib_sub_req_t +IB_SUBNET_PATH_HOPS_MAX +ib_subscribe
+ib_svc_entries_t +ib_svc_entry_t +ib_switch_info_clear_state_change
+ib_switch_info_get_state_change +ib_switch_info_t +ib_sync_destroy
+ib_types.h +ib_unsubscribe +ib_user_query_t
+ib_uvp.h +ib_vl_arb_element_get_vl +ib_vl_arb_element_set_vl
+ib_vl_arb_element_t +ib_vl_arb_table_record_t +ib_vl_arb_table_t
+ib_wc_status_t +ib_wc_t +ib_wc_type_t
+ib_wr_type_t +ioc_at_slot +ioc_ifc.h
+ioc_ifc.h +IOCTL Object +IOCTL_CODE
+iou_ifc.h +iou_ifc.h +ipoib_ifc.h
+ipoib_ifc.h +Irqlock +Join States
+List +Log Provider +MAD_BLOCK_GRH_SIZE
+MAD_BLOCK_SIZE +MAD_RMPP_DATA_SIZE +MAD_RMPP_HDR_SIZE
+Map +MAX +Memory Management
+MIN +Mutex +Object
+Object States +offsetof +Overview
+Overview +Overview user-mode Verbs +Parameter Keywords
+PARENT_STRUCT +Passive Lock +PERF_DECLARE
+PERF_DECLARE_START +Performance Counters +Plug and Play
+Pointer Vector +Pool +Quick Composite Pool
+Quick List +Quick Locking Pool +Quick Map
+Quick Pool +RB Map +Request Manager
+ROUNDUP +Spinlock +System Callback
+Thread Pool +Timer +Type Definitions
+ual_alloc_pd_ioctl_t +ual_attach_mcast_ioctl_t +ual_bind_file_ioctl_t
+ual_bind_mw_ioctl_t +ual_cancel_mad_ioctl_t +ual_cancel_sa_req_ioctl_t
+ual_cep_apr_ioctl_t +ual_cep_drep_ioctl_t +ual_cep_dreq_ioctl_t
+ual_cep_get_rtr_ioctl_t +ual_cep_get_rts_ioctl_t +ual_cep_get_timewait_ioctl_t
+ual_cep_handoff_ioctl_t +ual_cep_lap_ioctl_t +ual_cep_listen_ioctl_t
+ual_cep_mra_ioctl_t +ual_cep_poll_ioctl_t +ual_cep_rej_ioctl_t
+ual_cep_rep_ioctl_t +ual_cep_rtu_ioctl_t +ual_ci_call_ioctl_t
+ual_close_ca_ioctl_t +ual_cm_req_ioctl_t +ual_create_av_ioctl_t
+ual_create_cep_ioctl_t +ual_create_cq_ioctl_t +ual_create_mw_ioctl_t
+ual_create_qp_ioctl_t +ual_dealloc_pd_ioctl_t +ual_dereg_mad_pool_ioctl_t
+ual_dereg_mad_svc_ioctl_t +ual_dereg_mr_ioctl_t +ual_dereg_pnp_ioctl_t
+ual_destroy_av_ioctl_t +ual_destroy_cq_ioctl_t +ual_destroy_mw_ioctl_t
+ual_destroy_qp_ioctl_t +ual_detach_mcast_ioctl_t +ual_force_apm_ioctl_t
+ual_get_uvp_name_t +ual_mad_recv_ioctl_t +ual_modify_av_ioctl_t
+ual_modify_ca_ioctl_t +ual_modify_cq_ioctl_t +ual_modify_qp_ioctl_t
+ual_open_ca_ioctl_t +ual_peek_cq_ioctl_t +ual_poll_cq_ioctl_t
+ual_poll_pnp_ioctl_t +ual_post_recv_ioctl_t +ual_post_send_ioctl_t
+ual_query_av_ioctl_t +ual_query_ca_ioctl_t +ual_query_cq_ioctl_t
+ual_query_mr_ioctl_t +ual_query_mw_ioctl_t +ual_query_qp_ioctl_t
+ual_rearm_cq_ioctl_t +ual_rearm_n_cq_ioctl_t +ual_rearm_pnp_ioctl_in_t
+ual_rearm_pnp_ioctl_out_t +ual_reg_mad_pool_ioctl_t +ual_reg_mad_svc_ioctl_t
+ual_reg_mem_ioctl_t +ual_reg_pnp_ioctl_in_t +ual_reg_shared_ioctl_t
+ual_reg_shmid_ioctl_t +ual_rereg_mem_ioctl_t +ual_send_mad_ioctl_t
+ual_send_sa_req_t +ual_spl_qp_ioctl_t +unsupported functions
+UNUSED_PARAM +uvp_bind_mw +uvp_get_interface
+uvp_interface_t +uvp_peek_cq +uvp_poll_cq
+uvp_post_allocate_pd_t +uvp_post_attach_mcast_t +uvp_post_ci_call
+uvp_post_close_ca_t +uvp_post_create_av_t +uvp_post_create_cq_t
+uvp_post_create_mw_t +uvp_post_create_qp_t +uvp_post_deallocate_pd_t
+uvp_post_destroy_av_t +uvp_post_destroy_cq_t +uvp_post_destroy_mw_t
+uvp_post_destroy_qp_t +uvp_post_detach_mcast_t +uvp_post_modify_av_t
+uvp_post_modify_ca_t +uvp_post_modify_qp_t +uvp_post_open_ca_t
+uvp_post_query_av_t +uvp_post_query_ca_t +uvp_post_query_cq_t
+uvp_post_query_mw_t +uvp_post_query_qp_t +uvp_post_recv
+uvp_post_resize_cq_t +uvp_post_send +uvp_pre_allocate_pd
+uvp_pre_attach_mcast +uvp_pre_ci_call +uvp_pre_close_ca_t
+uvp_pre_create_av +uvp_pre_create_cq +uvp_pre_create_mw
+uvp_pre_create_qp +uvp_pre_deallocate_pd +uvp_pre_destroy_av
+uvp_pre_destroy_cq +uvp_pre_destroy_mw +uvp_pre_destroy_qp
+uvp_pre_detach_mcast +uvp_pre_modify_av +uvp_pre_modify_ca
+uvp_pre_modify_qp +uvp_pre_open_ca_t +uvp_pre_query_av
+uvp_pre_query_ca +uvp_pre_query_cq +uvp_pre_query_mw
+uvp_pre_query_qp +uvp_pre_resize_cq +uvp_rearm_cq
+uvp_rearm_n_cq +Vector +Verbs
+Wait Object
+ + diff --git a/trunk/docs/robo_definitions.html b/trunk/docs/robo_definitions.html new file mode 100644 index 00000000..035bbdf4 --- /dev/null +++ b/trunk/docs/robo_definitions.html @@ -0,0 +1,661 @@ + + + + +Definitions + + + + +Generated from ./inc/ with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+

+[Sourcefiles] +[Index] +[Definitions] +[Functions] +[Modules] +[Structures] +

+

Definitions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+64-bit Print Format +ATS +cl_destroy_type_t
+CL_ENTER +CL_EXIT +CL_HTON16
+CL_HTON32 +CL_HTON64 +cl_ioctl_handle_t
+cl_irp_action_t +cl_is_state_valid +cl_list_iterator_t
+cl_log_type_t +cl_map_iterator_t +CL_NTOH16
+CL_NTOH32 +CL_NTOH64 +cl_perf_clr
+cl_perf_inc +cl_perf_log +cl_perf_start
+cl_perf_stop +cl_perf_update +cl_perf_update_ctr
+cl_pfn_async_proc_cb_t +cl_pfn_cpool_dtor_t +cl_pfn_cpool_init_t
+cl_pfn_fmap_apply_t +cl_pfn_fmap_cmp_t +cl_pfn_ioctl_handler_t
+cl_pfn_list_apply_t +cl_pfn_list_find_t +cl_pfn_obj_call_t
+cl_pfn_pnp_po_t +cl_pfn_pool_dtor_t +cl_pfn_pool_init_t
+cl_pfn_ptr_vec_apply_t +cl_pfn_ptr_vec_find_t +cl_pfn_qcpool_dtor_t
+cl_pfn_qcpool_init_t +cl_pfn_qlist_apply_t +cl_pfn_qlist_find_t
+cl_pfn_qmap_apply_t +cl_pfn_qpool_dtor_t +cl_pfn_qpool_init_t
+cl_pfn_query_text_t +cl_pfn_release_resources_t +cl_pfn_req_cb_t
+cl_pfn_reqmgr_get_count_t +cl_pfn_sys_callback_t +cl_pfn_thread_callback_t
+cl_pfn_timer_callback_t +cl_pfn_vec_apply_t +cl_pfn_vec_dtor_t
+cl_pfn_vec_find_t +cl_pfn_vec_init_t +cl_pnp_po_ext_t
+cl_pnp_state_t +CL_PRINT +cl_req_type_t
+CL_STATUS_MSG +cl_status_t +CL_TRACE
+CL_TRACE_EXIT +cl_vfptr_pnp_po_t +cl_vfptr_query_txt
+cl_waitobj_handle_t +Data Types +Debug Levels
+DM_SVC_NAME +ib_access_t +ib_al_flags_t
+ib_api_status_t +ib_apm_state_t +ib_apr_status_t
+ib_async_event_t +ib_atomic_t +ib_ca_mod_t
+ib_cm_cap_mask_t +ib_cm_failover_t +IB_DEFAULT_PKEY
+IB_DEFAULT_SUBNET_PREFIX +ib_device_attr_mask_t +ib_gid_prefix_t
+ib_gid_t +ib_init_type_t +IB_INVALID_PORT_NUM
+IB_LID_MCAST_END +IB_LID_MCAST_START +IB_LID_PERMISSIVE
+IB_LID_UCAST_END +IB_LID_UCAST_START +ib_link_states_t
+ib_listen_info_t +IB_MAD_ATTR_CLASS_PORT_INFO +IB_MAD_ATTR_DIAG_CODE
+IB_MAD_ATTR_DIAGNOSTIC_TIMEOUT +IB_MAD_ATTR_GUID_INFO +IB_MAD_ATTR_INFORM_INFO
+IB_MAD_ATTR_IO_UNIT_INFO +IB_MAD_ATTR_IOC_PROFILE +IB_MAD_ATTR_LED_INFO
+IB_MAD_ATTR_LFT_RECORD +IB_MAD_ATTR_LIN_FWD_TBL +IB_MAD_ATTR_LINK_RECORD
+IB_MAD_ATTR_MCAST_FWD_TBL +IB_MAD_ATTR_MCMEMBER_RECORD +IB_MAD_ATTR_MULTIPATH_RECORD
+IB_MAD_ATTR_NODE_DESC +IB_MAD_ATTR_NODE_INFO +IB_MAD_ATTR_NODE_RECORD
+IB_MAD_ATTR_NOTICE +IB_MAD_ATTR_P_KEY_TABLE +IB_MAD_ATTR_PATH_RECORD
+IB_MAD_ATTR_PKEYTBL_RECORD +IB_MAD_ATTR_PORT_CNTRS +IB_MAD_ATTR_PORT_INFO
+IB_MAD_ATTR_PORT_SMPL_CTRL +IB_MAD_ATTR_PORT_SMPL_RSLT +IB_MAD_ATTR_PORTINFO_RECORD
+IB_MAD_ATTR_PREPARE_TO_TEST +IB_MAD_ATTR_RND_FWD_TBL +IB_MAD_ATTR_SERVICE_ENTRIES
+IB_MAD_ATTR_SERVICE_RECORD +IB_MAD_ATTR_SLVL_RECORD +IB_MAD_ATTR_SLVL_TABLE
+IB_MAD_ATTR_SM_INFO +IB_MAD_ATTR_SMINFO_RECORD +IB_MAD_ATTR_SVC_ASSOCIATION_RECORD
+IB_MAD_ATTR_SWITCH_INFO +IB_MAD_ATTR_TEST_DEVICE_LOOP +IB_MAD_ATTR_TEST_DEVICE_ONCE
+IB_MAD_ATTR_TRACE_RECORD +IB_MAD_ATTR_VENDOR_DIAG +IB_MAD_ATTR_VL_ARBITRATION
+IB_MAD_ATTR_VLARB_RECORD +IB_MAD_METHOD_GET +IB_MAD_METHOD_GET_RESP
+IB_MAD_METHOD_GETTABLE +IB_MAD_METHOD_GETTABLE_RESP +IB_MAD_METHOD_REPORT
+IB_MAD_METHOD_REPORT_RESP +IB_MAD_METHOD_RESP_MASK +IB_MAD_METHOD_SEND
+IB_MAD_METHOD_SET +IB_MAD_METHOD_TRAP +IB_MAD_METHOD_TRAP_REPRESS
+IB_MAD_STATUS_BUSY +IB_MAD_STATUS_INVALID_FIELD +IB_MAD_STATUS_REDIRECT
+IB_MAD_STATUS_UNSUP_CLASS_VER +IB_MAD_STATUS_UNSUP_METHOD +IB_MAD_STATUS_UNSUP_METHOD_ATTR
+ib_mad_svc_type_t +IB_MAX_METHOD +IB_MCAST_BLOCK_ID_MASK_HO
+IB_MCAST_BLOCK_SIZE +IB_MCAST_MASK_SIZE +IB_MCAST_MAX_BLOCK_ID
+IB_MCAST_POSITION_MASK_HO +IB_MCAST_POSITION_MAX +IB_MCAST_POSITION_SHIFT
+IB_MCLASS_BM +IB_MCLASS_COMM_MGMT +IB_MCLASS_DEV_MGMT
+IB_MCLASS_PERF +IB_MCLASS_SNMP +IB_MCLASS_SUBN_ADM
+IB_MCLASS_SUBN_DIR +IB_MCLASS_SUBN_LID +IB_MCLASS_VENDOR_HIGH_RANGE_MAX
+IB_MCLASS_VENDOR_HIGH_RANGE_MIN +IB_MCLASS_VENDOR_LOW_RANGE_MAX +IB_MCLASS_VENDOR_LOW_RANGE_MIN
+ib_mr_mod_t +IB_MTU_TYPE +ib_net16_t
+ib_net32_t +ib_net64_t +IB_NODE_NUM_PORTS_MAX
+IB_NODE_TYPE_CA +IB_NODE_TYPE_ROUTER +IB_NODE_TYPE_SWITCH
+IB_NOTICE_NODE_TYPE_CA +IB_NOTICE_NODE_TYPE_ROUTER +IB_NOTICE_NODE_TYPE_SUBN_MGMT
+IB_NOTICE_NODE_TYPE_SWITCH +IB_PATH_REC_BASE_MASK +IB_PATH_REC_SELECTOR_MASK
+IB_PATH_SELECTOR_TYPE +ib_pd_type_t +IB_PKEY_BASE_MASK
+IB_PKEY_ENTRIES_MAX +IB_PKEY_MAX_BLOCKS +IB_PKEY_TYPE_MASK
+ib_pnp_class_t +ib_pnp_event_t +IB_QP1_WELL_KNOWN_Q_KEY
+ib_qp_opts_t +ib_qp_state_t +ib_qp_type_t
+ib_query_type_t +ib_recv_opt_t +ib_rej_status_t
+ib_send_opt_t +IB_SMINFO_ATTR_MOD_ACKNOWLEDGE +IB_SMINFO_ATTR_MOD_DISABLE
+IB_SMINFO_ATTR_MOD_DISCOVER +IB_SMINFO_ATTR_MOD_HANDOVER +IB_SMINFO_ATTR_MOD_STANDBY
+IB_SMINFO_STATE_DISCOVERING +IB_SMINFO_STATE_INIT +IB_SMINFO_STATE_MASTER
+IB_SMINFO_STATE_NOTACTIVE +IB_SMINFO_STATE_STANDBY +IB_SMP_DIRECTION
+IB_SMP_STATUS_MASK +IB_SUBNET_PATH_HOPS_MAX +ib_wc_status_t
+ib_wc_type_t +ib_wr_type_t +IOCTL_CODE
+Join States +MAD_BLOCK_GRH_SIZE +MAD_BLOCK_SIZE
+MAD_RMPP_DATA_SIZE +MAD_RMPP_HDR_SIZE +MAX
+MIN +Object States +offsetof
+Parameter Keywords +PARENT_STRUCT +PERF_DECLARE
+PERF_DECLARE_START +ROUNDUP +UNUSED_PARAM
+ + diff --git a/trunk/docs/robo_functions.html b/trunk/docs/robo_functions.html new file mode 100644 index 00000000..641def1d --- /dev/null +++ b/trunk/docs/robo_functions.html @@ -0,0 +1,1806 @@ + + + + +Functions + + + + +Generated from ./inc/ with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+

+[Sourcefiles] +[Index] +[Definitions] +[Functions] +[Modules] +[Structures] +

+

Functions

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ci_allocate_pd +ci_async_event_cb_t +ci_attach_mcast
+ci_bind_mw +ci_close_ca +ci_completion_cb_t
+ci_create_av +ci_create_cq +ci_create_mw
+ci_create_qp +ci_create_spl_qp +ci_deallocate_pd
+ci_deregister_mr +ci_destroy_av +ci_destroy_cq
+ci_destroy_mw +ci_destroy_qp +ci_detach_mcast
+ci_enable_cq_notify +ci_enable_ncomp_cq_notify +ci_local_mad
+ci_modify_av +ci_modify_ca +ci_modify_mr
+ci_modify_pmr +ci_modify_qp +ci_open_ca
+ci_peek_cq +ci_poll_cq +ci_post_recv
+ci_post_send +ci_query_av +ci_query_ca
+ci_query_cq +ci_query_mr +ci_query_mw
+ci_query_qp +ci_register_mr +ci_register_pmr
+ci_register_smr +ci_resize_cq +ci_um_close_ca_t
+ci_um_open_ca +ci_vendor_call +cl_alloc_relations
+cl_async_proc_construct +cl_async_proc_destroy +cl_async_proc_init
+cl_async_proc_queue +cl_atomic_add +cl_atomic_comp_xchg
+cl_atomic_dec +cl_atomic_inc +cl_atomic_sub
+cl_atomic_xchg +cl_break +cl_check_for_read
+cl_check_for_write +cl_copy_from_user +cl_copy_to_user
+cl_cpool_construct +cl_cpool_count +cl_cpool_destroy
+cl_cpool_get +cl_cpool_grow +cl_cpool_init
+cl_cpool_put +cl_dbg_out +cl_do_remove
+cl_do_sync_pnp +cl_event_construct +cl_event_destroy
+cl_event_init +cl_event_reset +cl_event_signal
+cl_event_wait_on +cl_fmap_apply_func +cl_fmap_count
+cl_fmap_delta +cl_fmap_end +cl_fmap_get
+cl_fmap_head +cl_fmap_init +cl_fmap_insert
+cl_fmap_key +cl_fmap_merge +cl_fmap_next
+cl_fmap_prev +cl_fmap_remove +cl_fmap_remove_all
+cl_fmap_remove_item +cl_fmap_tail +cl_free
+cl_fwd_query_ifc +cl_get_pagesize +cl_get_physaddr
+cl_get_tick_count +cl_get_tick_freq +cl_get_time_stamp
+cl_get_time_stamp_sec +cl_get_time_stamp_usec +cl_hton16
+cl_hton32 +cl_hton64 +cl_init_pnp_po_ext
+cl_ioctl_cmd +cl_ioctl_complete +cl_ioctl_ctl_code
+cl_ioctl_in_buf +cl_ioctl_in_size +cl_ioctl_out_buf
+cl_ioctl_out_size +cl_ioctl_process +cl_ioctl_request
+cl_ioctl_result +cl_ioctl_type +cl_irp_complete
+cl_irp_ignore +cl_irp_skip +cl_irp_succeed
+cl_irp_unsupported +cl_irqlock_acquire +cl_irqlock_construct
+cl_irqlock_destroy +cl_irqlock_init +cl_irqlock_release
+cl_is_blockable +cl_is_cpool_inited +cl_is_fmap_empty
+cl_is_item_in_qlist +cl_is_list_empty +cl_is_list_inited
+cl_is_map_empty +cl_is_map_inited +cl_is_object_in_list
+cl_is_pool_inited +cl_is_qcpool_inited +cl_is_qlist_empty
+cl_is_qmap_empty +cl_is_qpool_inited +cl_is_rbmap_empty
+cl_is_sys_callback_inited +cl_list_apply_func +cl_list_construct
+cl_list_count +cl_list_destroy +cl_list_end
+cl_list_find_from_head +cl_list_find_from_tail +cl_list_head
+cl_list_init +cl_list_insert_array_head +cl_list_insert_array_tail
+cl_list_insert_head +cl_list_insert_next +cl_list_insert_prev
+cl_list_insert_tail +cl_list_next +cl_list_obj
+cl_list_prev +cl_list_remove_all +cl_list_remove_head
+cl_list_remove_item +cl_list_remove_object +cl_list_remove_tail
+cl_list_tail +cl_log_event +cl_malloc
+cl_map_construct +cl_map_count +cl_map_delta
+cl_map_destroy +cl_map_end +cl_map_get
+cl_map_head +cl_map_init +cl_map_insert
+cl_map_key +cl_map_merge +cl_map_next
+cl_map_obj +cl_map_prev +cl_map_remove
+cl_map_remove_all +cl_map_remove_item +cl_map_tail
+cl_mem_display +cl_memclr +cl_memcmp
+cl_memcpy +cl_memset +cl_msg_out
+cl_mutex_acquire +cl_mutex_construct +cl_mutex_destroy
+cl_mutex_init +cl_mutex_release +cl_ntoh
+cl_ntoh16 +cl_ntoh32 +cl_ntoh64
+cl_obj_construct +cl_obj_deinit +cl_obj_deref
+cl_obj_destroy +cl_obj_init +cl_obj_insert_rel
+cl_obj_insert_rel_parent_locked +cl_obj_lock +cl_obj_mgr_create
+cl_obj_mgr_destroy +cl_obj_ref +cl_obj_remove_rel
+cl_obj_reset +cl_obj_type +cl_obj_unlock
+cl_palloc +cl_panic +cl_perf_construct
+cl_perf_destroy +cl_perf_display +cl_perf_init
+cl_perf_reset +cl_plock_acquire +cl_plock_construct
+cl_plock_destroy +cl_plock_excl_acquire +cl_plock_init
+cl_plock_release +cl_pnp +cl_pool_construct
+cl_pool_count +cl_pool_destroy +cl_pool_get
+cl_pool_grow +cl_pool_init +cl_pool_put
+cl_power +cl_proc_count +cl_ptr_vector_apply_func
+cl_ptr_vector_at +cl_ptr_vector_construct +cl_ptr_vector_destroy
+cl_ptr_vector_find_from_end +cl_ptr_vector_find_from_start +cl_ptr_vector_get
+cl_ptr_vector_get_capacity +cl_ptr_vector_get_size +cl_ptr_vector_init
+cl_ptr_vector_insert +cl_ptr_vector_remove +cl_ptr_vector_set
+cl_ptr_vector_set_capacity +cl_ptr_vector_set_min_size +cl_ptr_vector_set_size
+cl_pzalloc +cl_qcpool_construct +cl_qcpool_count
+cl_qcpool_destroy +cl_qcpool_get +cl_qcpool_grow
+cl_qcpool_init +cl_qcpool_put +cl_qcpool_put_list
+cl_qlist_apply_func +cl_qlist_count +cl_qlist_end
+cl_qlist_find_from_head +cl_qlist_find_from_tail +cl_qlist_find_next
+cl_qlist_find_prev +cl_qlist_head +cl_qlist_init
+cl_qlist_insert_array_head +cl_qlist_insert_array_tail +cl_qlist_insert_head
+cl_qlist_insert_list_head +cl_qlist_insert_list_tail +cl_qlist_insert_next
+cl_qlist_insert_prev +cl_qlist_insert_tail +cl_qlist_move_items
+cl_qlist_next +cl_qlist_obj +cl_qlist_prev
+cl_qlist_remove_all +cl_qlist_remove_head +cl_qlist_remove_item
+cl_qlist_remove_tail +cl_qlist_set_obj +cl_qlist_tail
+cl_qlock_pool_construct +cl_qlock_pool_destroy +cl_qlock_pool_get
+cl_qlock_pool_init +cl_qlock_pool_put +cl_qmap_apply_func
+cl_qmap_count +cl_qmap_delta +cl_qmap_end
+cl_qmap_get +cl_qmap_head +cl_qmap_init
+cl_qmap_insert +cl_qmap_key +cl_qmap_merge
+cl_qmap_next +cl_qmap_obj +cl_qmap_prev
+cl_qmap_remove +cl_qmap_remove_all +cl_qmap_remove_item
+cl_qmap_set_obj +cl_qmap_tail +cl_qpool_construct
+cl_qpool_count +cl_qpool_destroy +cl_qpool_get
+cl_qpool_grow +cl_qpool_init +cl_qpool_put
+cl_qpool_put_list +cl_rbmap_count +cl_rbmap_end
+cl_rbmap_init +cl_rbmap_insert +cl_rbmap_left
+cl_rbmap_remove_item +cl_rbmap_reset +cl_rbmap_right
+cl_rbmap_root +cl_rel_alloc +cl_rel_free
+cl_req_mgr_construct +cl_req_mgr_destroy +cl_req_mgr_get
+cl_req_mgr_init +cl_req_mgr_resume +cl_rollback_pnp_state
+cl_set_pnp_state +cl_spinlock_acquire +cl_spinlock_construct
+cl_spinlock_destroy +cl_spinlock_init +cl_spinlock_release
+cl_sys_callback_get +cl_sys_callback_put +cl_sys_callback_queue
+cl_thread_pool_construct +cl_thread_pool_destroy +cl_thread_pool_init
+cl_thread_pool_signal +cl_thread_stall +cl_thread_suspend
+cl_timer_construct +cl_timer_destroy +cl_timer_init
+cl_timer_start +cl_timer_stop +cl_timer_trim
+cl_vector_apply_func +cl_vector_at +cl_vector_construct
+cl_vector_destroy +cl_vector_find_from_end +cl_vector_find_from_start
+cl_vector_get +cl_vector_get_capacity +cl_vector_get_ptr
+cl_vector_get_size +cl_vector_init +cl_vector_set
+cl_vector_set_capacity +cl_vector_set_min_size +cl_vector_set_size
+cl_waitobj_create +cl_waitobj_deref +cl_waitobj_destroy
+cl_waitobj_ref +cl_waitobj_reset +cl_waitobj_signal
+cl_waitobj_wait_on +cl_zalloc +ib_add_svc_entry
+ib_alloc_pd +ib_bind_mw +ib_cancel_mad
+ib_cancel_query +ib_ci_call +ib_class_is_vendor_specific
+ib_class_is_vendor_specific_high +ib_class_is_vendor_specific_low +ib_close_al
+ib_close_ca +ib_cm_apr +ib_cm_cancel
+ib_cm_drep +ib_cm_dreq +ib_cm_handoff
+ib_cm_lap +ib_cm_listen +ib_cm_mra
+ib_cm_rej +ib_cm_rep +ib_cm_req
+ib_cm_rtu +ib_copy_ca_attr +ib_create_av
+ib_create_cq +ib_create_ioc +ib_create_mad_pool
+ib_create_mw +ib_create_qp +ib_dealloc_pd
+ib_dereg_mad_pool +ib_dereg_mr +ib_dereg_pnp
+ib_dereg_svc +ib_deregister_ca +ib_destroy_av
+ib_destroy_cq +ib_destroy_ioc +ib_destroy_mad_pool
+ib_destroy_mw +ib_destroy_qp +ib_dm_get_slot_lo_hi
+ib_dm_set_slot_lo_hi +ib_force_apm +ib_get_async_event_str
+ib_get_ca_by_gid +ib_get_ca_guids +ib_get_err_str
+ib_get_guid +ib_get_mad +ib_get_mad_buf
+ib_get_node_type_str +ib_get_port_by_gid +ib_get_port_state_from_str
+ib_get_port_state_str +ib_get_query_node_rec +ib_get_query_path_rec
+ib_get_query_portinfo_rec +ib_get_query_result +ib_get_query_svc_rec
+ib_get_spl_qp +ib_get_wc_status_str +ib_get_wc_type_str
+ib_get_wr_type_str +ib_gid_get_guid +ib_gid_get_subnet_prefix
+ib_gid_is_link_local +ib_gid_is_site_local +ib_gid_set_default
+ib_grh_get_ver_class_flow +ib_grh_set_ver_class_flow +ib_inform_get_dev_id
+ib_inform_get_prod_type +ib_inform_get_qpn +ib_inform_get_resp_time_val
+ib_inform_get_trap_num +ib_inform_get_vend_id +ib_inform_set_dev_id
+ib_inform_set_prod_type +ib_inform_set_qpn +ib_inform_set_resp_time_val
+ib_inform_set_trap_num +ib_inform_set_vend_id +ib_init_dgrm_svc
+ib_iou_info_diag_dev_id +ib_iou_info_option_rom +ib_join_mcast
+ib_leave_mcast +ib_local_mad +ib_mad_init_new
+ib_mad_init_response +ib_mad_is_response +ib_member_get_scope
+ib_member_get_scope_state +ib_member_get_sl_flow_hop +ib_member_get_state
+ib_member_set_join_state +ib_member_set_scope +ib_member_set_scope_state
+ib_member_set_sl_flow_hop +ib_member_set_state +ib_modify_av
+ib_modify_ca +ib_modify_cq +ib_modify_qp
+ib_node_info_get_local_port_num +ib_node_info_get_vendor_id +ib_notice_get_count
+ib_notice_get_dev_id +ib_notice_get_generic +ib_notice_get_prod_type
+ib_notice_get_toggle +ib_notice_get_trap_num +ib_notice_get_type
+ib_notice_get_vend_id +ib_notice_set_count +ib_notice_set_dev_id
+ib_notice_set_generic +ib_notice_set_prod_type +ib_notice_set_toggle
+ib_notice_set_trap_num +ib_notice_set_type +ib_notice_set_vend_id
+ib_open_al +ib_open_ca +ib_path_get_ipd
+ib_path_rec_flow_lbl +ib_path_rec_hop_limit +ib_path_rec_init_local
+ib_path_rec_mtu +ib_path_rec_mtu_sel +ib_path_rec_pkt_life
+ib_path_rec_pkt_life_sel +ib_path_rec_rate +ib_path_rec_rate_sel
+ib_path_rec_set_hop_flow_raw +ib_path_rec_sl +ib_peek_cq
+ib_pfn_cm_apr_cb_t +ib_pfn_cm_drep_cb_t +ib_pfn_cm_dreq_cb_t
+ib_pfn_cm_lap_cb_t +ib_pfn_cm_mra_cb_t +ib_pfn_cm_rej_cb_t
+ib_pfn_cm_rep_cb_t +ib_pfn_cm_req_cb_t +ib_pfn_cm_rtu_cb_t
+ib_pfn_comp_cb_t +ib_pfn_destroy_cb_t +ib_pfn_event_cb_t
+ib_pfn_listen_err_cb_t +ib_pfn_mad_comp_cb_t +ib_pfn_mcast_cb_t
+ib_pfn_pnp_cb_t +ib_pfn_query_cb_t +ib_pfn_reg_svc_cb_t
+ib_pfn_report_cb_t +ib_pfn_sub_cb_t +ib_pkey_get_base
+ib_pkey_is_full_member +ib_poll_cq +ib_port_info_compute_rate
+ib_port_info_get_link_speed_active +ib_port_info_get_link_speed_sup +ib_port_info_get_lmc
+ib_port_info_get_mpb +ib_port_info_get_mtu_cap +ib_port_info_get_neighbor_mtu
+ib_port_info_get_op_vls +ib_port_info_get_port_state +ib_port_info_get_vl_cap
+ib_port_info_set_link_speed_sup +ib_port_info_set_lmc +ib_port_info_set_mpb
+ib_port_info_set_neighbor_mtu +ib_port_info_set_op_vls +ib_port_info_set_port_state
+ib_port_info_set_state_no_change +ib_port_info_set_timeout +ib_post_recv
+ib_post_send +ib_put_mad +ib_query
+ib_query_av +ib_query_ca +ib_query_ca_by_guid
+ib_query_cq +ib_query_mr +ib_query_mw
+ib_query_qp +ib_rearm_cq +ib_rearm_n_cq
+ib_reg_ioc +ib_reg_mad_pool +ib_reg_mad_svc
+ib_reg_mem +ib_reg_phys +ib_reg_pnp
+ib_reg_shared +ib_reg_shmid +ib_reg_svc
+ib_register_ca +ib_reject_ioc +ib_remove_svc_entry
+ib_rereg_mem +ib_rereg_phys +ib_rmpp_is_flag_set
+ib_sa_mad_get_payload_ptr +ib_send_mad +ib_slvl_table_get_vl
+ib_slvl_table_set_vl +ib_sminfo_get_priority +ib_sminfo_get_state
+ib_smp_get_payload_ptr +ib_smp_get_status +ib_smp_init_new
+ib_smp_is_d +ib_smp_is_response +ib_subscribe
+ib_switch_info_clear_state_change +ib_switch_info_get_state_change +ib_sync_destroy
+ib_unsubscribe +ib_vl_arb_element_get_vl +ib_vl_arb_element_set_vl
+ioc_at_slot +unsupported functions +uvp_bind_mw
+uvp_get_interface +uvp_peek_cq +uvp_poll_cq
+uvp_post_allocate_pd_t +uvp_post_attach_mcast_t +uvp_post_ci_call
+uvp_post_close_ca_t +uvp_post_create_av_t +uvp_post_create_cq_t
+uvp_post_create_mw_t +uvp_post_create_qp_t +uvp_post_deallocate_pd_t
+uvp_post_destroy_av_t +uvp_post_destroy_cq_t +uvp_post_destroy_mw_t
+uvp_post_destroy_qp_t +uvp_post_detach_mcast_t +uvp_post_modify_av_t
+uvp_post_modify_ca_t +uvp_post_modify_qp_t +uvp_post_open_ca_t
+uvp_post_query_av_t +uvp_post_query_ca_t +uvp_post_query_cq_t
+uvp_post_query_mw_t +uvp_post_query_qp_t +uvp_post_recv
+uvp_post_resize_cq_t +uvp_post_send +uvp_pre_allocate_pd
+uvp_pre_attach_mcast +uvp_pre_ci_call +uvp_pre_close_ca_t
+uvp_pre_create_av +uvp_pre_create_cq +uvp_pre_create_mw
+uvp_pre_create_qp +uvp_pre_deallocate_pd +uvp_pre_destroy_av
+uvp_pre_destroy_cq +uvp_pre_destroy_mw +uvp_pre_destroy_qp
+uvp_pre_detach_mcast +uvp_pre_modify_av +uvp_pre_modify_ca
+uvp_pre_modify_qp +uvp_pre_open_ca_t +uvp_pre_query_av
+uvp_pre_query_ca +uvp_pre_query_cq +uvp_pre_query_mw
+uvp_pre_query_qp +uvp_pre_resize_cq +uvp_rearm_cq
+uvp_rearm_n_cq
+ + diff --git a/trunk/docs/robo_modules.html b/trunk/docs/robo_modules.html new file mode 100644 index 00000000..0b8b6bfa --- /dev/null +++ b/trunk/docs/robo_modules.html @@ -0,0 +1,131 @@ + + + + +Modules + + + + +Generated from ./inc/ with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+

+[Sourcefiles] +[Index] +[Definitions] +[Functions] +[Modules] +[Structures] +

+

Modules

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+Asynchronous Processor +Atomic Operations +Byte Swapping +Composite Pool +Constants
+Debug Output +Event +Flexi Map +ib_al_ifc.h +ib_ci_ifc.h
+ioc_ifc.h +IOCTL Object +iou_ifc.h +ipoib_ifc.h +Irqlock
+List +Log Provider +Map +Memory Management +Mutex
+Object +Overview +Overview +Overview user-mode Verbs +Passive Lock
+Performance Counters +Plug and Play +Pointer Vector +Pool +Quick Composite Pool
+Quick List +Quick Locking Pool +Quick Map +Quick Pool +RB Map
+Request Manager +Spinlock +System Callback +Thread Pool +Timer
+Type Definitions +Vector +Verbs +Wait Object
+ + diff --git a/trunk/docs/robo_sourcefiles.html b/trunk/docs/robo_sourcefiles.html new file mode 100644 index 00000000..5fb258b0 --- /dev/null +++ b/trunk/docs/robo_sourcefiles.html @@ -0,0 +1,211 @@ + + + + +Sourcefiles + + + + +Generated from ./inc/ with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+

+[Sourcefiles] +[Index] +[Definitions] +[Functions] +[Modules] +[Structures] +

+ + + diff --git a/trunk/docs/robo_strutures.html b/trunk/docs/robo_strutures.html new file mode 100644 index 00000000..872c4292 --- /dev/null +++ b/trunk/docs/robo_strutures.html @@ -0,0 +1,553 @@ + + + + +Structures + + + + +Generated from ./inc/ with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:25 +
+

+[Sourcefiles] +[Index] +[Definitions] +[Functions] +[Modules] +[Structures] +

+

Structures

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ci_interface_t +ci_umv_buf_t +cl_async_proc_item_t +cl_async_proc_t
+cl_cpool_t +cl_fmap_item_t +cl_fmap_t +cl_list_item_t
+cl_list_obj_t +cl_list_t +cl_map_item_t +cl_map_obj_t
+cl_map_t +cl_obj_mgr_t +cl_obj_rel_t +cl_obj_t
+cl_plock_t +cl_pool_item_t +cl_pool_t +cl_ptr_vector_t
+cl_qcpool_t +cl_qlist_t +cl_qlock_pool_t +cl_qmap_t
+cl_qpool_t +cl_rbmap_item_t +cl_rbmap_t +cl_req_mgr_t
+cl_thread_pool_t +cl_vector_t +ib_apr_info_t +ib_apr_pdata_t
+ib_ari_t +ib_async_event_rec_t +ib_av_attr_t +ib_bind_wr_t
+ib_ca_attr_t +ib_cep_listen_t +ib_ci_op_t +IB_CLASS_CAP_GETSET
+IB_CLASS_CAP_TRAP +ib_class_port_info_t +IB_CLASS_RESP_TIME_MASK +ib_cm_apr_rec_t
+ib_cm_apr_t +ib_cm_drep_rec_t +ib_cm_drep_t +ib_cm_dreq_rec_t
+ib_cm_dreq_t +ib_cm_lap_rec_t +ib_cm_lap_t +ib_cm_listen_t
+ib_cm_mra_rec_t +ib_cm_mra_t +ib_cm_rej_rec_t +ib_cm_rej_t
+ib_cm_rep_rec_t +ib_cm_rep_t +ib_cm_req_rec_t +ib_cm_req_t
+ib_cm_rtu_rec_t +ib_cm_rtu_t +ib_cq_create_t +ib_dgrm_info_t
+ib_dm_mad_t +ib_drep_pdata_t +ib_dreq_pdata_t +ib_event_rec_t
+ib_field32_t +ib_gid_pair_t +ib_grh_t +ib_guid_info_t
+ib_guid_pair_t +ib_inform_info_record_t +ib_ioc_profile_t +ib_iou_info_t
+ib_lap_pdata_t +ib_lft_record_t +ib_lid_pair_t +ib_listen_err_rec_t
+ib_local_ds_t +ib_mad_element_t +ib_mad_svc_t +ib_mad_t
+ib_mcast_rec_t +ib_mcast_req_t +ib_member_rec_t +ib_mr_attr_t
+ib_mr_create_t +ib_mra_pdata_t +ib_node_info_t +ib_path_rec_t
+ib_phys_create_t +ib_phys_range_t +ib_pkey_table_info_t +ib_pnp_ca_rec_t
+ib_pnp_ioc_path_rec_t +ib_pnp_ioc_rec_t +ib_pnp_iou_rec_t +ib_pnp_port_rec_t
+ib_pnp_rec_t +ib_pnp_req_t +ib_port_attr_mod_t +ib_port_attr_t
+ib_port_cap_t +ib_port_info_t +ib_qp_attr_t +ib_qp_create_t
+ib_qp_mod_t +ib_query_rec_t +ib_query_req_t +ib_recv_wr_t
+ib_reg_svc_rec_t +ib_reg_svc_req_t +ib_rej_pdata_t +ib_rep_pdata_t
+ib_report_rec_t +ib_req_pdata_t +ib_rmpp_mad_t +ib_rtu_pdata_t
+ib_sa_mad_t +ib_send_wr_t +ib_shmid_t +ib_sidr_rep_pdata_t
+ib_sidr_req_pdata_t +ib_slvl_table_record_t +ib_slvl_table_t +ib_sm_info_t
+ib_smp_t +ib_sub_rec_t +ib_sub_req_t +ib_svc_entries_t
+ib_svc_entry_t +ib_switch_info_t +ib_user_query_t +ib_vl_arb_element_t
+ib_vl_arb_table_record_t +ib_vl_arb_table_t +ib_wc_t +ual_alloc_pd_ioctl_t
+ual_attach_mcast_ioctl_t +ual_bind_file_ioctl_t +ual_bind_mw_ioctl_t +ual_cancel_mad_ioctl_t
+ual_cancel_sa_req_ioctl_t +ual_cep_apr_ioctl_t +ual_cep_drep_ioctl_t +ual_cep_dreq_ioctl_t
+ual_cep_get_rtr_ioctl_t +ual_cep_get_rts_ioctl_t +ual_cep_get_timewait_ioctl_t +ual_cep_handoff_ioctl_t
+ual_cep_lap_ioctl_t +ual_cep_listen_ioctl_t +ual_cep_mra_ioctl_t +ual_cep_poll_ioctl_t
+ual_cep_rej_ioctl_t +ual_cep_rep_ioctl_t +ual_cep_rtu_ioctl_t +ual_ci_call_ioctl_t
+ual_close_ca_ioctl_t +ual_cm_req_ioctl_t +ual_create_av_ioctl_t +ual_create_cep_ioctl_t
+ual_create_cq_ioctl_t +ual_create_mw_ioctl_t +ual_create_qp_ioctl_t +ual_dealloc_pd_ioctl_t
+ual_dereg_mad_pool_ioctl_t +ual_dereg_mad_svc_ioctl_t +ual_dereg_mr_ioctl_t +ual_dereg_pnp_ioctl_t
+ual_destroy_av_ioctl_t +ual_destroy_cq_ioctl_t +ual_destroy_mw_ioctl_t +ual_destroy_qp_ioctl_t
+ual_detach_mcast_ioctl_t +ual_force_apm_ioctl_t +ual_get_uvp_name_t +ual_mad_recv_ioctl_t
+ual_modify_av_ioctl_t +ual_modify_ca_ioctl_t +ual_modify_cq_ioctl_t +ual_modify_qp_ioctl_t
+ual_open_ca_ioctl_t +ual_peek_cq_ioctl_t +ual_poll_cq_ioctl_t +ual_poll_pnp_ioctl_t
+ual_post_recv_ioctl_t +ual_post_send_ioctl_t +ual_query_av_ioctl_t +ual_query_ca_ioctl_t
+ual_query_cq_ioctl_t +ual_query_mr_ioctl_t +ual_query_mw_ioctl_t +ual_query_qp_ioctl_t
+ual_rearm_cq_ioctl_t +ual_rearm_n_cq_ioctl_t +ual_rearm_pnp_ioctl_in_t +ual_rearm_pnp_ioctl_out_t
+ual_reg_mad_pool_ioctl_t +ual_reg_mad_svc_ioctl_t +ual_reg_mem_ioctl_t +ual_reg_pnp_ioctl_in_t
+ual_reg_shared_ioctl_t +ual_reg_shmid_ioctl_t +ual_rereg_mem_ioctl_t +ual_send_mad_ioctl_t
+ual_send_sa_req_t +ual_spl_qp_ioctl_t +uvp_interface_t
+ + diff --git a/trunk/docs/robodoc.css b/trunk/docs/robodoc.css new file mode 100644 index 00000000..44ae2c54 --- /dev/null +++ b/trunk/docs/robodoc.css @@ -0,0 +1,36 @@ +body +{ + background-color: #ffffff; + color: #000000; + font-family: 'Lucida Grande', Verdana, + Geneva, Lucida, Arial, + Helvetica, sans-serif; + font-size: 10pt; + margin: 2% 5%; +} +h1, h2, h3, h4, h5, h6, h7 +{ + background-color: #dddddd; + color: #000000; + text-align: right; + font-size: 11pt; +} +td.even, td.uneven +{ + color: #000000; + font-size: 10pt; +} +td.even +{ + background-color: #eeeeee; +} +span.SOURCE +{ + white-space: pre; +} +pre +{ + background-color: #ffffff; + color: #000000; + font-size: 10pt; +} diff --git a/trunk/docs/user/iba/ib_uvp_h.html b/trunk/docs/user/iba/ib_uvp_h.html new file mode 100644 index 00000000..ce9a91a5 --- /dev/null +++ b/trunk/docs/user/iba/ib_uvp_h.html @@ -0,0 +1,2858 @@ + + + + +./inc_doc/user/iba/ib_uvp_h.html + + + + +Generated from ./inc/user/iba/ib_uvp.h with ROBODoc v4.99.22 on Sun Apr 16 2006 17:39:19 +
+
+ +

[Modules] +UAL_UVP_Interface/Overview user-mode Verbs

+ +

[top][index]

+

NAME

+
       User-mode Verbs -- User-mode Verbs implements the HCA specific
+       user-mode functions to plug in to the Usermode Access Layer
+       Architecture (UAL)
+
+

COPYRIGHT

+
       Copyright© 2001 Intel Corporation - All Rights Reserved.
+
+

DESCRIPTION

+
       The user-mode Verbs Interface defines the mechanism for a HCA vendor
+       to plug into the User-mode Access Layer (UAL) architecture.
+       Access Layer API is what is exposed to the user-mode applications.
+       The     interface described here is not Verbs API. In this interface model,
+       UAL provides a generic mechanism to exchange vendor specific info
+       in the implementation of verbs within the UAL architecture. UAL provides
+       the support for callback processing. For instance, AL provides a
+       QP error callback when a qp incurs error. Such asynchronous events are
+       handled with the support of UAL and not by the vendor interface described
+       here.
+
+       For verbs related AL APIs, UAL packages the parameters in an IOCTL
+       and sends it to the kernel AL. In the UAL design, this is broken down
+       into 3 steps.
+
+       a. Pre-ioctl step
+               A vendor specified pre-ioctl function is called with relevant input
+               parameters including a private buffer template (ci_umv_buf_t)
+               for the vendor to communicate with the corresponding HCA driver.
+               For calls that does not go to the HCA driver (for e.g. ib_open_ca())
+               no private buffer will be passed.
+       b. Sending IOCTL to kernel AL
+               Following step (a), UAL prepares an IOCTL with the relevant parameters
+               including the vendor's private buffer. UAL/user-mode proxy does not
+               interpret the contents of the private buffer.
+               UAL sends the IOCTL to the user-mode proxy in kernel. The proxy
+               interfaces with kernel AL to act on behalf the user. AL passes the
+               parameters to the Verbs Provider Driver and the results are returned
+               back to UAL.
+       c. Post-ioctl step.
+               Following the return from IOCTL in step (b), UAL calls a
+               vendor-specified post-ioctl function with relevant parameters.
+               UAL will call the post-ioctl function whether or not step (b)
+               succeeded. The ioctl itself could have successfully returned but
+               a vendor-specific status in ci_umv_buf_t may indicate a failure.
+               UAL also passes the ioctl status to the vendor library so that
+               the appropriate action can be taken in the post call.
+
+       Use of ci_umv_buf_t and pre/post return values
+
+               1. ci_umv_buf is provided by UAL as a unique buffer template for
+               a given verbs call. Vendor could keep any info relevant to
+               the specific verbs call in this buffer. This buffer is sufficient
+               for uniquely identifying which call it is intended for. For instance,
+               the umv buffer set up by vendor in a uvp_pre_create_qp() could later
+               tell the uvp_post_create_qp_t() which QP it is intended for.
+
+               2. The success of pre/post-ioctl step to UAL means IB_SUCCESS.
+               Any value other than IB_SUCCESS is treated as failure.
+
+               3. The Vendor could exchange a status in ci_umv_buf_t. However, this
+               interface does not enumerate the status in ci_umv_buf_t.
+               However, the vendor could check the status in ci_umv_buf_t
+               returned from the pre-ioctl     step and act accordingly.
+
+

AUTHOR

+
       Intel Corporation
+
+

CREATION DATE

+
       XX.XX.XX
+
+

NOTES

+
       1. For user mode verbs that require a kernel transition, handles passed
+       to kernel are validated in the  user-mode proxy running in kernel.
+       Those Verbs that are entirely done in user mode that would affect
+       speed path do not perform consistency checks. So invalid pointers
+       would lead to application crash with core dumps.
+
+
+
+ +

[Functions] +user-mode Verbs/unsupported functions

+ +

[top][index]

+

NAME

+
       1. Register physical memory region with HCA (ci_register_pmr)
+       2. Modify physical memory region with HCA (ci_modify_pmr)
+       3. Create Special QP    (ci_create_spl_qp)
+       4. Local Mad (ci_local_mad)
+
+       For all these functions, the vendor does NOT provide support
+       and UAL will return IB_UNSUPPORTED to the caller of Access Layer.
+
+

SYNOPSIS

+ +
+ +

[Functions] +user-mode Verbs/uvp_bind_mw

+ +

[top][index]

+

NAME

+
       uvp_bind_mw -- Bind a memory window to a memory region.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_bind_mw) (
+        IN              const   ib_mw_handle_t                          h_uvp_mw,
+        IN              const   ib_qp_handle_t                          h_uvp_qp,
+        IN                              ib_bind_wr_t                            *p_mw_bind,
+                OUT                     net32_t* const                          p_rkey );
+
+

DESCRIPTION

+
       This routine posts a request to bind a memory window to a registered
+       memory region. If the queue pair was created with selectable signaling,
+       once the operation is completed successfully then a completion queue entry
+       is generated indicating the bind operation has completed. The IB_POST_FENCE
+       option could be specified to cause the requestor to wait until outstanding
+       RDMA operations can be completed.
+
+

PARAMETERS

+
       h_uvp_mw
+               [in] Vendor's Handle (in user-mode library) to memory window
+               that needs to be bound to a memory region.
+       h_uvp_qp
+               [in] Vendor's QP Handle (in user-mode library) to which
+               this bind request is to be posted.
+       p_mw_bind
+               [in] Input parameters for this bind request, consisting of virtual
+               addr range of bind request etc. On successful completion, the new R_KEY
+               is returned.
+       p_rkey
+               [out] Current R_KEY associated with this mw_handle
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The memory bind operation was posted successfully.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete the request.
+               No more WQE's to post this request
+               No more free WQE's to post this request
+       IB_INVALID_MW_HANDLE
+               memw_handle supplied is an invalid memory window handle.
+       IB_INVALID_PERMISSION
+               Invalid access rights specified in request
+       IB_INVALID_SERVICE_TYPE
+               Invalid service type for this qp_handle.
+       IB_INVALID_PARAMETER
+               Address or length parameter specified is invalid.
+       IB_INVALID_RKEY
+               R_KEY specified is invalid for the memory region being bound.
+
+

PORTABILITY

+
       User mode.
+
+

SEE ALSO

+
       uvp_pre_create_mw, uvp_post_create_mw_t, uvp_pre_query_mw,
+       uvp_post_query_mw_t, uvp_pre_destroy_mw, uvp_post_destroy_mw_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_get_interface

+ +

[top][index]

+

NAME

+
       uvp_get_interface -- Get the Vendor's supported Verbs calls
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_get_interface_t)(
+        IN      OUT                     uvp_interface_t*        const   p_uvp );
+
+

DESCRIPTION

+
       This routine is called by UAL to get the functions supported by
+       a vendor's library. Upon discovering a new CA, UAL will look for
+       the appropriate vendor library, load the library and query using
+       this function to get the supported interfaces.
+
+       If the vendor does not support an interface function, it should be
+       set to NULL in the interface structure returned.
+
+

PARAMETERS

+
       p_uvp
+               [in out] Pointer to the uvp_interface_t structure that has the function
+               vector to support verbs functionality.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The registration is successful.
+       IB_INSUFFICIENT_MEMORY
+               Insufficient memory to satisfy request
+
+

PORTABILITY

+
       User mode
+
+

SEE ALSO

+
       uvp_interface_t
+
+
+
+ +

[Structures] +user-mode Verbs/uvp_interface_t

+ +

[top][index]

+

NAME

+
       uvp_interface_t -- Interface holding supported Vendor APIs
+
+

PURPOSE

+
       The following structure is supplied by a Vendor library
+       providing verbs functionality.
+
+

SOURCE

+
typedef struct _uvp_interface
+{
+        ib_net64_t                                      guid;
+        /*
+         * Version of the header file this interface export can handle
+         */
+        uint32_t                                        version;
+
+        /*
+         * HCA Access Verbs
+         */
+        uvp_pre_open_ca_t                       pre_open_ca;
+        uvp_post_open_ca_t                      post_open_ca;
+
+        uvp_pre_query_ca                        pre_query_ca;
+        uvp_post_query_ca_t                     post_query_ca;
+
+        uvp_pre_modify_ca                       pre_modify_ca;
+        uvp_post_modify_ca_t            post_modify_ca;
+
+        uvp_pre_close_ca_t                      pre_close_ca;
+        uvp_post_close_ca_t                     post_close_ca;
+
+        uvp_pre_ci_call                         pre_ci_call;
+        uvp_post_ci_call                        post_ci_call;
+
+
+        /*
+         * Protection Domain
+         */
+        uvp_pre_allocate_pd                     pre_allocate_pd;
+        uvp_post_allocate_pd_t          post_allocate_pd;
+        uvp_pre_deallocate_pd           pre_deallocate_pd;
+        uvp_post_deallocate_pd_t        post_deallocate_pd;
+
+        /*
+         * Address Vector Management Verbs
+         */
+
+        uvp_pre_create_av                       pre_create_av;
+        uvp_post_create_av_t            post_create_av;
+
+        uvp_pre_query_av                        pre_query_av;
+        uvp_post_query_av_t                     post_query_av;
+
+        uvp_pre_modify_av                       pre_modify_av;
+        uvp_post_modify_av_t            post_modify_av;
+        uvp_pre_destroy_av                      pre_destroy_av;
+        uvp_post_destroy_av_t           post_destroy_av;
+
+        /*
+         * QP Management Verbs
+         */
+        uvp_pre_create_qp                       pre_create_qp;
+        uvp_post_create_qp_t            post_create_qp;
+
+        /* No support for create_spl_qp, UAL will return error */
+
+        uvp_pre_modify_qp                       pre_modify_qp;
+        uvp_post_modify_qp_t            post_modify_qp;
+
+        uvp_pre_query_qp                        pre_query_qp;
+        uvp_post_query_qp_t                     post_query_qp;
+
+        uvp_pre_destroy_qp                      pre_destroy_qp;
+        uvp_post_destroy_qp_t           post_destroy_qp;
+
+        /*
+         * Completion Queue Management Verbs
+         */
+        uvp_pre_create_cq                       pre_create_cq;
+        uvp_post_create_cq_t            post_create_cq;
+
+        uvp_pre_query_cq                        pre_query_cq;
+        uvp_post_query_cq_t                     post_query_cq;
+
+        uvp_pre_resize_cq                       pre_resize_cq;
+        uvp_post_resize_cq_t            post_resize_cq;
+
+        uvp_pre_destroy_cq                      pre_destroy_cq;
+        uvp_post_destroy_cq_t           post_destroy_cq;
+
+        /*
+         * Memory Window Verbs
+         */
+        uvp_pre_create_mw                       pre_create_mw;
+        uvp_post_create_mw_t            post_create_mw;
+        uvp_pre_query_mw                        pre_query_mw;
+        uvp_post_query_mw_t                     post_query_mw;
+        uvp_pre_destroy_mw                      pre_destroy_mw;
+        uvp_post_destroy_mw_t           post_destroy_mw;
+
+        /* No pre/post functions for bind */
+        uvp_bind_mw                                     bind_mw;
+
+        /*
+         * Work Request Processing Verbs
+         * Should the types be same as Verbs?
+         */
+        uvp_post_send                           post_send;
+        uvp_post_recv                           post_recv;
+
+        /*
+         * Completion Processing and
+         * Completion Notification Request Verbs.
+         * Should the types be same as Verbs?
+         */
+        uvp_peek_cq                                     peek_cq;
+        uvp_poll_cq                                     poll_cq;
+        uvp_rearm_cq                            rearm_cq;
+        uvp_rearm_n_cq                          rearm_n_cq;
+
+        /*
+         * Multicast Support Verbs
+         */
+        uvp_pre_attach_mcast            pre_attach_mcast;
+        uvp_post_attach_mcast_t         post_attach_mcast;
+        uvp_pre_detach_mcast            pre_detach_mcast;
+        uvp_post_detach_mcast_t         post_detach_mcast;
+
+} uvp_interface_t;
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_peek_cq

+ +

[top][index]

+

NAME

+
       uvp_peek_cq
+
+

DESCRIPTION

+
       Returns the number of entries currently on the completion queue.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_peek_cq) (
+        IN              const   void*           __ptr64                 h_cq,
+                OUT                     uint32_t* const                         p_n_cqes );
+
+

PARAMETERS

+
       h_cq
+               [in] Type-cast as appropriate for user/kernel mode, this is the
+               CQ handle for the completion queue being peeked.
+
+       p_n_cqes
+               [out] Upon successful completion of this call, contains the number
+               of completion queue entries currently on the completion queue.
+
+ RETURN VALUES
+       IB_SUCCESS
+               The peek operation completed successfully.
+
+       IB_INVALID_CQ_HANDLE
+               The completion queue handle was invalid.
+
+       IB_INVALID_PARAMETER
+               A reference to the completion queue entry count was not provided.
+
+

PORTABILITY

+
       Kernel and User mode
+
+

SEE ALSO

+
       uvp_pre_create_cq, uvp_post_create_cq_t, uvp_poll_cq, uvp_rearm_cq,
+       uvp_rearm_n_cq
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_poll_cq

+ +

[top][index]

+

NAME

+
       uvp_poll_cq -- Retrieve a work completion record from a completion queue
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_poll_cq) (
+        IN              const   void*           __ptr64                 h_cq,
+        IN      OUT                     ib_wc_t**       const                   pp_free_wclist,
+                OUT                     ib_wc_t**       const                   pp_done_wclist );
+
+

DESCRIPTION

+
       This routine retrieves a work completion entry from the specified
+       completion queue. The contents of the data returned in a work completion
+       is specified in ib_wc_t.
+
+

PARAMETERS

+
       h_cq
+               [in] Type-cast as appropriate for user/kernel mode, this is
+               the CQ handle for the completion queue being polled.
+       pp_free_wclist
+               [in out] A list of work request structures provided by the consumer
+               for the channel interface to return completed Completion Queue
+               entries.  If not all the entries are consumed, this list holds the
+               list of un-utilized completion entries provided back to the consumer.
+       pp_done_wclist
+               [out] A list of work completions retrieved from the completion queue
+               and successfully processed.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               Poll completed successfully. If on completion the wc_free list is
+               empty, then there are potentially more entries and the consumer must
+               be ready to retrieve entries further.
+       IB_INVALID_CQ_HANDLE
+               The cq_handle supplied is not valid.
+       IB_NOT_FOUND
+               There are no more entries found in the specified CQ.
+
+

PORTABILITY

+
       Kernel & User mode.
+
+

SEE ALSO

+
       uvp_pre_create_cq, uvp_post_create_cq_t, uvp_rearm_cq,
+       uvp_rearm_n_cq, uvp_post_send, uvp_post_recv
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_allocate_pd_t

+ +

[top][index]

+

NAME

+
       uvp_post_allocate_pd_t -- Post-ioctl function to allocate PD
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_allocate_pd_t) (
+        IN                              ib_ca_handle_t                          h_uvp_ca,
+        IN                              ib_api_status_t                         ioctl_status,
+                OUT                     ib_pd_handle_t                          *ph_uvp_pd,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_allocate_pd_t() is implemented by vendor. It is the post-ioctl
+       routine for the AL call ib_alloc_pd().
+
+

PARAMETERS

+
       h_uvp_ca
+               [in] Vendor's user-mode library CA handle.
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       ph_uvp_pd
+               [out] The vendor library handle to the newly created protection domain.
+       p_umv_buf
+               [in] This contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_allocate_pd).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_allocate_pd, uvp_pre_deallocate_pd, uvp_post_deallocate_pd_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_attach_mcast_t

+ +

[top][index]

+

NAME

+
       uvp_post_attach_mcast_t -- Post-ioctl function to Attach a queue pair
+                                                        to a multicast group
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_attach_mcast_t) (
+        IN              const   ib_qp_handle_t                          h_uvp_qp,
+        IN                              ib_api_status_t                         ioctl_status,
+                OUT                     ib_mcast_handle_t                       *ph_mcast,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_attach_mcast_t() is the post-ioctl routine implemented by vendor
+       to attach a queue pair to a multicast group.
+
+

PARAMETERS

+
       h_uvp_qp
+               [in] Vendor's Queue pair handle (in user-mode library)
+               which needs to be added to
+               the multicast group on the adapter.
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       ph_mcast
+               [out] Vendor's Multicast handle (in user-mode library)
+               holding the association of this queue pair to the multicast group.
+       p_umv_buf
+               [in out] On input, it contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_attach_mcast)
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       Kernel & User mode.
+
+

SEE ALSO

+
       uvp_pre_create_qp, uvp_post_create_qp_t, uvp_pre_attach_mcast,
+       uvp_pre_detach_mcast, uvp_post_detach_mcast_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_ci_call

+ +

[top][index]

+

NAME

+
       uvp_post_ci_call -- Post-ioctl function to ib_ci_call
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_ci_call) (
+        IN              const   ib_ca_handle_t                          h_uvp_ca,
+        IN                              ib_api_status_t                         ioctl_status,
+        IN              const   void* __ptr64 *         const   handle_array    OPTIONAL,
+        IN                              uint32_t                                        num_handles,
+        IN                              ib_ci_op_t*                     const   p_ci_op,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf);
+
+

DESCRIPTION

+
       uvp_post_ci_call() is implemented by vendor. It is the pre-ioctl
+       routine for ib_ci_call().
+
+

PARAMETERS

+
       h_uvp_ca
+               [in] Vendor's user-mode library handle to the CA
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       handle_array
+               [in] An array of uvp handles.  For valid types, refer to ib_ci.h or
+               ib_al.h.  This is an optional parameter.
+       num_handles
+               [in] The number of handles in the array.
+       p_ci_op
+               [in] The operation that is requested by the client.  For more info,
+               refer ib_types.h
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_ci_call
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_close_ca_t

+ +

[top][index]

+

NAME

+
       uvp_post_close_ca_t -- Post-ioctl operation for user-mode ib_close_ca().
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_post_close_ca_t) (
+        IN                              ib_ca_handle_t                          h_uvp_ca,
+        IN                              ib_api_status_t                         ioctl_status );
+
+

DESCRIPTION

+
       uvp_post_close_ca_t() is implemented by vendor. It is the post-ioctl routine
+       for the AL call ib_close_ca().
+       UAL calls this function in the context of the asynchronous callback
+       from AL notifying the successful destruction of CA.
+
+

PARAMETERS

+
       h_uvp_ca
+               [in] Vendor's user-mode library handle to the open instance of the CA
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The post-ioctl for ib_close_ca() successfully completed.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_open_ca_t, uvp_post_open_ca_t, uvp_pre_query_ca, uvp_post_query_ca_t,
+       uvp_pre_modify_ca,      uvp_post_modify_ca_t, uvp_pre_close_ca_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_create_av_t

+ +

[top][index]

+

NAME

+
       uvp_post_create_av_t -- Post-ioctl function to create AV
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_create_av_t) (
+        IN              const   ib_pd_handle_t                          h_uvp_pd,
+        IN                              ib_api_status_t                         ioctl_status,
+                OUT                     ib_av_handle_t                          *ph_uvp_av,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_create_av_t() is implemented by vendor. It is the post-ioctl routine
+       for ib_create_av().
+
+

PARAMETERS

+
       h_uvp_pd
+               [in] Vendor's user-mode library handle to the Protection domain
+               to which this AV is associated
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       ph_uvp_av
+               [out] Vendor's address vector handle.
+       p_umv_buf
+               [in] On input, it contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_create_av).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_create_av, uvp_pre_query_av, uvp_post_query_av_t, uvp_pre_modify_av,
+       uvp_post_modify_av_t, uvp_pre_destroy_av, uvp_post_destroy_av_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_create_cq_t

+ +

[top][index]

+

NAME

+
       uvp_post_create_cq_t -- Post-ioctl function to Create a completion queue (CQ)
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_create_cq_t) (
+        IN              const   ib_ca_handle_t                          h_uvp_ca,
+        IN                              ib_api_status_t                         ioctl_status,
+        IN              const   uint32_t                                        size,
+                OUT                     ib_cq_handle_t                          *ph_uvp_cq,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_create_cq_t() is implemented by vendor to create CQ.
+       It is the post-ioctl routine for ib_create_cq().
+
+

PARAMETERS

+
       h_uvp_pd
+               [in] Vendor's handle to an existing protection domain (in user-mode
+               library)
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       size
+               [in] size of the CQ that was created by the provider.
+               If VPD created the CQ in kernel, this is the value as set by
+               VPD. If UVP creates the CQ in user-mode, then uvp already knows
+               the size of the CQ in the pre-ioctl.
+       ph_uvp_cq
+               [out] Vendor's Handle to the newly created CQ (in user-mode library).
+       p_umv_buf
+               [in out] On input, it contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_create_cq).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User mode.
+
+

SEE ALSO

+
       uvp_pre_create_cq, uvp_pre_resize_cq, uvp_post_resize_cq_t,
+       uvp_pre_query_cq, uvp_post_query_cq_t, uvp_pre_destroy_cq,
+       uvp_post_destroy_cq_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_create_mw_t

+ +

[top][index]

+

NAME

+
       uvp_post_create_mw_t -- Post-ioctl function to create a memory window
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_create_mw_t) (
+        IN              const   ib_pd_handle_t                          h_uvp_pd,
+        IN                              ib_api_status_t                         ioctl_status,
+        IN                              net32_t                                         rkey,
+                OUT                     ib_mw_handle_t                          *ph_uvp_mw,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_create_mw_t() is implemented by vendor. It is the post-ioctl routine
+       for ib_create_mw().
+
+

PARAMETERS

+
       h_uvp_pd
+               [in] Vendor's Protection domain handle (in user-mode library)
+               to use for this memory window
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       p_rkey
+               [in] Remote access key that can be exchanged with a remote node to
+               perform RDMA transactions on this memory window.
+       ph_uvp_mw
+               [out] Vendor's Handle (in user-mode library) to the newly created
+               memory window.
+       p_umv_buf
+               [in out] On input, it contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_create_mw).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return an error.
+
+

PORTABILITY

+
       User mode
+
+

SEE ALSO

+
       uvp_pre_create_mw, uvp_pre_query_mw, uvp_post_query_mw_t,
+       uvp_bind_mw, uvp_pre_destroy_mw, uvp_post_destroy_mw_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_create_qp_t

+ +

[top][index]

+

NAME

+
       uvp_post_create_qp_t -- Post-ioctl function to Create a Queue Pair.
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_create_qp_t) (
+        IN              const   ib_pd_handle_t                          h_uvp_pd,
+        IN                              ib_api_status_t                         ioctl_status,
+                OUT                     ib_qp_handle_t                          *ph_uvp_qp,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_create_qp_t() is implemented by vendor. It is the post-ioctl routine
+       for ib_create_qp().
+
+

PARAMETERS

+
       h_uvp_pd
+               [in] Vendor's Protection domain handle in user-mode library.
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       ph_uvp_qp
+               [out] Vendor's QP handle for the newly created QP (in user-mode
+               library).
+       p_umv_buf
+               [in out] On input, it contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_create_qp).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_create_qp, uvp_pre_query_qp, uvp_post_query_qp_t, uvp_pre_modify_qp,
+       uvp_post_modify_qp_t, uvp_pre_destroy_qp, uvp_post_destroy_qp_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_deallocate_pd_t

+ +

[top][index]

+

NAME

+
       uvp_post_deallocate_pd_t -- Post-ioctl function to deallocate PD
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_deallocate_pd_t) (
+        IN              const   ib_pd_handle_t                          h_uvp_pd,
+        IN                              ib_api_status_t                         ioctl_status );
+
+

DESCRIPTION

+
       uvp_post_deallocate_pd_t() is implemented by the vendor. It is the
+       post-ioctl routine for the AL call ib_dealloc_pd().
+
+       When all the resouces associated with a PD are destroyed,
+       UAL invokes this post-ioctl routine to deallocate PD. Since the
+       completion of the resource deallocation (e.g QP/CQ) is asynchronous,
+       this function is called from a UAL asynchronous callback
+       processing thread.
+
+

PARAMETERS

+
       h_uvp_pd
+               [in] Vendor's user-mode library PD handle.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_allocate_pd, uvp_post_allocate_pd_t, uvp_pre_deallocate_pd
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_destroy_av_t

+ +

[top][index]

+

NAME

+
       uvp_post_destroy_av_t -- Post-ioctl function to destroy AV
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_destroy_av_t) (
+        IN              const   ib_av_handle_t                          h_uvp_av,
+        IN                              ib_api_status_t                         ioctl_status );
+
+

DESCRIPTION

+
       uvp_post_destroy_av_t() is implemented by vendor. It is the post-ioctl
+       routine for ib_destroy_av().
+
+

PARAMETERS

+
       h_uvp_av
+               [in] Vendor's AV handle in user-mode library.
+       p_umv_buf
+               [in out]
+               On input, it contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_destroy_av).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_create_av, uvp_post_create_av_t, uvp_pre_query_av, uvp_post_query_av_t,
+       uvp_pre_modify_av, uvp_post_modify_av_t, uvp_pre_destroy_av
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_destroy_cq_t

+ +

[top][index]

+

NAME

+
       uvp_post_destroy_cq_t -- Post-ioctl function to Destroy a CQ.
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_destroy_cq_t) (
+        IN              const   ib_cq_handle_t                          h_uvp_cq,
+        IN                              ib_api_status_t                         ioctl_status );
+
+

DESCRIPTION

+
       uvp_post_destroy_cq_t() is implemented by vendor to destroy CQ.
+       It is the post-ioctl routine for ib_destroy_cq().
+       UAL invokes this post-ioctl routine to destroy CQ when it receives
+       asynchronous notification from the user-mode proxy.
+
+

PARAMETERS

+
       h_uvp_cq
+               [in] Vendor's Handle to the cq (in user-mode library)
+               that needs to be destroyed.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User mode.
+
+

SEE ALSO

+
       uvp_pre_create_cq, uvp_post_create_cq_t, uvp_pre_resize_cq,
+       uvp_post_resize_cq_t, uvp_pre_query_cq, uvp_post_query_cq_t,
+       uvp_pre_destroy_cq
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_destroy_mw_t

+ +

[top][index]

+

NAME

+
       uvp_post_destroy_mw_t -- Post-ioctl function to destroy a memory window
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_destroy_mw_t) (
+        IN              const   ib_mw_handle_t                          h_uvp_mw,
+        IN                              ib_api_status_t                         ioctl_status );
+
+

DESCRIPTION

+
       uvp_post_destroy_mw_t() is implemented by vendor. It is the post-ioctl
+       routine to destroy a memory window.
+
+

PARAMETERS

+
       h_uvp_mw
+               [in] Vendor's handle to the memory window
+
+

RETURN VALUE

+
       IB_SUCCESS
+               Destroy operation successful.
+
+

PORTABILITY

+
       User mode
+
+

SEE ALSO

+
       uvp_pre_create_mw, uvp_post_create_mw_t, uvp_pre_query_mw,
+       uvp_post_query_mw_t, uvp_bind_mw, uvp_pre_destroy_mw
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_destroy_qp_t

+ +

[top][index]

+

NAME

+
       uvp_post_destroy_qp_t -- Post-ioctl function to Destroy a Queue Pair.
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_destroy_qp_t) (
+        IN              const   ib_qp_handle_t                          h_uvp_qp,
+        IN                              ib_api_status_t                         ioctl_status );
+
+

DESCRIPTION

+
       uvp_post_destroy_qp_t() is implemented by vendor. It is the post-ioctl
+       routine for ib_destroy_qp().
+       UAL invokes this post-ioctl routine to destroy QP when it receives
+       asynchronous notification from the user-mode proxy in kernel.
+
+

PARAMETERS

+
       h_uvp_qp
+               [in] Vendor's Handle to the qp (in user-mode library)
+               that needs to be destroyed.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The post-ioctl call is successful.
+
+

PORTABILITY

+
       User mode.
+
+

SEE ALSO

+
       uvp_pre_create_qp, uvp_post_create_qp_t, uvp_pre_query_qp, uvp_post_query_qp_t,
+       uvp_pre_modify_qp, uvp_post_modify_qp_t, uvp_pre_destroy_qp
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_detach_mcast_t

+ +

[top][index]

+

NAME

+
       uvp_post_detach_mcast_t -- Post-ioctl function to detach a queue pair
+                                                        from a multicast group
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_detach_mcast_t) (
+        IN                              ib_mcast_handle_t                       h_uvp_mcast,
+        IN                              ib_api_status_t                         ioctl_status );
+
+

DESCRIPTION

+
       uvp_post_detach_mcast_t() is the post-ioctl routine implemented by vendor
+       to attach a queue pair to a multicast group.
+
+

PARAMETERS

+
       h_uvp_mcast
+               [out] Vendor's Multicast handle holding the association of this
+               queue pair to the multicast group.
+       ioctl_status
+               [in] The ioctl status of the AL API.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       Kernel & User mode.
+
+

SEE ALSO

+
       uvp_pre_create_qp, uvp_post_create_qp_t, uvp_pre_attach_mcast,
+       uvp_post_attach_mcast_t, uvp_pre_detach_mcast
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_modify_av_t

+ +

[top][index]

+

NAME

+
       uvp_post_modify_av_t -- Post-ioctl function to modify AV
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_modify_av_t) (
+        IN              const   ib_av_handle_t                          h_uvp_av,
+        IN                              ib_api_status_t                         ioctl_status,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_modify_av_t() is implemented by vendor to modify the attributes
+       of AV. It is the post-ioctl routine for ib_modify_av().
+
+

PARAMETERS

+
       h_uvp_av
+               [in] Vendor's av handle in user-mode library.
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       p_umv_buf
+               [in out] On input, it contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_modify_av).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_create_av, uvp_post_create_av_t, uvp_pre_query_av, uvp_post_query_av_t,
+       uvp_pre_modify_av, uvp_pre_destroy_av, uvp_post_destroy_av_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_modify_ca_t

+ +

[top][index]

+

NAME

+
       uvp_post_modify_ca_t -- Post-ioctl operation for user-mode ib_modify_ca()
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_modify_ca_t) (
+        IN                              ib_ca_handle_t                          h_uvp_ca,
+        IN                              ib_api_status_t                         ioctl_status );
+
+

DESCRIPTION

+
       uvp_post_modify_ca_t() is implemented by vendor. It is the post-ioctl routine
+       for the AL call ib_modify_ca() in user-mode.
+
+

PARAMETERS

+
       h_uvp_ca
+               [in] Vendor's user-mode library handle to the open instance of the CA
+       ioctl_status
+               [in] The ioctl status of the AL API.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_open_ca_t, uvp_post_open_ca_t, uvp_pre_query_ca, uvp_post_query_ca_t,
+       uvp_pre_modify_ca,      uvp_pre_close_ca_t, uvp_post_close_ca_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_modify_qp_t

+ +

[top][index]

+

NAME

+
       uvp_post_modify_qp_t -- Post-ioctl function to Modify attributes of
+                                                 the specified QP.
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_modify_qp_t) (
+        IN              const   ib_qp_handle_t                          h_uvp_qp,
+        IN                              ib_api_status_t                         ioctl_status,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_modify_qp_t() is implemented by vendor to modify the qp attributes.
+       It is the post-ioctl routine for ib_modify_qp().
+
+

PARAMETERS

+
       h_uvp_qp
+               [in] Vendor's qp Handle to the queue pair (in user-mode library)
+               whose state is modified.
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       p_umv_buf
+               [in out] On input, it contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_modify_qp).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User mode
+
+

SEE ALSO

+
       uvp_pre_create_qp, uvp_post_create_qp_t, uvp_pre_query_qp, uvp_post_query_qp_t,
+       uvp_pre_modify_qp, uvp_pre_destroy_qp, uvp_post_destroy_qp_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_open_ca_t

+ +

[top][index]

+

NAME

+
       uvp_post_open_ca_t -- Post-ioctl operation for user-mode ib_open_ca()
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_post_open_ca_t) (
+        IN              const   ib_net64_t                                      ca_guid,
+        IN                              ib_api_status_t                         ioctl_status,
+                OUT                     ib_ca_handle_t                          *ph_uvp_ca,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_open_ca_t() is implemented by vendor. It is the post-ioctl routine
+       for the AL call ib_open_ca() in user-mode.
+
+

PARAMETERS

+
       ca_guid
+               [in] The HCA adapter's EUI64 identifier.
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       ph_uvp_ca
+               [out] Pointer to vendor's handle to the newly opened instance of
+               the CA.
+       p_umv_buf
+               [in] This contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_open_ca).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The HCA is return handle is valid.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to satisfy request.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_open_ca_t, uvp_pre_query_ca, uvp_post_query_ca_t, uvp_pre_modify_ca,
+       uvp_post_modify_ca_t,   uvp_pre_close_ca_t, uvp_post_close_ca_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_query_av_t

+ +

[top][index]

+

NAME

+
       Vendor-specific post-ioctl operation for user-mode ib_query_ca()
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_query_av_t) (
+        IN              const   ib_av_handle_t                          h_uvp_av,
+        IN                              ib_api_status_t                         ioctl_status,
+        IN      OUT                     ib_av_attr_t                            *p_addr_vector,
+        IN      OUT                     ib_pd_handle_t                          *ph_pd,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_query_av_t() is implemented by vendor. It is the post-ioctl routine
+       for the AL call ib_query_av() in user-mode.
+       UAL provides the results of the query to the vendor library in this
+       post-ioctl routine.
+
+

PARAMETERS

+
       h_uvp_av
+               [in] Vendor's handle to the address vector in user-mode library
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       p_addr_vector
+               [in out] AV attribute (as returned by the ioctl).
+       ph_pd
+               [out] The vendor library PD handle associated with this AV.
+       p_umv_buf
+               [in]
+               On input, it contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_query_av).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_create_av, uvp_post_create_av_t, uvp_pre_query_av, uvp_pre_modify_av,
+       uvp_post_modify_av_t, uvp_pre_destroy_av, uvp_post_destroy_av_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_query_ca_t

+ +

[top][index]

+

NAME

+
       uvp_post_query_ca_t -- Post-ioctl operation for user-mode ib_query_ca()
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_query_ca_t) (
+        IN                              ib_ca_handle_t                          h_uvp_ca,
+        IN                              ib_api_status_t                         ioctl_status,
+        IN                              ib_ca_attr_t                            *p_ca_attr,
+        IN                              size_t                                          byte_count,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_query_ca_t() is implemented by vendor. It is the post-ioctl routine
+       for the AL call ib_query_ca() in user-mode. UAL provides the results
+       of querying the CA attributes to the vendor's post-ioctl routine.
+
+

PARAMETERS

+
       h_uvp_ca
+               [in] Vendor's user-mode library handle to the open instance of the CA
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       p_ca_attr
+               [in] CA attribute of this Host Channel adapter (as returned by
+               from ioctl to kernel AL).
+       byte_count
+               [in] Number of bytes in ca_attr buffer.
+       p_umv_buf
+               [in ] This contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_query_ca).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_open_ca_t, uvp_post_open_ca_t, uvp_pre_query_ca, uvp_pre_modify_ca,
+       uvp_post_modify_ca_t,   uvp_pre_close_ca_t, uvp_post_close_ca_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_query_cq_t

+ +

[top][index]

+

NAME

+
       uvp_post_query_cq_t -- Post-ioctl to Query the number of entries
+                                                configured for the CQ.
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_query_cq_t) (
+        IN              const   ib_cq_handle_t                          h_uvp_cq,
+        IN                              ib_api_status_t                         ioctl_status,
+        IN              const   uint32_t                                        size,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_query_cq_t() is implemented by vendor to query CQ.
+       It is the post-ioctl routine for ib_query_cq().
+
+

PARAMETERS

+
       h_uvp_cq
+               [in] Vendor's Handle to the already created CQ (in user-mode library).
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       size
+               [in] The size of the CQ retuned by the IOCTL.
+       p_umv_buf
+               [in out] On input, it contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_query_cq).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User mode.
+
+

SEE ALSO

+
       uvp_pre_create_cq, uvp_post_create_cq_t, uvp_pre_resize_cq,
+       uvp_post_resize_cq_t, uvp_pre_query_cq, uvp_pre_destroy_cq,
+       uvp_post_destroy_cq_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_query_mw_t

+ +

[top][index]

+

NAME

+
       uvp_post_query_mw_t -- Post-ioctl to Query a memory window
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_query_mw_t) (
+        IN              const   ib_mw_handle_t                          h_uvp_mw,
+        IN                              ib_api_status_t                         ioctl_status,
+        IN                              net32_t                                         rkey,
+                OUT                     ib_pd_handle_t                          *ph_pd,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_query_mw_t is implemented by vendor. It is the post-ioctl routine
+       for ib_query_mw().
+
+

PARAMETERS

+
       h_uvp_mw
+               [in] Vendor's  Memory window handle (in user-mode library)
+               whose attributes are being retrieved.
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       rkey
+               [in] Current R_KEY associated with this mw_handle
+       ph_pd
+               [in] Protection domain handle associated with this mw_handle
+       p_umv_buf
+               [in out] On input, it contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_query_mw).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The query operation completed successfully.
+
+

PORTABILITY

+
       User mode
+
+

SEE ALSO

+
       uvp_pre_create_mw, uvp_post_create_mw_t, uvp_pre_query_mw,
+       uvp_bind_mw, uvp_pre_destroy_mw, uvp_post_destroy_mw_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_query_qp_t

+ +

[top][index]

+

NAME

+
       uvp_post_query_qp_t -- Post-ioctl operation for user-mode ib_query_qp()
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_query_qp_t) (
+        IN                              ib_qp_handle_t                          h_uvp_qp,
+        IN                              ib_api_status_t                         ioctl_status,
+        IN                              ib_qp_attr_t                            *p_query_attr,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_query_qp_t() is implemented by vendor. It is the post-ioctl routine
+       for ib_query_qp().
+       UAL provides the results of the query to the vendor library in this
+       post-ioctl routine.
+
+

PARAMETERS

+
       h_uvp_qp
+               [in] Vendor's handle to the QP (in user-mode library).
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       p_query_attr
+               [in] QP attribute as returned by the ioctl.
+       p_umv_buf
+               [in out] On input, it contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_query_qp).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_create_qp, uvp_post_create_qp_t, uvp_pre_query_qp, uvp_pre_modify_qp,
+       uvp_post_modify_qp_t, uvp_pre_destroy_qp, uvp_post_destroy_qp_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_recv

+ +

[top][index]

+

NAME

+
       uvp_post_recv -- Post a work request to the receive queue of a queue pair.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_post_recv) (
+        IN              const   void* __ptr64                           h_qp,
+        IN                              ib_recv_wr_t*   const           p_recv_wr,
+                OUT                     ib_recv_wr_t**                          pp_recv_failure );
+
+

DESCRIPTION

+
       This routine allows to queue a work request to the receive side of a
+       queue pair. The work_req holds necessary data to satisfy an incoming
+       receive message. If an attempt is made to queue more work requests than
+       what is available, an error is returned.
+
+

PARAMETERS

+
       h_qp
+               [in] Type-cast as appropriate for user/kernel mode, this is
+               the Queue pair handle to which the receive work request is being
+               posted.
+       p_recv_wr
+               [in] List of recv work requests that needs to be posted.
+       pp_recv_failure
+               [out] The work requests that failed.
+
+

RETURN VALUE

+
       Any unsuccessful status indicates the status of the first failed request.
+
+       IB_SUCCESS
+               The work request was successfully queued to the receive side of the QP.
+       IB_INVALID_QP_HANDLE
+               qp_handle supplied is not valid.
+       IB_INSUFFICIENT_RESOURCES
+               The qp has exceeded its receive queue depth than what is has been
+               configured.
+       IB_INVALID_WR_TYPE
+               Invalid work request type found in the request.
+       IB_INVALID_QP_STATE
+               QP was in reset or init state.
+               (TBD: there may be an errata that allows posting in init state)
+
+

PORTABILITY

+
       Kernel & User mode.
+
+

SEE ALSO

+
       uvp_post_send, uvp_poll_cq
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_resize_cq_t

+ +

[top][index]

+

NAME

+
       uvp_post_resize_cq_t -- Post-ioctl function to resize a CQ.
+
+

SYNOPSIS

+
typedef void
+(AL_API *uvp_post_resize_cq_t) (
+        IN              const   ib_cq_handle_t                          h_uvp_cq,
+        IN                              ib_api_status_t                         ioctl_status,
+        IN              const   uint32_t                                        size,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_post_resize_cq_t() is implemented by vendor to resize the CQ.
+       It is the post-ioctl routine for ib_resize_cq().
+
+

PARAMETERS

+
       h_uvp_cq
+               [in] Vendor's Handle to the already created CQ (in user-mode library).
+       ioctl_status
+               [in] The ioctl status of the AL API.
+       size
+               [in] size of the CQ that was created by the provider.
+               If VPD resized the CQ in kernel, this is the value as set by
+               VPD. If UVP resizes the CQ in user-mode, then uvp already knows
+               the size of the CQ in the pre-ioctl.
+       p_umv_buf
+               [in out] On input, it contains any vendor-specific private information
+               exchanged with the vendor's Verbs Provider Driver (uvp_pre_resize_cq).
+               Vendor is expected to check vendor-specific status in
+               umv_buf as appropriate.
+
+

RETURN VALUE

+
       This function does not return a value.
+
+

PORTABILITY

+
       User mode.
+
+

SEE ALSO

+
       uvp_pre_create_cq, uvp_post_create_cq_t, uvp_pre_resize_cq,
+       uvp_pre_query_cq, uvp_post_query_cq_t, uvp_pre_destroy_cq,
+       uvp_post_destroy_cq_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_post_send

+ +

[top][index]

+

NAME

+
       uvp_post_send -- Post a work request to the send side of a queue pair.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_post_send) (
+        IN              const   void*           __ptr64                 h_qp,
+        IN                              ib_send_wr_t*   const           p_send_wr,
+                OUT                     ib_send_wr_t**                          pp_send_failure );
+
+

DESCRIPTION

+
       This routine posts a work request to the send side of the queue pair.
+       The different types of work request that can be posted are explained in
+       the ib_wr_t structure. For exact details on ordering rules please consult
+       the Volume 1, of the InfiniBand Specifications. If there is more
+       outstanding requests posted that what the queue is configured for, an
+       immediate error is returned.
+
+

PARAMETERS

+
       h_qp
+               [in] Type-cast as appropriate for user/kernel mode, this is
+               the Queue pair handle to which the receive work request is being
+               posted.
+       p_send_wr
+               [in] List of work requests that needs to be send.
+       pp_send_failure
+               [out] The work requests that failed.
+
+

RETURN VALUE

+
       Any unsuccessful status indicates the status of the first failed request.
+
+       IB_SUCCESS
+               All the work requests are completed successfully
+       IB_INVALID_QP_HANDLE
+               The qp_handle supplied is invalid.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete the request.
+               There are no more work elements in the channel interface to
+               process this request, and the total outstanding work request has
+               been exceeded.
+       IB_INVALID_WR_TYPE
+               The work request type was not valid.
+       IB_INVALID_QP_STATE
+               The queue pair is either in Reset, Init, RTR or Error state.
+       IB_INVALID_MAX_SGE
+               The work request has too many scatter gather elements than what the
+               QP is configured.
+       IB_UNSUPPORTED
+               Atomics or Reliable datagram request is not supported by this HCA.
+       IB_INVALID_ADDR_HANDLE
+               Address handle supplied in the work request is invalid.
+
+

PORTABILITY

+
       Kernel & User mode.
+
+

NOTES

+
       Please refer to Table 81 and Table 82 for allowed operation types
+       on different types of queue pairs, and the different modifiers
+       acceptable for the work request for different QP service types.
+
+

SEE ALSO

+
       uvp_post_recv, uvp_poll_cq
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_allocate_pd

+ +

[top][index]

+

NAME

+
       uvp_pre_allocate_pd -- Pre-ioctl function to allocate PD
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_allocate_pd) (
+        IN                              ib_ca_handle_t                          h_uvp_ca,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_allocate_pd() is implemented by vendor. It is the pre-ioctl routine
+       for the AL call ib_alloc_pd() in user-mode.
+
+

PARAMETERS

+
       h_uvp_ca
+               [in] Vendor's user-mode library handle to the open instance of the CA
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl call is successful.
+       IB_INVALID_CA_HANDLE
+               CA handle is invalid.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources in Vendor library to complete the call
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_post_allocate_pd_t, uvp_pre_deallocate_pd, uvp_post_deallocate_pd_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_attach_mcast

+ +

[top][index]

+

NAME

+
       uvp_pre_attach_mcast -- Pre-ioctl function to Attach a queue pair
+                                                       to a multicast group
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_attach_mcast) (
+        IN              const   ib_qp_handle_t                          h_uvp_qp,
+        IN              const   ib_gid_t                                        *p_mcast_gid,
+        IN              const   uint16_t                                        mcast_lid,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_attach_mcast() is the pre-ioctl routine implemented by vendor
+       to attach a queue pair to a multicast group.
+
+

PARAMETERS

+
       h_uvp_qp
+               [in] Vendor's Queue pair handle (in user-mode library)
+               which needs to be added to the multicast group on the adapter.
+       mcast_lid
+               [in] The multicast group LID value.
+       p_mcast_gid
+               [in] IPv6 address associated with this multicast group.
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The queue pair handle was successfully added to the multicast
+               group.
+       IB_INVALID_QP_HANDLE
+               qp_handle supplied is invalid.
+       IB_INVALID_SERVICE_TYPE
+               Queue pair handle supplied is not of unreliable datagram type.
+       IB_INVALID_GID
+               The supplied addr is not a valid multicast ipv6 address.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete the request.
+
+

PORTABILITY

+
       User mode.
+
+

SEE ALSO

+
       uvp_pre_create_qp, uvp_post_create_qp_t, uvp_post_attach_mcast_t,
+       uvp_pre_detach_mcast, uvp_post_detach_mcast_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_ci_call

+ +

[top][index]

+

NAME

+
       uvp_pre_ci_call -- Pre-ioctl function to ib_ci_call
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_ci_call) (
+        IN              const   ib_ca_handle_t                          h_uvp_ca,
+        IN              const   void* __ptr64 *         const   handle_array    OPTIONAL,
+        IN                              uint32_t                                        num_handles,
+        IN                              ib_ci_op_t*                     const   p_ci_op,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf);
+
+

DESCRIPTION

+
       uvp_pre_ci_call() is implemented by vendor. It is the pre-ioctl
+       routine for ib_ci_call().
+
+

PARAMETERS

+
       h_uvp_ca
+               [in] Vendor's user-mode library handle to the CA
+       handle_array
+               [in] An array of uvp handles.  For valid types, refer to ib_ci.h or
+               ib_al.h.  This is an optional parameter.
+       num_handles
+               [in] The number of handles in the array.
+       p_ci_op
+               [in] The operation that is requested by the client.  For more info,
+               refer ib_types.h
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl is successful.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources in Vendor library to complete the call
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_post_ci_call
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_close_ca_t

+ +

[top][index]

+

NAME

+
       uvp_pre_close_ca_t -- Pre-ioctl operation for user-mode ib_close_ca().
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_close_ca_t) (
+        IN                              ib_ca_handle_t                          h_uvp_ca );
+
+

DESCRIPTION

+
       uvp_pre_close_ca_t() is implemented by vendor. It is the pre-ioctl routine
+       for the AL call ib_close_ca() in user-mode.
+
+

PARAMETERS

+
       h_uvp_ca
+               [in] Vendor's user-mode library handle to the open instance of the CA
+
+

RETURN VALUE

+
       IB_SUCCESS
+               Successfully completed the pre-ioctl.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_open_ca_t, uvp_post_open_ca_t, uvp_pre_query_ca, uvp_post_query_ca_t,
+       uvp_pre_modify_ca,      uvp_post_modify_ca_t, uvp_post_close_ca_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_create_av

+ +

[top][index]

+

NAME

+
       uvp_pre_create_av -- Pre-ioctl function to create AV
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_create_av) (
+        IN              const   ib_pd_handle_t                          h_uvp_pd,
+        IN              const   ib_av_attr_t                            *p_addr_vector,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf);
+
+

DESCRIPTION

+
       uvp_pre_create_av() is implemented by vendor. It is the pre-ioctl
+       routine for ib_create_av().
+
+

PARAMETERS

+
       h_uvp_pd
+               [in] Vendor's user-mode library handle to the Protection domain
+               to which this AV is associated.
+       p_addr_vector
+               [in] Parameters to create the address vector.
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl is successful.
+       IB_INVALID_SETTING
+               Values in the vector is not valid
+       IB_INVALID_PD_HANDLE
+               The PD handle is invalid.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources in Vendor library to complete the call
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_post_create_av_t, uvp_pre_query_av, uvp_post_query_av_t, uvp_pre_modify_av,
+       uvp_post_modify_av_t, uvp_pre_destroy_av, uvp_post_destroy_av_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_create_cq

+ +

[top][index]

+

NAME

+
       uvp_pre_create_cq -- Pre-ioctl function to Create a completion queue (CQ)
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_create_cq) (
+        IN              const   ib_ca_handle_t                          h_uvp_ca,
+        IN      OUT                     uint32_t*                       const   p_size,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_create_cq() is implemented by vendor. It is the pre-ioctl routine
+       for ib_create_cq().
+
+

PARAMETERS

+
       h_uvp_pd
+               [in] Vendor's handle to an existing protection domain (in user-mode
+               library)
+       p_size
+               [in out] Points to a variable containing the number of CQ entries
+               requested by the consumer.
+               On return,  points to the size of the CQ that was created
+               by the provider.
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The operation was successful.
+       IB_INVALID_PD_HANDLE
+               The h_uvp_pd passed is invalid.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete request.
+       IB_INVALID_CQ_SIZE
+               Requested CQ Size is not supported.
+
+

PORTABILITY

+
       User mode.
+
+

SEE ALSO

+
       uvp_post_create_cq_t, uvp_pre_resize_cq, uvp_post_resize_cq_t,
+       uvp_pre_query_cq, uvp_post_query_cq_t, uvp_pre_destroy_cq,
+       uvp_post_destroy_cq_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_create_mw

+ +

[top][index]

+

NAME

+
       uvp_pre_create_mw -- Pre-ioctl function to create a memory window
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_create_mw) (
+        IN              const   ib_pd_handle_t                          h_uvp_pd,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_create_mw() is implemented by vendor. It is the pre-ioctl routine
+       for ib_create_mw().
+
+

PARAMETERS

+
       h_uvp_pd
+               [in] Vendor's Protection domain handle (in user-mode library)
+               to use for this memory window
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The memory window allocation completed successfully.
+       IB_INSUFFICIENT_RESOURCES
+               Not enough resources to complete the request.
+       IB_INVALID_PD_HANDLE
+               pd_handle supplied is invalid.
+
+

PORTABILITY

+
       User mode
+
+

SEE ALSO

+
       uvp_post_create_mw_t, uvp_pre_query_mw, uvp_post_query_mw_t,
+       uvp_bind_mw, uvp_pre_destroy_mw, uvp_post_destroy_mw_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_create_qp

+ +

[top][index]

+

NAME

+
       uvp_pre_create_qp -- Pre-ioctl function to Create a Queue Pair.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_create_qp) (
+        IN              const   ib_pd_handle_t                          h_uvp_pd,
+        IN              const   ib_qp_create_t                          *p_create_attr,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_create_qp() is implemented by vendor. It is the pre-ioctl routine
+       for ib_create_qp().
+
+

PARAMETERS

+
       h_uvp_pd
+               [in] Vendor's Protection domain handle in user-mode library.
+       p_create_attr
+               [in] Initial attributes with which the qp must be created.
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl call is successful.
+       IB_INVALID_PD_HANDLE
+               The PD handle is invalid.
+       IB_INVALID_CQ_HANDLE
+               The send or receive completion queue to associate with the queue pair
+               is invalid.
+       IB_UNSUPPORTED
+               The specified queue pair type was not supported by the channel adapter.
+       IB_INVALID_MAX_WRS
+               The requested maximum send or receive work request depth could not be
+               supported.
+       IB_INVALID_MAX_SGE
+               The requested maximum number of scatter-gather entries for the send or
+               receive queue could not be supported.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources in Vendor library to complete the call.
+       IB_INVALID_PARAMETER
+               At least one parameter is invalid.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_post_create_qp_t, uvp_pre_query_qp, uvp_post_query_qp_t, uvp_pre_modify_qp,
+       uvp_post_modify_qp_t, uvp_pre_destroy_qp, uvp_post_destroy_qp_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_deallocate_pd

+ +

[top][index]

+

NAME

+
       uvp_pre_deallocate_pd -- Pre-ioctl function to deallocate PD
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_deallocate_pd) (
+        IN              const   ib_pd_handle_t                          h_uvp_pd );
+
+

DESCRIPTION

+
       uvp_pre_deallocate_pd() is implemented by vendor. It is the pre-ioctl
+       routine for the AL call ib_deallocate_pd().
+
+

PARAMETERS

+
       h_uvp_pd
+               [in] Vendor's user-mode library PD handle.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl call is successful.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_allocate_pd, uvp_post_allocate_pd_t, uvp_post_deallocate_pd_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_destroy_av

+ +

[top][index]

+

NAME

+
       uvp_pre_destroy_av -- Pre-ioctl function to destroy AV
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_destroy_av) (
+        IN              const   ib_av_handle_t                          h_uvp_av );
+
+

DESCRIPTION

+
       uvp_pre_destroy_av() is implemented by vendor to destroy the AV.
+       It is the pre-ioctl routine for ib_destroy_av().
+
+

PARAMETERS

+
       h_uvp_av
+               [in] Vendor's AV handle in user-mode library.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl is successful.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_create_av, uvp_post_create_av_t, uvp_pre_query_av, uvp_post_query_av_t,
+       uvp_pre_modify_av, uvp_post_modify_av_t, uvp_post_destroy_av_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_destroy_cq

+ +

[top][index]

+

NAME

+
       uvp_pre_destroy_cq -- Pre-ioctl function to Destroy a CQ.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_destroy_cq) (
+        IN              const   ib_cq_handle_t                          h_uvp_cq );
+
+

DESCRIPTION

+
       uvp_pre_destroy_cq() is implemented by vendor to destroy CQ.
+       It is the pre-ioctl routine for ib_destroy_cq().
+
+

PARAMETERS

+
       h_uvp_cq
+               [in] Vendor's Handle to the cq (in user-mode library)
+               that needs to be destroyed.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl call is successful.
+
+

PORTABILITY

+
       User mode.
+
+

SEE ALSO

+
       uvp_pre_create_cq, uvp_post_create_cq_t, uvp_pre_resize_cq,
+       uvp_post_resize_cq_t, uvp_pre_query_cq, uvp_post_query_cq_t,
+       uvp_post_destroy_cq_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_destroy_mw

+ +

[top][index]

+

NAME

+
       uvp_pre_destroy_mw -- Pre-ioctl function to destroy a memory window
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_destroy_mw) (
+        IN              const   ib_mw_handle_t                          h_uvp_mw );
+
+

DESCRIPTION

+
       uvp_pre_destroy_mw() is implemented by vendor. It is the pre-ioctl routine
+       for ib_destroy_mw().
+
+

PARAMETERS

+
       h_uvp_mw
+               [in] Vendor's handle (in user-mode library) to the memory window
+
+

RETURN VALUE

+
       IB_SUCCESS
+               Pre-ioctl succeeded.
+
+

PORTABILITY

+
       User mode
+
+

SEE ALSO

+
       uvp_pre_create_mw, uvp_post_create_mw_t, uvp_pre_query_mw,
+       uvp_post_query_mw_t, uvp_bind_mw, uvp_post_destroy_mw_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_destroy_qp

+ +

[top][index]

+

NAME

+
       uvp_pre_destroy_qp -- Pre-ioctl function to Destroy a Queue Pair.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_destroy_qp) (
+        IN              const   ib_qp_handle_t                          h_uvp_qp );
+
+

DESCRIPTION

+
       uvp_pre_destroy_qp() is the pre-ioctl routine implemented by vendor
+       to destroy QP.
+       UAL invokes this pre-ioctl routine to destroy QP.
+       The vendor is expected to perform any preliminary steps in preparation
+       for destroying the QP and perform any book-keeping.
+
+

PARAMETERS

+
       h_uvp_qp
+               [in] Vendor's Handle to the qp (in user-mode library)
+               that needs to be destroyed.
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl call is successful.
+
+

PORTABILITY

+
       User mode.
+
+

SEE ALSO

+
       uvp_pre_create_qp, uvp_post_create_qp_t, uvp_pre_query_qp, uvp_post_query_qp_t,
+       uvp_pre_modify_qp, uvp_post_modify_qp_t, uvp_post_destroy_qp_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_detach_mcast

+ +

[top][index]

+

NAME

+
       uvp_pre_detach_mcast -- Pre-ioctl function to detach a queue pair
+                                                       to a multicast group
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_detach_mcast) (
+        IN                              ib_mcast_handle_t                       h_uvp_mcast );
+
+

DESCRIPTION

+
       uvp_pre_attach_mcast() is the pre-ioctl routine implemented by vendor
+       to attach a queue pair to a multicast group.
+       Upon return from the pre-ioctl function, UAL packages up the UMV buffer
+       in an IOCTL and passes it on to the user-mode proxy. UAL passes the
+       info to the user-mode proxy stating that it no longer wishes to receive
+       callback for mcast join for the caller.  Note that UAL takes care of
+       handling callbcak.
+
+

PARAMETERS

+
       h_uvp_mcast
+               [in] Vendor's Multicast handle (in user-mode library)
+               holding the association of this queue pair to the multicast group.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The queue pair handle was successfully added to the multicast
+               group.
+
+

PORTABILITY

+
       Kernel & User mode.
+
+

SEE ALSO

+
       uvp_pre_create_qp, uvp_post_create_qp_t, uvp_pre_attach_mcast,
+       uvp_post_attach_mcast_t, uvp_post_detach_mcast_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_modify_av

+ +

[top][index]

+

NAME

+
       uvp_pre_modify_av -- Pre-ioctl function to modify AV
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_modify_av) (
+        IN              const   ib_av_handle_t                          h_uvp_av,
+        IN              const   ib_av_attr_t                            *p_addr_vector,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_modify_av() is implemented by vendor. It is the pre-ioctl routine
+       for ib_modify_av().
+
+

PARAMETERS

+
       h_uvp_av
+               [in] Vendor's AV handle in user-mode library.
+       p_addr_vector
+               [in] Parameters to modify the address vector handle
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl is successful.
+       IB_INVALID_SETTING
+               Values in the vector is not valid.
+       IB_INVALID_AV_HANDLE
+               The AV handle is invalid.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources in Vendor library to complete the call.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_create_av, uvp_post_create_av_t, uvp_pre_query_av, uvp_post_query_av_t,
+       uvp_post_modify_av_t, uvp_pre_destroy_av, uvp_post_destroy_av_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_modify_ca

+ +

[top][index]

+

NAME

+
       uvp_pre_modify_ca -- Pre-ioctl operation for user-mode ib_modify_ca()
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_modify_ca) (
+        IN                              ib_ca_handle_t                          h_uvp_ca,
+        IN                              uint8_t                                         port_num,
+        IN                              ib_ca_mod_t                                     ca_mod,
+        IN              const   ib_port_attr_mod_t* const       p_port_attr_mod );
+
+

DESCRIPTION

+
       uvp_pre_modify_ca() is implemented by vendor. It is the pre-ioctl routine
+       for the AL call ib_modify_ca() in user-mode.
+
+

PARAMETERS

+
       h_uvp_ca
+               [in] Vendor's user-mode library handle to the open instance of the CA
+       port_num
+               [in] An index to the port that is being modified.  The port_num matches
+               the index of the port as returned through the ib_query_ca call.
+       ca_mod
+               [in] A mask of the attributes and counters to modify.
+       p_port_attr_mod
+               [in] A list of the specific port attribute information to modify.  For
+               the access layer to modify an attribute, its corresponding bit must be
+               set in the ca_mod parameter.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl function succeeded.
+       IB_INVALID_CA_HANDLE
+               CA handle is invalid.
+       IB_INVALID_PARAMETER
+               One or more parameters is invalid.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_open_ca_t, uvp_post_open_ca_t, uvp_pre_query_ca, uvp_post_query_ca_t,
+       uvp_post_modify_ca_t,   uvp_pre_close_ca_t, uvp_post_close_ca_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_modify_qp

+ +

[top][index]

+

NAME

+
       uvp_pre_modify_qp -- Pre-ioctl function to Modify attributes of the
+                                                specified QP.
+
+

SYNOPSIS

+
*/
+
+typedef ib_api_status_t
+(AL_API *uvp_pre_modify_qp) (
+        IN              const   ib_qp_handle_t                          h_uvp_qp,
+        IN              const   ib_qp_mod_t                                     *p_modify_attr,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_modify_qp() is implemented by vendor to modify the attributes of a
+       QP. It is the pre-ioctl routine for ib_modify_qp().
+
+

PARAMETERS

+
       h_uvp_qp
+               [in] Vendor's qp Handle to the queue pair (in user-mode library)
+               whose state is to be modified.
+       p_modify_attr
+               [in] Specifies what attributes need to be modified in the qp.
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl call is successful.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete the requested operation.
+       IB_INVALID_QP_HANDLE
+               Invalid QP handle.
+       IB_UNSUPPORTED
+               Requested operation is not supported, for e.g. Atomic operations.
+       IB_QP_INVALID_STATE
+               Invalid state transition request. Current QP state not in allowable
+               state.
+       IB_INVALID_PKEY
+               Pkey specified in modify request not valid entry in P_KEY table. Or
+               index is out of range.
+       IB_INVALID_PMIG_STATE
+               Invalid path migration state specified in the request.
+
+

PORTABILITY

+
       User mode
+
+

SEE ALSO

+
       uvp_pre_create_qp, uvp_post_create_qp_t, uvp_pre_query_qp, uvp_post_query_qp_t,
+       uvp_post_modify_qp_t, uvp_pre_destroy_qp, uvp_post_destroy_qp_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_open_ca_t

+ +

[top][index]

+

NAME

+
       uvp_pre_open_ca_t -- Pre-ioctl operation for user-mode ib_open_ca()
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_open_ca_t) (
+        IN              const   ib_net64_t                                      ca_guid,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_open_ca_t() is implemented by vendor. It is the pre-ioctl routine
+       for the AL call ib_open_ca() in user-mode.
+
+

PARAMETERS

+
       ca_guid
+               [in] The HCA adapter's EUI64 identifier. Clients would use other
+               enumeration API's to locate all available adapters and their
+               guids in a system, e.g. GetCaGuids(), maintained by the IB
+               Access Layer.
+
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains any vendor-specific
+               record to be exchanged with the vendor's HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl function succeeded.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to satisfy request.
+       IB_INVALID_PARAMETER
+               Invalid GUID.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_post_open_ca_t, uvp_pre_query_ca, uvp_post_query_ca_t, uvp_pre_modify_ca,
+       uvp_post_modify_ca_t,   uvp_pre_close_ca_t, uvp_post_close_ca_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_query_av

+ +

[top][index]

+

NAME

+
       uvp_pre_query_av -- Pre-ioctl operation for ib_query_ca()
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_query_av) (
+        IN              const   ib_av_handle_t                          h_uvp_av,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_query_av() is implemented by vendor. It is the pre-ioctl routine
+       for the AL call ib_query_av() in user-mode.
+
+

PARAMETERS

+
       h_uvp_av
+               [in] Vendor's handle to the address vector in user-mode library
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl function succeeded.
+       IB_INVALID_AV_HANDLE
+               AV handle was invalid
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources in Vendor library to complete the call.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_create_av, uvp_post_create_av_t, uvp_post_query_av_t, uvp_pre_modify_av,
+       uvp_post_modify_av_t, uvp_pre_destroy_av, uvp_post_destroy_av_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_query_ca

+ +

[top][index]

+

NAME

+
       uvp_pre_query_ca -- Pre-ioctl operation for user-mode ib_query_ca()
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_query_ca) (
+        IN                              ib_ca_handle_t                          h_uvp_ca,
+        IN                              ib_ca_attr_t                            *p_ca_attr,
+        IN                              size_t                                          byte_count,
+        IN                              ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_query_ca() is implemented by vendor. It is the pre-ioctl routine
+       for the AL call ib_query_ca() in user-mode.
+
+

PARAMETERS

+
       h_uvp_ca
+               [in] Vendor's user-mode library handle to the open instance of the CA
+       p_ca_attr
+               [in] Pointer to the user's CA attribute buffer.
+       byte_count
+               [in] User-supplied size of the CA attribute buffer.
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains any vendor-specific
+               record to be exchanged with the vendor's HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl function succeeded.
+       IB_INVALID_CA_HANDLE
+               CA handle is invalid
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to satisfy request.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_open_ca_t, uvp_post_open_ca_t, uvp_post_query_ca_t, uvp_pre_modify_ca,
+       uvp_post_modify_ca_t,   uvp_pre_close_ca_t, uvp_post_close_ca_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_query_cq

+ +

[top][index]

+

NAME

+
       uvp_pre_query_cq -- Pre-ioctl to Query the number of entries
+                                               configured for the CQ.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_query_cq) (
+        IN              const   ib_cq_handle_t                          h_uvp_cq,
+        IN      OUT                     uint32_t* const                         p_size,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_query_cq() is implemented by vendor. It is the pre-ioctl routine
+       for ib_query_cq().
+       Can we always go to the kernel to query even if it is created
+       in vendor library in user-mode?
+
+

PARAMETERS

+
       h_uvp_cq
+               [in] Vendor's Handle to the already created CQ (in user-mode library).
+
+       p_size
+               [out] Size of the CQ if processing ends in user-mode.
+
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The operation was successful.
+       IB_INVALID_CQ_HANDLE
+               The CQ handle is invalid.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources in Vendor library to complete the call.
+       IB_VERBS_PROCESSING_DONE
+               The UVP fully processed the request.  The post_query_cq handler
+               will not be invoked.
+
+

PORTABILITY

+
       User mode.
+
+

SEE ALSO

+
       uvp_pre_create_cq, uvp_post_create_cq_t, uvp_pre_resize_cq,
+       uvp_post_resize_cq_t, uvp_post_query_cq_t, uvp_pre_destroy_cq,
+       uvp_post_destroy_cq_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_query_mw

+ +

[top][index]

+

NAME

+
       uvp_pre_query_mw -- Pre-ioctl to Query a memory window
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_query_mw) (
+        IN              const   ib_mw_handle_t                          h_uvp_mw,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_query_mw is implemented by vendor. It is the pre-ioctl routine
+       for ib_query_mw().
+
+

PARAMETERS

+
       h_uvp_mw
+               [in] Vendor's  Memory window handle (in user-mode library)
+               whose attributes are being retrieved.
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl call completed successfully.
+       IB_INVALID_MW_HANDLE
+               mw_handle supplied is an invalid handle.
+       IB_INSUFFICIENT_RESOURCES
+               Not enough resources to complete the request.
+
+

PORTABILITY

+
       User mode
+
+

SEE ALSO

+
       uvp_pre_create_mw, uvp_post_create_mw_t, uvp_post_query_mw_t,
+       uvp_bind_mw, uvp_pre_destroy_mw, uvp_post_destroy_mw_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_query_qp

+ +

[top][index]

+

NAME

+
       uvp_pre_query_qp -- Pre-ioctl function to Query the attributes of the QP
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_query_qp) (
+        IN                              ib_qp_handle_t                          h_uvp_qp,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_query_qp() is implemented by vendor. It is the pre-ioctl routine
+       for the AL call ib_query_qp().
+
+

PARAMETERS

+
       h_uvp_qp
+               [in] Vendor's handle to the QP (in user-mode library).
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The pre-ioctl function succeeded.
+       IB_INVALID_QP_HANDLE
+               QP handle is invalid
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources in Vendor library to complete the call.
+
+

PORTABILITY

+
       User Mode
+
+

SEE ALSO

+
       uvp_pre_create_qp, uvp_post_create_qp_t, uvp_post_query_qp_t, uvp_pre_modify_qp,
+       uvp_post_modify_qp_t, uvp_pre_destroy_qp, uvp_post_destroy_qp_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_pre_resize_cq

+ +

[top][index]

+

NAME

+
       uvp_pre_resize_cq -- Pre-ioctl function to resize a CQ.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_pre_resize_cq) (
+        IN              const   ib_cq_handle_t                          h_uvp_cq,
+        IN      OUT                     uint32_t*                       const   p_size,
+        IN      OUT                     ci_umv_buf_t                            *p_umv_buf );
+
+

DESCRIPTION

+
       uvp_pre_resize_cq() is implemented by vendor to resize the CQ.
+       It is the pre-ioctl routine for ib_resize_cq().
+
+

PARAMETERS

+
       h_uvp_cq
+               [in] Vendor's Handle to the already created CQ (in user-mode library).
+       p_size
+               [in out] On input, points to a variable containing the number
+               of CQ entries requested by the consumer.
+               On completion points to the size of the CQ that was resized by
+               the provider.
+       p_umv_buf
+               [in out] On input, UAL provides this buffer template.
+               On return from this function, p_umv_buf contains
+               any vendor-specific record to be exchanged with the vendor's
+               HCA driver.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The operation was successful.
+       IB_INVALID_CQ_HANDLE
+               The CQ handle is invalid.
+       IB_INSUFFICIENT_RESOURCES
+               Insufficient resources to complete request.
+       IB_INVALID_CQ_SIZE
+               Requested CQ Size is not supported.
+       IB_OVERFLOW
+               The CQ has more entries than the resize request. The CQ is not
+               modified, and old entries still exist.
+
+

PORTABILITY

+
       User mode.
+
+

SEE ALSO

+
       uvp_pre_create_cq, uvp_post_create_cq_t, uvp_post_resize_cq_t,
+       uvp_pre_query_cq, uvp_post_query_cq_t, uvp_pre_destroy_cq,
+       uvp_post_destroy_cq_t
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_rearm_cq

+ +

[top][index]

+

NAME

+
       uvp_rearm_cq -- Invoke the Completion handler, on next entry added.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_rearm_cq) (
+        IN              const   void*           __ptr64                 h_cq,
+        IN              const   boolean_t                                       solicited );
+
+

DESCRIPTION

+
       This routine instructs the channel interface to invoke the completion
+       handler when the next completion queue entry is added to this CQ.
+       Please refer to Volume 1, of the InfiniBand specification for a complete
+       description.
+
+

PARAMETERS

+
       h_cq
+               [in] Type-cast as appropriate for user/kernel mode, this is the
+               CQ handle for the completion queue being armed.
+       solicited
+               [in] A boolean flag indicating whether the request is to generate a
+               notification on the next entry or on the next solicited entry
+               being added to the completion queue.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The notification request was registered successfully.
+       IB_INVALID_CQ_HANDLE
+               cq_handle supplied is not a valid handle.
+
+

PORTABILITY

+
       Kernel and User mode
+
+

SEE ALSO

+
       uvp_pre_create_cq, uvp_post_create_cq_t, uvp_peek_cq, uvp_poll_cq,
+       uvp_rearm_n_cq
+
+
+
+ +

[Functions] +user-mode Verbs/uvp_rearm_n_cq

+ +

[top][index]

+

NAME

+
       uvp_rearm_n_cq -- Invoke the Completion handler, when next
+       N completions have been added to this CQ.
+
+

SYNOPSIS

+
typedef ib_api_status_t
+(AL_API *uvp_rearm_n_cq) (
+        IN              const   void*           __ptr64                 h_cq,
+        IN              const   uint32_t                                        n_cqes );
+
+

DESCRIPTION

+
       This routine instructs the channel interface to invoke the completion
+       handler when the next N completions are added to this CQ.
+
+

PARAMETERS

+
       h_cq
+               [in] Type-cast as appropriate for user/kernel mode, this is the
+               CQ handle for the completion queue being armed.
+       n_cqes
+               [in] The number of completion queue entries to be added to the
+               completion queue before notifying the client.  This value must
+               greater than or equal to one and less than or equal to the size
+               of the completion queue.
+
+

RETURN VALUE

+
       IB_SUCCESS
+               The notification request was registered successfully.
+       IB_INVALID_CQ_HANDLE
+               cq_handle supplied is not a valid handle.
+       IB_INVALID_PARAMETER
+               The requested number of completion queue entries was invalid.
+
+

PORTABILITY

+
       Kernel and User mode
+
+

SEE ALSO

+
       uvp_pre_create_cq, uvp_post_create_cq_t, uvp_peek_cq, uvp_poll_cq,
+       uvp_rearm_cq
+
+
+ +