summaryrefslogtreecommitdiff
path: root/ndb/src/external
diff options
context:
space:
mode:
authormagnus@neptunus.(none) <>2004-04-14 10:53:21 +0200
committermagnus@neptunus.(none) <>2004-04-14 10:53:21 +0200
commit5b3aec2b904a2eb7478240dac2f56d8928fc2362 (patch)
tree3fbbacf704304b69228474b9f03549ccd585a017 /ndb/src/external
parent7d9a9fd93ac4622d596920169a6d6afbd787c377 (diff)
downloadmariadb-git-5b3aec2b904a2eb7478240dac2f56d8928fc2362.tar.gz
Initial revision of NDB Cluster files
Diffstat (limited to 'ndb/src/external')
-rw-r--r--ndb/src/external/LINUX.x86/sci/include/list.h56
-rw-r--r--ndb/src/external/LINUX.x86/sci/include/os/inttypes.h53
-rw-r--r--ndb/src/external/LINUX.x86/sci/include/rmlib.h212
-rw-r--r--ndb/src/external/LINUX.x86/sci/include/sci_errno.h216
-rw-r--r--ndb/src/external/LINUX.x86/sci/include/sci_types.h300
-rw-r--r--ndb/src/external/LINUX.x86/sci/include/sisci_api.h2170
-rw-r--r--ndb/src/external/LINUX.x86/sci/include/sisci_demolib.h226
-rw-r--r--ndb/src/external/LINUX.x86/sci/include/sisci_error.h89
-rw-r--r--ndb/src/external/LINUX.x86/sci/include/sisci_types.h133
-rw-r--r--ndb/src/external/LINUX.x86/sci/include/sisci_version.h91
-rw-r--r--ndb/src/external/LINUX.x86/sci/include/version.h25
-rw-r--r--ndb/src/external/SOLARIS.SPARC/sci/include/sisci_api.h2148
-rw-r--r--ndb/src/external/SOLARIS.SPARC/sci/include/sisci_error.h89
-rw-r--r--ndb/src/external/SOLARIS.SPARC/sci/include/sisci_types.h133
-rw-r--r--ndb/src/external/SOLARIS.SPARC/sci/include/sisci_version.h91
-rw-r--r--ndb/src/external/WIN32.x86/sci/include/rmlib.h212
-rw-r--r--ndb/src/external/WIN32.x86/sci/include/scilib.h330
-rw-r--r--ndb/src/external/WIN32.x86/sci/include/sisci_api.h2217
-rw-r--r--ndb/src/external/WIN32.x86/sci/include/sisci_demolib.h226
-rw-r--r--ndb/src/external/WIN32.x86/sci/include/sisci_error.h94
-rw-r--r--ndb/src/external/WIN32.x86/sci/include/sisci_types.h133
-rw-r--r--ndb/src/external/WIN32.x86/sci/lib/SISCI_LIBRARY_WIN32.TXT77
-rw-r--r--ndb/src/external/WIN32.x86/sci/lib/scilib.libbin0 -> 17918 bytes
-rw-r--r--ndb/src/external/WIN32.x86/sci/lib/scilib_md.libbin0 -> 18000 bytes
-rw-r--r--ndb/src/external/WIN32.x86/sci/lib/scilib_mt.libbin0 -> 17924 bytes
-rw-r--r--ndb/src/external/WIN32.x86/sci/lib/sisci_api.libbin0 -> 264284 bytes
-rw-r--r--ndb/src/external/WIN32.x86/sci/lib/sisci_api_md.libbin0 -> 265578 bytes
-rw-r--r--ndb/src/external/WIN32.x86/sci/lib/sisci_api_mt.libbin0 -> 264386 bytes
28 files changed, 9321 insertions, 0 deletions
diff --git a/ndb/src/external/LINUX.x86/sci/include/list.h b/ndb/src/external/LINUX.x86/sci/include/list.h
new file mode 100644
index 00000000000..81c467a461b
--- /dev/null
+++ b/ndb/src/external/LINUX.x86/sci/include/list.h
@@ -0,0 +1,56 @@
+/* $Id: list.h,v 1.1 2002/12/13 12:17:20 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 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 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 _LIST_H
+#define _LIST_H
+#include "sci_types.h"
+
+
+typedef struct ListElement *ListElement_t;
+typedef struct List *List_t;
+
+struct ListElement {
+ void *element;
+ u_vkaddr_t key;
+ ListElement_t prev,next;
+};
+
+void *Get_Element(ListElement_t el);
+void Set_Element(ListElement_t el,void *elptr,u_vkaddr_t key);
+void Create_Element(ListElement_t *el);
+void Destroy_Element(ListElement_t *el);
+void Create_List(List_t *list);
+void Destroy_List(List_t *list);
+void Add_Element(List_t list,ListElement_t el);
+void Remove_Element(List_t list,ListElement_t el);
+ListElement_t Find_Element(List_t list,u_vkaddr_t key);
+scibool List_Empty(List_t);
+scibool List_Elements(List_t);
+ListElement_t First_Element(List_t list);
+ListElement_t Last_Element(List_t list);
+ListElement_t Next_Element(ListElement_t el);
+
+#endif /* _LIST_H */
diff --git a/ndb/src/external/LINUX.x86/sci/include/os/inttypes.h b/ndb/src/external/LINUX.x86/sci/include/os/inttypes.h
new file mode 100644
index 00000000000..b9e5a6cb19f
--- /dev/null
+++ b/ndb/src/external/LINUX.x86/sci/include/os/inttypes.h
@@ -0,0 +1,53 @@
+/* $Id: inttypes.h,v 1.1 2002/12/13 12:17:21 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 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 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 _SCI_OS_INTTYPES_H_
+#define _SCI_OS_INTTYPES_H_
+
+/*
+ * --------------------------------------------------------------------------------------
+ * Basic types of various sizes.
+ * --------------------------------------------------------------------------------------
+ */
+typedef unsigned char unsigned8;
+typedef unsigned short unsigned16;
+typedef unsigned int unsigned32;
+typedef unsigned long long unsigned64;
+
+typedef signed char signed8;
+typedef signed short signed16;
+typedef signed int signed32;
+typedef signed long long signed64;
+
+
+#ifdef CPU_WORD_IS_64_BIT
+typedef unsigned64 uptr_t;
+typedef signed64 iptr_t;
+#else
+typedef unsigned32 uptr_t;
+typedef signed32 iptr_t;
+#endif
+
+#endif /* _SCI_OS_INTTYPES_H_ */
diff --git a/ndb/src/external/LINUX.x86/sci/include/rmlib.h b/ndb/src/external/LINUX.x86/sci/include/rmlib.h
new file mode 100644
index 00000000000..9d2722e9798
--- /dev/null
+++ b/ndb/src/external/LINUX.x86/sci/include/rmlib.h
@@ -0,0 +1,212 @@
+/* $Id: rmlib.h,v 1.1 2002/12/13 12:17:20 hin Exp $ */
+
+/*********************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * 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. *
+ * *
+ * *
+ *********************************************************************************/
+
+/********************************************************************************/
+/* This header file contains the declarations of the SCI Reflective Memory */
+/* library rmlib. The implementation of the library functions is in rmlib.c. */
+/* The library contains all the functions that operate on the reflective */
+/* memory. */
+/* */
+/* NB! */
+/* */
+/* DOLPHIN'S SCI REFLECTIVE MEMORY FILES ARE UNDER DEVELOPMENT AND MAY CHANGE. */
+/* PLEASE CONTACT DOLPHIN FOR FURTHER INFORMATION. */
+/* */
+/* */
+/********************************************************************************/
+
+#include "sisci_error.h"
+#include "sisci_api.h"
+#include "sisci_demolib.h"
+#include "sisci_types.h"
+
+unsigned int seqerr, syncseqerr;
+
+#ifndef _RMLIB_H
+#define _RMLIB_H
+
+
+#if defined(_REENTRANT)
+
+#define _RMLIB_EXPAND_NAME(name) _RMLIB_MT_ ## name
+
+#else
+
+#define _RMLIB_EXPAND_NAME(name) _RMLIB_ST_ ## name
+
+#endif
+
+#ifdef __sparc
+#define CACHE_SIZE 2097152
+#else
+#define CACHE_SIZE 8192
+#endif
+
+/*********************************************************************************/
+/* FLAG VALUES */
+/*********************************************************************************/
+
+#define REFLECT_ERRCHECK 0x2
+
+struct ReflectiveMemorySpace {
+ unsigned int localAdapterNo;
+ unsigned int localNodeId;
+ unsigned int remoteNodeId;
+ sci_desc_t sd;
+ sci_desc_t syncsd;
+ sci_map_t localMap;
+ sci_map_t remoteMap;
+ unsigned int localSegmentId;
+ unsigned int remoteSegmentId;
+ unsigned int syncSegmentId;
+ unsigned int sync_rSegmentId;
+ unsigned int segmentSize;
+ unsigned int *localMapAddr;
+ volatile unsigned int *remoteMapAddr;
+ sci_local_segment_t localSegment;
+ sci_remote_segment_t remoteSegment;
+ sci_local_segment_t syncSegment;
+ sci_remote_segment_t sync_rSegment;
+ sci_map_t syncMap;
+ sci_map_t sync_rMap;
+ sci_sequence_t syncsequence;
+ sci_sequence_t sequence;
+ unsigned int protection;
+ unsigned int retry_value;
+ sci_sequence_status_t sequenceStatus, syncsequenceStatus;
+ volatile unsigned int *syncMapAddr;
+ volatile unsigned int *sync_rMapAddr;
+};
+
+/*********************************************************************************/
+/* P R I N T R E F L E C T I V E M E M O R Y S P A C E */
+/* */
+/*********************************************************************************/
+#define ReflectPrintParameters _RMLIB_EXPAND_NAME(ReflectPrintParameters)
+void ReflectPrintParameters(FILE *stream, struct ReflectiveMemorySpace RM_space);
+
+/*********************************************************************************/
+/* R E F L E C T D M A S E T U P */
+/* */
+/*********************************************************************************/
+#define ReflectDmaSetup _RMLIB_EXPAND_NAME(ReflectDmaSetup)
+sci_error_t ReflectDmaSetup(struct ReflectiveMemorySpace RM_space, sci_dma_queue_t *dmaQueue);
+
+/*********************************************************************************/
+/* R E F L E C T D M A R E M O V E */
+/* */
+/*********************************************************************************/
+#define ReflectDmaRemove _RMLIB_EXPAND_NAME(ReflectDmaRemove)
+sci_error_t ReflectDmaRemove(sci_dma_queue_t dmaQueue);
+
+/*********************************************************************************/
+/* R E F L E C T D M A R U N */
+/* */
+/*********************************************************************************/
+#define ReflectDmaRun _RMLIB_EXPAND_NAME(ReflectDmaRun)
+sci_error_t ReflectDmaRun(struct ReflectiveMemorySpace RM_space,
+ unsigned int* privateSrc,
+ unsigned int size,
+ unsigned int offset,
+ sci_dma_queue_t dmaQueue);
+/*********************************************************************************/
+/* C L O S E R E F L E C T I V E M E M O R Y S P A C E */
+/* */
+/*********************************************************************************/
+#define ReflectClose _RMLIB_EXPAND_NAME(ReflectClose)
+sci_error_t ReflectClose(struct ReflectiveMemorySpace RM_space, unsigned int segment_no);
+
+/*********************************************************************************/
+/* O P E N R E F L E C T I V E M E M O R Y S P A C E */
+/* */
+/*********************************************************************************/
+#define ReflectOpen _RMLIB_EXPAND_NAME(ReflectOpen)
+sci_error_t ReflectOpen(struct ReflectiveMemorySpace *RM_space,
+ unsigned int size,
+ unsigned int segment_no,
+ unsigned int localAdapterNo,
+ unsigned int remoteNodeId,
+ unsigned int protection,
+ unsigned int retry_value);
+
+/*********************************************************************************/
+/* R E F L E C T G E T A C C E S S */
+/* */
+/*********************************************************************************/
+#define ReflectGetAccess _RMLIB_EXPAND_NAME(ReflectGetAccess)
+sci_error_t ReflectGetAccess(struct ReflectiveMemorySpace *RM_space);
+
+/*********************************************************************************/
+/* R E F L E C T R E L E A S E A C C E S S */
+/* */
+/*********************************************************************************/
+#define ReflectReleaseAccess _RMLIB_EXPAND_NAME(ReflectReleaseAccess)
+sci_error_t ReflectReleaseAccess(struct ReflectiveMemorySpace *RM_space);
+
+/*********************************************************************************/
+/* R E F L E C T D M A */
+/* */
+/*********************************************************************************/
+#define ReflectDma _RMLIB_EXPAND_NAME(ReflectDma)
+sci_error_t ReflectDma(struct ReflectiveMemorySpace RM_space,
+ unsigned int* privateSrc,
+ unsigned int size,
+ unsigned int offset);
+
+/*********************************************************************************/
+/* R E F L E C T M E M C O P Y */
+/* */
+/*********************************************************************************/
+#define ReflectMemCopy _RMLIB_EXPAND_NAME(ReflectMemCopy)
+sci_error_t ReflectMemCopy(struct ReflectiveMemorySpace RM_space,
+ unsigned int* privateSrc,
+ unsigned int size,
+ unsigned int offset,
+ unsigned int flags);
+
+/*********************************************************************************/
+/* R E F L E C T S E T */
+/* */
+/*********************************************************************************/
+#define ReflectSet _RMLIB_EXPAND_NAME(ReflectSet)
+sci_error_t ReflectSet(struct ReflectiveMemorySpace RM_space,
+ unsigned int value,
+ unsigned int size,
+ unsigned int offset,
+ unsigned int flags
+ );
+
+/*********************************************************************************/
+/* R E F L E C T P R I N T */
+/* */
+/*********************************************************************************/
+#define ReflectPrint _RMLIB_EXPAND_NAME(ReflectPrint)
+sci_error_t ReflectPrint(FILE *stream,
+ struct ReflectiveMemorySpace RM_space,
+ unsigned int size,
+ unsigned int offset
+ );
+
+
+#endif
diff --git a/ndb/src/external/LINUX.x86/sci/include/sci_errno.h b/ndb/src/external/LINUX.x86/sci/include/sci_errno.h
new file mode 100644
index 00000000000..03f3256a86f
--- /dev/null
+++ b/ndb/src/external/LINUX.x86/sci/include/sci_errno.h
@@ -0,0 +1,216 @@
+/* $Id: sci_errno.h,v 1.1 2002/12/13 12:17:20 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 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 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 _SCI_ERRNO_H_
+#define _SCI_ERRNO_H_
+
+
+/*
+ * SCI Error return values always have 30 bit set
+ * Remote errors should have bit 0 set
+ */
+#define SCI_ERR_MASK 0x40000000
+#define ESCI_REMOTE_MASK 0x01000000
+
+#define SCI_ERR(u) ((unsigned32)(u)&0x7FFFFFFF )
+#define _SCI_ERROR(x) ((x) | SCI_ERR_MASK)
+#define _SCI_REMOTE_ERROR(x) ( _SCI_ERROR(x) | ESCI_REMOTE_MASK )
+
+/*
+ * Error codes
+ */
+typedef enum {
+ ESCI_OK = 0x000,
+ ESCI_STILL_EXPORTED = _SCI_ERROR(0x800),
+
+ ESCI_BUS_ERR = _SCI_ERROR(0x900),
+ ESCI_PEND_SCIERR = _SCI_ERROR(0x901),
+ ESCI_SCI_ERR = _SCI_ERROR(0x902),
+
+ /*
+ * Specific SCI error responses:
+ */
+ ESCI_SCI_ERR_DATA = _SCI_ERROR(0x9021),
+ ESCI_SCI_ERR_TYPE = _SCI_ERROR(0x9022),
+ ESCI_SCI_ERR_ADDR = _SCI_ERROR(0x9023),
+
+ ESCI_LINK_TIMEOUT = _SCI_ERROR(0x903),
+ ESCI_EXDEV_TIMEOUT = _SCI_ERROR(0x904),
+ ESCI_REMOTE_ERR = _SCI_ERROR(0x905),
+ ESCI_MBX_BUSY = _SCI_ERROR(0x906),
+ ESCI_DMAERR = _SCI_ERROR(0x907),
+ ESCI_DMA_DISABLED = _SCI_ERROR(0x908),
+ ESCI_SW_MBX_SEND_FAILED = _SCI_ERROR(0x909),
+ ESCI_HW_MBX_SEND_FAILED = _SCI_ERROR(0x90A),
+ ESCI_HAS_NO_SESSION = _SCI_ERROR(0xA00),
+ ESCI_CONNREFUSED_SESSION = _SCI_ERROR(0xA01),
+ ESCI_SESSION_NOT_ESTABLISHED = _SCI_ERROR(0xA11),
+ ESCI_REMOTE_NO_VALID_SESSION = _SCI_ERROR(0xA02),
+ ESCI_SESSION_DISABLED = _SCI_ERROR(0xA03),
+ ESCI_NODE_CLOSED = _SCI_ERROR(0xA04),
+ ESCI_NODE_DISABLED = _SCI_ERROR(0xA05),
+
+ ESCI_LOCAL_MASTER_ERR = _SCI_ERROR(0xA06),
+ ESCI_REMOTE_MASTER_ERR = _SCI_REMOTE_ERROR(0xA06),
+
+ ESCI_ILLEGAL_CMD_RECEIVED = _SCI_ERROR(0xA08),
+ ESCI_ILLEGAL_CMD_SENT = _SCI_ERROR(0xA09),
+
+ /* used above: ESCI_SESSION_NOT_ESTABLISHED = _SCI_ERROR(0xA11), */
+
+ /*
+ * Remote error codes
+ */
+ ESCI_CONNREFUSED = _SCI_ERROR(0xB00),
+ ESCI_NODE_NOT_RESPONDING = _SCI_ERROR(0xB01),
+ ESCI_ISCONN = _SCI_ERROR(0xB02),
+ ESCI_HOSTUNREACH = _SCI_ERROR(0xB03),
+ ESCI_NO_SUCH_USER_ID = _SCI_ERROR(0xB04),
+ ESCI_REMOTE_NO_SUCH_USER_ID = _SCI_REMOTE_ERROR(0xB04), /* ESCI_NO_SUCH_USER_ID */
+ ESCI_NO_SUCH_KEY = _SCI_ERROR(0xB04), /* ESCI_NO_SUCH_USER_ID */
+ ESCI_REMOTE_NO_SUCH_KEY = _SCI_REMOTE_ERROR(0xB04), /* ESCI_REMOTE_NO_SUCH_USER_ID */
+ ESCI_NODE_ERR = _SCI_ERROR(0xB06),
+ ESCI_REMOTE_NODE_ERR = _SCI_REMOTE_ERROR(0xB06), /* ESCI_NODE_ERR */
+ ESCI_NOSPC = _SCI_ERROR(0xB08),
+ ESCI_REMOTE_NOSPC = _SCI_REMOTE_ERROR(0xB08), /* ESCI_NOSPC */
+ ESCI_NODMASPC = _SCI_ERROR(0xB0A),
+ ESCI_REMOTE_NODMASPC = _SCI_REMOTE_ERROR(0xB0A), /* ESCI_NODMASPC */
+ ESCI_NOTMAP = _SCI_ERROR(0xC00),
+ ESCI_ISMAP = _SCI_ERROR(0xC01),
+ ESCI_NOT_INITIALIZED = _SCI_ERROR(0xD00),
+ ESCI_REMOTE_NOT_INITIALIZED = _SCI_REMOTE_ERROR(ESCI_NOT_INITIALIZED),
+ /*
+ * ???
+ */
+ ESCI_PARAM_ERR = _SCI_ERROR(0xD01),
+ ESCI_NO_FREE_VC = _SCI_ERROR(0xD02),
+ ESCI_REMOTE_NO_FREE_VC = _SCI_REMOTE_ERROR(0xD02), /* ESCI_NO_FREE_VC */
+
+ /*
+ * Adapter state related error codes:
+ */
+ ESCI_SUSPENDED = _SCI_ERROR(0xD03),
+ ESCI_NOT_SUSPENDED = _SCI_ERROR(0xD04),
+ ESCI_NOT_READY = _SCI_ERROR(0xD05),
+ ESCI_NOT_CONFIGURED = _SCI_ERROR(0xD06),
+ ESCI_INVALID_ADAPTERID = _SCI_ERROR(0xD07), /* if an adapter-id is out of range */
+ ESCI_NONEXIST_ADAPTERID = _SCI_ERROR(0xD08), /* if adapter-id is valid but no adapter matches */
+ ESCI_ADAPTERID_INUSE = _SCI_ERROR(0xD09),
+
+ ESCI_INVALID_INSTANCE = _SCI_ERROR(0xD0A),
+ ESCI_NONEXIST_INSTANCE = _SCI_ERROR(0xD0B),
+
+ ESCI_ADAPTER_INIT_FAILURE = _SCI_ERROR(0xD0C),
+
+ ESCI_PAUSED = _SCI_ERROR(0xD0D),
+ ESCI_NOT_PAUSED = _SCI_ERROR(0xD0E),
+ ESCI_ADAPTER_NEED_RESET = _SCI_ERROR(0xD0F),
+
+ ESCI_NONEXIST_SERIAL_NUMBER = _SCI_ERROR(0xD10),
+ ESCI_NOT_AVAILABLE = _SCI_ERROR(0xD11),
+
+ ESCI_EACCESS = _SCI_ERROR(0xD12),
+
+ /*
+ * Local error codes
+ */
+ ESCI_NO_LOCAL_ACCESS = _SCI_ERROR(0xE00),
+ ESCI_LRESOURCE_BUSY = _SCI_ERROR(0xE01),
+ ESCI_LRESOURCE_EXIST = _SCI_ERROR(0xE02),
+ ESCI_NO_LRESOURCE = _SCI_ERROR(0xE03),
+ ESCI_NOTCONN = _SCI_ERROR(0xE04),
+ ESCI_LOCAL_ERR = _SCI_ERROR(0xE05),
+ ESCI_NOVAL_NODEID = _SCI_ERROR(0xE06),
+ ESCI_NOT_SUPPORTED = _SCI_ERROR(0xE07),
+ ESCI_TIMEOUT = _SCI_ERROR(0xE08),
+ ESCI_NO_LOCAL_LC_ACCESS = _SCI_ERROR(0xE0A),
+ ESCI_INVALID_ATT = _SCI_ERROR(0xE0B),
+ ESCI_BAD_CHECKSUM = _SCI_ERROR(0xE0C),
+ ESCI_INTERRUPT_FLAG_DISABLED = _SCI_ERROR(0xE0D),
+ ESCI_COND_INT_RACE_PROBLEM = _SCI_ERROR(0xE0E),
+ ESCI_OVERFLOW = _SCI_ERROR(0xE0F),
+ ESCI_BLINK_PARITY_ERROR = _SCI_ERROR(0xE10),
+ ESCI_FIRMWARE_VERSION_MISMATCH = _SCI_ERROR(0xE11),
+
+ /*
+ * Link error codes
+ */
+ ESCI_NO_LINK_ACCESS = _SCI_ERROR(0xF00),
+ ESCI_NO_REMOTE_LINK_ACCESS = _SCI_REMOTE_ERROR(0xF00), /* ESCI_NO_LINK_ACCESS */
+
+ ESCI_NO_SUCH_NODE = _SCI_ERROR(0xF02),
+ ESCI_USR_ACCESS_DISABLED = _SCI_ERROR(0xF03),
+ ESCI_HW_AVOID_DEADLOCK = _SCI_ERROR(0xF04),
+ ESCI_POTENTIAL_ERROR = _SCI_ERROR(0xF05),
+
+ ESCI_FENCED = _SCI_ERROR(0xF06),
+ ESCI_SWITCH_HW_FAILURE = _SCI_ERROR(0xF07),
+ ESCI_SWITCH_WRONG_BLINK_ID = _SCI_ERROR(0xF08),
+ ESCI_SWITCH_WRONG_PORT_NUMB = _SCI_ERROR(0xF09),
+ ESCI_SWITCH_WRONG_INIT_TYPE = _SCI_ERROR(0xF0A), /* It is determined that the swith initialization
+ * do not match the local adapter initialization
+ */
+ ESCI_SWITCH_WRONG_SWITCH_NUMB = _SCI_ERROR(0xF0B), /* It is determined that we are operationg on the
+ * wrong switch port
+ */
+ ESCI_SWITCH_NOT_CONNECTED = _SCI_ERROR(0xF0C),
+ ESCI_SWITCH_NOT_RECOGNIZED = _SCI_ERROR(0xF0D),
+ ESCI_SWITCH_INIT_IN_PROGRESS = _SCI_ERROR(0xF0E), /* Switch TINI initialization in progress */
+
+
+ ESCI_NO_BACKBONE_LINK_ACCESS = _SCI_ERROR(0xF20),
+ ESCI_BACKBONE_FENCED = _SCI_ERROR(0xF21),
+ ESCI_NO_BACKBONE_ACCESS = _SCI_ERROR(0xF22),
+ ESCI_BACKBONE_CABLE_PROBLEM = _SCI_ERROR(0xF23),
+ ESCI_BACKBONE_BLINK_PROBLEM = _SCI_ERROR(0xF24),
+ ESCI_BACKBONE_HWINIT_PROBLEM = _SCI_ERROR(0xF25),
+ ESCI_BACKBONE_ID_PROBLEM = _SCI_ERROR(0xF26),
+ ESCI_BACKBONE_STATE_PROBLEM = _SCI_ERROR(0xF27),
+ ESCI_BACKBONE_REQ_LINK_PROBLEM = _SCI_ERROR(0xF28),
+ ESCI_BACKBONE_UNFENCING = _SCI_ERROR(0xF29), /* Unfencing in progress */
+
+ /*
+ * added for pci port
+ */
+ ESCI_AGAIN = _SCI_ERROR(0xF15),
+ ESCI_ORANGE = _SCI_ERROR(0xF16), /* Out of range */
+ ESCI_NOSYS = _SCI_ERROR(0xF17), /* Used instead of ENOSYS. Means function not implemented */
+ ESCI_REMOTE_NOSYS = _SCI_REMOTE_ERROR(ESCI_NOSYS),
+ ESCI_INTR = _SCI_ERROR(0xF18), /* Used instead of EINTR from sys/errno.h */
+ ESCI_IO = _SCI_ERROR(0xF19), /* Used instead of EIO from sys/errno.h */
+ ESCI_FAULT = _SCI_ERROR(0xF1A), /* Used instead of EFAULT from sys/errno.h */
+ ESCI_BUSY = _SCI_ERROR(0xF1B), /* Used instead of EBUST from sys/errno.h */
+ ESCI_INVAL = _SCI_ERROR(0xF1C), /* Used instead of EINVAL from sys/errno.h */
+ ESCI_NXIO = _SCI_ERROR(0xF1D), /* Used instead of ENXIO from sys/errno.h */
+ ESCI_EXIST = _SCI_ERROR(0xF1E) /* Used instead of EEXIST from sys/errno.h */
+
+} scierror_t;
+
+#endif /* _SCI_ERRNO_H_ */
+
+
+
+
diff --git a/ndb/src/external/LINUX.x86/sci/include/sci_types.h b/ndb/src/external/LINUX.x86/sci/include/sci_types.h
new file mode 100644
index 00000000000..740b3a45cfd
--- /dev/null
+++ b/ndb/src/external/LINUX.x86/sci/include/sci_types.h
@@ -0,0 +1,300 @@
+/* $Id: sci_types.h,v 1.1 2002/12/13 12:17:21 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 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 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 _SCI_TYPES_H_
+#define _SCI_TYPES_H_
+
+/*
+ * Remains for the time being for backward compatibility ....
+ */
+
+/* #define UNIQUE(type) struct { type x; } * */
+#ifndef UNIQUE
+#define UNIQUE(type) type
+#endif
+#include "os/inttypes.h"
+
+#if defined(WIN32)
+#if defined(_KERNEL)
+#include <ntddk.h>
+#else
+#include <WTYPES.H>
+#endif /* _KERNEL */
+#else
+#if defined(Linux)
+#if defined(__KERNEL__)
+#include <linux/types.h>
+#else
+#include <sys/types.h>
+#endif
+#else
+#include <sys/types.h>
+#endif
+#ifdef SUNOS5
+#include <sys/ddi.h>
+#include <sys/sunddi.h>
+#endif
+#ifdef OS_IS_TRU64
+#include <io/common/devdriver.h>
+#endif
+#ifdef OS_IS_HP_UX11
+#if defined(_KERNEL)
+#include <../wsio/wsio.h>
+#else
+#include <sys/wsio.h>
+#endif
+#endif
+#endif
+
+/* See comments about "UNCONFIGURED_ADAPTERS" in config.h */
+#define UNCONFIGURED_ADAPTERS 100
+
+#ifndef FALSE
+#define FALSE 0
+#endif
+
+#ifndef TRUE
+#define TRUE 1
+#endif
+
+#ifndef NULL
+#define NULL 0
+#endif
+
+#ifndef IN
+#define IN
+#endif
+
+#ifndef NOT
+#define NOT !
+#endif
+
+/*
+ * --------------------------------------------------------------------------------------
+ * Basic types of various sizes.
+ * --------------------------------------------------------------------------------------
+ */
+
+typedef signed32 scibool;
+#ifndef OS_IS_VXWORKS
+typedef signed32 BOOL;
+#else
+/* VXWORKS has already defined BOOL */
+#endif
+typedef unsigned32 node_t; /* This is the logical nodeid */
+typedef unsigned32 sciNodeId_t; /* This is the physical 16 bit SCI nodeid */
+
+/*
+ * --------------------------------------------------------------------------------------
+ * Various register types.
+ * --------------------------------------------------------------------------------------
+ */
+typedef volatile unsigned32 register32;
+
+
+/*
+Temporary for Windows NT, until we use only the above types.
+*/
+
+#ifdef WIN32
+
+typedef unsigned char u_char;
+typedef unsigned short u_short;
+typedef unsigned long u_long;
+typedef unsigned int u_int;
+typedef char * caddr_t;
+
+typedef long off_t;
+typedef unsigned int size_t;
+
+#endif
+#ifdef OS_IS_VXWORKS
+#include <vxWorks.h>
+#endif
+
+/*
+ * --------------------------------------------------------------------------------------
+ * Various address types.
+ *
+ * We are using a struct * instead of unsigned long (int) inorder to enforce strong
+ * type checking
+ *
+ * --------------------------------------------------------------------------------------
+ */
+typedef UNIQUE(void *) vkaddr_t; /* Virtual kernel address */
+typedef UNIQUE(uptr_t) vuaddr_t; /* Virtual user address */
+
+typedef UNIQUE(unsigned32) remaddr_t; /* Remote IO address (physical address on PCs) */
+typedef UNIQUE(unsigned32) sciofs_lo_t; /* Lower 32 bits of an SCI offset. */
+typedef UNIQUE(unsigned32) sciofs_hi_t; /* The upper 16 bits of an SCI offset. */
+
+typedef UNIQUE(unsigned32) ioaddr_t; /* Local IO address (physical address on PCs) */
+typedef unsigned32 u_ioaddr_t;
+typedef unsigned32 iooffset_t;
+typedef unsigned32 iosize_t;
+
+typedef uptr_t vkoffset_t;
+typedef uptr_t u_vkaddr_t;
+typedef uptr_t u_vuaddr_t;
+typedef unsigned32 u_sciofs_lo_t;
+typedef unsigned32 u_sciofs_hi_t;
+typedef unsigned32 u_remaddr_t;
+typedef unsigned32 attOffset_t; /* Address displacement from start of ATT entry */
+
+typedef unsigned32 adapterNo_t;
+
+typedef enum {
+ NO_NODE = 0,
+ AD_MEM_NODE = 1,
+ AD_ALT_NODE = 2,
+ AD_MBX_NODE = 3,
+ AD_LC_NODE = 4,
+ AD_LC_PORT_0 = 5,
+ AD_LC_PORT_1 = 6,
+ AD_LC_PORT_2 = 7,
+ PHYS_NODE = 8
+} node_type_t;
+
+
+/*
+ * Currently we don't support more than 32 bit sizes.
+ */
+#define SIZEOF(x) ((unsigned32)sizeof(x))
+
+#if defined(_KERNEL)
+
+/*
+ * --------------------------------------------------------------------------------------
+ * Some small macros intended to ease the transition to more strongly typed address
+ * types. The intention is that they in the long run shall be removed ...
+ * --------------------------------------------------------------------------------------
+ */
+#define P2SIZE_T(x) ((size_t)((uptr_t)(x))) /* Pointer to size_t */
+#define P2U32(x) ((unsigned32)((uptr_t)(x))) /* Pointer to Unsigned 32-bit int */
+#ifdef WIN32
+#define PHADDR(x) ((ioaddr_t)(x))
+#define HASV(x) (x)
+#endif
+#if 0
+static vkaddr_t VKPTR (void * ptr) { return (vkaddr_t)ptr; }
+static vkaddr_t VKADDR(volatile void * ptr) { return (vkaddr_t)ptr; }
+#else
+#define VKPTR(ptr) (vkaddr_t)ptr
+#define VKADDR(ptr) (vkaddr_t)ptr
+#endif
+
+#ifdef KLOG
+#define KLOG_LOG(n,m,v) ts_log((n),(m),(v))
+#else
+#define KLOG_LOG(n,m,v)
+#endif /* KLOG */
+
+
+/*
+ * --------------------------------------------------------------------------------------
+ *
+ * M E M A R E A T
+ *
+ * Memory area descriptor.
+ *
+ * paddr -- Physical address (aligned) of memory area
+ * ual_vaddr -- (Kernel )Virtual address of the unaligned memory area
+ * vaddr -- (Kernel) Virtual address of memory area
+ * rsize -- Real (Physical) Size of memory area
+ * msize -- Mapped (Virtual) Size of memory area (Size of area mapped
+ * into virtual) memory
+ *
+ * --------------------------------------
+ * | | <----- msize ----->| |
+ * |<------|------- rsize ------|------>|
+ * --------------------------------------
+ * /|\ /|\
+ * | |
+ * ual_vaddr vaddr/paddr
+ *
+ * --------------------------------------------------------------------------------------
+ */
+struct _memarea_ {
+ ioaddr_t ioaddr;
+ vkaddr_t vaddr;
+ vkaddr_t ual_vaddr;
+ size_t rsize;
+ size_t msize;
+ char *id;
+ unsigned32 cookie;
+
+
+#ifdef SUNOS5
+#ifdef _USE_NEW_SOLARIS_DDI_INTERFACE
+ ddi_acc_handle_t mem_handle;
+ ddi_dma_handle_t dma_handle;
+#else
+ ddi_dma_handle_t handle;
+#endif
+#endif
+#ifdef OS_IS_TRU64
+ dma_handle_t dma_handle;
+#endif
+
+#if OS_IS_LINUX
+ unsigned long ph_base_addr;
+#endif
+
+#ifdef OS_IS_HP_UX11
+ struct isc_table_type * isc;
+ wsio_shmem_attr_t type;
+#endif
+};
+
+typedef struct _memarea_ memarea_t;
+
+#ifdef SCI_MALLOC_DEBUG
+struct _maddr_ {
+ char *id;
+ size_t size;
+ struct _maddr_ *next;
+ struct _maddr_ **prev;
+ unsigned32 cookie;
+};
+
+typedef struct _maddr_ maddr_t;
+
+#define MALLOC_COOKIE 0xc3c3c3c3
+
+#else
+
+typedef struct { void *p; } *maddr_t;
+
+#endif /* SCI_MALLOC_DEBUG */
+
+
+typedef struct {
+ scibool disabled;
+ unsigned32 disable_cnt;
+} disable_info_t;
+
+#endif /* _KERNEL */
+
+#endif /* _SCI_TYPES_H_ */
diff --git a/ndb/src/external/LINUX.x86/sci/include/sisci_api.h b/ndb/src/external/LINUX.x86/sci/include/sisci_api.h
new file mode 100644
index 00000000000..38fdf54125f
--- /dev/null
+++ b/ndb/src/external/LINUX.x86/sci/include/sisci_api.h
@@ -0,0 +1,2170 @@
+/* $Id: sisci_api.h,v 1.1 2002/12/13 12:17:21 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_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 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);
+
+/*********************************************************************************
+ * *
+ * 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 *
+ * *
+ * *
+ * 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 *
+ * None. *
+ * *
+ * *
+ * 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
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ndb/src/external/LINUX.x86/sci/include/sisci_demolib.h b/ndb/src/external/LINUX.x86/sci/include/sisci_demolib.h
new file mode 100644
index 00000000000..4284fc5585c
--- /dev/null
+++ b/ndb/src/external/LINUX.x86/sci/include/sisci_demolib.h
@@ -0,0 +1,226 @@
+/* $Id: sisci_demolib.h,v 1.1 2002/12/13 12:17:21 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 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 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_DEMOLIB_H
+#define _SISCI_DEMOLIB_H
+
+
+#if defined(_REENTRANT)
+
+#define _SISCI_DEMOLIB_EXPAND_NAME(name) _SISCI_DEMOLIB_MT_ ## name
+
+#else
+
+#define _SISCI_DEMOLIB_EXPAND_NAME(name) _SISCI_DEMOLIB_ST_ ## name
+
+#endif
+
+/*********************************************************************************/
+/* Q U E R Y A D A P T E R */
+/* */
+/*********************************************************************************/
+
+#define QueryAdapter _SISCI_DEMOLIB_EXPAND_NAME(QueryAdapter)
+
+sci_error_t QueryAdapter(
+ unsigned int subcommand,
+ unsigned int localAdapterNo,
+ unsigned int portNo,
+ unsigned int *data);
+
+
+/*********************************************************************************/
+/* Q U E R Y S Y S T E M */
+/* */
+/*********************************************************************************/
+
+#define QuerySystem _SISCI_DEMOLIB_EXPAND_NAME(QuerySystem)
+
+sci_error_t QuerySystem(
+ unsigned int subcommand,
+ unsigned int *data);
+
+
+/*********************************************************************************/
+/* D E T E C T F I R S T A D A P T E R C A R D */
+/* */
+/*********************************************************************************/
+
+#define DetectFirstAdapterCard _SISCI_DEMOLIB_EXPAND_NAME(DetectFirstAdapterCard)
+
+sci_error_t DetectFirstAdapterCard(
+ unsigned int *localAdapterNo,
+ unsigned int *localNodeId);
+
+
+/*********************************************************************************/
+/* G E T A D A P T E R T Y P E */
+/* */
+/*********************************************************************************/
+
+#define GetAdapterType _SISCI_DEMOLIB_EXPAND_NAME(GetAdapterType)
+
+sci_error_t GetAdapterType(unsigned int localAdapterNo,
+ unsigned int *adapterType);
+
+
+/*********************************************************************************/
+/* G E T L O C A L N O D E I D */
+/* */
+/*********************************************************************************/
+
+#define GetLocalNodeId _SISCI_DEMOLIB_EXPAND_NAME(GetLocalNodeId)
+
+sci_error_t GetLocalNodeId(
+ unsigned int localAdapterNo,
+ unsigned int *localNodeId);
+
+
+/*********************************************************************************/
+/* G E T A D A P T E R S E R I A L N U M B E R */
+/* */
+/*********************************************************************************/
+
+#define GetAdapterSerialNumber _SISCI_DEMOLIB_EXPAND_NAME(GetAdapterSerialNumber)
+
+sci_error_t GetAdapterSerialNumber(
+ unsigned int localAdapterNo,
+ unsigned int *serialNo);
+
+
+
+/*********************************************************************************/
+/* G E T H O S T B R I D G E T Y P E */
+/* */
+/*********************************************************************************/
+
+#define GetHostbridgeType _SISCI_DEMOLIB_EXPAND_NAME(GetHostbridgeType)
+
+sci_error_t GetHostbridgeType(unsigned int *hostbridgeType);
+
+
+
+/*********************************************************************************/
+/* P R I N T H O S T B R I D G E T Y P E */
+/* */
+/*********************************************************************************/
+
+#define PrintHostbridgeType _SISCI_DEMOLIB_EXPAND_NAME(PrintHostbridgeType)
+
+void PrintHostbridgeType(unsigned int hostbridge);
+
+
+
+/*********************************************************************************/
+/* G E T A P I V E R S I O N S T R I N G */
+/* */
+/*********************************************************************************/
+
+#define GetAPIVersionString _SISCI_DEMOLIB_EXPAND_NAME(GetAPIVersionString)
+
+sci_error_t GetAPIVersionString(char str[], unsigned int strLength);
+
+
+
+/*********************************************************************************/
+/* G E T A D A P T E R I O B U S F R E Q U E N C Y */
+/* */
+/*********************************************************************************/
+
+sci_error_t GetAdapterIoBusFrequency(unsigned int localAdapterNo,
+ unsigned int *ioBusFrequency);
+
+
+
+/*********************************************************************************/
+/* G E T A D A P T E R S C I L I N K F R E Q U E N C Y */
+/* */
+/*********************************************************************************/
+
+sci_error_t GetAdapterSciLinkFrequency(unsigned int localAdapterNo,
+ unsigned int *sciLinkFrequency);
+
+
+
+/*********************************************************************************/
+/* G E T A D A P T E R B L I N K F R E Q U E N C Y */
+/* */
+/*********************************************************************************/
+
+sci_error_t GetAdapterBlinkFrequency(unsigned int localAdapterNo,
+ unsigned int *bLinkFrequency);
+
+
+/*********************************************************************************/
+/* S E N D I N T E R R U P T */
+/* */
+/*********************************************************************************/
+
+#define SendInterrupt _SISCI_DEMOLIB_EXPAND_NAME(SendInterrupt)
+
+sci_error_t SendInterrupt(
+ sci_desc_t sd,
+ unsigned int localAdapterNo,
+ unsigned int localNodeId,
+ unsigned int remoteNodeId,
+ unsigned int interruptNo);
+
+
+/*********************************************************************************/
+/* R E C E I V E I N T E R R U P T */
+/* */
+/*********************************************************************************/
+
+#define ReceiveInterrupt _SISCI_DEMOLIB_EXPAND_NAME(ReceiveInterrupt)
+
+sci_error_t ReceiveInterrupt(
+ sci_desc_t sd,
+ unsigned int localAdapterNo,
+ unsigned int localNodeId,
+ unsigned int interruptNo);
+
+
+/*********************************************************************************/
+/* E N D I A N S W A P */
+/* */
+/*********************************************************************************/
+
+#define EndianSwap _SISCI_DEMOLIB_EXPAND_NAME(EndianSwap)
+
+unsigned int EndianSwap (unsigned int value);
+
+
+/*********************************************************************************/
+/* S L E E P M I L L I S E C O N D S */
+/* */
+/*********************************************************************************/
+
+#define SleepMilliseconds _SISCI_DEMOLIB_EXPAND_NAME(SleepMilliseconds)
+
+void SleepMilliseconds(int milliseconds);
+
+
+
+
+#endif
diff --git a/ndb/src/external/LINUX.x86/sci/include/sisci_error.h b/ndb/src/external/LINUX.x86/sci/include/sisci_error.h
new file mode 100644
index 00000000000..c53fe8ad5d9
--- /dev/null
+++ b/ndb/src/external/LINUX.x86/sci/include/sisci_error.h
@@ -0,0 +1,89 @@
+/* $Id: sisci_error.h,v 1.1 2002/12/13 12:17:21 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 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 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_ERROR_H_
+#define _SISCI_ERROR_H_
+
+
+/* SCI Error return values always have 30 bit set */
+#define SCI_ERR_MASK 0x40000000
+#define SCI_ERR_REMOTE_MASK 0x01 /* Remote errors should have bit 0 set */
+
+#define SCI_ERR(u) ((unsigned32)(u)&0x7FFFFFFF )
+
+/* Error codes */
+typedef enum {
+ SCI_ERR_OK = 0x000,
+
+
+ SCI_ERR_BUSY = (0x900 | SCI_ERR_MASK),
+ SCI_ERR_FLAG_NOT_IMPLEMENTED = (0x901 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_FLAG = (0x902 | SCI_ERR_MASK),
+ SCI_ERR_NOSPC = (0x904 | SCI_ERR_MASK),
+ SCI_ERR_API_NOSPC = (0x905 | SCI_ERR_MASK),
+ SCI_ERR_HW_NOSPC = (0x906 | SCI_ERR_MASK),
+ SCI_ERR_NOT_IMPLEMENTED = (0x907 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_ADAPTERNO = (0x908 | SCI_ERR_MASK),
+ SCI_ERR_NO_SUCH_ADAPTERNO = (0x909 | SCI_ERR_MASK),
+ SCI_ERR_TIMEOUT = (0x90A | SCI_ERR_MASK),
+ SCI_ERR_OUT_OF_RANGE = (0x90B | SCI_ERR_MASK),
+ SCI_ERR_NO_SUCH_SEGMENT = (0x90C | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_NODEID = (0x90D | SCI_ERR_MASK),
+ SCI_ERR_CONNECTION_REFUSED = (0x90E | SCI_ERR_MASK),
+ SCI_ERR_SEGMENT_NOT_CONNECTED = (0x90F | SCI_ERR_MASK),
+ SCI_ERR_SIZE_ALIGNMENT = (0x910 | SCI_ERR_MASK),
+ SCI_ERR_OFFSET_ALIGNMENT = (0x911 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_PARAMETER = (0x912 | SCI_ERR_MASK),
+ SCI_ERR_MAX_ENTRIES = (0x913 | SCI_ERR_MASK),
+ SCI_ERR_SEGMENT_NOT_PREPARED = (0x914 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_ADDRESS = (0x915 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_OPERATION = (0x916 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_QUERY = (0x917 | SCI_ERR_MASK),
+ SCI_ERR_SEGMENTID_USED = (0x918 | SCI_ERR_MASK),
+ SCI_ERR_SYSTEM = (0x919 | SCI_ERR_MASK),
+ SCI_ERR_CANCELLED = (0x91A | SCI_ERR_MASK),
+ SCI_ERR_NOT_CONNECTED = (0x91B | SCI_ERR_MASK),
+ SCI_ERR_NOT_AVAILABLE = (0x91C | SCI_ERR_MASK),
+ SCI_ERR_INCONSISTENT_VERSIONS = (0x91D | SCI_ERR_MASK),
+ SCI_ERR_COND_INT_RACE_PROBLEM = (0x91E | SCI_ERR_MASK),
+ SCI_ERR_OVERFLOW = (0x91F | SCI_ERR_MASK),
+ SCI_ERR_NOT_INITIALIZED = (0x920 | SCI_ERR_MASK),
+
+ SCI_ERR_ACCESS = (0x921 | SCI_ERR_MASK),
+
+ SCI_ERR_NO_SUCH_NODEID = (0xA00 | SCI_ERR_MASK),
+ SCI_ERR_NODE_NOT_RESPONDING = (0xA02 | SCI_ERR_MASK),
+ SCI_ERR_NO_REMOTE_LINK_ACCESS = (0xA04 | SCI_ERR_MASK),
+ SCI_ERR_NO_LINK_ACCESS = (0xA05 | SCI_ERR_MASK),
+ SCI_ERR_TRANSFER_FAILED = (0xA06 | SCI_ERR_MASK)
+} sci_error_t;
+
+
+#endif /* _SCI_ERROR_H_ */
+
+
+
diff --git a/ndb/src/external/LINUX.x86/sci/include/sisci_types.h b/ndb/src/external/LINUX.x86/sci/include/sisci_types.h
new file mode 100644
index 00000000000..f4125fdec69
--- /dev/null
+++ b/ndb/src/external/LINUX.x86/sci/include/sisci_types.h
@@ -0,0 +1,133 @@
+/* $Id: sisci_types.h,v 1.1 2002/12/13 12:17:21 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 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 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_TYPES_H
+#define _SISCI_TYPES_H
+
+#include "sisci_error.h"
+
+#ifndef IN
+#define IN
+#endif
+
+#ifndef OUT
+#define OUT
+#endif
+
+#ifndef IN_OUT
+#define IN_OUT
+#endif
+
+/* Opaque data types for descriptors/handles */
+typedef struct sci_desc *sci_desc_t;
+typedef struct sci_local_segment *sci_local_segment_t;
+typedef struct sci_remote_segment *sci_remote_segment_t;
+
+typedef struct sci_map *sci_map_t;
+typedef struct sci_sequence *sci_sequence_t;
+#ifndef KERNEL
+typedef struct sci_dma_queue *sci_dma_queue_t;
+#endif
+typedef struct sci_remote_interrupt *sci_remote_interrupt_t;
+typedef struct sci_local_interrupt *sci_local_interrupt_t;
+typedef struct sci_block_transfer *sci_block_transfer_t;
+
+/*
+ * Constants defining reasons for segment callbacks:
+ */
+
+typedef enum {
+ SCI_CB_CONNECT = 1,
+ SCI_CB_DISCONNECT,
+ SCI_CB_NOT_OPERATIONAL,
+ SCI_CB_OPERATIONAL,
+ SCI_CB_LOST
+} sci_segment_cb_reason_t;
+
+#define MAX_CB_REASON SCI_CB_LOST
+
+/* dma_queue_states is identical to the dma_queue_state_t in genif.h, they must be consistent.*/
+typedef enum {
+ SCI_DMAQUEUE_IDLE,
+ SCI_DMAQUEUE_GATHER,
+ SCI_DMAQUEUE_POSTED,
+ SCI_DMAQUEUE_DONE,
+ SCI_DMAQUEUE_ABORTED,
+ SCI_DMAQUEUE_ERROR
+} sci_dma_queue_state_t;
+
+
+typedef enum {
+ SCI_SEQ_OK,
+ SCI_SEQ_RETRIABLE,
+ SCI_SEQ_NOT_RETRIABLE,
+ SCI_SEQ_PENDING
+} sci_sequence_status_t;
+
+
+typedef struct {
+ unsigned short nodeId; /* SCI Address bit 63 - 48 */
+ unsigned short offsHi; /* SCI Address bit 47 - 32 */
+ unsigned int offsLo; /* SCI Address bit 31 - 0 */
+} sci_address_t;
+
+
+typedef unsigned int sci_ioaddr_t;
+
+typedef enum {
+ SCI_CALLBACK_CANCEL = 1,
+ SCI_CALLBACK_CONTINUE
+} sci_callback_action_t;
+
+#ifndef KERNEL
+typedef sci_callback_action_t (*sci_cb_local_segment_t)(void *arg,
+ sci_local_segment_t segment,
+ sci_segment_cb_reason_t reason,
+ unsigned int nodeId,
+ unsigned int localAdapterNo,
+ sci_error_t error);
+
+typedef sci_callback_action_t (*sci_cb_remote_segment_t)(void *arg,
+ sci_remote_segment_t segment,
+ sci_segment_cb_reason_t reason,
+ sci_error_t status);
+
+
+typedef sci_callback_action_t (*sci_cb_dma_t)(void IN *arg,
+ sci_dma_queue_t queue,
+ sci_error_t status);
+
+
+typedef int (*sci_cb_block_transfer_t)(void *arg,
+ sci_block_transfer_t block,
+ sci_error_t status);
+
+
+typedef sci_callback_action_t (*sci_cb_interrupt_t)(void *arg,
+ sci_local_interrupt_t interrupt,
+ sci_error_t status);
+
+#endif /* KERNEL */
+#endif
diff --git a/ndb/src/external/LINUX.x86/sci/include/sisci_version.h b/ndb/src/external/LINUX.x86/sci/include/sisci_version.h
new file mode 100644
index 00000000000..f1807c33aa5
--- /dev/null
+++ b/ndb/src/external/LINUX.x86/sci/include/sisci_version.h
@@ -0,0 +1,91 @@
+/* $Id: sisci_version.h,v 1.1 2002/12/13 12:17:21 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * 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_VERSION_H
+#define SISCI_VERSION_H
+
+
+#define SISCI_API_VER_MAJOR 0x01
+#define SISCI_API_VER_MAJORC "1"
+
+#define SISCI_API_VER_MINOR 0x010
+#define SISCI_API_VER_MINORC "10"
+#define SISCI_API_VER_MICRO 0x005
+#define SISCI_API_VER_MICROC "5"
+
+#define SISCI_SIGN_VERSION_MASK 0xfffff000 /* used to mask off API_VER_MICRO */
+
+#define SISCI_API_VERSION (SISCI_API_VER_MAJOR << 24 | SISCI_API_VER_MINOR << 12 | SISCI_API_VER_MICRO)
+
+/* the rules are:
+ *
+ * Changes in API_VER_MICRO should be binary compatible, New flags, functions added. No changes to user code
+ * required if new features is not needed.
+ *
+ * Changes in API_VER_MINOR requires recompilation of user code.
+ *
+ * Changes in the API_VER_MAJOR will most likely require changes to user code. This should not happen very
+ * often...
+ *
+ */
+
+#ifndef BUILD_DATE
+#define BUILD_DATE __DATE__
+#endif
+
+#ifndef BUILD_NAME
+#define BUILD_NAME ""
+#endif
+
+#define API_VERSION "SISCI API version " SISCI_API_VER_MAJORC "." SISCI_API_VER_MINORC "."SISCI_API_VER_MICROC " ( "BUILD_NAME" "BUILD_DATE" )"
+
+#endif
+
+
+/* Version info: */
+/* */
+/* 1.5.2 First SISCI version */
+/* 1.5.3 Some bug fixes */
+/* 1.5.4 Some bug fixes */
+/* 1.5.5 No release */
+/* 1.5.6 Lock flag implemented in function SCIConnectSegment */
+/* 1.5.7 Expanded query functionality */
+/* 1.5.8 Updated error checking (sequence) functionality for D320 */
+/* 1.6.0 Updated error checking (sequence) D320 and IRM 1.9 support */
+/* 1.9.0 Ported to Solaris_sparc, Solaris_x86 and Linux. IRM 1.9. */
+/* 1.9.1 Some bug fixes */
+/* 1.9.2 Added more adapter queries */
+/* 1.9.3 Bug fix in SCIMapLocalSegment and SCIMapRemoteSegment */
+/* 1.9.4 NT Release Developers Kit 2.40 */
+/* 1.9.5 Added flush after data transfer in SCIMemCopy() */
+/* 1.9.5 NT Release Developers Kit 2.44 */
+/* 1.10.0:
+ * New SCIInitialize(), SCITerminate() functions.
+ * Support for D330
+ *
+ *
+ */
+
+
diff --git a/ndb/src/external/LINUX.x86/sci/include/version.h b/ndb/src/external/LINUX.x86/sci/include/version.h
new file mode 100644
index 00000000000..a0e1fa6c5cd
--- /dev/null
+++ b/ndb/src/external/LINUX.x86/sci/include/version.h
@@ -0,0 +1,25 @@
+#ifndef _VERSION_H
+#define _VERSION_H
+
+
+/*
+#define DEMO_VER_MAJOR "1"
+#define DEMO_VER_MINOR "5"
+#define DEMO_VER_MICRO "0"
+*/
+
+#ifndef BUILD_DATE
+#define BUILD_DATE __DATE__
+#endif
+
+#ifndef BUILD_NAME
+#define BUILD_NAME ""
+#endif
+
+/*
+#define DEMO_VERSION "version " DEMO_VER_MAJOR "." DEMO_VER_MINOR "."DEMO_VER_MICRO " ("BUILD_NAME" "BUILD_DATE" )"
+*/
+#define DEMO_VERSION " ("BUILD_NAME" "BUILD_DATE" )"
+
+
+#endif
diff --git a/ndb/src/external/SOLARIS.SPARC/sci/include/sisci_api.h b/ndb/src/external/SOLARIS.SPARC/sci/include/sisci_api.h
new file mode 100644
index 00000000000..d02d3aafe7f
--- /dev/null
+++ b/ndb/src/external/SOLARIS.SPARC/sci/include/sisci_api.h
@@ -0,0 +1,2148 @@
+/* $Id: sisci_api.h,v 1.1 2002/12/13 12:17:22 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_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_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_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 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_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_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_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);
+
+/*********************************************************************************
+ * *
+ * 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 *
+ * *
+ * *
+ * 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 *
+ * None. *
+ * *
+ * *
+ * 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
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ndb/src/external/SOLARIS.SPARC/sci/include/sisci_error.h b/ndb/src/external/SOLARIS.SPARC/sci/include/sisci_error.h
new file mode 100644
index 00000000000..aab7c136d3a
--- /dev/null
+++ b/ndb/src/external/SOLARIS.SPARC/sci/include/sisci_error.h
@@ -0,0 +1,89 @@
+/* $Id: sisci_error.h,v 1.1 2002/12/13 12:17:22 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 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 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_ERROR_H_
+#define _SISCI_ERROR_H_
+
+
+/* SCI Error return values always have 30 bit set */
+#define SCI_ERR_MASK 0x40000000
+#define SCI_ERR_REMOTE_MASK 0x01 /* Remote errors should have bit 0 set */
+
+#define SCI_ERR(u) ((unsigned32)(u)&0x7FFFFFFF )
+
+/* Error codes */
+typedef enum {
+ SCI_ERR_OK = 0x000,
+
+
+ SCI_ERR_BUSY = (0x900 | SCI_ERR_MASK),
+ SCI_ERR_FLAG_NOT_IMPLEMENTED = (0x901 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_FLAG = (0x902 | SCI_ERR_MASK),
+ SCI_ERR_NOSPC = (0x904 | SCI_ERR_MASK),
+ SCI_ERR_API_NOSPC = (0x905 | SCI_ERR_MASK),
+ SCI_ERR_HW_NOSPC = (0x906 | SCI_ERR_MASK),
+ SCI_ERR_NOT_IMPLEMENTED = (0x907 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_ADAPTERNO = (0x908 | SCI_ERR_MASK),
+ SCI_ERR_NO_SUCH_ADAPTERNO = (0x909 | SCI_ERR_MASK),
+ SCI_ERR_TIMEOUT = (0x90A | SCI_ERR_MASK),
+ SCI_ERR_OUT_OF_RANGE = (0x90B | SCI_ERR_MASK),
+ SCI_ERR_NO_SUCH_SEGMENT = (0x90C | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_NODEID = (0x90D | SCI_ERR_MASK),
+ SCI_ERR_CONNECTION_REFUSED = (0x90E | SCI_ERR_MASK),
+ SCI_ERR_SEGMENT_NOT_CONNECTED = (0x90F | SCI_ERR_MASK),
+ SCI_ERR_SIZE_ALIGNMENT = (0x910 | SCI_ERR_MASK),
+ SCI_ERR_OFFSET_ALIGNMENT = (0x911 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_PARAMETER = (0x912 | SCI_ERR_MASK),
+ SCI_ERR_MAX_ENTRIES = (0x913 | SCI_ERR_MASK),
+ SCI_ERR_SEGMENT_NOT_PREPARED = (0x914 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_ADDRESS = (0x915 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_OPERATION = (0x916 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_QUERY = (0x917 | SCI_ERR_MASK),
+ SCI_ERR_SEGMENTID_USED = (0x918 | SCI_ERR_MASK),
+ SCI_ERR_SYSTEM = (0x919 | SCI_ERR_MASK),
+ SCI_ERR_CANCELLED = (0x91A | SCI_ERR_MASK),
+ SCI_ERR_NOT_CONNECTED = (0x91B | SCI_ERR_MASK),
+ SCI_ERR_NOT_AVAILABLE = (0x91C | SCI_ERR_MASK),
+ SCI_ERR_INCONSISTENT_VERSIONS = (0x91D | SCI_ERR_MASK),
+ SCI_ERR_COND_INT_RACE_PROBLEM = (0x91E | SCI_ERR_MASK),
+ SCI_ERR_OVERFLOW = (0x91F | SCI_ERR_MASK),
+ SCI_ERR_NOT_INITIALIZED = (0x920 | SCI_ERR_MASK),
+
+ SCI_ERR_ACCESS = (0x921 | SCI_ERR_MASK),
+
+ SCI_ERR_NO_SUCH_NODEID = (0xA00 | SCI_ERR_MASK),
+ SCI_ERR_NODE_NOT_RESPONDING = (0xA02 | SCI_ERR_MASK),
+ SCI_ERR_NO_REMOTE_LINK_ACCESS = (0xA04 | SCI_ERR_MASK),
+ SCI_ERR_NO_LINK_ACCESS = (0xA05 | SCI_ERR_MASK),
+ SCI_ERR_TRANSFER_FAILED = (0xA06 | SCI_ERR_MASK)
+} sci_error_t;
+
+
+#endif /* _SCI_ERROR_H_ */
+
+
+
diff --git a/ndb/src/external/SOLARIS.SPARC/sci/include/sisci_types.h b/ndb/src/external/SOLARIS.SPARC/sci/include/sisci_types.h
new file mode 100644
index 00000000000..77989ffca59
--- /dev/null
+++ b/ndb/src/external/SOLARIS.SPARC/sci/include/sisci_types.h
@@ -0,0 +1,133 @@
+/* $Id: sisci_types.h,v 1.1 2002/12/13 12:17:22 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 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 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_TYPES_H
+#define _SISCI_TYPES_H
+
+#include "sisci_error.h"
+
+#ifndef IN
+#define IN
+#endif
+
+#ifndef OUT
+#define OUT
+#endif
+
+#ifndef IN_OUT
+#define IN_OUT
+#endif
+
+/* Opaque data types for descriptors/handles */
+typedef struct sci_desc *sci_desc_t;
+typedef struct sci_local_segment *sci_local_segment_t;
+typedef struct sci_remote_segment *sci_remote_segment_t;
+
+typedef struct sci_map *sci_map_t;
+typedef struct sci_sequence *sci_sequence_t;
+#ifndef KERNEL
+typedef struct sci_dma_queue *sci_dma_queue_t;
+#endif
+typedef struct sci_remote_interrupt *sci_remote_interrupt_t;
+typedef struct sci_local_interrupt *sci_local_interrupt_t;
+typedef struct sci_block_transfer *sci_block_transfer_t;
+
+/*
+ * Constants defining reasons for segment callbacks:
+ */
+
+typedef enum {
+ SCI_CB_CONNECT = 1,
+ SCI_CB_DISCONNECT,
+ SCI_CB_NOT_OPERATIONAL,
+ SCI_CB_OPERATIONAL,
+ SCI_CB_LOST
+} sci_segment_cb_reason_t;
+
+#define MAX_CB_REASON SCI_CB_LOST
+
+/* dma_queue_states is identical to the dma_queue_state_t in genif.h, they must be consistent.*/
+typedef enum {
+ SCI_DMAQUEUE_IDLE,
+ SCI_DMAQUEUE_GATHER,
+ SCI_DMAQUEUE_POSTED,
+ SCI_DMAQUEUE_DONE,
+ SCI_DMAQUEUE_ABORTED,
+ SCI_DMAQUEUE_ERROR
+} sci_dma_queue_state_t;
+
+
+typedef enum {
+ SCI_SEQ_OK,
+ SCI_SEQ_RETRIABLE,
+ SCI_SEQ_NOT_RETRIABLE,
+ SCI_SEQ_PENDING
+} sci_sequence_status_t;
+
+
+typedef struct {
+ unsigned short nodeId; /* SCI Address bit 63 - 48 */
+ unsigned short offsHi; /* SCI Address bit 47 - 32 */
+ unsigned int offsLo; /* SCI Address bit 31 - 0 */
+} sci_address_t;
+
+
+typedef unsigned int sci_ioaddr_t;
+
+typedef enum {
+ SCI_CALLBACK_CANCEL = 1,
+ SCI_CALLBACK_CONTINUE
+} sci_callback_action_t;
+
+#ifndef KERNEL
+typedef sci_callback_action_t (*sci_cb_local_segment_t)(void *arg,
+ sci_local_segment_t segment,
+ sci_segment_cb_reason_t reason,
+ unsigned int nodeId,
+ unsigned int localAdapterNo,
+ sci_error_t error);
+
+typedef sci_callback_action_t (*sci_cb_remote_segment_t)(void *arg,
+ sci_remote_segment_t segment,
+ sci_segment_cb_reason_t reason,
+ sci_error_t status);
+
+
+typedef sci_callback_action_t (*sci_cb_dma_t)(void IN *arg,
+ sci_dma_queue_t queue,
+ sci_error_t status);
+
+
+typedef int (*sci_cb_block_transfer_t)(void *arg,
+ sci_block_transfer_t block,
+ sci_error_t status);
+
+
+typedef sci_callback_action_t (*sci_cb_interrupt_t)(void *arg,
+ sci_local_interrupt_t interrupt,
+ sci_error_t status);
+
+#endif /* KERNEL */
+#endif
diff --git a/ndb/src/external/SOLARIS.SPARC/sci/include/sisci_version.h b/ndb/src/external/SOLARIS.SPARC/sci/include/sisci_version.h
new file mode 100644
index 00000000000..c2fccb9ec33
--- /dev/null
+++ b/ndb/src/external/SOLARIS.SPARC/sci/include/sisci_version.h
@@ -0,0 +1,91 @@
+/* $Id: sisci_version.h,v 1.1 2002/12/13 12:17:22 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * 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_VERSION_H
+#define SISCI_VERSION_H
+
+
+#define SISCI_API_VER_MAJOR 1
+#define SISCI_API_VER_MAJORC "1"
+
+#define SISCI_API_VER_MINOR 10
+#define SISCI_API_VER_MINORC "10"
+#define SISCI_API_VER_MICRO 4
+#define SISCI_API_VER_MICROC "4"
+
+#define SISCI_SIGN_VERSION_MASK 0xfffff000 /* used to mask off API_VER_MICRO */
+
+#define SISCI_API_VERSION (SISCI_API_VER_MAJOR << 24 | SISCI_API_VER_MINOR << 12 | SISCI_API_VER_MICRO)
+
+/* the rules are:
+ *
+ * Changes in API_VER_MICRO should be binary compatible, New flags, functions added. No changes to user code
+ * required if new features is not needed.
+ *
+ * Changes in API_VER_MINOR requires recompilation of user code.
+ *
+ * Changes in the API_VER_MAJOR will most likely require changes to user code. This should not happen very
+ * often...
+ *
+ */
+
+#ifndef BUILD_DATE
+#define BUILD_DATE __DATE__
+#endif
+
+#ifndef BUILD_NAME
+#define BUILD_NAME ""
+#endif
+
+#define API_VERSION "SISCI API version " SISCI_API_VER_MAJORC "." SISCI_API_VER_MINORC "."SISCI_API_VER_MICROC " ( "BUILD_NAME" "BUILD_DATE" )"
+
+#endif
+
+
+/* Version info: */
+/* */
+/* 1.5.2 First SISCI version */
+/* 1.5.3 Some bug fixes */
+/* 1.5.4 Some bug fixes */
+/* 1.5.5 No release */
+/* 1.5.6 Lock flag implemented in function SCIConnectSegment */
+/* 1.5.7 Expanded query functionality */
+/* 1.5.8 Updated error checking (sequence) functionality for D320 */
+/* 1.6.0 Updated error checking (sequence) D320 and IRM 1.9 support */
+/* 1.9.0 Ported to Solaris_sparc, Solaris_x86 and Linux. IRM 1.9. */
+/* 1.9.1 Some bug fixes */
+/* 1.9.2 Added more adapter queries */
+/* 1.9.3 Bug fix in SCIMapLocalSegment and SCIMapRemoteSegment */
+/* 1.9.4 NT Release Developers Kit 2.40 */
+/* 1.9.5 Added flush after data transfer in SCIMemCopy() */
+/* 1.9.5 NT Release Developers Kit 2.44 */
+/* 1.10.0:
+ * New SCIInitialize(), SCITerminate() functions.
+ * Support for D330
+ *
+ *
+ */
+
+
diff --git a/ndb/src/external/WIN32.x86/sci/include/rmlib.h b/ndb/src/external/WIN32.x86/sci/include/rmlib.h
new file mode 100644
index 00000000000..87ba20db99f
--- /dev/null
+++ b/ndb/src/external/WIN32.x86/sci/include/rmlib.h
@@ -0,0 +1,212 @@
+/* $Id: rmlib.h,v 1.1 2002/12/13 12:17:23 hin Exp $ */
+
+/*********************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * 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. *
+ * *
+ * *
+ *********************************************************************************/
+
+/********************************************************************************/
+/* This header file contains the declarations of the SCI Reflective Memory */
+/* library rmlib. The implementation of the library functions is in rmlib.c. */
+/* The library contains all the functions that operate on the reflective */
+/* memory. */
+/* */
+/* NB! */
+/* */
+/* DOLPHIN'S SCI REFLECTIVE MEMORY FILES ARE UNDER DEVELOPMENT AND MAY CHANGE. */
+/* PLEASE CONTACT DOLPHIN FOR FURTHER INFORMATION. */
+/* */
+/* */
+/********************************************************************************/
+
+#include "sisci_error.h"
+#include "sisci_api.h"
+#include "sisci_demolib.h"
+#include "sisci_types.h"
+
+unsigned int seqerr, syncseqerr;
+
+#ifndef _RMLIB_H
+#define _RMLIB_H
+
+
+#if defined(_REENTRANT)
+
+#define _RMLIB_EXPAND_NAME(name) _RMLIB_MT_ ## name
+
+#else
+
+#define _RMLIB_EXPAND_NAME(name) _RMLIB_ST_ ## name
+
+#endif
+
+#ifdef __sparc
+#define CACHE_SIZE 2097152
+#else
+#define CACHE_SIZE 8192
+#endif
+
+/*********************************************************************************/
+/* FLAG VALUES */
+/*********************************************************************************/
+
+#define REFLECT_ERRCHECK 0x2
+
+struct ReflectiveMemorySpace {
+ unsigned int localAdapterNo;
+ unsigned int localNodeId;
+ unsigned int remoteNodeId;
+ sci_desc_t sd;
+ sci_desc_t syncsd;
+ sci_map_t localMap;
+ sci_map_t remoteMap;
+ unsigned int localSegmentId;
+ unsigned int remoteSegmentId;
+ unsigned int syncSegmentId;
+ unsigned int sync_rSegmentId;
+ unsigned int segmentSize;
+ unsigned int *localMapAddr;
+ volatile unsigned int *remoteMapAddr;
+ sci_local_segment_t localSegment;
+ sci_remote_segment_t remoteSegment;
+ sci_local_segment_t syncSegment;
+ sci_remote_segment_t sync_rSegment;
+ sci_map_t syncMap;
+ sci_map_t sync_rMap;
+ sci_sequence_t syncsequence;
+ sci_sequence_t sequence;
+ unsigned int protection;
+ unsigned int retry_value;
+ sci_sequence_status_t sequenceStatus, syncsequenceStatus;
+ volatile unsigned int *syncMapAddr;
+ volatile unsigned int *sync_rMapAddr;
+};
+
+/*********************************************************************************/
+/* P R I N T R E F L E C T I V E M E M O R Y S P A C E */
+/* */
+/*********************************************************************************/
+#define ReflectPrintParameters _RMLIB_EXPAND_NAME(ReflectPrintParameters)
+void ReflectPrintParameters(FILE *stream, struct ReflectiveMemorySpace RM_space);
+
+/*********************************************************************************/
+/* R E F L E C T D M A S E T U P */
+/* */
+/*********************************************************************************/
+#define ReflectDmaSetup _RMLIB_EXPAND_NAME(ReflectDmaSetup)
+sci_error_t ReflectDmaSetup(struct ReflectiveMemorySpace RM_space, sci_dma_queue_t *dmaQueue);
+
+/*********************************************************************************/
+/* R E F L E C T D M A R E M O V E */
+/* */
+/*********************************************************************************/
+#define ReflectDmaRemove _RMLIB_EXPAND_NAME(ReflectDmaRemove)
+sci_error_t ReflectDmaRemove(sci_dma_queue_t dmaQueue);
+
+/*********************************************************************************/
+/* R E F L E C T D M A R U N */
+/* */
+/*********************************************************************************/
+#define ReflectDmaRun _RMLIB_EXPAND_NAME(ReflectDmaRun)
+sci_error_t ReflectDmaRun(struct ReflectiveMemorySpace RM_space,
+ unsigned int* privateSrc,
+ unsigned int size,
+ unsigned int offset,
+ sci_dma_queue_t dmaQueue);
+/*********************************************************************************/
+/* C L O S E R E F L E C T I V E M E M O R Y S P A C E */
+/* */
+/*********************************************************************************/
+#define ReflectClose _RMLIB_EXPAND_NAME(ReflectClose)
+sci_error_t ReflectClose(struct ReflectiveMemorySpace RM_space, unsigned int segment_no);
+
+/*********************************************************************************/
+/* O P E N R E F L E C T I V E M E M O R Y S P A C E */
+/* */
+/*********************************************************************************/
+#define ReflectOpen _RMLIB_EXPAND_NAME(ReflectOpen)
+sci_error_t ReflectOpen(struct ReflectiveMemorySpace *RM_space,
+ unsigned int size,
+ unsigned int segment_no,
+ unsigned int localAdapterNo,
+ unsigned int remoteNodeId,
+ unsigned int protection,
+ unsigned int retry_value);
+
+/*********************************************************************************/
+/* R E F L E C T G E T A C C E S S */
+/* */
+/*********************************************************************************/
+#define ReflectGetAccess _RMLIB_EXPAND_NAME(ReflectGetAccess)
+sci_error_t ReflectGetAccess(struct ReflectiveMemorySpace *RM_space);
+
+/*********************************************************************************/
+/* R E F L E C T R E L E A S E A C C E S S */
+/* */
+/*********************************************************************************/
+#define ReflectReleaseAccess _RMLIB_EXPAND_NAME(ReflectReleaseAccess)
+sci_error_t ReflectReleaseAccess(struct ReflectiveMemorySpace *RM_space);
+
+/*********************************************************************************/
+/* R E F L E C T D M A */
+/* */
+/*********************************************************************************/
+#define ReflectDma _RMLIB_EXPAND_NAME(ReflectDma)
+sci_error_t ReflectDma(struct ReflectiveMemorySpace RM_space,
+ unsigned int* privateSrc,
+ unsigned int size,
+ unsigned int offset);
+
+/*********************************************************************************/
+/* R E F L E C T M E M C O P Y */
+/* */
+/*********************************************************************************/
+#define ReflectMemCopy _RMLIB_EXPAND_NAME(ReflectMemCopy)
+sci_error_t ReflectMemCopy(struct ReflectiveMemorySpace RM_space,
+ unsigned int* privateSrc,
+ unsigned int size,
+ unsigned int offset,
+ unsigned int flags);
+
+/*********************************************************************************/
+/* R E F L E C T S E T */
+/* */
+/*********************************************************************************/
+#define ReflectSet _RMLIB_EXPAND_NAME(ReflectSet)
+sci_error_t ReflectSet(struct ReflectiveMemorySpace RM_space,
+ unsigned int value,
+ unsigned int size,
+ unsigned int offset,
+ unsigned int flags
+ );
+
+/*********************************************************************************/
+/* R E F L E C T P R I N T */
+/* */
+/*********************************************************************************/
+#define ReflectPrint _RMLIB_EXPAND_NAME(ReflectPrint)
+sci_error_t ReflectPrint(FILE *stream,
+ struct ReflectiveMemorySpace RM_space,
+ unsigned int size,
+ unsigned int offset
+ );
+
+
+#endif
diff --git a/ndb/src/external/WIN32.x86/sci/include/scilib.h b/ndb/src/external/WIN32.x86/sci/include/scilib.h
new file mode 100644
index 00000000000..d1501082bab
--- /dev/null
+++ b/ndb/src/external/WIN32.x86/sci/include/scilib.h
@@ -0,0 +1,330 @@
+/* $Id: scilib.h,v 1.1 2002/12/13 12:17:23 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 2002 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ *******************************************************************************/
+
+
+#if defined(_REENTRANT)
+#define _SCIL_EXPANDE_FUNCTION_NAME(name) _SCIL_PUBLIC_FUNC_MT_ ## name
+#define _SCIL_EXPANDE_VARIABLE_NAME(name) _SCIL_PUBLIC_VAR_MT_ ## name
+#else
+#define _SCIL_EXPANDE_FUNCTION_NAME(name) _SCIL_PUBLIC_FUNC_ST_ ## name
+#define _SCIL_EXPANDE_VARIABLE_NAME(name) _SCIL_PUBLIC_VAR_ST_ ## name
+#endif
+#define _SCIL_EXPANDE_CONSTANT_NAME(name) _SCIL_PUBLIC_CONST_ ## name
+
+#include "sisci_api.h"
+
+#if defined(CPLUSPLUS) || defined(__cplusplus)
+extern "C" {
+#endif
+
+
+/*
+ * SISCI segment id pollution:
+ * ===========================
+ * The SISCI library uses regular SISCI segmens internally.
+ * The MSG_QUEUE_LIB_IDENTIFIER_MASK is a mask which is used by the SISCI
+ * library to identify internal SISCI segments ids, from segments used directly
+ * by the user.
+ *
+ * Future versions of the library may have its own namespace.
+ *
+ */
+
+#define MSG_QUEUE_LIB_IDENTIFIER_MASK 0x10000000
+
+
+/*********************************************************************************/
+/* FLAG VALUES */
+/*********************************************************************************/
+
+#define SCIL_FLAG_ERROR_CHECK_DATA _SCIL_EXPANDE_CONSTANT_NAME(SCIL_FLAG_ERROR_CHECK_DATA)
+extern const unsigned int SCIL_FLAG_ERROR_CHECK_DATA;
+
+#define SCIL_FLAG_ERROR_CHECK_PROT _SCIL_EXPANDE_CONSTANT_NAME(SCIL_FLAG_ERROR_CHECK_PROT)
+extern const unsigned int SCIL_FLAG_ERROR_CHECK_PROT;
+
+#define SCIL_FLAG_FULL_ERROR_CHECK _SCIL_EXPANDE_CONSTANT_NAME(SCIL_FLAG_FULL_ERROR_CHECK)
+extern const unsigned int SCIL_FLAG_FULL_ERROR_CHECK;
+
+
+
+
+
+typedef struct sci_msq_queue *sci_msq_queue_t;
+
+
+/*********************************************************************************
+ * *
+ * S C I L C r e a t e M s g Q u e u e *
+ * *
+ * Parameters: *
+ * *
+ * Creates a message queue. The message queue identifier object will be allocated*
+ * if the sci_msq_queue_t * msg pointer is NULL. The function will create a *
+ * remote connection. If this connection times out, the function shoud be *
+ * repeated until connection is established. SCILRemoveMsgQueue() must be called *
+ * to remove the connection and deallocate the message queue identifier. *
+ * *
+ * sci_msq_queue_t *msq : Message queue identifier *
+ * The function must be called with a null pointer *
+ * the first time. *
+ * unsigned int localAdapterNo: Local Adapter Number *
+ * unsigned int remoteNodeId : Remote nodeId *
+ * unsigned int msqId : Message queue number *
+ * unsigned int maxMsgCount : The maximum count of messages in queue *
+ * unsigned int maxMsgSize, : The maximum size of each messages in queue *
+ * unsigned int timeout : Time to wait for successful connection *
+ * unsigned int flags : Flags. *
+ * *
+ * Flags *
+ * *
+ * None *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * None. Normal SISIC error codes. *
+ * *
+ *********************************************************************************/
+#define SCILCreateMsgQueue _SCIL_EXPANDE_FUNCTION_NAME(SCILCreateMsgQueue)
+DLL sci_error_t SCILCreateMsgQueue(sci_msq_queue_t *msq,
+ unsigned int localAdapterNo,
+ unsigned int remoteNodeId,
+ unsigned int msqId,
+ unsigned int maxMsgCount,
+ unsigned int maxMsgSize,
+ unsigned int timeout,
+ unsigned int flags);
+
+
+/*********************************************************************************
+ * *
+ * S C I L R e c e i v e M s g *
+ * *
+ * *
+ * Receives a message from the queue. *
+ * *
+ * Paremeters *
+ * *
+ * sci_msq_queue_t msq : message queue identifier *
+ * void *msg : Location to store received data *
+ * unsigned int size : Size of message to read *
+ * unsigned int *sizeLeft: Bytes left in buffer, after current receive. This is *
+ * just a hint. There may be more. *
+ * *
+ * Flags *
+ * *
+ * SCIL_FLAG_ERROR_CHECK_PROT: The internal buffer management is done using full*
+ * error checking.
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_EWOULD_BLOCK : There is not enough data in the message buffer *
+ * to read the specified number of bytes. *
+ * . *
+ * SCI_ERR_NOT_CONNECTED : The connection is not established. *
+ * *
+ *********************************************************************************/
+#define SCILReceiveMsg _SCIL_EXPANDE_FUNCTION_NAME(SCILReceiveMsg)
+DLL sci_error_t SCILReceiveMsg(
+ sci_msq_queue_t msq,
+ void *msg,
+ unsigned int size,
+ unsigned int *sizeLeft,
+ unsigned int flags);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I L S e n d M s g *
+ * *
+ * *
+ * Sends a message to the queue. *
+ * *
+ * Paremeters *
+ * *
+ * sci_msq_queue_t msq : Message queue identifier *
+ * void *msg : Send data *
+ * unsigned int size : Size of message to send *
+ * unsigned int *sizeFree: Bytes free in buffer, after current send. This is *
+ * just a hint. There may be more. *
+ * *
+ * Flags *
+ * *
+ * SCIL_FLAG_ERROR_CHECK_DATA: The data is transmitted using full error checking*
+ * SCIL_FLAG_ERROR_CHECK_PROT: The internal buffer management is done using full*
+ * error checking. *
+ * SCIL_FLSG_FULL_ERROR_CHECK: This flag is an combination of both above. *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * SCI_ERR_EWOULD_BLOCK : There is not enough data in the message buffer *
+ * to send the specified number of bytes. *
+ * . *
+ * SCI_ERR_NOT_CONNECTED : The connection is not established. *
+ * *
+ *********************************************************************************/
+#define SCILSendMsg _SCIL_EXPANDE_FUNCTION_NAME(SCILSendMsg)
+DLL sci_error_t SCILSendMsg(
+ sci_msq_queue_t msq,
+ void *msg,
+ unsigned int size,
+ unsigned int *sizeFree,
+ unsigned int flags);
+
+
+/*********************************************************************************
+ * *
+ * S C I L R e m o v e M s g Q u e ue *
+ * *
+ * *
+ * Removes a message queue. *
+ * *
+ * sci_msq_queue_t msq : Message queue identifier *
+ * *
+ * Flags *
+ * *
+ * None *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * None *
+ * *
+ *********************************************************************************/
+#define SCILRemoveMsgQueue _SCIL_EXPANDE_FUNCTION_NAME(SCILRemoveMsgQueue)
+DLL sci_error_t SCILRemoveMsgQueue(
+ sci_msq_queue_t *msq,
+ unsigned int flags);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I L I n i t *
+ * *
+ * *
+ * Initializes the SCI library. This function must be called before any other *
+ * function in the library. *
+ * *
+ * Flags *
+ * *
+ * None *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * None *
+ * . *
+ *********************************************************************************/
+#define SCILInit _SCIL_EXPANDE_FUNCTION_NAME(SCILInit)
+DLL sci_error_t SCILInit(unsigned int flags);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I L D e s t r o y *
+ * *
+ * *
+ * Removes internal resources allocated by the SCI Library. No other library *
+ * function should be called after this function. *
+ * *
+ * Flags *
+ * *
+ * None *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * None *
+ * *
+ *********************************************************************************/
+#define SCILDestroy _SCIL_EXPANDE_FUNCTION_NAME(SCILDestroy)
+DLL sci_error_t SCILDestroy(unsigned int flags);
+
+
+
+/*********************************************************************************
+ * *
+ * S C I L C o n n e c t M s g Q u e u e *
+ * *
+ * *
+ * Makes a connection to a remote message queue. This must be done before *
+ * SCILSendMsg() is called. *
+ * *
+ * Parameters: *
+ * *
+ * sci_msq_queue_t *msq : Message queue identifier *
+ * unsigned int localAdapterNo: Local Adapter Number *
+ * unsigned int remoteNodeId : Remote nodeId *
+ * unsigned int msqId : Message queue number *
+ * unsigned int maxMsgCount : The maximum count of messages in queue *
+ * unsigned int maxMsgSize, : The maximum size of each messages in queue *
+ * unsigned int timeout : Time to wait for successful connection *
+ * unsigned int flags : Flags. *
+ * *
+ * Flags *
+ * *
+ * None *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * None. Normal SISIC error codes. *
+ * *
+ *********************************************************************************/
+#define SCILConnectMsgQueue _SCIL_EXPANDE_FUNCTION_NAME(SCILConnectMsgQueue)
+DLL sci_error_t SCILConnectMsgQueue(sci_msq_queue_t *msq,
+ unsigned int localAdapterNo,
+ unsigned int remoteNodeId,
+ unsigned int rmsgId,
+ unsigned int maxMsgCount,
+ unsigned int maxMsgSize,
+ unsigned int timeout,
+ unsigned int flags);
+
+
+
+
+/*********************************************************************************
+ * *
+ * S C I L D i s c o n n e c t M s g Q u e u e *
+ * *
+ * *
+ * Disconnects from a remote message queue. *
+ * *
+ * Parameters: *
+ * *
+ * sci_msq_queue_t *msq : Message queue identifier *
+ * *
+ * Flags *
+ * *
+ * None *
+ * *
+ * Specific error codes for this function: *
+ * *
+ * None *
+ * *
+ *********************************************************************************/
+#define SCILDisconnectMsgQueue _SCIL_EXPANDE_FUNCTION_NAME(SCILDisconnectMsgQueue)
+DLL sci_error_t SCILDisconnectMsgQueue(sci_msq_queue_t *msq,
+ unsigned int flags);
+
+
+
+#if defined(CPLUSPLUS) || defined(__cplusplus)
+}
+#endif
+
+
+
+
+
+
+
+
+
+
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
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ndb/src/external/WIN32.x86/sci/include/sisci_demolib.h b/ndb/src/external/WIN32.x86/sci/include/sisci_demolib.h
new file mode 100644
index 00000000000..ce5bb2aec8e
--- /dev/null
+++ b/ndb/src/external/WIN32.x86/sci/include/sisci_demolib.h
@@ -0,0 +1,226 @@
+/* $Id: sisci_demolib.h,v 1.1 2002/12/13 12:17:23 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 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 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_DEMOLIB_H
+#define _SISCI_DEMOLIB_H
+
+
+#if defined(_REENTRANT)
+
+#define _SISCI_DEMOLIB_EXPAND_NAME(name) _SISCI_DEMOLIB_MT_ ## name
+
+#else
+
+#define _SISCI_DEMOLIB_EXPAND_NAME(name) _SISCI_DEMOLIB_ST_ ## name
+
+#endif
+
+/*********************************************************************************/
+/* Q U E R Y A D A P T E R */
+/* */
+/*********************************************************************************/
+
+#define QueryAdapter _SISCI_DEMOLIB_EXPAND_NAME(QueryAdapter)
+
+sci_error_t QueryAdapter(
+ unsigned int subcommand,
+ unsigned int localAdapterNo,
+ unsigned int portNo,
+ unsigned int *data);
+
+
+/*********************************************************************************/
+/* Q U E R Y S Y S T E M */
+/* */
+/*********************************************************************************/
+
+#define QuerySystem _SISCI_DEMOLIB_EXPAND_NAME(QuerySystem)
+
+sci_error_t QuerySystem(
+ unsigned int subcommand,
+ unsigned int *data);
+
+
+/*********************************************************************************/
+/* D E T E C T F I R S T A D A P T E R C A R D */
+/* */
+/*********************************************************************************/
+
+#define DetectFirstAdapterCard _SISCI_DEMOLIB_EXPAND_NAME(DetectFirstAdapterCard)
+
+sci_error_t DetectFirstAdapterCard(
+ unsigned int *localAdapterNo,
+ unsigned int *localNodeId);
+
+
+/*********************************************************************************/
+/* G E T A D A P T E R T Y P E */
+/* */
+/*********************************************************************************/
+
+#define GetAdapterType _SISCI_DEMOLIB_EXPAND_NAME(GetAdapterType)
+
+sci_error_t GetAdapterType(unsigned int localAdapterNo,
+ unsigned int *adapterType);
+
+
+/*********************************************************************************/
+/* G E T L O C A L N O D E I D */
+/* */
+/*********************************************************************************/
+
+#define GetLocalNodeId _SISCI_DEMOLIB_EXPAND_NAME(GetLocalNodeId)
+
+sci_error_t GetLocalNodeId(
+ unsigned int localAdapterNo,
+ unsigned int *localNodeId);
+
+
+/*********************************************************************************/
+/* G E T A D A P T E R S E R I A L N U M B E R */
+/* */
+/*********************************************************************************/
+
+#define GetAdapterSerialNumber _SISCI_DEMOLIB_EXPAND_NAME(GetAdapterSerialNumber)
+
+sci_error_t GetAdapterSerialNumber(
+ unsigned int localAdapterNo,
+ unsigned int *serialNo);
+
+
+
+/*********************************************************************************/
+/* G E T H O S T B R I D G E T Y P E */
+/* */
+/*********************************************************************************/
+
+#define GetHostbridgeType _SISCI_DEMOLIB_EXPAND_NAME(GetHostbridgeType)
+
+sci_error_t GetHostbridgeType(unsigned int *hostbridgeType);
+
+
+
+/*********************************************************************************/
+/* P R I N T H O S T B R I D G E T Y P E */
+/* */
+/*********************************************************************************/
+
+#define PrintHostbridgeType _SISCI_DEMOLIB_EXPAND_NAME(PrintHostbridgeType)
+
+void PrintHostbridgeType(unsigned int hostbridge);
+
+
+
+/*********************************************************************************/
+/* G E T A P I V E R S I O N S T R I N G */
+/* */
+/*********************************************************************************/
+
+#define GetAPIVersionString _SISCI_DEMOLIB_EXPAND_NAME(GetAPIVersionString)
+
+sci_error_t GetAPIVersionString(char str[], unsigned int strLength);
+
+
+
+/*********************************************************************************/
+/* G E T A D A P T E R I O B U S F R E Q U E N C Y */
+/* */
+/*********************************************************************************/
+
+sci_error_t GetAdapterIoBusFrequency(unsigned int localAdapterNo,
+ unsigned int *ioBusFrequency);
+
+
+
+/*********************************************************************************/
+/* G E T A D A P T E R S C I L I N K F R E Q U E N C Y */
+/* */
+/*********************************************************************************/
+
+sci_error_t GetAdapterSciLinkFrequency(unsigned int localAdapterNo,
+ unsigned int *sciLinkFrequency);
+
+
+
+/*********************************************************************************/
+/* G E T A D A P T E R B L I N K F R E Q U E N C Y */
+/* */
+/*********************************************************************************/
+
+sci_error_t GetAdapterBlinkFrequency(unsigned int localAdapterNo,
+ unsigned int *bLinkFrequency);
+
+
+/*********************************************************************************/
+/* S E N D I N T E R R U P T */
+/* */
+/*********************************************************************************/
+
+#define SendInterrupt _SISCI_DEMOLIB_EXPAND_NAME(SendInterrupt)
+
+sci_error_t SendInterrupt(
+ sci_desc_t sd,
+ unsigned int localAdapterNo,
+ unsigned int localNodeId,
+ unsigned int remoteNodeId,
+ unsigned int interruptNo);
+
+
+/*********************************************************************************/
+/* R E C E I V E I N T E R R U P T */
+/* */
+/*********************************************************************************/
+
+#define ReceiveInterrupt _SISCI_DEMOLIB_EXPAND_NAME(ReceiveInterrupt)
+
+sci_error_t ReceiveInterrupt(
+ sci_desc_t sd,
+ unsigned int localAdapterNo,
+ unsigned int localNodeId,
+ unsigned int interruptNo);
+
+
+/*********************************************************************************/
+/* E N D I A N S W A P */
+/* */
+/*********************************************************************************/
+
+#define EndianSwap _SISCI_DEMOLIB_EXPAND_NAME(EndianSwap)
+
+unsigned int EndianSwap (unsigned int value);
+
+
+/*********************************************************************************/
+/* S L E E P M I L L I S E C O N D S */
+/* */
+/*********************************************************************************/
+
+#define SleepMilliseconds _SISCI_DEMOLIB_EXPAND_NAME(SleepMilliseconds)
+
+void SleepMilliseconds(int milliseconds);
+
+
+
+
+#endif
diff --git a/ndb/src/external/WIN32.x86/sci/include/sisci_error.h b/ndb/src/external/WIN32.x86/sci/include/sisci_error.h
new file mode 100644
index 00000000000..56fa0d18b3a
--- /dev/null
+++ b/ndb/src/external/WIN32.x86/sci/include/sisci_error.h
@@ -0,0 +1,94 @@
+/* $Id: sisci_error.h,v 1.1 2002/12/13 12:17:23 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 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 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_ERROR_H_
+#define _SISCI_ERROR_H_
+
+
+/* SCI Error return values always have 30 bit set */
+#define SCI_ERR_MASK 0x40000000
+#define SCI_ERR_REMOTE_MASK 0x01 /* Remote errors should have bit 0 set */
+
+#define SCI_ERR(u) ((unsigned32)(u)&0x7FFFFFFF )
+
+/* Error codes */
+typedef enum {
+ SCI_ERR_OK = 0x000,
+
+
+ SCI_ERR_BUSY = (0x900 | SCI_ERR_MASK),
+ SCI_ERR_FLAG_NOT_IMPLEMENTED = (0x901 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_FLAG = (0x902 | SCI_ERR_MASK),
+ SCI_ERR_NOSPC = (0x904 | SCI_ERR_MASK),
+ SCI_ERR_API_NOSPC = (0x905 | SCI_ERR_MASK),
+ SCI_ERR_HW_NOSPC = (0x906 | SCI_ERR_MASK),
+ SCI_ERR_NOT_IMPLEMENTED = (0x907 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_ADAPTERNO = (0x908 | SCI_ERR_MASK),
+ SCI_ERR_NO_SUCH_ADAPTERNO = (0x909 | SCI_ERR_MASK),
+ SCI_ERR_TIMEOUT = (0x90A | SCI_ERR_MASK),
+ SCI_ERR_OUT_OF_RANGE = (0x90B | SCI_ERR_MASK),
+ SCI_ERR_NO_SUCH_SEGMENT = (0x90C | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_NODEID = (0x90D | SCI_ERR_MASK),
+ SCI_ERR_CONNECTION_REFUSED = (0x90E | SCI_ERR_MASK),
+ SCI_ERR_SEGMENT_NOT_CONNECTED = (0x90F | SCI_ERR_MASK),
+ SCI_ERR_SIZE_ALIGNMENT = (0x910 | SCI_ERR_MASK),
+ SCI_ERR_OFFSET_ALIGNMENT = (0x911 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_PARAMETER = (0x912 | SCI_ERR_MASK),
+ SCI_ERR_MAX_ENTRIES = (0x913 | SCI_ERR_MASK),
+ SCI_ERR_SEGMENT_NOT_PREPARED = (0x914 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_ADDRESS = (0x915 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_OPERATION = (0x916 | SCI_ERR_MASK),
+ SCI_ERR_ILLEGAL_QUERY = (0x917 | SCI_ERR_MASK),
+ SCI_ERR_SEGMENTID_USED = (0x918 | SCI_ERR_MASK),
+ SCI_ERR_SYSTEM = (0x919 | SCI_ERR_MASK),
+ SCI_ERR_CANCELLED = (0x91A | SCI_ERR_MASK),
+ SCI_ERR_NOT_CONNECTED = (0x91B | SCI_ERR_MASK),
+ SCI_ERR_NOT_AVAILABLE = (0x91C | SCI_ERR_MASK),
+ SCI_ERR_INCONSISTENT_VERSIONS = (0x91D | SCI_ERR_MASK),
+ SCI_ERR_COND_INT_RACE_PROBLEM = (0x91E | SCI_ERR_MASK),
+ SCI_ERR_OVERFLOW = (0x91F | SCI_ERR_MASK),
+ SCI_ERR_NOT_INITIALIZED = (0x920 | SCI_ERR_MASK),
+
+ SCI_ERR_ACCESS = (0x921 | SCI_ERR_MASK),
+
+ SCI_ERR_NO_SUCH_NODEID = (0xA00 | SCI_ERR_MASK),
+ SCI_ERR_NODE_NOT_RESPONDING = (0xA02 | SCI_ERR_MASK),
+ SCI_ERR_NO_REMOTE_LINK_ACCESS = (0xA04 | SCI_ERR_MASK),
+ SCI_ERR_NO_LINK_ACCESS = (0xA05 | SCI_ERR_MASK),
+ SCI_ERR_TRANSFER_FAILED = (0xA06 | SCI_ERR_MASK),
+
+ SCI_ERR_EWOULD_BLOCK = ( 0xB00 | SCI_ERR_MASK),
+ SCI_ERR_SEMAPHORE_COUNT_EXCEEDED = ( 0xB01 | SCI_ERR_MASK),
+ SCI_ERR_IRQL_ILLEGAL = ( 0xB02 | SCI_ERR_MASK)
+
+} sci_error_t;
+
+
+#endif /* _SCI_ERROR_H_ */
+
+
+
diff --git a/ndb/src/external/WIN32.x86/sci/include/sisci_types.h b/ndb/src/external/WIN32.x86/sci/include/sisci_types.h
new file mode 100644
index 00000000000..03e7957c3f2
--- /dev/null
+++ b/ndb/src/external/WIN32.x86/sci/include/sisci_types.h
@@ -0,0 +1,133 @@
+/* $Id: sisci_types.h,v 1.1 2002/12/13 12:17:23 hin Exp $ */
+
+/*******************************************************************************
+ * *
+ * Copyright (C) 1993 - 2000 *
+ * Dolphin Interconnect Solutions AS *
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 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 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_TYPES_H
+#define _SISCI_TYPES_H
+
+#include "sisci_error.h"
+
+#ifndef IN
+#define IN
+#endif
+
+#ifndef OUT
+#define OUT
+#endif
+
+#ifndef IN_OUT
+#define IN_OUT
+#endif
+
+/* Opaque data types for descriptors/handles */
+typedef struct sci_desc *sci_desc_t;
+typedef struct sci_local_segment *sci_local_segment_t;
+typedef struct sci_remote_segment *sci_remote_segment_t;
+
+typedef struct sci_map *sci_map_t;
+typedef struct sci_sequence *sci_sequence_t;
+#ifndef KERNEL
+typedef struct sci_dma_queue *sci_dma_queue_t;
+#endif
+typedef struct sci_remote_interrupt *sci_remote_interrupt_t;
+typedef struct sci_local_interrupt *sci_local_interrupt_t;
+typedef struct sci_block_transfer *sci_block_transfer_t;
+
+/*
+ * Constants defining reasons for segment callbacks:
+ */
+
+typedef enum {
+ SCI_CB_CONNECT = 1,
+ SCI_CB_DISCONNECT,
+ SCI_CB_NOT_OPERATIONAL,
+ SCI_CB_OPERATIONAL,
+ SCI_CB_LOST
+} sci_segment_cb_reason_t;
+
+#define MAX_CB_REASON SCI_CB_LOST
+
+/* dma_queue_states is identical to the dma_queue_state_t in genif.h, they must be consistent.*/
+typedef enum {
+ SCI_DMAQUEUE_IDLE,
+ SCI_DMAQUEUE_GATHER,
+ SCI_DMAQUEUE_POSTED,
+ SCI_DMAQUEUE_DONE,
+ SCI_DMAQUEUE_ABORTED,
+ SCI_DMAQUEUE_ERROR
+} sci_dma_queue_state_t;
+
+
+typedef enum {
+ SCI_SEQ_OK,
+ SCI_SEQ_RETRIABLE,
+ SCI_SEQ_NOT_RETRIABLE,
+ SCI_SEQ_PENDING
+} sci_sequence_status_t;
+
+
+typedef struct {
+ unsigned short nodeId; /* SCI Address bit 63 - 48 */
+ unsigned short offsHi; /* SCI Address bit 47 - 32 */
+ unsigned int offsLo; /* SCI Address bit 31 - 0 */
+} sci_address_t;
+
+
+typedef unsigned int sci_ioaddr_t;
+
+typedef enum {
+ SCI_CALLBACK_CANCEL = 1,
+ SCI_CALLBACK_CONTINUE
+} sci_callback_action_t;
+
+#ifndef KERNEL
+typedef sci_callback_action_t (*sci_cb_local_segment_t)(void *arg,
+ sci_local_segment_t segment,
+ sci_segment_cb_reason_t reason,
+ unsigned int nodeId,
+ unsigned int localAdapterNo,
+ sci_error_t error);
+
+typedef sci_callback_action_t (*sci_cb_remote_segment_t)(void *arg,
+ sci_remote_segment_t segment,
+ sci_segment_cb_reason_t reason,
+ sci_error_t status);
+
+
+typedef sci_callback_action_t (*sci_cb_dma_t)(void IN *arg,
+ sci_dma_queue_t queue,
+ sci_error_t status);
+
+
+typedef int (*sci_cb_block_transfer_t)(void *arg,
+ sci_block_transfer_t block,
+ sci_error_t status);
+
+
+typedef sci_callback_action_t (*sci_cb_interrupt_t)(void *arg,
+ sci_local_interrupt_t interrupt,
+ sci_error_t status);
+
+#endif /* KERNEL */
+#endif
diff --git a/ndb/src/external/WIN32.x86/sci/lib/SISCI_LIBRARY_WIN32.TXT b/ndb/src/external/WIN32.x86/sci/lib/SISCI_LIBRARY_WIN32.TXT
new file mode 100644
index 00000000000..97fe959bb2c
--- /dev/null
+++ b/ndb/src/external/WIN32.x86/sci/lib/SISCI_LIBRARY_WIN32.TXT
@@ -0,0 +1,77 @@
+SISCI_API LIBRARIES AND LINKING
+===============================
+
+
+/MD, /ML, /MT (Use Run-Time Library)
+
+
+
+sisci_api.lib - Single threaded
+
+sisci_api_md.lib - Multithreaded DLL
+
+sisci_api_mt.lib - Multithreaded
+
+
+
+
+With these libraries, you can select either single-threaded or multithreaded run-time routines,
+indicate that a multithreaded module is a dynamic-link library (DLL), and select the retail
+or debug version of the library.
+
+Note Having more than one copy of the run-time libraries in a process can cause problems,
+because static data in one copy is not shared with the other copy. To ensure that your process
+contains only one copy, avoid mixing static and dynamic versions of the run-time libraries.
+The linker will prevent you from linking with both static and dynamic versions within one .EXE file,
+but you can still end up with two (or more) copies of the run-time libraries.
+For example, a dynamic-link library linked with the static (non-DLL) versions of the run-time
+libraries can cause problems when used with an .EXE file that was linked with the dynamic (DLL)
+version of the run-time libraries. (You should also avoid mixing the debug and non-debug versions
+of the libraries in one process.)
+
+
+MD Multithreaded
+----------------
+
+/MD Multithreaded DLL Defines _MT and _DLL so that both multithread- and DLL-specific versions
+of the run-time routines are selected from the standard .H files. This option also causes the
+compiler to place the library name MSVCRT.LIB into the .OBJ file.
+Applications compiled with this option are statically linked to MSVCRT.LIB. This library provides
+a layer of code that allows the linker to resolve external references. The actual working code is
+contained in MSVCRT.DLL, which must be available at run time to applications linked with MSVCRT.LIB.
+
+
+/MDd Debug Multithreaded DLL Defines _DEBUG, _MT, and _DLL so that debug multithread- and DLL-specific
+versions of the run-time routines are selected from the standard .H files. It also causes the compiler
+to place the library name MSVCRTD.LIB into the .OBJ file.
+
+
+ML Single-Threaded
+------------------
+
+
+/ML Single-Threaded Causes the compiler to place the library name LIBC.LIB into the .OBJ file so
+that the linker will use LIBC.LIB to resolve external symbols. This is the compiler’s default action.
+LIBC.LIB does not provide multithread support.
+
+
+/MLd Debug Single-Threaded Defines _DEBUG and causes the compiler to place the library name LIBCD.LIB
+into the .OBJ file so that the linker will use LIBCD.LIB to resolve external symbols. LIBCD.LIB does
+not provide multithread support.
+
+
+MT Multithreaded
+----------------
+
+
+/MT Multithreaded Defines _MT so that multithread-specific versions of the run-time routines are
+selected from the standard header (.H) files. This option also causes the compiler to place the library
+name LIBCMT.LIB into the .OBJ file so that the linker will use LIBCMT.LIB to resolve external symbols.
+
+Either /MT or /MD (or their debug equivalents /MTd or /MDd) is required to create multithreaded programs.
+/MTd Debug Multithreaded Defines _DEBUG and _MT. Defining _MT causes multithread-specific versions of
+the run-time routines to be selected from the standard .H files. This option also causes the compiler
+to place the library name LIBCMTD.LIB into the .OBJ file so that the linker will use LIBCMTD.LIB to
+resolve external symbols. Either /MTd or /MDd (or their non-debug equivalents /MT or MD) is required to
+create multithreaded programs.
+
diff --git a/ndb/src/external/WIN32.x86/sci/lib/scilib.lib b/ndb/src/external/WIN32.x86/sci/lib/scilib.lib
new file mode 100644
index 00000000000..572169a2016
--- /dev/null
+++ b/ndb/src/external/WIN32.x86/sci/lib/scilib.lib
Binary files differ
diff --git a/ndb/src/external/WIN32.x86/sci/lib/scilib_md.lib b/ndb/src/external/WIN32.x86/sci/lib/scilib_md.lib
new file mode 100644
index 00000000000..f18cba61336
--- /dev/null
+++ b/ndb/src/external/WIN32.x86/sci/lib/scilib_md.lib
Binary files differ
diff --git a/ndb/src/external/WIN32.x86/sci/lib/scilib_mt.lib b/ndb/src/external/WIN32.x86/sci/lib/scilib_mt.lib
new file mode 100644
index 00000000000..3e9982468ea
--- /dev/null
+++ b/ndb/src/external/WIN32.x86/sci/lib/scilib_mt.lib
Binary files differ
diff --git a/ndb/src/external/WIN32.x86/sci/lib/sisci_api.lib b/ndb/src/external/WIN32.x86/sci/lib/sisci_api.lib
new file mode 100644
index 00000000000..3fbff6ec809
--- /dev/null
+++ b/ndb/src/external/WIN32.x86/sci/lib/sisci_api.lib
Binary files differ
diff --git a/ndb/src/external/WIN32.x86/sci/lib/sisci_api_md.lib b/ndb/src/external/WIN32.x86/sci/lib/sisci_api_md.lib
new file mode 100644
index 00000000000..1d8d42d1d35
--- /dev/null
+++ b/ndb/src/external/WIN32.x86/sci/lib/sisci_api_md.lib
Binary files differ
diff --git a/ndb/src/external/WIN32.x86/sci/lib/sisci_api_mt.lib b/ndb/src/external/WIN32.x86/sci/lib/sisci_api_mt.lib
new file mode 100644
index 00000000000..017fad7ba31
--- /dev/null
+++ b/ndb/src/external/WIN32.x86/sci/lib/sisci_api_mt.lib
Binary files differ