diff options
author | magnus@neptunus.(none) <> | 2004-04-14 10:53:21 +0200 |
---|---|---|
committer | magnus@neptunus.(none) <> | 2004-04-14 10:53:21 +0200 |
commit | 5b3aec2b904a2eb7478240dac2f56d8928fc2362 (patch) | |
tree | 3fbbacf704304b69228474b9f03549ccd585a017 /ndb/src/external | |
parent | 7d9a9fd93ac4622d596920169a6d6afbd787c377 (diff) | |
download | mariadb-git-5b3aec2b904a2eb7478240dac2f56d8928fc2362.tar.gz |
Initial revision of NDB Cluster files
Diffstat (limited to 'ndb/src/external')
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 Binary files differnew file mode 100644 index 00000000000..572169a2016 --- /dev/null +++ b/ndb/src/external/WIN32.x86/sci/lib/scilib.lib diff --git a/ndb/src/external/WIN32.x86/sci/lib/scilib_md.lib b/ndb/src/external/WIN32.x86/sci/lib/scilib_md.lib Binary files differnew file mode 100644 index 00000000000..f18cba61336 --- /dev/null +++ b/ndb/src/external/WIN32.x86/sci/lib/scilib_md.lib diff --git a/ndb/src/external/WIN32.x86/sci/lib/scilib_mt.lib b/ndb/src/external/WIN32.x86/sci/lib/scilib_mt.lib Binary files differnew file mode 100644 index 00000000000..3e9982468ea --- /dev/null +++ b/ndb/src/external/WIN32.x86/sci/lib/scilib_mt.lib diff --git a/ndb/src/external/WIN32.x86/sci/lib/sisci_api.lib b/ndb/src/external/WIN32.x86/sci/lib/sisci_api.lib Binary files differnew file mode 100644 index 00000000000..3fbff6ec809 --- /dev/null +++ b/ndb/src/external/WIN32.x86/sci/lib/sisci_api.lib 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 Binary files differnew file mode 100644 index 00000000000..1d8d42d1d35 --- /dev/null +++ b/ndb/src/external/WIN32.x86/sci/lib/sisci_api_md.lib 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 Binary files differnew file mode 100644 index 00000000000..017fad7ba31 --- /dev/null +++ b/ndb/src/external/WIN32.x86/sci/lib/sisci_api_mt.lib |