summaryrefslogtreecommitdiff
path: root/ndb/src/external/WIN32.x86/sci/include/sisci_api.h
diff options
context:
space:
mode:
Diffstat (limited to 'ndb/src/external/WIN32.x86/sci/include/sisci_api.h')
-rw-r--r--ndb/src/external/WIN32.x86/sci/include/sisci_api.h2217
1 files changed, 2217 insertions, 0 deletions
diff --git a/ndb/src/external/WIN32.x86/sci/include/sisci_api.h b/ndb/src/external/WIN32.x86/sci/include/sisci_api.h
new file mode 100644
index 00000000000..9f4a1ddffb3
--- /dev/null
+++ b/ndb/src/external/WIN32.x86/sci/include/sisci_api.h
@@ -0,0 +1,2217 @@
+/* $Id: sisci_api.h,v 1.1 2002/12/13 12:17:23 hin Exp $ */
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2001 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU Lesser General Public License as published by *
+ * the Free Software Foundation; either version 2.1 of the License, *
+ * or (at your option) any later version. *
+ * *
+ * This program is distributed in the hope that it will be useful, *
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of *
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
+ * GNU General Public License for more details. *
+ * *
+ * You should have received a copy of the GNU Lesser General Public License *
+ * along with this program; if not, write to the Free Software *
+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *
+ * *
+ * *
+ *******************************************************************************/
+
+#ifndef _SISCI_API_H
+#define _SISCI_API_H
+
+#include "sisci_types.h"
+#include "sisci_error.h"
+
+
+#ifdef WIN32
+#ifdef API_DLL
+#define DLL __declspec(dllexport)
+#elif CLIENT_DLL
+#define DLL __declspec(dllimport)
+#endif
+#endif /* WIN32 */
+
+
+#ifndef DLL
+#define DLL
+#endif
+
+#if defined(_REENTRANT)
+#define _SISCI_EXPANDE_FUNCTION_NAME(name) _SISCI_PUBLIC_FUNC_MT_ ## name
+#define _SISCI_EXPANDE_VARIABLE_NAME(name) _SISCI_PUBLIC_VAR_MT_ ## name
+#else
+#define _SISCI_EXPANDE_FUNCTION_NAME(name) _SISCI_PUBLIC_FUNC_ST_ ## name
+#define _SISCI_EXPANDE_VARIABLE_NAME(name) _SISCI_PUBLIC_VAR_ST_ ## name
+#endif
+#define _SISCI_EXPANDE_CONSTANT_NAME(name) _SISCI_PUBLIC_CONST_ ## name
+
+#if defined(CPLUSPLUS) || defined(__cplusplus)
+extern "C" {
+#endif
+
+
+/*********************************************************************************/
+/* FLAG VALUES */
+/*********************************************************************************/
+
+#define SCI_FLAG_FIXED_INTNO _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_FIXED_INTNO)
+extern const unsigned int SCI_FLAG_FIXED_INTNO;
+
+#define SCI_FLAG_SHARED_INT _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_SHARED_INT)
+extern const unsigned int SCI_FLAG_SHARED_INT;
+
+#define SCI_FLAG_COUNTING_INT _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_COUNTING_INT)
+extern const unsigned int SCI_FLAG_COUNTING_INT;
+
+#define SCI_FLAG_FIXED_MAP_ADDR _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_FIXED_MAP_ADDR)
+extern const unsigned int SCI_FLAG_FIXED_MAP_ADDR;
+
+#define SCI_FLAG_READONLY_MAP _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_READONLY_MAP)
+extern const unsigned int SCI_FLAG_READONLY_MAP;
+
+#define SCI_FLAG_USE_CALLBACK _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_USE_CALLBACK)
+extern const unsigned int SCI_FLAG_USE_CALLBACK;
+
+#define SCI_FLAG_BLOCK_READ _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_BLOCK_READ)
+extern const unsigned int SCI_FLAG_BLOCK_READ;
+
+#define SCI_FLAG_THREAD_SAFE _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_THREAD_SAFE)
+extern const unsigned int SCI_FLAG_THREAD_SAFE;
+
+#define SCI_FLAG_ASYNCHRONOUS_CONNECT _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_ASYNCHRONOUS_CONNECT)
+extern const unsigned int SCI_FLAG_ASYNCHRONOUS_CONNECT;
+
+#define SCI_FLAG_EMPTY _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_EMPTY)
+extern const unsigned int SCI_FLAG_EMPTY;
+
+#define SCI_FLAG_PRIVATE _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_PRIVATE)
+extern const unsigned int SCI_FLAG_PRIVATE;
+
+#define SCI_FLAG_FORCE_DISCONNECT _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_FORCE_DISCONNECT)
+extern const unsigned int SCI_FLAG_FORCE_DISCONNECT;
+
+#define SCI_FLAG_NOTIFY _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_NOTIFY)
+extern const unsigned int SCI_FLAG_NOTIFY;
+
+#define SCI_FLAG_DMA_READ _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_DMA_READ)
+extern const unsigned int SCI_FLAG_DMA_READ;
+
+#define SCI_FLAG_DMA_POST _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_DMA_POST)
+extern const unsigned int SCI_FLAG_DMA_POST;
+
+#define SCI_FLAG_DMA_WAIT _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_DMA_WAIT)
+extern const unsigned int SCI_FLAG_DMA_WAIT;
+
+#define SCI_FLAG_DMA_RESET _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_DMA_RESET)
+extern const unsigned int SCI_FLAG_DMA_RESET;
+
+#define SCI_FLAG_NO_FLUSH _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_NO_FLUSH)
+extern const unsigned int SCI_FLAG_NO_FLUSH;
+
+#define SCI_FLAG_NO_STORE_BARRIER _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_NO_STORE_BARRIER)
+extern const unsigned int SCI_FLAG_NO_STORE_BARRIER;
+
+#define SCI_FLAG_FAST_BARRIER _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_FAST_BARRIER)
+extern const unsigned int SCI_FLAG_FAST_BARRIER;
+
+#define SCI_FLAG_ERROR_CHECK _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_ERROR_CHECK)
+extern const unsigned int SCI_FLAG_ERROR_CHECK;
+
+#define SCI_FLAG_FLUSH_CPU_BUFFERS_ONLY _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_FLUSH_CPU_BUFFERS_ONLY)
+extern const unsigned int SCI_FLAG_FLUSH_CPU_BUFFERS_ONLY;
+
+/* the FLUSH_CPU_BUFFERS_ONLY flag is for backwards compabillity only and should never be used */
+#define FLUSH_CPU_BUFFERS_ONLY _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_FLUSH_CPU_BUFFERS_ONLY)
+
+#define SCI_FLAG_LOCK_OPERATION _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_LOCK_OPERATION)
+extern const unsigned int SCI_FLAG_LOCK_OPERATION;
+
+#define SCI_FLAG_READ_PREFETCH_AGGR_HOLD_MAP _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_READ_PREFETCH_AGGR_HOLD_MAP)
+extern const unsigned int SCI_FLAG_READ_PREFETCH_AGGR_HOLD_MAP;
+
+#define SCI_FLAG_READ_PREFETCH_NO_HOLD_MAP _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_READ_PREFETCH_NO_HOLD_MAP)
+extern const unsigned int SCI_FLAG_READ_PREFETCH_NO_HOLD_MAP;
+
+#define SCI_FLAG_IO_MAP_IOSPACE _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_IO_MAP_IOSPACE)
+extern const unsigned int SCI_FLAG_IO_MAP_IOSPACE;
+
+#define SCI_FLAG_DMOVE_MAP _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_DMOVE_MAP)
+extern const unsigned int SCI_FLAG_DMOVE_MAP;
+
+#define SCI_FLAG_WRITES_DISABLE_GATHER_MAP _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_WRITES_DISABLE_GATHER_MAP)
+extern const unsigned int SCI_FLAG_WRITES_DISABLE_GATHER_MAP;
+
+#define SCI_FLAG_DISABLE_128_BYTES_PACKETS _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_DISABLE_128_BYTES_PACKETS)
+extern const unsigned int SCI_FLAG_DISABLE_128_BYTES_PACKETS;
+
+#define SCI_FLAG_SHARED_MAP _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_SHARED_MAP)
+extern const unsigned int SCI_FLAG_SHARED_MAP;
+
+#define SCI_FLAG_DMA_SOURCE_ONLY _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_DMA_SOURCE_ONLY)
+extern const unsigned int SCI_FLAG_DMA_SOURCE_ONLY;
+
+#define SCI_FLAG_CONDITIONAL_INTERRUPT _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_CONDITIONAL_INTERRUPT)
+extern const unsigned int SCI_FLAG_CONDITIONAL_INTERRUPT;
+
+#define SCI_FLAG_CONDITIONAL_INTERRUPT_MAP _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_CONDITIONAL_INTERRUPT_MAP)
+extern const unsigned int SCI_FLAG_CONDITIONAL_INTERRUPT_MAP;
+
+#define SCI_FLAG_UNCONDITIONAL_DATA_INTERRUPT_MAP _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_UNCONDITIONAL_DATA_INTERRUPT_MAP)
+extern const unsigned int SCI_FLAG_UNCONDITIONAL_DATA_INTERRUPT_MAP;
+
+#define SCI_FLAG_NO_MEMORY_LOOPBACK_MAP _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_NO_MEMORY_LOOPBACK_MAP)
+extern const unsigned int SCI_FLAG_NO_MEMORY_LOOPBACK_MAP;
+
+#if defined(OS_IS_LYNXOS) || defined(OS_IS_VXWORKS)
+#define SCI_FLAG_WRITE_BACK_CACHE_MAP _SISCI_EXPANDE_CONSTANT_NAME(WRITE_BACK_CACHE_MAP)
+extern const unsigned int SCI_FLAG_WRITE_BACK_CACHE_MAP;
+#endif
+
+#define SCI_FLAG_DMA_PHDMA _SISCI_EXPANDE_CONSTANT_NAME(SCI_FLAG_DMA_PHDMA)
+extern const unsigned int SCI_FLAG_DMA_PHDMA;
+
+/*********************************************************************************/
+/* GENERAL VALUES */
+/*********************************************************************************/
+#define SCI_LOCAL_HOST _SISCI_EXPANDE_CONSTANT_NAME(SCI_LOCAL_HOST)
+extern const unsigned int SCI_LOCAL_HOST;
+
+#define SCI_INFINITE_TIMEOUT _SISCI_EXPANDE_CONSTANT_NAME(SCI_INFINITE_TIMEOUT)
+extern const unsigned int SCI_INFINITE_TIMEOUT;
+
+/*********************************************************************************/
+/* GENERAL ERROR CODES */
+/* */
+/* SCI_ERR_ILLEGAL_FLAG - Illegal flag value. */
+/* SCI_ERR_FLAG_NOT_IMPLEMENTED - Flag legal but flag feature not implemented. */
+/* SCI_ERR_NOT_IMPLEMENTED - Function not implemented. */
+/* SCI_ERR_SYSTEM - A system error. Check errno. */
+/* SCI_ERR_NOSPC - Unable to allocate OS resources. */
+/* SCI_ERR_API_NOSPC - Unable to allocate API resources. */
+/* SCI_ERR_HW_NOSPC - Unable to allocate HW resources (Hardware) */
+/* */
+/*********************************************************************************/
+
+
+/*********************************************************************************/
+/* GENERAL "ADAPTER" ERROR CODES */
+/* */
+/* SCI_ERR_NO_SUCH_ADAPTERNO - Adapter number is legal but does not exist. */
+/* SCI_ERR_ILLEGAL_ADAPTERNO - Illegal local adapter number (i.e. outside */
+/* legal range). */
+/* */
+/*********************************************************************************/
+
+
+/*********************************************************************************/
+/* GENERAL "NODEID" ERROR CODES */
+/* */
+/* SCI_ERR_NO_SUCH_NODEID - The remote adapter identified by nodeId does */
+/* not respond, but the intermediate link(s) */
+/* seem(s) to be operational. */
+/* SCI_ERR_ILLEGAL_NODEID - Illegal NodeId. */
+/* */
+/*********************************************************************************/
+
+
+
+/*********************************************************************************
+ * *
+ * S C I I N I T I A L I Z E *
+ * *
+ * This function initializes the SISCI library. *
+ * The function must be called before SCIOpen(). *
+ * *
+ * Flags: *
+ * None *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * None *
+ * *
+ *********************************************************************************/
+#define SCIInitialize _SISCI_EXPANDE_FUNCTION_NAME(SCIInitialize)
+DLL void SCIInitialize(unsigned int flags,
+ sci_error_t *error);
+#if 0
+unsigned int __Internal_SISCI_version_var;
+#endif
+
+/*********************************************************************************
+ * *
+ * S C I T E R M I N A T E *
+ * *
+ * This function terminates the SISCI library. *
+ * The function must be called after SCIClose(). *
+ * *
+ * *
+ *********************************************************************************/
+#define SCITerminate _SISCI_EXPANDE_FUNCTION_NAME(SCITerminate)
+DLL void SCITerminate(void);
+
+/*********************************************************************************
+ * *
+ * S C I O P E N *
+ * *
+ * *
+ * Opens a SCI virtual device. *
+ * Caller must supply a pointer to a variable of type sci_desc_t to be *
+ * initialized. *
+ * *
+ * Flags *
+ * SCI_FLAG_THREAD_SAFE - Operations on resources associated with this *
+ * descriptor will be performed in a multithread-safe *
+ * manner. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_INCONSISTENT_VERSIONS - Inconsistency between the SISCI library *
+ * and the SISCI driver versions. *
+ * *
+ * *
+ *********************************************************************************/
+#define SCIOpen _SISCI_EXPANDE_FUNCTION_NAME(SCIOpen)
+DLL void SCIOpen(sci_desc_t *sd,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I C L O S E *
+ * *
+ * This function closes an open SCI virtual device. *
+ * *
+ * Flags: *
+ * None *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_BUSY - All resources are not deallocated. *
+ * *
+ *********************************************************************************/
+#define SCIClose _SISCI_EXPANDE_FUNCTION_NAME(SCIClose)
+DLL void SCIClose(sci_desc_t sd,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I C O N N E C T S E G M E N T *
+ * *
+ * Connects to a remote shared memory segment located at <nodeId> with the *
+ * identifier <segmentId>. *
+ * The user may then call SCIMapRemoteSegment() to map shared memory *
+ * into user space. *
+ * *
+ * Flags *
+ * SCI_FLAG_USE_CALLBACK *
+ * SCI_FLAG_ASYNCHRONOUS_CONNECT *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_NO_SUCH_SEGMENT - Could not find the remote segment with the *
+ * given segmentId. *
+ * SCI_ERR_CONNECTION_REFUSED - Connection attempt refused by remote node. *
+ * SCI_ERR_TIMEOUT - The function timed out after specified *
+ * timeout value. *
+ * SCI_ERR_NO_LINK_ACCESS - It was not possible to communicate via the *
+ * local adapter. *
+ * SCI_ERR_NO_REMOTE_LINK_ACCESS - It was not possible to communicate via a *
+ * remote switch port. *
+ * *
+ *********************************************************************************/
+#define SCIConnectSegment _SISCI_EXPANDE_FUNCTION_NAME(SCIConnectSegment)
+DLL void SCIConnectSegment(sci_desc_t sd,
+ sci_remote_segment_t *segment,
+ unsigned int nodeId,
+ unsigned int segmentId,
+ unsigned int localAdapterNo,
+ sci_cb_remote_segment_t callback,
+ void *callbackArg,
+ unsigned int timeout,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+/*********************************************************************************
+ * *
+ * S C I D I S C O N N E C T S E G M E N T *
+ * *
+ * Disconnects from the give mapped shared memory segment *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_BUSY - The segment is currently mapped or in use. *
+ * *
+ *********************************************************************************/
+#define SCIDisconnectSegment _SISCI_EXPANDE_FUNCTION_NAME(SCIDisconnectSegment)
+DLL void SCIDisconnectSegment(sci_remote_segment_t segment,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I G E T R E M O T E S E G M E N T S I Z E *
+ * *
+ *********************************************************************************/
+#define SCIGetRemoteSegmentSize _SISCI_EXPANDE_FUNCTION_NAME(SCIGetRemoteSegmentSize)
+DLL unsigned int SCIGetRemoteSegmentSize(sci_remote_segment_t segment);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I W A I T F O R R E M O T E S E G M E N T E V E N T *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_TIMEOUT - The function timed out after specified *
+ * timeout value. *
+ * SCI_ERR_ILLEGAL_OPERATION - Illegal operation. *
+ * SCI_ERR_CANCELLED - The wait operation has been cancelled du *
+ * to a SCIDisconnectSegment() on the same *
+ * handle. The handle is invalid when this *
+ * error is returned. *
+ * *
+ *********************************************************************************/
+#define SCIWaitForRemoteSegmentEvent _SISCI_EXPANDE_FUNCTION_NAME(SCIWaitForRemoteSegmentEvent)
+DLL sci_segment_cb_reason_t SCIWaitForRemoteSegmentEvent(
+ sci_remote_segment_t segment,
+ sci_error_t *status,
+ unsigned int timeout,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I M A P R E M O T E S E G M E N T *
+ * *
+ * This function is used to include a shared memory segment in the virtual *
+ * address space of the application. *
+ * *
+ * Flags: *
+ * *
+ * SCI_FLAG_SHARED_MAP - The low level physical map may be shared by *
+ * other applications. *
+ * *
+ * SCI_FLAG_FIXED_MAP_ADDR - Map at the suggested virtual address *
+ * SCI_FLAG_READONLY_MAP - The segment is mapped in read-only mode *
+ * SCI_FLAG_LOCK_OPERATION - Enable Lock operations (fetch and add) *
+ * SCI_FLAG_READ_PREFETCH_AGGR_HOLD_MAP *
+ * - Enable aggressive prefetch with speculative *
+ * hold. *
+ * *
+ * SCI_FLAG_READ_PREFETCH_NO_HOLD_MAP *
+ * - The PSB66 will prefetch 64 bytes. As soon *
+ * as the PCI read retry has been accepted, *
+ * the stream will change state to FREE, even *
+ * if less than 64 bytes were actually read. *
+ * *
+ * SCI_FLAG_IO_MAP_IOSPACE - Enable No Prefetch, no speculative hold. *
+ * *
+ * SCI_FLAG_DMOVE_MAP - Enable DMOVE packet type. The stream will be *
+ * set into FREE state immediately. *
+ * *
+ * SCI_FLAG_WRITES_DISABLE_GATHER_MAP *
+ * - Disable use of gather. *
+ * *
+ * SCI_FLAG_DISABLE_128_BYTES_PACKETS *
+ * - Disable use of 128-Byte packets *
+ * *
+ * SCI_FLAG_CONDITIONAL_INTERRUPT_MAP *
+ * - Write operations through this map will cause *
+ * an atomic "fetch-and-add-one" operation on *
+ * remote memory, but in addition an interrupt *
+ * will be generated if the target memory *
+ * location contained a "null value" before the *
+ * add operation was carried out. *
+ * The conditional interrupt flag must also be *
+ * specified in the SCIRegisterInterruptFlag() *
+ * function. *
+ * *
+ * SCI_FLAG_UNCONDITIONAL_INTERRUPT_MAP *
+ * - Write operations through this map will cause *
+ * an interrupt for the remote adapter *
+ * "in addition to" updating the corresponding *
+ * remote memory location with the data being *
+ * written. *
+ * The unconditional interrupt flag must also *
+ * be specified in the *
+ * SCIRegisterInterruptFlag() function. *
+ * *
+ * SCI_FLAG_WRITE_BACK_CACHE_MAP *
+ * - Enable cacheing of the mapped region. *
+ * Writes through this map will be written to a *
+ * write back cache, hence no remote SCI updates*
+ * until the cache line is flushed. The *
+ * application is responsible for the cache *
+ * flush operation. *
+ * The SCImemCopy() function will handle this *
+ * correctly by doing cache flushes internally. *
+ * This feature is architechture dependent and *
+ * not be available on all plattforms. *
+ * *
+ * SCI_FLAG_NO_MEMORY_LOOPBACK_MAP *
+ * - Forces a map to a remote segment located *
+ * in the local machine to be mapped using *
+ * SCI loopback. This is useful i.e. if you *
+ * want to use a regular map access to be *
+ * serialized with lock operations. *
+ * The default behaviour is to access a remte *
+ * segment located in the local machine as a *
+ * local MMU operation. *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_OUT_OF_RANGE - The sum of the offset and size is *
+ * larger than the segment size. *
+ * SCI_ERR_SIZE_ALIGNMENT - Size is not correctly aligned as *
+ * required by the implementation. *
+ * SCI_ERR_OFFSET_ALIGNMENT - Offset is not correctly aligned as *
+ * required by the implementation. *
+ * *
+ *********************************************************************************/
+#define SCIMapRemoteSegment _SISCI_EXPANDE_FUNCTION_NAME(SCIMapRemoteSegment)
+DLL volatile void *SCIMapRemoteSegment(
+ sci_remote_segment_t segment,
+ sci_map_t *map,
+ unsigned int offset,
+ unsigned int size,
+ void *addr,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I M A P L O C A L S E G M E N T *
+ * *
+ * Flags *
+ * *
+ * SCI_FLAG_FIXED_MAP_ADDR *
+ * SCI_FLAG_READONLY_MAP *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_OUT_OF_RANGE - The sum of the offset and size is *
+ * larger than the segment size. *
+ * SCI_ERR_SIZE_ALIGNMENT - Size is not correctly aligned as *
+ * required by the implementation. *
+ * SCI_ERR_OFFSET_ALIGNMENT - Offset is not correctly aligned as *
+ * required by the implementation. *
+ * *
+ *********************************************************************************/
+#define SCIMapLocalSegment _SISCI_EXPANDE_FUNCTION_NAME(SCIMapLocalSegment)
+DLL void *SCIMapLocalSegment(sci_local_segment_t segment,
+ sci_map_t *map,
+ unsigned int offset,
+ unsigned int size,
+ void *addr,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I U N M A P S E G M E N T *
+ * *
+ * This function unmaps pages of shared memory from the callers virtual *
+ * address space. *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_BUSY - The map is currently in use. *
+ * *
+ *********************************************************************************/
+#define SCIUnmapSegment _SISCI_EXPANDE_FUNCTION_NAME(SCIUnmapSegment)
+DLL void SCIUnmapSegment(sci_map_t map,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I C R E A T E S E G M E N T *
+ * *
+ * Make the specified segment available for connections via the specified *
+ * adapter. If successful, the segment can be accessed from remote nodes *
+ * via the specified adapter. *
+ * *
+ * Flags: *
+ * *
+ * SCI_FLAG_USE_CALLBACK - The callback function will be invoked for events *
+ * on this segment. *
+ * SCI_FLAG_EMPTY - No memory will be allocated for the segment. *
+ * SCI_FLAG_PRIVATE - The segment will be private meaning it will never *
+ * be any connections to it. *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_SEGMENTID_USED - The segment with this segmentId is already used *
+ * SCI_ERR_SIZE_ALIGNMENT - Size is not correctly aligned as required *
+ * by the implementation. *
+ * *
+ *********************************************************************************/
+#define SCICreateSegment _SISCI_EXPANDE_FUNCTION_NAME(SCICreateSegment)
+DLL void SCICreateSegment(sci_desc_t sd,
+ sci_local_segment_t *segment,
+ unsigned int segmentId,
+ unsigned int size,
+ sci_cb_local_segment_t callback,
+ void *callbackArg,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I W A I T F O R L O C A L S E G M E N T E V E N T *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_TIMEOUT - The function timed out after specified timeout value. *
+ * SCI_ERR_CANCELLED - The wait operation has been cancelled du to a *
+ * SCIRemoveSegment() on the same handle. *
+ * The handle is invalid when this error is returned. *
+ * *
+ *********************************************************************************/
+#define SCIWaitForLocalSegmentEvent _SISCI_EXPANDE_FUNCTION_NAME(SCIWaitForLocalSegmentEvent)
+DLL sci_segment_cb_reason_t SCIWaitForLocalSegmentEvent(
+ sci_local_segment_t segment,
+ unsigned int *sourcenodeId,
+ unsigned int *localAdapterNo,
+ unsigned int timeout,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I P R E P A R E S E G M E N T *
+ * *
+ * Flags *
+ * *
+ * SCI_FLAG_DMA_SOURCE_ONLY - The segment will be used as a source segment *
+ * for DMA operations. On some system types this *
+ * will enable the SISCI driver to use performance *
+ * improving features. *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * *
+ *********************************************************************************/
+#define SCIPrepareSegment _SISCI_EXPANDE_FUNCTION_NAME(SCIPrepareSegment)
+DLL void SCIPrepareSegment(sci_local_segment_t segment,
+ unsigned int localAdapterNo,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I R E M O V E S E G M E N T *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_BUSY - Unable to remove the segment. The segment is currently *
+ * in use. *
+ * *
+ *********************************************************************************/
+#define SCIRemoveSegment _SISCI_EXPANDE_FUNCTION_NAME(SCIRemoveSegment)
+DLL void SCIRemoveSegment(sci_local_segment_t segment,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I S E T S E G M E N T A V A I L A B L E *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * SCI_ERR_SEGMENT_NOT_PREPARED - The segment has not been prepared for access *
+ * from this adapter. *
+ * SCI_ERR_ILLEGAL_OPERATION - The segment is created with the *
+ * SCI_FLAG_PRIVATE flag specified and *
+ * therefore has no segmentId. *
+ * *
+ *********************************************************************************/
+#define SCISetSegmentAvailable _SISCI_EXPANDE_FUNCTION_NAME(SCISetSegmentAvailable)
+DLL void SCISetSegmentAvailable(sci_local_segment_t segment,
+ unsigned int localAdapterNo,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I S E T S E G M E N T U N A V A I L A B L E *
+ * *
+ * Flags *
+ * *
+ * SCI_FLAG_FORCE_DISCONNECT *
+ * SCI_FLAG_NOTIFY *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_ILLEGAL_OPERATION - Illegal operation. *
+ * *
+ *********************************************************************************/
+#define SCISetSegmentUnavailable _SISCI_EXPANDE_FUNCTION_NAME(SCISetSegmentUnavailable)
+DLL void SCISetSegmentUnavailable(sci_local_segment_t segment,
+ unsigned int localAdapterNo,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I C R E A T E M A P S E Q U E N C E *
+ * *
+ * Flags: *
+ * *
+ * SCI_FLAG_FAST_BARRIER *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ *********************************************************************************/
+#define SCICreateMapSequence _SISCI_EXPANDE_FUNCTION_NAME(SCICreateMapSequence)
+DLL void SCICreateMapSequence(sci_map_t map,
+ sci_sequence_t *sequence,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I R E M O V E S E Q U E N C E *
+ * *
+ * Flags: *
+ * None *
+ * *
+ * Specific error codes for this function: *
+ * *
+ *********************************************************************************/
+#define SCIRemoveSequence _SISCI_EXPANDE_FUNCTION_NAME(SCIRemoveSequence)
+DLL void SCIRemoveSequence(sci_sequence_t sequence,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I S T A R T S E Q U E N C E *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * *
+ *********************************************************************************/
+#define SCIStartSequence _SISCI_EXPANDE_FUNCTION_NAME(SCIStartSequence)
+DLL sci_sequence_status_t SCIStartSequence(sci_sequence_t sequence,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I C H E C K S E Q U E N CE *
+ * *
+ * Flags *
+ * *
+ * SCI_FLAG_NO_FLUSH *
+ * SCI_FLAG_NO_STORE_BARRIER *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ *********************************************************************************/
+#define SCICheckSequence _SISCI_EXPANDE_FUNCTION_NAME(SCICheckSequence)
+DLL sci_sequence_status_t SCICheckSequence(sci_sequence_t sequence,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I S T O R E B A R R I E R *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * *
+ *********************************************************************************/
+#define SCIStoreBarrier _SISCI_EXPANDE_FUNCTION_NAME(SCIStoreBarrier)
+DLL void SCIStoreBarrier(sci_sequence_t sequence,
+ unsigned int flags);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I F L U S H R E A D B U F F E R S *
+ * *
+ *********************************************************************************/
+#define SCIFlushReadBuffers _SISCI_EXPANDE_FUNCTION_NAME(SCIFlushReadBuffers)
+DLL void SCIFlushReadBuffers(sci_sequence_t sequence);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I P R O B E N O D E *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_NO_LINK_ACCESS - It was not possible to communicate via the *
+ * local adapter. *
+ * SCI_ERR_NO_REMOTE_LINK_ACCESS - It was not possible to communicate via a *
+ * remote switch port. *
+ * *
+ *********************************************************************************/
+#define SCIProbeNode _SISCI_EXPANDE_FUNCTION_NAME(SCIProbeNode)
+DLL int SCIProbeNode(sci_desc_t sd,
+ unsigned int localAdapterNo,
+ unsigned int nodeId,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I G E T C S R R E G I S T E R *
+ * *
+ * SISCI Priveleged function *
+ * *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_NO_LINK_ACCESS - It was not possible to communicate via the *
+ * local adapter. *
+ * SCI_ERR_NO_REMOTE_LINK_ACCESS - It was not possible to communicate via a *
+ * remote switch port. *
+ * *
+ *********************************************************************************/
+#define SCIGetCSRRegister _SISCI_EXPANDE_FUNCTION_NAME(SCIGetCSRRegister)
+DLL unsigned int SCIGetCSRRegister(sci_desc_t sd,
+ unsigned int localAdapterNo,
+ unsigned int SCINodeId,
+ unsigned int CSROffset,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I S E T C S R R E G I S T E R *
+ * *
+ * SISCI Priveleged function *
+ * *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_NO_LINK_ACCESS - It was not possible to communicate via the *
+ * local adapter. *
+ * SCI_ERR_NO_REMOTE_LINK_ACCESS - It was not possible to communicate via a *
+ * remote switch port. *
+ * *
+ *********************************************************************************/
+#define SCISetCSRRegister _SISCI_EXPANDE_FUNCTION_NAME(SCISetCSRRegister)
+DLL void SCISetCSRRegister(sci_desc_t sd,
+ unsigned int localAdapterNo,
+ unsigned int SCINodeId,
+ unsigned int CSROffset,
+ unsigned int CSRValue,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+/*********************************************************************************
+ * *
+ * S C I G E T L O C A L C S R *
+ * *
+ * SISCI Priveleged function *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * *
+ *********************************************************************************/
+#define SCIGetLocalCSR _SISCI_EXPANDE_FUNCTION_NAME(SCIGetLocalCSR)
+DLL unsigned int SCIGetLocalCSR(sci_desc_t sd,
+ unsigned int localAdapterNo,
+ unsigned int CSROffset,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I S E T L O C A L C S R *
+ * *
+ * SISCI Priveleged function
+ *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * *
+ *********************************************************************************/
+#define SCISetLocalCSR _SISCI_EXPANDE_FUNCTION_NAME(SCISetLocalCSR)
+DLL void SCISetLocalCSR(sci_desc_t sd,
+ unsigned int localAdapterNo,
+ unsigned int CSROffset,
+ unsigned int CSRValue,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I A T T A C H P H Y S I C A L M E M O R Y *
+ * *
+ * SISCI Priveleged function *
+ * *
+ * Description: *
+ * *
+ * This function enables usage of physical devices and memory regions where the *
+ * Physical PCI bus address ( and mapped CPU address ) are already known. *
+ * The function will register the physical memory as a SISCI segment which can *
+ * be connected and mapped as a regular SISCI segment. *
+ * *
+ * Requirements: *
+ * *
+ * SCICreateSegment() with flag SCI_FLAG_EMPTY must have been called in advance *
+ * *
+ * Parameter description: *
+ * sci_ioaddr_t ioaddress : This is the address on the PCI bus that a PCI bus *
+ * master has to use to write to the specified memory *
+ * void * address : This is the (mapped) virtual address that the *
+ * application has to use to access the device. *
+ * This means that the device has to be mapped in *
+ * advance bye the devices own driver. *
+ * If the device is not to be accessed by the local *
+ * CPU, the address pointer shold be set to NULL *
+ * Flags *
+ * *
+ * None *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * *
+ *********************************************************************************/
+#define SCIAttachPhysicalMemory _SISCI_EXPANDE_FUNCTION_NAME(SCIAttachPhysicalMemory)
+DLL void SCIAttachPhysicalMemory(sci_ioaddr_t ioaddress,
+ void *address,
+ unsigned int busNo,
+ unsigned int size,
+ sci_local_segment_t segment,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I Q U E R Y *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_ILLEGAL_QUERY - Unrecognized command. *
+ * *
+ *********************************************************************************/
+#define SCIQuery _SISCI_EXPANDE_FUNCTION_NAME(SCIQuery)
+DLL void SCIQuery(unsigned int command,
+ void *data,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+/* MAJOR QUERY COMMANDS */
+
+/* This command requires a pointer to a structure of type */
+/* "sci_query_string". The string will be filled in by the query. */
+#define SCI_Q_VENDORID _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_VENDORID)
+extern const unsigned int SCI_Q_VENDORID;
+
+
+/* Same as for SCI_VENDOR_ID */
+#define SCI_Q_API _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_API)
+extern const unsigned int SCI_Q_API;
+
+
+/* User passes a pointer to an allocated object of the */
+/* "sci_query_adapter" struct. */
+#define SCI_Q_ADAPTER _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER)
+extern const unsigned int SCI_Q_ADAPTER;
+
+
+/* User passes a pointer to an allocated object of the */
+/* "sci_query_system" struct. */
+#define SCI_Q_SYSTEM _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_SYSTEM)
+extern const unsigned int SCI_Q_SYSTEM;
+
+#define SCI_Q_LOCAL_SEGMENT _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_LOCAL_SEGMENT)
+extern const unsigned int SCI_Q_LOCAL_SEGMENT;
+
+#define SCI_Q_REMOTE_SEGMENT _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_REMOTE_SEGMENT)
+extern const unsigned int SCI_Q_REMOTE_SEGMENT;
+
+#define SCI_Q_MAP _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_MAP)
+extern const unsigned int SCI_Q_MAP;
+
+typedef char* sci_semaphoreId_t;
+
+#ifdef WIN32
+struct _semaphoreid {
+ char *semaphoreName;
+};
+#endif /*WIN32*/
+
+typedef struct {
+ char *str; /* Pointer to a string of minimum "length" characters */
+ unsigned int length;
+} sci_query_string_t;
+
+
+typedef struct {
+ unsigned int localAdapterNo; /* The adapter no. that the query concern. */
+ unsigned int portNo; /* The SCI Link port number that the query concern. */
+ unsigned int subcommand; /* A subcommand as specified below. */
+ void *data; /* A pointer to an unsigned int that will return */
+ /* the response to the query. */
+} sci_query_adapter_t;
+
+
+typedef struct {
+ unsigned int subcommand; /* A subcommand as specified below. */
+ void *data; /* A pointer to an unsigned int that will return */
+ /* the response to the query. */
+} sci_query_system_t;
+
+typedef struct {
+ sci_local_segment_t segment;
+ unsigned int subcommand;
+ union {
+ sci_ioaddr_t ioaddr;
+ } data;
+} sci_query_local_segment_t;
+
+typedef struct {
+ sci_remote_segment_t segment;
+ unsigned int subcommand;
+ union {
+ sci_ioaddr_t ioaddr;
+ } data;
+} sci_query_remote_segment_t;
+
+typedef struct {
+ sci_map_t map;
+ unsigned int subcommand;
+ unsigned int data;
+} sci_query_map_t;
+
+/* Minor query commands (sub-commands) for adapter specific information SCI_ADAPTER */
+#define SCI_Q_ADAPTER_DMA_SIZE_ALIGNMENT _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_DMA_SIZE_ALIGNMENT)
+extern const unsigned int SCI_Q_ADAPTER_DMA_SIZE_ALIGNMENT;
+
+#define SCI_Q_ADAPTER_DMA_OFFSET_ALIGNMENT _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_DMA_OFFSET_ALIGNMENT)
+extern const unsigned int SCI_Q_ADAPTER_DMA_OFFSET_ALIGNMENT;
+
+#define SCI_Q_ADAPTER_DMA_MTU _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_DMA_MTU)
+extern const unsigned int SCI_Q_ADAPTER_DMA_MTU;
+
+#define SCI_Q_ADAPTER_SUGGESTED_MIN_DMA_SIZE _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_SUGGESTED_MIN_DMA_SIZE)
+extern const unsigned int SCI_Q_ADAPTER_SUGGESTED_MIN_DMA_SIZE;
+
+#define SCI_Q_ADAPTER_SUGGESTED_MIN_BLOCK_SIZE _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_SUGGESTED_MIN_BLOCK_SIZE)
+extern const unsigned int SCI_Q_ADAPTER_SUGGESTED_MIN_BLOCK_SIZE;
+
+#define SCI_Q_ADAPTER_NODEID _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_NODEID)
+extern const unsigned int SCI_Q_ADAPTER_NODEID;
+
+#define SCI_Q_ADAPTER_SERIAL_NUMBER _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_SERIAL_NUMBER)
+extern const unsigned int SCI_Q_ADAPTER_SERIAL_NUMBER;
+
+#define SCI_Q_ADAPTER_CARD_TYPE _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_CARD_TYPE)
+extern const unsigned int SCI_Q_ADAPTER_CARD_TYPE;
+
+#define SCI_Q_ADAPTER_NUMBER_OF_STREAMS _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_NUMBER_OF_STREAMS)
+extern const unsigned int SCI_Q_ADAPTER_NUMBER_OF_STREAMS;
+
+#define SCI_Q_ADAPTER_STREAM_BUFFER_SIZE _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_STREAM_BUFFER_SIZE)
+extern const unsigned int SCI_Q_ADAPTER_STREAM_BUFFER_SIZE;
+
+#define SCI_Q_ADAPTER_CONFIGURED _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_CONFIGURED)
+extern const unsigned int SCI_Q_ADAPTER_CONFIGURED;
+
+#define SCI_Q_ADAPTER_LINK_OPERATIONAL _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_LINK_OPERATIONAL)
+extern const unsigned int SCI_Q_ADAPTER_LINK_OPERATIONAL;
+
+#define SCI_Q_ADAPTER_HW_LINK_STATUS_IS_OK _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_HW_LINK_STATUS_IS_OK)
+extern const unsigned int SCI_Q_ADAPTER_HW_LINK_STATUS_IS_OK;
+
+#define SCI_Q_ADAPTER_NUMBER _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_NUMBER)
+extern const unsigned int SCI_Q_ADAPTER_NUMBER;
+
+#define SCI_Q_ADAPTER_INSTANCE_NUMBER _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_INSTANCE_NUMBER)
+extern const unsigned int SCI_Q_ADAPTER_INSTANCE_NUMBER;
+
+#define SCI_Q_ADAPTER_FIRMWARE_OK _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_FIRMWARE_OK)
+extern const unsigned int SCI_Q_ADAPTER_FIRMWARE_OK;
+
+#define SCI_Q_ADAPTER_CONNECTED_TO_SWITCH _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_CONNECTED_TO_SWITCH)
+extern const unsigned int SCI_Q_ADAPTER_CONNECTED_TO_SWITCH;
+
+#define SCI_Q_ADAPTER_LOCAL_SWITCH_TYPE _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_LOCAL_SWITCH_TYPE)
+extern const unsigned int SCI_Q_ADAPTER_LOCAL_SWITCH_TYPE;
+
+#define SCI_Q_ADAPTER_LOCAL_SWITCH_PORT_NUMBER _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_LOCAL_SWITCH_PORT_NUMBER)
+extern const unsigned int SCI_Q_ADAPTER_LOCAL_SWITCH_PORT_NUMBER;
+
+#define SCI_Q_ADAPTER_CONNECTED_TO_EXPECTED_SWITCH_PORT _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_CONNECTED_TO_EXPECTED_SWITCH_PORT)
+extern const unsigned int SCI_Q_ADAPTER_CONNECTED_TO_EXPECTED_SWITCH_PORT;
+
+#define SCI_Q_ADAPTER_ATT_PAGE_SIZE _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_ATT_PAGE_SIZE)
+extern const unsigned int SCI_Q_ADAPTER_ATT_PAGE_SIZE;
+
+#define SCI_Q_ADAPTER_ATT_NUMBER_OF_ENTRIES _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_ATT_NUMBER_OF_ENTRIES)
+extern const unsigned int SCI_Q_ADAPTER_ATT_NUMBER_OF_ENTRIES;
+
+#define SCI_Q_ADAPTER_ATT_AVAILABLE_ENTRIES _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_ATT_AVAILABLE_ENTRIES)
+extern const unsigned int SCI_Q_ADAPTER_ATT_AVAILABLE_ENTRIES;
+
+#define SCI_Q_ADAPTER_PHYS_MEM_NODEID _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_SCI_Q_ADAPTER_PHYS_MEM_NODEID)
+extern const unsigned int SCI_Q_ADAPTER_PHYS_MEM_NODEID;
+
+#define SCI_Q_ADAPTER_PHYS_MBX_NODEID _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_SCI_Q_ADAPTER_PHYS_MBX_NODEID)
+extern const unsigned int SCI_Q_ADAPTER_PHYS_MBX_NODEID;
+
+#define SCI_Q_ADAPTER_PHYS_LINK_PORT_NODEID _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_PHYS_LINK_PORT_NODEID)
+extern const unsigned int SCI_Q_ADAPTER_PHYS_LINK_PORT_NODEID;
+
+#define SCI_Q_ADAPTER_SCI_LINK_FREQUENCY _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_SCI_LINK_FREQUENCY)
+extern const unsigned int SCI_Q_ADAPTER_SCI_LINK_FREQUENCY;
+
+#define SCI_Q_ADAPTER_B_LINK_FREQUENCY _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_B_LINK_FREQUENCY)
+extern const unsigned int SCI_Q_ADAPTER_B_LINK_FREQUENCY;
+
+#define SCI_Q_ADAPTER_IO_BUS_FREQUENCY _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_ADAPTER_IO_BUS_FREQUENCY)
+extern const unsigned int SCI_Q_ADAPTER_IO_BUS_FREQUENCY;
+
+/* Minor query commands (sub-commands) for adapter specific information SCI_SYSTEM */
+#define SCI_Q_SYSTEM_HOSTBRIDGE _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_SYSTEM_HOSTBRIDGE)
+extern const unsigned int SCI_Q_SYSTEM_HOSTBRIDGE;
+
+#define SCI_Q_SYSTEM_WRITE_POSTING_ENABLED _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_SYSTEM_WRITE_POSTING_ENABLED)
+extern const unsigned int SCI_Q_SYSTEM_WRITE_POSTING_ENABLED;
+
+#define SCI_Q_SYSTEM_WRITE_COMBINING_ENABLED _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_SYSTEM_WRITE_COMBINING_ENABLED)
+extern const unsigned int SCI_Q_SYSTEM_WRITE_COMBINING_ENABLED;
+
+#define SCI_Q_LOCAL_SEGMENT_IOADDR _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_LOCAL_SEGMENT_IOADDR)
+extern const unsigned int SCI_Q_LOCAL_SEGMENT_IOADDR;
+
+#define SCI_Q_REMOTE_SEGMENT_IOADDR _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_REMOTE_SEGMENT_IOADDR)
+extern const unsigned int SCI_Q_REMOTE_SEGMENT_IOADDR;
+
+#define SCI_Q_MAP_MAPPED_TO_LOCAL_TARGET _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_MAP_MAPPED_TO_LOCAL_TARGET)
+extern const unsigned int SCI_Q_MAP_MAPPED_TO_LOCAL_TARGET;
+
+#define SCI_Q_MAP_QUERY_REMOTE_MAPPED_TO_LOCAL_TARGET _SISCI_EXPANDE_CONSTANT_NAME(SCI_Q_MAP_QUERY_REMOTE_MAPPED_TO_LOCAL_TARGET)
+extern const unsigned int SCI_Q_MAP_QUERY_REMOTE_MAPPED_TO_LOCAL_TARGET;
+
+#define HOSTBRIDGE_NOT_AVAILABLE _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_NOT_AVAILABLE)
+extern const unsigned int HOSTBRIDGE_NOT_AVAILABLE;
+
+#define HOSTBRIDGE_UNKNOWN _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_UNKNOWN)
+extern const unsigned int HOSTBRIDGE_UNKNOWN;
+
+#define HOSTBRIDGE_440FX _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_440FX)
+extern const unsigned int HOSTBRIDGE_440FX;
+
+#define HOSTBRIDGE_440LX _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_440LX)
+extern const unsigned int HOSTBRIDGE_440LX;
+
+#define HOSTBRIDGE_440BX_A _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_440BX_A)
+extern const unsigned int HOSTBRIDGE_440BX_A;
+
+#define HOSTBRIDGE_440BX_B _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_440BX_B)
+extern const unsigned int HOSTBRIDGE_440BX_B;
+
+#define HOSTBRIDGE_440GX _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_440GX)
+extern const unsigned int HOSTBRIDGE_440GX;
+
+#define HOSTBRIDGE_450KX _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_450KX)
+extern const unsigned int HOSTBRIDGE_450KX;
+
+#define HOSTBRIDGE_430NX _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_430NX)
+extern const unsigned int HOSTBRIDGE_430NX;
+
+#define HOSTBRIDGE_450NX _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_450NX)
+extern const unsigned int HOSTBRIDGE_450NX;
+
+#define HOSTBRIDGE_450NX_MICO _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_450NX_MICO)
+extern const unsigned int HOSTBRIDGE_450NX_MICO;
+
+#define HOSTBRIDGE_450NX_PXB _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_450NX_PXB)
+extern const unsigned int HOSTBRIDGE_450NX_PXB;
+
+#define HOSTBRIDGE_I810 _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_I810)
+extern const unsigned int HOSTBRIDGE_I810;
+
+#define HOSTBRIDGE_I810_DC100 _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_I810_DC100)
+extern const unsigned int HOSTBRIDGE_I810_DC100;
+
+#define HOSTBRIDGE_I810E _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_I810E)
+extern const unsigned int HOSTBRIDGE_I810E;
+
+#define HOSTBRIDGE_I815 _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_I815)
+extern const unsigned int HOSTBRIDGE_I815;
+
+#define HOSTBRIDGE_I840 _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_I840)
+extern const unsigned int HOSTBRIDGE_I840;
+
+#define HOSTBRIDGE_I850 _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_I850)
+extern const unsigned int HOSTBRIDGE_I850;
+
+#define HOSTBRIDGE_I860 _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_I860)
+extern const unsigned int HOSTBRIDGE_I860;
+
+#define HOSTBRIDGE_INTEL_E7500 _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_INTEL_E7500)
+extern const unsigned int HOSTBRIDGE_INTEL_E7500;
+
+#define HOSTBRIDGE_VIA_KT133 _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_VIA_KT133)
+extern const unsigned int HOSTBRIDGE_VIA_KT133;
+
+#define HOSTBRIDGE_VIA_KX133 _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_VIA_KX133)
+extern const unsigned int HOSTBRIDGE_VIA_KX133;
+
+#define HOSTBRIDGE_VIA_APOLLO_PRO_133A _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_VIA_APOLLO_PRO_133A)
+extern const unsigned int HOSTBRIDGE_VIA_APOLLO_PRO_133A;
+
+#define HOSTBRIDGE_VIA_APOLLO_PRO_266 _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_VIA_APOLLO_PRO_266)
+extern const unsigned int HOSTBRIDGE_VIA_APOLLO_PRO_266;
+
+#define HOSTBRIDGE_AMD_760_MP _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_AMD_760_MP)
+extern const unsigned int HOSTBRIDGE_AMD_760_MP;
+
+#define HOSTBRIDGE_AMD_HAMMER _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_AMD_HAMMER)
+extern const unsigned int HOSTBRIDGE_AMD_HAMMER;
+
+#define HOSTBRIDGE_SERVERWORKS_HE _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_SERVERWORKS_HE)
+extern const unsigned int HOSTBRIDGE_SERVERWORKS_HE;
+
+#define HOSTBRIDGE_SERVERWORKS_HE_B _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_SERVERWORKS_HE_B)
+extern const unsigned int HOSTBRIDGE_SERVERWORKS_HE_B;
+
+#define HOSTBRIDGE_SERVERWORKS_LE _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_SERVERWORKS_LE)
+extern const unsigned int HOSTBRIDGE_SERVERWORKS_LE;
+
+#define HOSTBRIDGE_SERVERWORKS_GC_HE _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_SERVERWORKS_GC_HE)
+extern const unsigned int HOSTBRIDGE_SERVERWORKS_GC_HE;
+
+#define HOSTBRIDGE_SERVERWORKS_GC_LE _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_SERVERWORKS_GC_LE)
+extern const unsigned int HOSTBRIDGE_SERVERWORKS_GC_LE;
+
+#define HOSTBRIDGE_SERVERWORKS_GC_WS _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_SERVERWORKS_GC_WS)
+extern const unsigned int HOSTBRIDGE_SERVERWORKS_GC_WS;
+
+#define HOSTBRIDGE_SERVERWORKS_GC_SL _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_SERVERWORKS_GC_SL)
+extern const unsigned int HOSTBRIDGE_SERVERWORKS_GC_SL;
+
+
+#define HOSTBRIDGE_WRITE_POSTING_DISABLED _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_WRITE_POSTING_DISABLED)
+extern const unsigned int HOSTBRIDGE_WRITE_POSTING_DISABLED;
+
+#define HOSTBRIDGE_WRITE_POSTING_ENABLED _SISCI_EXPANDE_CONSTANT_NAME(HOSTBRIDGE_WRITE_POSTING_ENABLED)
+extern const unsigned int HOSTBRIDGE_WRITE_POSTING_ENABLED;
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I C R E A T E D M A Q U E U E *
+ * *
+ * Flags *
+ * *
+ * SCI_FLAG_DMA_PHDMA : Create physical DMA queue. Please note that this is an *
+ * priveleged operation. *
+ * *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ *********************************************************************************/
+#define SCICreateDMAQueue _SISCI_EXPANDE_FUNCTION_NAME(SCICreateDMAQueue)
+DLL void SCICreateDMAQueue(sci_desc_t sd,
+ sci_dma_queue_t *dq,
+ unsigned int localAdapterNo,
+ unsigned int maxEntries,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I R E M O V E D M A Q U E U E *
+ * *
+ * Flags *
+ * None. * *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_ILLEGAL_OPERATION - Not allowed in this queue state. *
+ * *
+ *********************************************************************************/
+#define SCIRemoveDMAQueue _SISCI_EXPANDE_FUNCTION_NAME(SCIRemoveDMAQueue)
+DLL void SCIRemoveDMAQueue(sci_dma_queue_t dq,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I E N Q U E U E D M A T R A N S F E R *
+ * *
+ * Flags: *
+ * *
+ * SCI_FLAG_DMA_READ - The DMA will be remote --> local *
+ * (default is local --> remote) *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_OUT_OF_RANGE - The sum of the offset and size is larger *
+ * than the segment size or larger than max *
+ * DMA size. *
+ * SCI_ERR_MAX_ENTRIES - The DMA queue is full *
+ * SCI_ERR_ILLEGAL_OPERATION - Illegal operation *
+ * SCI_ERR_SIZE_ALIGNMENT - Size is not correctly aligned as required *
+ * by the implementation. *
+ * SCI_ERR_OFFSET_ALIGNMENT - Offset is not correctly aligned as required *
+ * by the implementation. *
+ * SCI_ERR_SEGMENT_NOT_PREPARED - The local segment has not been prepared for *
+ * access from the adapter associated with the *
+ * queue. *
+ * SCI_ERR_SEGMENT_NOT_CONNECTED - The remote segment is not connected through *
+ * the adapter associated with the queue. *
+ *********************************************************************************/
+#define SCIEnqueueDMATransfer _SISCI_EXPANDE_FUNCTION_NAME(SCIEnqueueDMATransfer)
+DLL sci_dma_queue_state_t SCIEnqueueDMATransfer(sci_dma_queue_t dq,
+ sci_local_segment_t localSegment,
+ sci_remote_segment_t remoteSegment,
+ unsigned int localOffset,
+ unsigned int remoteOffset,
+ unsigned int size,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I P O S T D M A Q U E U E *
+ * *
+ * Flags: *
+ * *
+ * SCI_FLAG_USE_CALLBACK - The end of the transfer will cause the callback *
+ * function to be invoked. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_ILLEGAL_OPERATION - Illegal operation *
+ * *
+ *********************************************************************************/
+#define SCIPostDMAQueue _SISCI_EXPANDE_FUNCTION_NAME(SCIPostDMAQueue)
+DLL void SCIPostDMAQueue(sci_dma_queue_t dq,
+ sci_cb_dma_t callback,
+ void *callbackArg,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I A B O R T D M A Q U E U E *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_ILLEGAL_OPERATION - Illegal operation *
+ * *
+ *********************************************************************************/
+#define SCIAbortDMAQueue _SISCI_EXPANDE_FUNCTION_NAME(SCIAbortDMAQueue)
+DLL void SCIAbortDMAQueue(sci_dma_queue_t dq,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+/*********************************************************************************
+ * *
+ * S C I R E S E T D M A Q U E U E *
+ * *
+ * Flags *
+ * None. * *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * *
+ *********************************************************************************/
+#define SCIResetDMAQueue _SISCI_EXPANDE_FUNCTION_NAME(SCIResetDMAQueue)
+DLL void SCIResetDMAQueue(sci_dma_queue_t dq,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I D M A Q U E U E S T A T E *
+ * *
+ *********************************************************************************/
+#define SCIDMAQueueState _SISCI_EXPANDE_FUNCTION_NAME(SCIDMAQueueState)
+DLL sci_dma_queue_state_t SCIDMAQueueState(sci_dma_queue_t dq);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I W A I T F O R D M A Q U E U E *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_ILLEGAL_OPERATION - Illegal operation *
+ * SCI_ERR_TIMEOUT - The function timed out after specified *
+ * timeout value. *
+ * *
+ *********************************************************************************/
+#define SCIWaitForDMAQueue _SISCI_EXPANDE_FUNCTION_NAME(SCIWaitForDMAQueue)
+DLL sci_dma_queue_state_t SCIWaitForDMAQueue(sci_dma_queue_t dq,
+ unsigned int timeout,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I P H D M A E N Q U E U E *
+ * *
+ * SISCI Priveleged function *
+ * *
+ * Flags *
+ * *
+ * SCI_FLAG_DMA_READ *
+ * *
+ * Specific error codes for this function: *
+ * *
+ *********************************************************************************/
+#define SCIphDmaEnqueue _SISCI_EXPANDE_FUNCTION_NAME(SCIphDmaEnqueue)
+DLL void SCIphDmaEnqueue(sci_dma_queue_t dmaqueue,
+ unsigned int size,
+ sci_ioaddr_t localBusAddr,
+ unsigned int remote_nodeid,
+ unsigned int remote_highaddr,
+ unsigned int remote_lowaddr,
+ unsigned int flags,
+ sci_error_t *error);
+
+/*********************************************************************************
+ * *
+ * S C I P H D M A S T A R T *
+ * *
+ * Flags *
+ * *
+ * SCI_FLAG_DMA_WAIT *
+ * SCI_FLAG_USE_CALLBACK *
+ * SCI_FLAG_DMA_RESET *
+ * *
+ * Specific error codes for this function: *
+ * *
+ *********************************************************************************/
+#define SCIphDmaStart _SISCI_EXPANDE_FUNCTION_NAME(SCIphDmaStart)
+DLL sci_dma_queue_state_t SCIphDmaStart(sci_dma_queue_t dmaqueue,
+ sci_cb_dma_t callback,
+ void *callbackArg,
+ unsigned int flags,
+ sci_error_t *error);
+
+#ifdef WIN32
+/*********************************************************************************
+ * *
+ * S C I C R E A T E N A M E D I N T E R R U P T *
+ * *
+ * Flags *
+ * *
+ * SCI_FLAG_USE_CALLBACK *
+ * SCI_FLAG_FIXED_INTNO *
+ * SCI_FLAG_SHARED_INT *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_INTNO_USED - This interrupt number is already used. *
+ * *
+ *********************************************************************************/
+#define SCICreateNamedInterrupt _SISCI_EXPANDE_FUNCTION_NAME(SCICreateNamedInterrupt)
+DLL void SCICreateNamedInterrupt(sci_desc_t sd,
+ sci_local_interrupt_t *interrupt,
+ unsigned int localAdapterNo,
+ unsigned int *interruptNo,
+ sci_cb_interrupt_t callback,
+ void *callbackArg,
+ unsigned int flags,
+ sci_semaphoreId_t semId,
+ sci_error_t *error);
+#endif /*WIN32*/
+
+/*********************************************************************************
+ * *
+ * S C I C R E A T E I N T E R R U P T *
+ * *
+ * Flags *
+ * *
+ * SCI_FLAG_USE_CALLBACK *
+ * SCI_FLAG_FIXED_INTNO *
+ * SCI_FLAG_SHARED_INT *
+ * SCI_FLAG_COUNTING_INT: This flag will enable counting interrupts. This means *
+ * that the number of trigged interrupts is equal to the *
+ * number of received interrupts. *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_INTNO_USED - This interrupt number is already used. *
+ * *
+ *********************************************************************************/
+#define SCICreateInterrupt _SISCI_EXPANDE_FUNCTION_NAME(SCICreateInterrupt)
+DLL void SCICreateInterrupt(sci_desc_t sd,
+ sci_local_interrupt_t *interrupt,
+ unsigned int localAdapterNo,
+ unsigned int *interruptNo,
+ sci_cb_interrupt_t callback,
+ void *callbackArg,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I R E M O V E I N T E R R U P T *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ *********************************************************************************/
+#define SCIRemoveInterrupt _SISCI_EXPANDE_FUNCTION_NAME(SCIRemoveInterrupt)
+DLL void SCIRemoveInterrupt(sci_local_interrupt_t interrupt,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+/*********************************************************************************
+ * *
+ * S C I W A I T F O R I N T E R R U P T *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_TIMEOUT - The function timed out after specified timeout value. *
+ * SCI_ERR_CANCELLED - The wait was interrupted by a call to *
+ * SCIRemoveInterrupt. *
+ * The handle is invalid when this error code is returned.*
+ * *
+ *********************************************************************************/
+#define SCIWaitForInterrupt _SISCI_EXPANDE_FUNCTION_NAME(SCIWaitForInterrupt)
+DLL void SCIWaitForInterrupt(sci_local_interrupt_t interrupt,
+ unsigned int timeout,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I C O N N E C T I N T E R R U P T *
+ * *
+ * Flags *
+ * *
+ * SCI_FLAG_COUNTING_INT: This flag will enable counting interrupts. This means *
+ * that the number of trigged interrupts is equal to the *
+ * number of received interrupts. *
+ * if SCI_FLAG_COUNTING_INT is not used, the interface *
+ * guarentees that there always will be an remote *
+ * interrupt generated after the first and after the last*
+ * trigger. If interupts is triggered faster than the *
+ * remote interrupt handler can handle, interrupts may be*
+ * lost. *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_NO_SUCH_INTNO - No such interrupt number. *
+ * SCI_ERR_CONNECTION_REFUSED - Connection attempt refused by remote node. *
+ * SCI_ERR_TIMEOUT - The function timed out after specified *
+ * timeout value. *
+ * *
+ *********************************************************************************/
+#define SCIConnectInterrupt _SISCI_EXPANDE_FUNCTION_NAME(SCIConnectInterrupt)
+DLL void SCIConnectInterrupt(sci_desc_t sd,
+ sci_remote_interrupt_t *interrupt,
+ unsigned int nodeId,
+ unsigned int localAdapterNo,
+ unsigned int interruptNo,
+ unsigned int timeout,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+/*********************************************************************************
+ * *
+ * S C I D I S C O N N E C T I N T E R R U P T *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * *
+ *********************************************************************************/
+#define SCIDisconnectInterrupt _SISCI_EXPANDE_FUNCTION_NAME(SCIDisconnectInterrupt)
+DLL void SCIDisconnectInterrupt(sci_remote_interrupt_t interrupt,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I T R I G G E R I N T E R R U P T *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * *
+ *********************************************************************************/
+#define SCITriggerInterrupt _SISCI_EXPANDE_FUNCTION_NAME(SCITriggerInterrupt)
+DLL void SCITriggerInterrupt(sci_remote_interrupt_t interrupt,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I R E G I S T E R I N T E R R U P T F L A G *
+ * *
+ * *
+ * This function register an "interrupt flag" that is identified as an unique *
+ * location within a local segment. If successful, the resulting interrupt *
+ * handle will have been associated with the specified local segment. *
+ * *
+ * It is up to the (remote) client(s) to set up an "interrupt mapping" for the *
+ * corresponding segment offset using either the *
+ * *
+ * - SCI_FLAG_CONDITIONAL_INTERRUPT_MAP *
+ * *
+ * or the *
+ * *
+ * - SCI_FLAG_UNCONDITIONAL_DATA_INTERRUPT_MAP *
+ * *
+ * option to "SCIMapRemoteSegment()". - I.e. after having established a *
+ * connection to the corresponding segment. A trigger operation can then *
+ * be implemented using a store operation via the relevant "interrupt map". *
+ * *
+ * *
+ * *
+ * *
+ * *
+ * Flags: *
+ * *
+ * SCI_FLAG_CONDITIONAL_INTERRUPT - Triggering is to take place using *
+ * "conditional interrupts". *
+ * *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * None. *
+ * *
+ *********************************************************************************/
+#define SCIRegisterInterruptFlag _SISCI_EXPANDE_FUNCTION_NAME(SCIRegisterInterruptFlag)
+DLL void SCIRegisterInterruptFlag(
+ unsigned int localAdapterNo,
+ sci_local_interrupt_t *interrupt,
+ sci_local_segment_t segment,
+ unsigned int offset,
+ sci_cb_interrupt_t callback,
+ void *callbackArg,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I E N A B L E C O N D I T I O N A L I N T E R R U P T *
+ * *
+ * *
+ * This function make sure that another HW interrupt will take place the next *
+ * time the corresponding interrupt flag is triggered by a *
+ * "conditional interrupt" operation. *
+ * *
+ * Default semantics: *
+ * *
+ * When successful, the client can rely on that the first subsequent trigger *
+ * operation will cause a HW interrupt and subsequently cause the client *
+ * handler function to be invoked. *
+ * *
+ * If an interrupt was triggered in parallell with the enable operation, then *
+ * the operation will fail (SCI_ERR_COND_INT_RACE_PROBLEM), and the client can *
+ * not rely on another trigger operation will lead to handler invocation. *
+ * Hence, any state checking normally associated with handling the *
+ * corresponding interrupt should take place before attempting to enable *
+ * again. *
+ * *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_COND_INT_RACE_PROBLEM - The enable operation failed because an *
+ * incomming trigger operation happened *
+ * concurrently. *
+ * *
+ *********************************************************************************/
+#define SCIEnableConditionalInterrupt _SISCI_EXPANDE_FUNCTION_NAME(SCIEnableConditionalInterrupt)
+DLL void SCIEnableConditionalInterrupt(
+ sci_local_interrupt_t interrupt,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I D I S A B L E C O N D I T I O N A L I N T E R R U P T *
+ * *
+ * *
+ * Prevent subsequent "conditional interrupt"trigger operations for *
+ * the specified interupt flag from causing HW interrupt and handler *
+ * invocations. *
+ * *
+ * *
+ * Default semantics: *
+ * *
+ * If successful, no subsequent HW interrupts will take place, but handler *
+ * invocations that have already been scheduled may still take place. *
+ * *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * *
+ *********************************************************************************/
+#define SCIDisableConditionalInterrupt _SISCI_EXPANDE_FUNCTION_NAME(SCIDisableConditionalInterrupt)
+DLL void SCIDisableConditionalInterrupt(
+ sci_local_interrupt_t interrupt,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I G E T C O N D I T I O N A L I N T E R R U P T C O U N T E R *
+ * *
+ * *
+ * Returns a value that indicates the number of times this flag has *
+ * been trigged since the last time it was enabled or disabled. *
+ * Calling the SCIEnableConditionalInterrupt / SCIDisableConditionalInterrupt *
+ * functions will reset the counter value. *
+ * *
+ * Default semantics: *
+ * *
+ * If successful, the current trig count is returned in the *
+ * interruptTrigCounter parameter. *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_OVERFLOW - The number of trig operations have exceeded the range *
+ * that can be counted. *
+ *********************************************************************************/
+#define SCIGetConditionalInterruptTrigCounter _SISCI_EXPANDE_FUNCTION_NAME(SCIGetConditionalInterruptTrigCounter)
+DLL void SCIGetConditionalInterruptTrigCounter(
+ sci_local_interrupt_t interrupt,
+ unsigned int *interruptTrigCounter,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I T R A N S F E R B L O C K *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_OUT_OF_RANGE - The sum of the size and offset is larger *
+ * than the corresponding map size. *
+ * SCI_ERR_SIZE_ALIGNMENT - Size is not correctly aligned as required *
+ * by the implementation. *
+ * SCI_ERR_OFFSET_ALIGNMENT - Offset is not correctly aligned as required *
+ * by the implementation. *
+ * SCI_ERR_TRANSFER_FAILED - The data transfer failed. *
+ * *
+ *********************************************************************************/
+#define SCITransferBlock _SISCI_EXPANDE_FUNCTION_NAME(SCITransferBlock)
+DLL void SCITransferBlock(sci_map_t sourceMap,
+ unsigned int sourceOffset,
+ sci_map_t destinationMap,
+ unsigned int destinationOffset,
+ unsigned int size,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I T R A N S F E R B L O C K A S Y N C *
+ * *
+ * Flags *
+ * *
+ * SCI_FLAG_BLOCK_READ *
+ * SCI_FLAG_USE_CALLBACK *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_OUT_OF_RANGE - The sum of the size and offset is larger than *
+ * the corresponding map size. *
+ * SCI_ERR_SIZE_ALIGNMENT - Size is not correctly aligned as required by *
+ * the implementation. *
+ * SCI_ERR_OFFSET_ALIGNMENT - Offset is not correctly aligned as required *
+ * by the implementation. *
+ * SCI_ERR_TRANSFER_FAILED - The data transfer failed. *
+ * *
+ *********************************************************************************/
+#define SCITransferBlockAsync _SISCI_EXPANDE_FUNCTION_NAME(SCITransferBlockAsync)
+DLL void SCITransferBlockAsync(sci_map_t sourceMap,
+ unsigned int sourceOffset,
+ sci_map_t destinationMap,
+ unsigned int destinationOffset,
+ unsigned int size,
+ sci_block_transfer_t *block,
+ sci_cb_block_transfer_t callback,
+ void *callbackArg,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I W A I T F O R B L O C K T R A N S F E R *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_ILLEGAL_OPERATION - Illegal operation *
+ * SCI_ERR_TIMEOUT - The function timed out after specified *
+ * timeout value. *
+ * *
+ *********************************************************************************/
+#define SCIWaitForBlockTransfer _SISCI_EXPANDE_FUNCTION_NAME(SCIWaitForBlockTransfer)
+DLL void SCIWaitForBlockTransfer(sci_block_transfer_t block,
+ unsigned int timeout,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I A B O R T B L O C K T R A N S F E R *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_ILLEGAL_OPERATION - Illegal operation *
+ * *
+ *********************************************************************************/
+#define SCIAbortBlockTransfer _SISCI_EXPANDE_FUNCTION_NAME(SCIAbortBlockTransfer)
+DLL void SCIAbortBlockTransfer(sci_block_transfer_t block,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I M E M C P Y *
+ * *
+ * Flags: *
+ * SCI_FLAG_BLOCK_READ *
+ * SCI_FLAG_ERROR_CHECK *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_OUT_OF_RANGE - The sum of the size and offset is larger *
+ * than the corresponding map size. *
+ * SCI_ERR_SIZE_ALIGNMENT - Size is not correctly aligned as required *
+ * by the implementation. *
+ * SCI_ERR_OFFSET_ALIGNMENT - Offset is not correctly aligned as required *
+ * by the implementation. *
+ * SCI_ERR_TRANSFER_FAILED - The data transfer failed. *
+ * *
+ *********************************************************************************/
+
+#define SCIMemCpy _SISCI_EXPANDE_FUNCTION_NAME(SCIMemCpy)
+DLL void SCIMemCpy(sci_sequence_t sequence,
+ void *memAddr,
+ sci_map_t remoteMap,
+ unsigned int remoteOffset,
+ unsigned int size,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I M E M C O P Y *
+ * *
+ * Flags: *
+ * SCI_FLAG_BLOCK_READ *
+ * SCI_FLAG_ERROR_CHECK *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_OUT_OF_RANGE - The sum of the size and offset is larger *
+ * than the corresponding map size. *
+ * SCI_ERR_SIZE_ALIGNMENT - Size is not correctly aligned as required *
+ * by the implementation. *
+ * SCI_ERR_OFFSET_ALIGNMENT - Offset is not correctly aligned as required *
+ * by the implementation. *
+ * SCI_ERR_TRANSFER_FAILED - The data transfer failed. *
+ * *
+ *********************************************************************************/
+
+
+#define SCIMemCopy _SISCI_EXPANDE_FUNCTION_NAME(SCIMemCopy)
+DLL void SCIMemCopy(void *memAddr,
+ sci_map_t remoteMap,
+ unsigned int remoteOffset,
+ unsigned int size,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I R E G I S T E R S E G M E N T M E M O R Y *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_SIZE_ALIGNMENT - Size is not correctly aligned as required by *
+ * the implementation. *
+ * SCI_ERR_ILLEGAL_ADDRESS - Illegal address. *
+ * SCI_ERR_OUT_OF_RANGE - Size is larger than the maximum size for the *
+ * local segment. *
+ * *
+ *********************************************************************************/
+#define SCIRegisterSegmentMemory _SISCI_EXPANDE_FUNCTION_NAME(SCIRegisterSegmentMemory)
+DLL void SCIRegisterSegmentMemory(void *address,
+ unsigned int size,
+ sci_local_segment_t segment,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I C O N N E C T S C I S P A C E *
+ * *
+ * SISCI Priveleged function *
+ * *
+ * *
+ * Flags *
+ * None. *
+ * *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_SIZE_ALIGNMENT - Size is not correctly aligned as required *
+ * by the implementation. *
+ * SCI_ERR_CONNECTION_REFUSED - Connection attempt refused by remote node. *
+ * *
+ *********************************************************************************/
+#define SCIConnectSCISpace _SISCI_EXPANDE_FUNCTION_NAME(SCIConnectSCISpace)
+DLL void SCIConnectSCISpace(sci_desc_t sd,
+ unsigned int localAdapterNo,
+ sci_remote_segment_t *segment,
+ sci_address_t address,
+ unsigned int size,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+
+/*
+ * =====================================================================================
+ *
+ * S C I A T T A C H L O C A L S E G M E N T
+ * Description:
+ *
+ * SCIAttachLocalSegment() permits an application to "attach" to an already existing
+ * local segment, implying that two or more application want
+ * share the same local segment. The prerequest, is that the
+ * application which originally created the segment ("owner") has
+ * preformed a SCIShareSegment() in order to mark the segment
+ * "shareable".
+ *
+ *
+ * Flags:
+ *
+ * SCI_FLAG_USE_CALLBACK - The callback function will be invoked for events
+ * on this segment.
+ *
+ *
+ * Specific error codes for this function:
+ *
+ * SCI_ERR_ACCESS - No such shared segment
+ * SCI_ERR_NO_SUCH_SEGMENT - No such segment
+ * Note: Current implenentation will return SCI_ERR_ACCESS for both cases. This will
+ * change from next release. Application should handle both cases.
+ *
+ * =====================================================================================
+ */
+#define SCIAttachLocalSegment _SISCI_EXPANDE_FUNCTION_NAME(SCIAttachLocalSegment)
+
+DLL void
+SCIAttachLocalSegment(sci_desc_t sd,
+ sci_local_segment_t *segment,
+ unsigned int segmentId,
+ unsigned int *size,
+ sci_cb_local_segment_t callback,
+ void *callbackArg,
+ unsigned int flags,
+ sci_error_t *error);
+/*
+ * =====================================================================================
+ *
+ * S C I S H A R E S E G M E N T
+ *
+ * Description:
+ *
+ * SCIShareSegment() permits other application to "attach" to an already existing
+ * local segment, implying that two or more application want
+ * share the same local segment. The prerequest, is that the
+ * application which originally created the segment ("owner") has
+ * preformed a SCIShareSegment() in order to mark the segment
+ * "shareable".
+ *
+ *
+ * Flags:
+ * none
+ *
+ * Specific error codes for this function:
+ *
+ *
+ *
+ * =====================================================================================
+ */
+#define SCIShareSegment _SISCI_EXPANDE_FUNCTION_NAME(SCIShareSegment)
+
+DLL void
+SCIShareSegment(sci_local_segment_t segment,
+ unsigned int flags,
+ sci_error_t *error);
+
+
+/*********************************************************************************
+ * *
+ * S C I F L U S H *
+ * *
+ * This function will flush the CPU buffers and the PSB buffers. *
+ * *
+ * Flags *
+ * SCI_FLAG_FLUSH_CPU_BUFFERS_ONLY : *
+ * Only flush CPU buffers ( Write combining *
+ * etc buffers). *
+ * *
+ *********************************************************************************/
+
+#define SCIFlush _SISCI_EXPANDE_FUNCTION_NAME(SCIFlush)
+DLL void SCIFlush(sci_sequence_t sequence,
+ unsigned int flags);
+
+#if defined(CPLUSPLUS) || defined(__cplusplus)
+}
+#endif
+
+
+#endif
+
+
+
+
+
+
+
+
+
+
+