OpenRadioss 2025.1.11
OpenRadioss project
Loading...
Searching...
No Matches
mumps_io_err.c File Reference
#include "mumps_io_err.h"
#include "mumps_io_basic.h"
#include "mumps_c_types.h"

Go to the source code of this file.

Functions

void MUMPS_CALL MUMPS_LOW_LEVEL_INIT_ERR_STR (MUMPS_INT *dim, char *err_str, mumps_ftnlen l1)
MUMPS_INLINE MUMPS_INT mumps_io_protect_err ()
MUMPS_INLINE MUMPS_INT mumps_io_unprotect_err ()
MUMPS_INT mumps_io_init_err_lock ()
MUMPS_INT mumps_io_destroy_err_lock ()
MUMPS_INT mumps_check_error_th ()
MUMPS_INT mumps_io_error (MUMPS_INT mumps_errno, const char *desc)
MUMPS_INT mumps_io_sys_error (MUMPS_INT mumps_errno, const char *desc)

Variables

char * mumps_err
MUMPS_INTdim_mumps_err
MUMPS_INT mumps_err_max_len
MUMPS_INT err_flag
pthread_mutex_t err_mutex

Function Documentation

◆ mumps_check_error_th()

MUMPS_INT mumps_check_error_th ( )

Definition at line 74 of file mumps_io_err.c.

75{
76 /* If err_flag != 0, then error_str is set */
77 return err_flag;
78}
MUMPS_INT err_flag

◆ mumps_io_destroy_err_lock()

MUMPS_INT mumps_io_destroy_err_lock ( )

Definition at line 68 of file mumps_io_err.c.

69{
70 pthread_mutex_destroy(&err_mutex);
71 return 0;
72}
pthread_mutex_t err_mutex

◆ mumps_io_error()

MUMPS_INT mumps_io_error ( MUMPS_INT mumps_errno,
const char * desc )

Definition at line 81 of file mumps_io_err.c.

82{
83 MUMPS_INT len;
84#if ! defined( MUMPS_WIN32 ) && ! defined( WITHOUT_PTHREAD )
86#endif
87 if(err_flag == 0){
88 strncpy(mumps_err, desc, mumps_err_max_len);
89 /* mumps_err is a FORTRAN string, we do not care about adding a final 0 */
90 len = (MUMPS_INT) strlen(desc);
92 err_flag = mumps_errno;
93 }
94#if ! defined( MUMPS_WIN32 ) && ! defined( WITHOUT_PTHREAD )
96#endif
97 return mumps_errno;
98}
#define MUMPS_INT
char * mumps_err
MUMPS_INLINE MUMPS_INT mumps_io_unprotect_err()
MUMPS_INT * dim_mumps_err
MUMPS_INT mumps_err_max_len
MUMPS_INLINE MUMPS_INT mumps_io_protect_err()

◆ mumps_io_init_err_lock()

MUMPS_INT mumps_io_init_err_lock ( )

Definition at line 62 of file mumps_io_err.c.

63{
64 pthread_mutex_init(&err_mutex,NULL);
65 return 0;
66}

◆ mumps_io_protect_err()

MUMPS_INLINE MUMPS_INT mumps_io_protect_err ( )

Definition at line 46 of file mumps_io_err.c.

47{
49 pthread_mutex_lock(&err_mutex);
50 }
51 return 0;
52}
MUMPS_INT mumps_io_flag_async
#define IO_ASYNC_TH

◆ mumps_io_sys_error()

MUMPS_INT mumps_io_sys_error ( MUMPS_INT mumps_errno,
const char * desc )

Definition at line 100 of file mumps_io_err.c.

101{
102 MUMPS_INT len = 2; /* length of ": " */
103 const char* _desc;
104 char* _err;
105#if defined( MUMPS_WIN32 )
106 MUMPS_INT _err_len;
107#endif
108#if ! defined( MUMPS_WIN32 ) && ! defined( WITHOUT_PTHREAD )
110#endif
111 if(err_flag==0){
112 if(desc == NULL) {
113 _desc = "";
114 } else {
115 len += (MUMPS_INT) strlen(desc);
116 _desc = desc;
117 }
118#if ! defined( MUMPS_WIN32 )
119 _err = strerror(errno);
120 len += (MUMPS_INT) strlen(_err);
121 snprintf(mumps_err, mumps_err_max_len, "%s: %s", _desc, _err);
122 /* mumps_err is a FORTRAN string, we do not care about adding a final 0 */
123#else
124 /* This a VERY UGLY workaround for snprintf: this function has been
125 * integrated quite lately into the ANSI stdio: some windows compilers are
126 * not up-to-date yet. */
127 if( len >= mumps_err_max_len - 1 ) { /* then do not print sys error msg at all */
128 len -= 2;
129 len = (len >= mumps_err_max_len ) ? mumps_err_max_len - 1 : len;
130 _err = strdup( _desc );
131 _err[len] = '\0';
132 sprintf(mumps_err, "%s", _err);
133 } else {
134 _err = strdup(strerror(errno));
135 _err_len = (MUMPS_INT) strlen(_err);
136 /* We will use sprintf, so make space for the final '\0' ! */
137 if((len + _err_len) >= mumps_err_max_len) {
138 /* truncate _err, not to overtake mumps_err_max_len at the end. */
139 _err[mumps_err_max_len - len - 1] = '\0';
140 len = mumps_err_max_len - 1;
141 } else {
142 len += _err_len;
143 }
144 sprintf(mumps_err, "%s: %s", _desc, _err);
145 }
146 free(_err);
147#endif
149 err_flag = mumps_errno;
150 }
151#if ! defined( MUMPS_WIN32 ) && ! defined( WITHOUT_PTHREAD )
153#endif
154 return mumps_errno;
155}

◆ mumps_io_unprotect_err()

MUMPS_INLINE MUMPS_INT mumps_io_unprotect_err ( )

Definition at line 54 of file mumps_io_err.c.

55{
57 pthread_mutex_unlock(&err_mutex);
58 }
59 return 0;
60}

◆ MUMPS_LOW_LEVEL_INIT_ERR_STR()

void MUMPS_CALL MUMPS_LOW_LEVEL_INIT_ERR_STR ( MUMPS_INT * dim,
char * err_str,
mumps_ftnlen l1 )

Definition at line 37 of file mumps_io_err.c.

37 {
38 mumps_err = err_str;
39 dim_mumps_err = (MUMPS_INT *) dim;
41 err_flag = 0;
42 return;
43}

Variable Documentation

◆ dim_mumps_err

MUMPS_INT* dim_mumps_err

Definition at line 24 of file mumps_io_err.c.

◆ err_flag

MUMPS_INT err_flag

Definition at line 26 of file mumps_io_err.c.

◆ err_mutex

pthread_mutex_t err_mutex

Definition at line 28 of file mumps_io_err.c.

◆ mumps_err

char* mumps_err

Definition at line 23 of file mumps_io_err.c.

◆ mumps_err_max_len

MUMPS_INT mumps_err_max_len

Definition at line 25 of file mumps_io_err.c.