Skip to content
Snippets Groups Projects
Commit 3bfea65a authored by Thomas Jahns's avatar Thomas Jahns :cartwheel: Committed by Sergey Kosukhin
Browse files

Fix protection of asynch I/O feature.

* NEC SX might not be the only platform without asynchronous I/O facilities.
* Also fix problem where the feature is available at compile time but
  not enabled at run-time.
parent 70607e02
No related branches found
No related tags found
2 merge requests!34Version 2.2.0,!13Consolidation with CDI-PIO (develop)
......@@ -6,6 +6,7 @@
#endif
#include <stdbool.h>
#include <unistd.h>
#include <mpi.h>
......@@ -101,7 +102,7 @@ void cdiPioFileWriteAtReblockInit(const struct cdiPioConf *conf);
void pioSendInitialize(void);
/* pio_posixasynch.c */
#ifndef _SX
#ifdef _POSIX_ASYNCHRONOUS_IO
void pioWriterAIO(void);
#endif
......
......@@ -7,6 +7,7 @@
#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <mpi.h>
#include <yaxt.h>
......@@ -414,9 +415,12 @@ cdiPioInit(MPI_Comm commGlob, int confResH, int *pioNamespace)
if (IOMode < PIO_MINIOMODE || IOMode > PIO_MAXIOMODE) xabort("IOMODE IS NOT VALID.");
#ifdef _SX
if (IOMode == PIO_ASYNCH) xabort("PIO_ASYNCH DOES NOT WORK ON SX.");
if (
#ifdef _POSIX_ASYNCHRONOUS_IO
!sysconf(_SC_ASYNCHRONOUS_IO) &&
#endif
IOMode == PIO_ASYNCH)
xabort("CDI-PIO Output method PIO_ASYNCH is unsupported on this system!");
if ((xtInitByCDI = (!xt_initialized() || xt_finalized()))) xt_initialize(commGlob);
int nProcsIO = cdiPioCommInit(commGlob, IOMode, conf->clientServerRole);
......@@ -488,9 +492,7 @@ cdiPioFileWritingInit(const struct cdiPioConf *conf)
{
case PIO_NONE: break;
case PIO_MPI: initMPINONB(); break;
#ifndef _SX
case PIO_ASYNCH:
#endif
case PIO_WRITER: pioSendInitialize(); break;
case PIO_FPGUARD: initPOSIXFPGUARDSENDRECV(); break;
case PIO_MPI_FW_ORDERED: cdiPioFileWriteOrderedInit(); break;
......
......@@ -6,8 +6,9 @@
#include "config.h"
#endif
#ifndef _SX
#include <unistd.h>
#ifdef _POSIX_ASYNCHRONOUS_IO
#include <aio.h>
#include <errno.h>
#include <fcntl.h>
......@@ -16,7 +17,6 @@
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <mpi.h>
......
......@@ -4,6 +4,7 @@
#include <inttypes.h>
#include <stdlib.h>
#include <unistd.h>
#include "cdipio.h"
#include "dmemory.h"
......@@ -289,7 +290,9 @@ pioSendInitialize(void)
if (!isCollector) switch (commInqIOMode())
{
case PIO_WRITER: pioWriterStdIO(); break;
#ifdef _POSIX_ASYNCHRONOUS_IO
case PIO_ASYNCH: pioWriterAIO(); break;
#endif
}
else
{
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment