SIONlib  1.6.1
Scalable I/O library for parallel access to task-local files
sion_file.h
1 /****************************************************************************
2 ** SIONLIB http://www.fz-juelich.de/jsc/sionlib **
3 *****************************************************************************
4 ** Copyright (c) 2008-2015 **
5 ** Forschungszentrum Juelich, Juelich Supercomputing Centre **
6 ** **
7 ** See the file COPYRIGHT in the package base directory for details **
8 ****************************************************************************/
9 #ifndef SION_SION_FILE_H
10 #define SION_SION_FILE_H
11 
12 #include "sion.h"
13 
14 #define SION_FILE_FLAG_ANSI 1
15 #define SION_FILE_FLAG_SCNDANSI 2
16 #define SION_FILE_FLAG_POSIX 4
17 #define SION_FILE_FLAG_CREATE 8
18 #define SION_FILE_FLAG_WRITE 16
19 #define SION_FILE_FLAG_READ 32
21 struct _sion_fileptr_s {
22  unsigned int flags;
23  FILE *fileptr;
24  FILE *second_fileptr;
25  int fd;
26 };
27 typedef struct _sion_fileptr_s _sion_fileptr;
28 
29 /* open/close */
30 _sion_fileptr *_sion_file_open(const char *fname, unsigned int flags, unsigned int addflags);
31 int _sion_file_close( _sion_fileptr *sion_fileptr );
32 
33 /* write/read */
34 sion_int64 _sion_file_write(const void *data, sion_int64 bytes, _sion_fileptr *sion_fileptr );
35 sion_int64 _sion_file_read(void *data, sion_int64 bytes, _sion_fileptr *sion_fileptr );
36 
37 /* utility */
38 int _sion_file_set_second_fileptr( _sion_fileptr *sion_fileptr, FILE* fileptr);
39 int _sion_file_unset_second_fileptr( _sion_fileptr *sion_fileptr);
40 long _sion_file_get_opt_blksize( _sion_fileptr *fileptr);
41 int _sion_file_stat_file(const char *fname);
42 
43 sion_int64 _sion_file_set_position(_sion_fileptr *fileptr, sion_int64 startpointer);
44 sion_int64 _sion_file_get_position(_sion_fileptr *fileptr);
45 
46 int _sion_file_flush(_sion_fileptr *fileptr);
47 int _sion_file_purge(_sion_fileptr *fileptr);
48 
49 int _sion_file_set_buffer(_sion_fileptr *fileptr, char *buffer, sion_int32 buffer_size);
50 int _sion_file_get_fd( _sion_fileptr *sion_fileptr);
51 
52 
53 /* ********************************************************************************************** */
54 /* *** Internal INTERFACE Functions (ANSI, POSIX) */
55 /* ********************************************************************************************** */
56 FILE *_sion_file_open_ansi_write_create(const char *fname, unsigned int addflags);
57 FILE *_sion_file_open_ansi_write_existing(const char *fname, unsigned int addflags);
58 FILE *_sion_file_open_ansi_read(const char *fname, unsigned int addflags);
59 int _sion_file_close_ansi(FILE *fileptr);
60 long _sion_file_get_opt_blksize_ansi( FILE *fileptr);
61 sion_int64 _sion_file_set_position_ansi(FILE *fileptr, sion_int64 startpointer);
62 sion_int64 _sion_file_get_position_ansi(FILE *fileptr);
63 int _sion_file_flush_ansi(FILE *fileptr);
64 int _sion_file_purge_ansi(FILE *fileptr);
65 int _sion_file_set_buffer_ansi(FILE *fileptr, char *buffer, sion_int32 buffer_size);
66 sion_int64 _sion_file_write_ansi(const void *data, sion_int64 bytes, FILE *fileptr );
67 sion_int64 _sion_file_read_ansi(void *data, sion_int64 bytes, FILE *fileptr );
68 
69 int _sion_file_open_posix_write_create(const char *fname, unsigned int addflags);
70 int _sion_file_open_posix_write_existing(const char *fname, unsigned int addflags);
71 int _sion_file_open_posix_read(const char *fname, unsigned int addflags);
72 int _sion_file_close_posix(int fd);
73 long _sion_file_get_opt_blksize_posix( int fd);
74 sion_int64 _sion_file_set_position_posix(int fd, sion_int64 startpointer);
75 sion_int64 _sion_file_get_position_posix(int fd);
76 int _sion_file_flush_posix(int fd);
77 int _sion_file_purge_posix(int fd);
78 int _sion_file_set_buffer_posix(int fd, char *buffer, sion_int32 buffer_size);
79 sion_int64 _sion_file_write_posix(const void *data, sion_int64 bytes, int fd );
80 sion_int64 _sion_file_read_posix(void *data, sion_int64 bytes, int fd );
81 
82 
83 
84 /* ********************************************************************************************** */
85 /* *** Internal Utility Functions */
86 /* ********************************************************************************************** */
87 _sion_fileptr *_sion_file_alloc_and_init_sion_fileptr();
88 char* _sion_get_fileptr_desc(_sion_fileptr *sion_fileptr);
89 
90 
91 #endif
int _sion_file_stat_file(const char *fname)
Check if file exists (LARGE_FILE support on BlueGene)
Definition: sion_file.c:204