SIONlib  1.7.4
Scalable I/O library for parallel access to task-local files
sion_file.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** SIONLIB http://www.fz-juelich.de/jsc/sionlib **
3 *****************************************************************************
4 ** Copyright (c) 2008-2019 **
5 ** Forschungszentrum Juelich, Juelich Supercomputing Centre **
6 ** **
7 ** See the file COPYRIGHT in the package base directory for details **
8 ****************************************************************************/
9 
14 #ifndef SION_SION_FILE_H
15 #define SION_SION_FILE_H
16 
17 #include <stdio.h>
18 
19 #include "sion_const.h"
20 #include "sion_datatypes.h"
21 
22 #define SION_FILE_FLAG_ANSI 1
23 #define SION_FILE_FLAG_SCNDANSI 2
24 #define SION_FILE_FLAG_POSIX 4
25 #define SION_FILE_FLAG_CREATE 8
26 #define SION_FILE_FLAG_WRITE 16
27 #define SION_FILE_FLAG_READ 32
29 struct _sion_fileptr_s {
30  unsigned int flags;
31  FILE *fileptr;
32  FILE *second_fileptr;
33  int fd;
34 };
35 typedef struct _sion_fileptr_s _sion_fileptr;
36 
37 /* open/close */
38 _sion_fileptr *_sion_file_open(const char *fname, unsigned int flags, unsigned int addflags);
39 int _sion_file_close( _sion_fileptr *sion_fileptr );
40 
41 /* write/read */
42 sion_int64 _sion_file_write(const void *data, sion_int64 bytes, _sion_fileptr *sion_fileptr );
43 sion_int64 _sion_file_read(void *data, sion_int64 bytes, _sion_fileptr *sion_fileptr );
44 
45 /* utility */
46 int _sion_file_set_second_fileptr( _sion_fileptr *sion_fileptr, FILE* fileptr);
49 int _sion_file_stat_file(const char *fname);
50 
51 sion_int64 _sion_file_set_position(_sion_fileptr *fileptr, sion_int64 startpointer);
52 sion_int64 _sion_file_get_position(_sion_fileptr *fileptr);
53 
54 int _sion_file_flush(_sion_fileptr *fileptr);
55 int _sion_file_purge(_sion_fileptr *fileptr);
56 
57 int _sion_file_set_buffer(_sion_fileptr *fileptr, char *buffer, sion_int32 buffer_size);
58 int _sion_file_get_fd( _sion_fileptr *sion_fileptr);
59 
60 
61 /* ********************************************************************************************** */
62 /* *** Internal INTERFACE Functions (ANSI, POSIX) */
63 /* ********************************************************************************************** */
64 FILE *_sion_file_open_ansi_write_create(const char *fname, unsigned int addflags);
65 FILE *_sion_file_open_ansi_write_existing(const char *fname, unsigned int addflags);
66 FILE *_sion_file_open_ansi_read(const char *fname, unsigned int addflags);
67 int _sion_file_close_ansi(FILE *fileptr);
68 long _sion_file_get_opt_blksize_ansi( FILE *fileptr);
69 sion_int64 _sion_file_set_position_ansi(FILE *fileptr, sion_int64 startpointer);
70 sion_int64 _sion_file_get_position_ansi(FILE *fileptr);
71 int _sion_file_flush_ansi(FILE *fileptr);
72 int _sion_file_purge_ansi(FILE *fileptr);
73 int _sion_file_set_buffer_ansi(FILE *fileptr, char *buffer, sion_int32 buffer_size);
74 sion_int64 _sion_file_write_ansi(const void *data, sion_int64 bytes, FILE *fileptr );
75 sion_int64 _sion_file_read_ansi(void *data, sion_int64 bytes, FILE *fileptr );
76 
77 int _sion_file_open_posix_write_create(const char *fname, unsigned int addflags);
78 int _sion_file_open_posix_write_existing(const char *fname, unsigned int addflags);
79 int _sion_file_open_posix_read(const char *fname, unsigned int addflags);
80 int _sion_file_close_posix(int fd);
82 sion_int64 _sion_file_set_position_posix(int fd, sion_int64 startpointer);
83 sion_int64 _sion_file_get_position_posix(int fd);
84 int _sion_file_flush_posix(int fd);
85 int _sion_file_purge_posix(int fd);
86 int _sion_file_set_buffer_posix(int fd, char *buffer, sion_int32 buffer_size);
87 sion_int64 _sion_file_write_posix(const void *data, sion_int64 bytes, int fd );
88 sion_int64 _sion_file_read_posix(void *data, sion_int64 bytes, int fd );
89 
90 
91 
92 /* ********************************************************************************************** */
93 /* *** Internal Utility Functions */
94 /* ********************************************************************************************** */
96 char* _sion_get_fileptr_desc(_sion_fileptr *sion_fileptr);
97 
98 
99 #endif
int _sion_file_unset_second_fileptr(_sion_fileptr *sion_fileptr)
Unset second fileptr for file if opened with ANSI.
Definition: sion_file.c:354
sion_int64 _sion_file_write_ansi(const void *data, sion_int64 bytes, FILE *fileptr)
ANSI: Write data to file.
Definition: sion_file.c:632
sion_int64 _sion_file_read_ansi(void *data, sion_int64 bytes, FILE *fileptr)
ANSI: Read data from file.
Definition: sion_file.c:646
sion_int64 _sion_file_write(const void *data, sion_int64 bytes, _sion_fileptr *sion_fileptr)
Write data to file.
Definition: sion_file.c:141
int _sion_file_close(_sion_fileptr *sion_fileptr)
Close file and destroys fileptr structure.
Definition: sion_file.c:109
FILE * _sion_file_open_ansi_write_create(const char *fname, unsigned int addflags)
ANSI: Create and open a new file for writing.
Definition: sion_file.c:403
int _sion_file_purge_ansi(FILE *fileptr)
ANSI: Purge the data to the disk.
Definition: sion_file.c:607
char * _sion_get_fileptr_desc(_sion_fileptr *sion_fileptr)
Definition: sion_file.c:1003
int _sion_file_flush_posix(int fd)
POSIX: Flush the data to the disk.
Definition: sion_file.c:845
long _sion_file_get_opt_blksize(_sion_fileptr *fileptr)
Get optional file system block size for a file.
Definition: sion_file.c:187
int _sion_file_open_posix_write_existing(const char *fname, unsigned int addflags)
POSIX: Open a new file for writing.
Definition: sion_file.c:691
sion_int64 _sion_file_get_position_ansi(FILE *fileptr)
ANSI: Get the current position in file.
Definition: sion_file.c:554
long _sion_file_get_opt_blksize_posix(int fd)
POSIX: Get optional file system block size for a file.
Definition: sion_file.c:757
int _sion_file_set_buffer_posix(int fd, char *buffer, sion_int32 buffer_size)
POSIX: set buffer of fd.
Definition: sion_file.c:891
FILE * _sion_file_open_ansi_write_existing(const char *fname, unsigned int addflags)
ANSI: Open a new file for writing.
Definition: sion_file.c:422
sion_int64 _sion_file_read_posix(void *data, sion_int64 bytes, int fd)
POSIX: Read data from file.
Definition: sion_file.c:937
int _sion_file_set_buffer(_sion_fileptr *fileptr, char *buffer, sion_int32 buffer_size)
Set buffer of fp.
Definition: sion_file.c:309
int _sion_file_set_buffer_ansi(FILE *fileptr, char *buffer, sion_int32 buffer_size)
ANSI: set buffer of fp.
Definition: sion_file.c:619
sion_int64 _sion_file_get_position_posix(int fd)
POSIX: Get the current position in file.
Definition: sion_file.c:817
int _sion_file_open_posix_write_create(const char *fname, unsigned int addflags)
POSIX: Create and open a new file for writing.
Definition: sion_file.c:665
int _sion_file_purge_posix(int fd)
POSIX: Purge the data to the disk.
Definition: sion_file.c:868
int _sion_file_get_fd(_sion_fileptr *sion_fileptr)
Utility function: Get POSIX fp.
Definition: sion_file.c:376
int _sion_file_close_posix(int fd)
POSIX: Close a file.
Definition: sion_file.c:742
sion_int64 _sion_file_set_position(_sion_fileptr *fileptr, sion_int64 startpointer)
Set new position in file.
Definition: sion_file.c:219
int _sion_file_set_second_fileptr(_sion_fileptr *sion_fileptr, FILE *fileptr)
Set second fileptr for file if opened with ANSI.
Definition: sion_file.c:332
_sion_fileptr * _sion_file_open(const char *fname, unsigned int flags, unsigned int addflags)
Create and open a new file for writing.
Definition: sion_file.c:42
long _sion_file_get_opt_blksize_ansi(FILE *fileptr)
ANSI: Get optional file system block size for a file.
Definition: sion_file.c:478
sion_int64 _sion_file_read(void *data, sion_int64 bytes, _sion_fileptr *sion_fileptr)
Read data from file.
Definition: sion_file.c:166
sion_int64 _sion_file_set_position_ansi(FILE *fileptr, sion_int64 startpointer)
ANSI: Set the start position for the current task.
Definition: sion_file.c:500
sion_int64 _sion_file_write_posix(const void *data, sion_int64 bytes, int fd)
POSIX: Write data to file.
Definition: sion_file.c:904
int _sion_file_close_ansi(FILE *fileptr)
ANSI: Close a file.
Definition: sion_file.c:463
int _sion_file_flush(_sion_fileptr *fileptr)
Flush data to file.
Definition: sion_file.c:263
int _sion_file_purge(_sion_fileptr *fileptr)
Purge data to file.
Definition: sion_file.c:285
sion_int64 _sion_file_set_position_posix(int fd, sion_int64 startpointer)
POSIX: Set the start position for the current task.
Definition: sion_file.c:778
int _sion_file_stat_file(const char *fname)
Check if file exists (LARGE_FILE support on BlueGene)
Definition: sion_file.c:205
_sion_fileptr * _sion_file_alloc_and_init_sion_fileptr(void)
Create and return _sion_fileptr.
Definition: sion_file.c:967
FILE * _sion_file_open_ansi_read(const char *fname, unsigned int addflags)
ANSI: Open a file for reading.
Definition: sion_file.c:445
sion_int64 _sion_file_get_position(_sion_fileptr *fileptr)
Get new position in file.
Definition: sion_file.c:241
int _sion_file_flush_ansi(FILE *fileptr)
ANSI: Flush the data to the disk.
Definition: sion_file.c:597
int _sion_file_open_posix_read(const char *fname, unsigned int addflags)
POSIX: Open a file for reading.
Definition: sion_file.c:717