16#ifndef MUMPS_IO_BASIC_H
17#define MUMPS_IO_BASIC_H
20#if ! defined(WITHOUT_PTHREAD) && defined(MUMPS_WIN32)
21# define WITHOUT_PTHREAD 1
24# if ! defined(_ALL_SOURCE)
29#if ! defined (MUMPS_WIN32)
30# if ! defined(_XOPEN_SOURCE)
33# define _XOPEN_SOURCE 500
36#define MAX_FILE_SIZE 1879048192
47#if ! defined (MUMPS_WIN32)
49# include <sys/types.h>
55#if ! defined (MUMPS_WIN32)
56# define MUMPS_IO_FLAG_O_DIRECT 0
59#if (defined (sgi) || defined (__sgi)) || defined(_AIX) || (defined(sun) || defined(__sun)) || defined(_GNU_SOURCE)
68#define UNITIALIZED "NAME_NOT_INITIALIZED"
69#define MUMPS_OOC_DEFAULT_DIR "/tmp"
70#if defined(MUMPS_WIN32)
71# define SEPARATOR "\\"
77#define my_max(x,y) ( (x) > (y) ? (x) : (y) )
78#define my_ceil(x) ( (MUMPS_INT)(x) >= (x) ? (MUMPS_INT)(x) : ( (MUMPS_INT)(x) + 1 ) )
83#if ! defined (MUMPS_WIN32)
91#if ! defined (MUMPS_WIN32)
104#if ! defined (MUMPS_WIN32)
105# if defined (WITH_PFUNC) && ! defined (WITHOUT_PTHREAD)
107extern pthread_mutex_t mumps_io_pwrite_mutex;
157#if ! defined (MUMPS_WIN32)
162MUMPS_INT mumps_io_write_win32__(
void *file,
void *loc_add,
size_t write_size,
MUMPS_INT where);
165#if ! defined (MUMPS_WIN32)
169MUMPS_INT mumps_io_read_win32__(
void * file,
void * loc_addr,
size_t size,
MUMPS_INT local_offset);
172#if ! defined (MUMPS_WIN32) && ! defined (WITHOUT_PTHREAD)
173# if defined (WITH_PFUNC)
177MUMPS_INT mumps_io_destroy_pointers_lock();
MUMPS_INT mumps_io_flag_async
MUMPS_INT mumps_io_max_file_size
MUMPS_INT mumps_io_nb_file_type
MUMPS_INT mumps_directio_flag
MUMPS_INT mumps_io_is_init_called
char * mumps_ooc_file_prefix
MUMPS_INT mumps_elementary_data_size
mumps_file_type * mumps_files
MUMPS_INT mumps_io_get_nb_files(MUMPS_INT *nb_files, const MUMPS_INT *type)
MUMPS_INT mumps_io_do_read_block(void *address_block, long long block_size, MUMPS_INT *type, long long vaddr, MUMPS_INT *ierr)
MUMPS_INT mumps_io_write_direct_io__(void *file, void *loc_addr, size_t write_size, MUMPS_INT where, MUMPS_INT type)
MUMPS_INT mumps_io_set_file_name(MUMPS_INT *indice, char *name, MUMPS_INT *length, MUMPS_INT *type)
MUMPS_INT mumps_io_alloc_file_struct(MUMPS_INT *nb, MUMPS_INT which)
MUMPS_INT mumps_compute_file_size(void *file, size_t *size)
MUMPS_INT mumps_io_set_last_file(MUMPS_INT *dim, MUMPS_INT *type)
struct __mumps_file_type mumps_file_type
void mumps_update_current_file_position(mumps_file_struct *file_arg)
MUMPS_INT mumps_io_alloc_pointers(MUMPS_INT *nb_file_type, MUMPS_INT *dim)
struct __mumps_file_struct mumps_file_struct
MUMPS_INT mumps_prepare_pointers_for_write(double to_be_written, MUMPS_INT *pos_in_file, MUMPS_INT *file_number, const MUMPS_INT type, long long vaddr, size_t already_written)
MUMPS_INT mumps_io_write__(void *file, void *loc_add, size_t write_size, MUMPS_INT where, MUMPS_INT type)
MUMPS_INT mumps_io_init_vars(MUMPS_INT *myid_arg, MUMPS_INT *size_element, MUMPS_INT *async_arg)
MUMPS_INT mumps_io_read_direct_io__(void *file, void *loc_addr, size_t size, MUMPS_INT local_offset, MUMPS_INT type)
MUMPS_INT mumps_compute_where_to_write(const double to_be_written, const MUMPS_INT type, long long vaddr, size_t already_written)
MUMPS_INT mumps_init_file_structure(MUMPS_INT *_myid, long long *total_size_io, MUMPS_INT *size_element, MUMPS_INT *nb_file_type, MUMPS_INT *flag_tab)
MUMPS_INT mumps_compute_nb_concerned_files(long long block_size, MUMPS_INT *nb_concerned_files, long long vaddr)
MUMPS_INT mumps_io_read__(void *file, void *loc_addr, size_t size, MUMPS_INT local_offset, MUMPS_INT type)
MUMPS_INT mumps_set_file(MUMPS_INT type, MUMPS_INT file_number_arg)
MUMPS_INT mumps_io_read_os_buff__(void *file, void *loc_addr, size_t size, MUMPS_INT local_offset)
MUMPS_INT mumps_io_get_file_name(MUMPS_INT *indice, char *name, MUMPS_INT *length, MUMPS_INT *type)
MUMPS_INT mumps_init_file_name(char *mumps_dir, char *mumps_file, MUMPS_INT *mumps_dim_dir, MUMPS_INT *mumps_dim_file, MUMPS_INT *_myid)
MUMPS_INT mumps_io_do_write_block(void *address_block, long long block_size, MUMPS_INT *type, long long vaddr, MUMPS_INT *ierr)
MUMPS_INT mumps_io_open_files_for_read()
MUMPS_INT mumps_io_flush_write__(MUMPS_INT type)
MUMPS_INLINE MUMPS_INT mumps_gen_file_info(long long vaddr, MUMPS_INT *pos, MUMPS_INT *file)
MUMPS_INT mumps_free_file_pointers(MUMPS_INT *step)
void mumps_io_init_file_struct(MUMPS_INT *nb, MUMPS_INT which)
MUMPS_INT mumps_io_write_os_buff__(void *file, void *loc_add, size_t write_size, MUMPS_INT where)
mumps_file_struct * mumps_io_pfile_pointer_array
MUMPS_INT mumps_io_current_file_number
mumps_file_struct * mumps_io_current_file
MUMPS_INT mumps_flag_open
MUMPS_INT mumps_io_last_file_opened
MUMPS_INT mumps_io_nb_file
MUMPS_INT mumps_io_nb_file_opened