00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "ad_xfs.h"
00010 #include "adio_extern.h"
00011
00012 void ADIOI_XFS_SetInfo(ADIO_File fd, MPI_Info users_info, int *error_code)
00013 {
00014 char *value;
00015 int flag;
00016
00017 if (!(fd->info)) MPI_Info_create(&(fd->info));
00018
00019 MPI_Info_set(fd->info, "direct_read", "false");
00020 MPI_Info_set(fd->info, "direct_write", "false");
00021 fd->direct_read = fd->direct_write = 0;
00022
00023
00024 if (users_info != MPI_INFO_NULL) {
00025 value = (char *) ADIOI_Malloc((MPI_MAX_INFO_VAL+1)*sizeof(char));
00026
00027 MPI_Info_get(users_info, "direct_read", MPI_MAX_INFO_VAL,
00028 value, &flag);
00029 if (flag && !strcmp(value, "true")) {
00030 MPI_Info_set(fd->info, "direct_read", "true");
00031 fd->direct_read = 1;
00032 }
00033
00034 MPI_Info_get(users_info, "direct_write", MPI_MAX_INFO_VAL,
00035 value, &flag);
00036 if (flag && !strcmp(value, "true")) {
00037 MPI_Info_set(fd->info, "direct_write", "true");
00038 fd->direct_write = 1;
00039 }
00040
00041 ADIOI_Free(value);
00042 }
00043
00044
00045 ADIOI_GEN_SetInfo(fd, users_info, error_code);
00046
00047 if (ADIOI_Direct_read) fd->direct_read = 1;
00048 if (ADIOI_Direct_write) fd->direct_write = 1;
00049
00050
00051 *error_code = MPI_SUCCESS;
00052 }