SIONlib  1.6.2
Scalable I/O library for parallel access to task-local files
Data Structures | Macros | Typedefs | Functions
sion_common.h File Reference
#include <stdio.h>
#include <stdint.h>
#include "sion_platform.h"
#include "sion_datatypes.h"
Include dependency graph for sion_common.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  _sion_key_stat_struct
 

Macros

#define SION_SERIAL_MASTER
 
#define SION_MAX_FSBLOCKSIZE   32*1024*1024
 
#define SION_DEFAULT_FSBLOCKSIZE   2*1024*1024
 
#define SION_FILENAME_LENGTH   1024
 
#define SION_DIFFSIZE   1
 
#define SION_DUMMY   2
 
#define MAXCHUNKS   100
 
#define WFLARGEMETABLOCK_none   /* for BENCHMARKING only */
 
#define _sion_stat_file   _sion_file_stat_file
 
#define DPRINTF(A)
 
#define DPRINTFP(A)
 
#define DPRINTTS(A, B)
 
#define DPRINTFTS2(A, B)
 

Typedefs

typedef struct _sion_key_stat_struct sion_key_stat_t
 

Functions

int _sion_close_sid (int sid)
 
size_t sion_fwrite (const void *data, size_t size, size_t nitems, int sid)
 Write data to sion file. More...
 
size_t sion_fread (void *data, size_t size, size_t nitems, int sid)
 Read data from sion file. More...
 
size_t sion_fwrite_key (const void *data, uint64_t key, size_t size, size_t nitems, int sid)
 Writes data for key. More...
 
size_t sion_fread_key (void *data, uint64_t key, size_t size, size_t nitems, int sid)
 Read data for key. More...
 
int sion_fread_key_iterator_reset (int sid)
 Resets key iterator. More...
 
int sion_fread_key_iterator_next (int sid, uint64_t *key, size_t *size)
 Forward to next key. More...
 
int sion_seek_key (int sid, uint64_t key, int entrynum, sion_int64 posinentry)
 Seek to position in key. More...
 
int sion_key_full_scan (int sid)
 Performs a full scan of all meta data in current file. More...
 
int sion_key_list_iterator_reset (int sid)
 Resets key iterator. More...
 
int sion_key_list_iterator_next (int sid, uint64_t *keyptr)
 Forward to next key. More...
 
int sion_key_get_stat (int sid, uint64_t key, sion_key_stat_t *stat)
 get statistics about key More...
 
int sion_feof (int sid)
 Function that indicates whether the end of file is reached for this task. More...
 
int sion_ensure_free_space (int sid, sion_int64 bytes)
 Funtion to ensure that enough space is available for writing. More...
 
int sion_flush (int sid)
 Flushed sion file. More...
 
int sion_get_sizeof (int sid, int *numbytes, int *numfds)
 Function returns size of internal data structure for sid. More...
 
int sion_dup (int sid, int mode, int rank, uint64_t key)
 Function which duplicates a sion file descriptor. More...
 
int sion_dedup (int sid)
 Function which destroy a duplicated sion file descriptor. More...
 
int sion_set_fp_closed (int sid)
 
int sion_set_second_fp (int sid, FILE *fp)
 
int sion_unset_second_fp (int sid)
 
FILE * sion_get_fp (int sid)
 
int sion_get_fd (int sid)
 
int sion_optimize_fp_buffer (int sid)
 
int sion_get_file_endianness (int sid)
 Returns edianness of data in file sid. More...
 
int sion_endianness_swap_needed (int sid)
 Returns whether or not byte swapping is needed for sid. More...
 
sion_int64 sion_get_bytes_written (int sid)
 
sion_int64 sion_get_bytes_read (int sid)
 
sion_int64 sion_bytes_avail_in_block (int sid)
 Return the number of bytes available in the current chunk. More...
 
sion_int64 sion_bytes_avail_in_chunk (int sid)
 Function that returns the number of bytes available in the current chunk. More...
 
sion_int64 sion_get_position (int sid)
 Function that returns the current file position. More...
 
int sion_get_mapping (int sid, int *mapping_size, sion_int32 **mapping, int *numfiles)
 Returns pointers to the internal field mapping. More...
 
int sion_get_locations (int sid, int *ntasks, int *maxblocks, sion_int64 *globalskip, sion_int64 *start_of_varheader, sion_int64 **sion_localsizes, sion_int64 **sion_globalranks, sion_int64 **sion_blockcount, sion_int64 **sion_blocksizes)
 Returns pointers to internal fields. More...
 
int sion_get_current_location (int sid, int *currentblock, sion_int64 *currentpos, int *maxchunks, sion_int64 **chunksizes)
 Returns current position in file and pointer fiels containing chunk sizes. More...
 
int sion_get_current_locations (int sid, int *ntasks, sion_int64 **sion_currentpos, sion_int64 **sion_currentblocknr)
 Returns current position in file and pointer fiels containing chunk sizes. More...
 
int sion_get_number_of_files (int sid)
 
int sion_get_filenumber (int sid)
 
int sion_is_serial_opened (int sid)
 
int sion_using_hints (int sid)
 
int sion_get_endianness (void)
 Return endianness. More...
 
int sion_is_thread_safe (void)
 
int sion_get_keyval_mode (int sid)
 Return selected mode for key value. More...
 
char * sion_keyval_type_to_str (int type)
 Returns key value mode as string. More...
 
int sion_get_version (int *main_version, int *sub_version, int *patch_level, int *fileformat_version)
 Return version numbers. More...
 
int sion_seek (int sid, int rank, int currentblocknr, sion_int64 posinblk)
 Function to set the file pointer to a new position. More...
 
int sion_seek_fp (int sid, int rank, int currentblocknr, sion_int64 posinblk, FILE **fileptr)
 Deprecated. Use sion_seek() instead. More...
 
int sion_lock_register_lock_callbacks (int lock(void *), int unlock(void *), void *lock_data)
 Function which registers callback funtions for lock and unlock internal access to shared data structures. More...
 
int sion_lock_user_callbacks_defined (void)
 Function which return flag, if user callback for locking are registered. More...
 
void sion_swap (void *target, void *source, int size, int n, int aflag)
 
int _sion_file_stat_file (const char *fname)
 Check if file exists (LARGE_FILE support on BlueGene) More...
 

Detailed Description

Common SIONlib functions

Definition in file sion_common.h.

Macro Definition Documentation

◆ MAXCHUNKS

#define MAXCHUNKS   100

Initial maximum number of chunks in a sion file

Definition at line 37 of file sion_common.h.

◆ SION_DIFFSIZE

#define SION_DIFFSIZE   1

Each rank has a different chunk size (default)

Definition at line 35 of file sion_common.h.

Function Documentation

◆ _sion_file_stat_file()

int _sion_file_stat_file ( const char *  fname)

Check if file exists (LARGE_FILE support on BlueGene)

Parameters
*fnamefilename to use
Returns
flag 0 or 1

Definition at line 209 of file sion_file.c.

◆ sion_bytes_avail_in_block()

sion_int64 sion_bytes_avail_in_block ( int  sid)

Return the number of bytes available in the current chunk.

See sion_bytes_avail_in_block_description.

Parameters
[in]sidsion file handle
Returns
rc>0 number of bytes rc<=0 file position is after end of block

Definition at line 802 of file sion_common.c.

References sion_bytes_avail_in_chunk().

Referenced by fsion_bytes_avail_in_block_c().

Here is the caller graph for this function:

◆ sion_bytes_avail_in_chunk()

sion_int64 sion_bytes_avail_in_chunk ( int  sid)

Function that returns the number of bytes available in the current chunk.

This function returns the number of bytes remaining in the current chunk (bytes not read). It is a local function, which can be called independently from other MPI tasks.

Parameters
[in]sidsion file handle
Returns
rc>0 number of bytes rc<=0 file position is after end of block

Definition at line 817 of file sion_common.c.

Referenced by sion_bytes_avail_in_block().

Here is the caller graph for this function:

◆ sion_dedup()

int sion_dedup ( int  sid)

Function which destroy a duplicated sion file descriptor.

Parameters
[in]sidsion file handle
Returns
SION_SUCCESS okay

Definition at line 1116 of file sion_common.c.

◆ sion_dup()

int sion_dup ( int  sid,
int  mode,
int  rank,
uint64_t  key 
)

Function which duplicates a sion file descriptor.

Restrictions:

  • only in read mode
  • only in parallel mode
  • collective operation are not callable on the new sid
Parameters
[in]sidsion file handle
[in]modeone of SION_DUP_ALL, SION_DUP_RANK, SION_DUP_RANK_KEY
[in]rankdup only those part of the internal data struture which are needed to read rank rank from file
[in]keydup only those part of the internal data struture which are needed to read on the rank rank data for key key from file
Returns
new sid if ok, SION_ID_NOT_VALID in other cases

Definition at line 1082 of file sion_common.c.

◆ sion_ensure_free_space()

int sion_ensure_free_space ( int  sid,
sion_int64  bytes 
)

Funtion to ensure that enough space is available for writing.

See sion_ensure_free_space_description

Parameters
[in]sidsion file handle
[in]bytesnumber of bytes requested for the next write operation
Returns
SION_SUCCESS if ok

Definition at line 976 of file sion_common.c.

Referenced by fsion_ensure_free_space_c().

Here is the caller graph for this function:

◆ sion_feof()

int sion_feof ( int  sid)

Function that indicates whether the end of file is reached for this task.

See sion_feof_description.

Parameters
[in]sidsion file handle (in)
Returns
SION_SUCCESS (1) if end of last chunk reached SION_NOT_SUCCESS (0) otherwise

Definition at line 732 of file sion_common.c.

Referenced by fsion_feof_c().

Here is the caller graph for this function:

◆ sion_flush()

int sion_flush ( int  sid)

Flushed sion file.

Parameters
[in]sidsion file handle
Returns
SION_SUCCESS if ok

Definition at line 953 of file sion_common.c.

Referenced by fsion_flush_c().

Here is the caller graph for this function:

◆ sion_get_endianness()

int sion_get_endianness ( void  )

Return endianness.

Returns
1-> big endian 0 ->little endian

Definition at line 29 of file sion_tools.c.

Referenced by fsion_get_endianness_c().

Here is the caller graph for this function:

◆ sion_get_position()

sion_int64 sion_get_position ( int  sid)

Function that returns the current file position.

This function returns an sion_int64 containing the current file possition.

Parameters
[in]sidsion file handle (in)
Returns
current file position

Definition at line 853 of file sion_common.c.

References _sion_errorprint(), _sion_vcdtovcon(), _sion_vcdtype(), and SION_FILEDESCRIPTOR.

Referenced by fsion_get_position_c().

Here is the caller graph for this function:

◆ sion_get_sizeof()

int sion_get_sizeof ( int  sid,
int *  numbytes,
int *  numfds 
)

Function returns size of internal data structure for sid.

Parameters
[in]sidsion file handle
[out]numbytesnumber of bytes used
[out]numfdsnumber of file descriptors used
Returns
number of bytes allocated for sid

Definition at line 1044 of file sion_common.c.

◆ sion_get_version()

int sion_get_version ( int *  main_version,
int *  sub_version,
int *  patch_level,
int *  fileformat_version 
)

Return version numbers.

return version numbers

Definition at line 48 of file sion_tools.c.

◆ sion_lock_register_lock_callbacks()

int sion_lock_register_lock_callbacks ( int   lockvoid *,
int   unlockvoid *,
void *  lock_data 
)

Function which registers callback funtions for lock and unlock internal access to shared data structures.

Parameters
[in]lock()lock function
[in]unlock()unlock function
[in]lock_data()unlock function
Returns
SION_SUCCESS okay

Definition at line 1141 of file sion_common.c.

◆ sion_lock_user_callbacks_defined()

int sion_lock_user_callbacks_defined ( void  )

Function which return flag, if user callback for locking are registered.

Returns
SION_SUCCESS (yes) of SION_NOT_SUCCESS (no)

Definition at line 1160 of file sion_common.c.

◆ sion_seek()

int sion_seek ( int  sid,
int  rank,
int  currentblocknr,
sion_int64  posinblk 
)

Function to set the file pointer to a new position.

See sion_seek_description .

Parameters
[in]sidsion file handle
[in]rankrank number of the process (SION_CURRENT_RANK to select the current rank)
[in]currentblocknrblock number (SION_CURRENT_BLK to select the current block) (SION_ABSOLUTE_POS gives an absolute position; SION_END_POS seeks relative to the end of the file)
[in]posinblkposition in the block (SION_CURRENT_POS to select the current position)
Return values
SION_SUCCESSif file pointer can be moved to new position

Definition at line 621 of file sion_common.c.

◆ sion_seek_fp()

int sion_seek_fp ( int  sid,
int  rank,
int  currentblocknr,
sion_int64  posinblk,
FILE **  fileptr 
)

Deprecated. Use sion_seek() instead.

See sion_seek_fp_description .

Parameters
[in]sidsion file handle
[in]rankrank number of the process (SION_CURRENT_RANK to select the current rank)
[in]currentblocknrblock number (SION_CURRENT_BLK to select the current block)
[in]posinblkposition in the block (SION_CURRENT_POS to select the current position)
[out]**fileptrfile pointer to corresponding file of a multi-file set
Return values
SION_SUCCESSif file pointer can be moved to new position

Definition at line 644 of file sion_common.c.

◆ sion_swap()

void sion_swap ( void *  target,
void *  source,
int  size,
int  n,
int  aflag 
)

perform byte-order swapping for arrays n units of size byte are swapped if and only if aflag==1 in-place swapping (target==source) is allowed if target != source, the buffers must not overlap

Definition at line 36 of file sion_convert.c.

Referenced by fsion_swap_c().

Here is the caller graph for this function: