ScaLAPACK 2.1
2.1
ScaLAPACK: Scalable Linear Algebra PACKage
PB_Cgetbuf.c
Go to the documentation of this file.
1
/* ---------------------------------------------------------------------
2
*
3
* -- PBLAS auxiliary routine (version 2.0) --
4
* University of Tennessee, Knoxville, Oak Ridge National Laboratory,
5
* and University of California, Berkeley.
6
* April 1, 1998
7
*
8
* ---------------------------------------------------------------------
9
*/
10
/*
11
* Include files
12
*/
13
#include "../pblas.h"
14
#include "../PBpblas.h"
15
#include "../PBtools.h"
16
#include "../PBblacs.h"
17
#include "../PBblas.h"
18
19
#ifdef __STDC__
20
char
*
PB_Cgetbuf
(
char
* MESS,
int
LENGTH )
21
#else
22
char
*
PB_Cgetbuf
( MESS, LENGTH )
23
/*
24
* .. Scalar Arguments ..
25
*/
26
int
LENGTH;
27
/*
28
* .. Array Arguments ..
29
*/
30
char
* MESS;
31
#endif
32
{
33
/*
34
* Purpose
35
* =======
36
*
37
* PB_Cgetbuf allocates a dynamic memory buffer. The routine checks the
38
* size of the already allocated buffer against the value of the formal
39
* parameter LENGTH. If the current buffer is large enough, this a poin-
40
* ter to it is returned. Otherwise, this function tries to allocate it.
41
* In case of failure, the program is stopped by calling Cblacs_abort.
42
* When LENGTH is zero, this function returns a NULL pointer. If the va-
43
* lue of LENGTH is strictly less than zero, the buffer is released.
44
*
45
* Arguments
46
* =========
47
*
48
* MESS (local input) pointer to CHAR
49
* On entry, MESS is a string containing a message to be printed
50
* in case of allocation failure.
51
*
52
* LENGTH (local input) INTEGER
53
* On entry, LENGTH specifies the length in bytes of the buffer
54
* to be allocated. If LENGTH is less or equal than zero, this
55
* function returns NULL.
56
*
57
* -- Written on April 1, 1998 by
58
* Antoine Petitet, University of Tennessee, Knoxville 37996, USA.
59
*
60
* ---------------------------------------------------------------------
61
*/
62
/*
63
* .. Local Scalars ..
64
*/
65
static
char
* pblasbuf = NULL;
66
static
int
pbbuflen = 0;
67
/* ..
68
* .. Executable Statements ..
69
*
70
*/
71
if
( LENGTH >= 0 )
72
{
73
if
( LENGTH > pbbuflen )
74
{
75
if
( pblasbuf ) free( pblasbuf );
76
pblasbuf = (
char
*) malloc( (
unsigned
) LENGTH );
77
if
( !pblasbuf )
78
{
79
(void) fprintf( stderr,
"ERROR: Memory allocation failed\n%s\n"
,
80
MESS );
81
Cblacs_abort
( -1, -1 );
82
}
83
pbbuflen = LENGTH;
84
}
85
}
86
else
if
( pblasbuf )
87
{
88
free( pblasbuf );
89
pblasbuf = NULL;
90
pbbuflen = 0;
91
}
92
return
( pblasbuf );
93
/*
94
* End of PB_Cgetbuf
95
*/
96
}
PB_Cgetbuf
char * PB_Cgetbuf(char *MESS, int LENGTH)
Definition:
PB_Cgetbuf.c:22
Cblacs_abort
void Cblacs_abort()
PBLAS
SRC
PTOOLS
PB_Cgetbuf.c
Generated by
1.8.16