r10759 - in mpich2/trunk/src: binding/cxx include mpi/pt2pt mpi/spawn mpid/ch3/src mpl/include mpl/src pm/util util/mem util/procmap
Author: gropp Date: 2012-12-11 10:09:42 -0600 (Tue, 11 Dec 2012) New Revision: 10759 Modified: mpich2/trunk/src/binding/cxx/buildiface mpich2/trunk/src/include/glue_romio.h.in mpich2/trunk/src/include/mpibsend.h mpich2/trunk/src/include/mpimem.h mpich2/trunk/src/mpi/pt2pt/bsendutil.c mpich2/trunk/src/mpi/spawn/comm_join.c mpich2/trunk/src/mpid/ch3/src/mpid_getpname.c mpich2/trunk/src/mpid/ch3/src/mpid_port.c mpich2/trunk/src/mpid/ch3/src/mpidi_pg.c mpich2/trunk/src/mpl/include/mpltrmem.h mpich2/trunk/src/mpl/src/mpltrmem.c mpich2/trunk/src/pm/util/env.c mpich2/trunk/src/pm/util/ioloop.c mpich2/trunk/src/pm/util/labelout.c mpich2/trunk/src/pm/util/pmiserv.c mpich2/trunk/src/pm/util/pmutil.h mpich2/trunk/src/pm/util/rm.c mpich2/trunk/src/pm/util/simple_pmiutil2.c mpich2/trunk/src/util/mem/trmem.c mpich2/trunk/src/util/procmap/local_proc.c Log: Update the trmem routines and macros (defined when malloc took an unsigned int for size) to use size_t instead, as well as some int/size_t cleanup (again for code that correctly used signed int when it was written) Modified: mpich2/trunk/src/binding/cxx/buildiface =================================================================== --- mpich2/trunk/src/binding/cxx/buildiface 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/binding/cxx/buildiface 2012-12-11 16:09:42 UTC (rev 10759) @@ -1955,17 +1955,19 @@ // header isn't C++ clean. Instead, we just include a definition // for size_t. If this is not the correct size, then edit this line // (Note that this is needed only when memory tracing is enabled) +// FIXME: determine whether the type definition is needed, and include the +// correct definition. typedef unsigned int size_t; -extern \"C\" void *MPIU_trmalloc( unsigned int, int, const char [] ); +extern \"C\" void *MPIU_trmalloc( size_t, int, const char [] ); extern \"C\" void MPIU_trfree( void *, int, const char [] ); extern \"C\" void MPIU_trdump( void *, int ); void *operator new(size_t size) { - void *p = MPIU_trmalloc( (unsigned int) size, _mpi_lineno, __FILE__ ); + void *p = MPIU_trmalloc( size, _mpi_lineno, __FILE__ ); return p;} void operator delete(void *p) { MPIU_trfree( p, _mpi_lineno, __FILE__ );} void *operator new[]( size_t size) { - void *p = MPIU_trmalloc( (unsigned int) size, _mpi_lineno, __FILE__ ); + void *p = MPIU_trmalloc( size, _mpi_lineno, __FILE__ ); return p;} void operator delete[](void *p) { MPIU_trfree( p, _mpi_lineno, __FILE__ );} Modified: mpich2/trunk/src/include/glue_romio.h.in =================================================================== --- mpich2/trunk/src/include/glue_romio.h.in 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/include/glue_romio.h.in 2012-12-11 16:09:42 UTC (rev 10759) @@ -54,10 +54,10 @@ void MPIR_Ext_cs_exit_allfunc(void); /* prototypes for the mem tracing routines */ -void *MPIU_trmalloc(unsigned int a, int lineno, const char fname[]); +void *MPIU_trmalloc(size_t a, int lineno, const char fname[]); void MPIU_trfree(void *a_ptr, int line, const char fname[]); -void *MPIU_trcalloc(unsigned int nelem, unsigned int elsize, int lineno, const char fname[]); -void *MPIU_trrealloc(void *p, int size, int lineno, const char fname[]); +void *MPIU_trcalloc(size_t nelem, size_t elsize, int lineno, const char fname[]); +void *MPIU_trrealloc(void *p, size_t size, int lineno, const char fname[]); void *MPIU_trstrdup(const char *str, int lineno, const char fname[]); #endif /* defined(GLUE_ROMIO_H_INCLUDED) */ Modified: mpich2/trunk/src/include/mpibsend.h =================================================================== --- mpich2/trunk/src/include/mpibsend.h 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/include/mpibsend.h 2012-12-11 16:09:42 UTC (rev 10759) @@ -53,7 +53,7 @@ request is not currently available */ typedef struct MPIR_Bsend_msg { void *msgbuf; - int count; + int count; /* int type to match needs of Pack routine */ MPI_Datatype dtype; int tag; struct MPID_Comm *comm_ptr; @@ -62,14 +62,14 @@ /* BsendData describes a bsend request */ typedef struct MPIR_Bsend_data { - int size; /* size that is available for data */ - int total_size; /* total size of this segment, + size_t size; /* size that is available for data */ + size_t total_size; /* total size of this segment, including all headers */ struct MPIR_Bsend_data *next, *prev; MPIR_Bsend_kind_t kind; struct MPID_Request *request; - MPIR_Bsend_msg_t msg; - double alignpad; /* make sure that the struct + MPIR_Bsend_msg_t msg; + double alignpad; /* make sure that the struct shares double alignment */ } MPIR_Bsend_data_t; Modified: mpich2/trunk/src/include/mpimem.h =================================================================== --- mpich2/trunk/src/include/mpimem.h 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/include/mpimem.h 2012-12-11 16:09:42 UTC (rev 10759) @@ -6,6 +6,10 @@ #ifndef MPIMEM_H_INCLUDED #define MPIMEM_H_INCLUDED +#ifndef MPICHCONF_H_INCLUDED +#error 'mpimem.h requires that mpichconf.h be included first' +#endif + /* Make sure that we have the definitions for the malloc routines and size_t */ #include <stdio.h> #include <stdlib.h> @@ -138,17 +142,17 @@ /* ------------------------------------------------------------------------- */ void MPIU_trinit(int); -void *MPIU_trmalloc(unsigned int, int, const char []); +void *MPIU_trmalloc(size_t, int, const char []); void MPIU_trfree(void *, int, const char []); int MPIU_trvalid(const char []); void MPIU_trspace(int *, int *); void MPIU_trid(int); void MPIU_trlevel(int); void MPIU_trDebugLevel(int); -void *MPIU_trcalloc(unsigned int, unsigned int, int, const char []); -void *MPIU_trrealloc(void *, int, int, const char[]); +void *MPIU_trcalloc(size_t, size_t, int, const char []); +void *MPIU_trrealloc(void *, size_t, int, const char[]); void *MPIU_trstrdup(const char *, int, const char[]); -void MPIU_TrSetMaxMem(int); +void MPIU_TrSetMaxMem(size_t); void MPIU_trdump(FILE *, int); #ifdef USE_MEMORY_TRACING @@ -173,7 +177,7 @@ .ve However, it can also be defined as .vb - #define MPIU_Malloc(n) MPIU_trmalloc(n,__FILE__,__LINE__) + #define MPIU_Malloc(n) MPIU_trmalloc(n,__LINE__,__FILE__) .ve where 'MPIU_trmalloc' is a tracing version of 'malloc' that is included with MPICH. @@ -181,7 +185,7 @@ Module: Utility M*/ -#define MPIU_Malloc(a) MPIU_trmalloc((unsigned)(a),__LINE__,__FILE__) +#define MPIU_Malloc(a) MPIU_trmalloc((a),__LINE__,__FILE__) /*M MPIU_Calloc - Allocate memory that is initialized to zero. @@ -203,7 +207,7 @@ Utility M*/ #define MPIU_Calloc(a,b) \ - MPIU_trcalloc((unsigned)(a),(unsigned)(b),__LINE__,__FILE__) + MPIU_trcalloc((a),(b),__LINE__,__FILE__) /*M MPIU_Free - Free memory @@ -224,7 +228,7 @@ .ve However, it can also be defined as .vb - #define MPIU_Free(n) MPIU_trfree(n,__FILE__,__LINE__) + #define MPIU_Free(n) MPIU_trfree(n,__LINE__,__FILE__) .ve where 'MPIU_trfree' is a tracing version of 'free' that is included with MPICH. Modified: mpich2/trunk/src/mpi/pt2pt/bsendutil.c =================================================================== --- mpich2/trunk/src/mpi/pt2pt/bsendutil.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/mpi/pt2pt/bsendutil.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -57,10 +57,10 @@ static struct BsendBuffer { void *buffer; /* Pointer to the begining of the user- provided buffer */ - int buffer_size; /* Size of the user-provided buffer */ + size_t buffer_size; /* Size of the user-provided buffer */ void *origbuffer; /* Pointer to the buffer provided by the user */ - int origbuffer_size; /* Size of the buffer as provided + size_t origbuffer_size;/* Size of the buffer as provided by the user */ MPIR_Bsend_data_t *avail; /* Pointer to the first available block of space */ @@ -157,7 +157,9 @@ /* * Detach a buffer. This routine must wait until any pending bsends - * are complete. + * are complete. Note that MPI specifies the type of the returned "size" + * argument as an "int" (the definition predates that of ssize_t as a + * standard type). */ #undef FUNCNAME #define FUNCNAME MPIR_Bsend_detach @@ -183,7 +185,9 @@ /* Note that this works even when the buffer does not exist */ *(void **) bufferp = BsendBuffer.origbuffer; - *size = BsendBuffer.origbuffer_size; + /* This cast to int will work because the user must use an int to describe + the buffer size */ + *size = (int)BsendBuffer.origbuffer_size; BsendBuffer.origbuffer = NULL; BsendBuffer.origbuffer_size = 0; BsendBuffer.buffer = 0; Modified: mpich2/trunk/src/mpi/spawn/comm_join.c =================================================================== --- mpich2/trunk/src/mpi/spawn/comm_join.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/mpi/spawn/comm_join.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -46,7 +46,10 @@ while (length) { - num_bytes = send(fd, buffer, length, 0); + /* The expectation is that the length of a join message will fit + in an int. For Unixes that define send as returning ssize_t, + we can safely cast this to an int. */ + num_bytes = (int)send(fd, buffer, length, 0); /* --BEGIN ERROR HANDLING-- */ if (num_bytes == -1) { @@ -75,7 +78,8 @@ while (length) { - num_bytes = recv(fd, buffer, length, 0); + /* See discussion on send above for the cast to int. */ + num_bytes = (int)recv(fd, buffer, length, 0); /* --BEGIN ERROR HANDLING-- */ if (num_bytes == -1) { Modified: mpich2/trunk/src/mpid/ch3/src/mpid_getpname.c =================================================================== --- mpich2/trunk/src/mpid/ch3/src/mpid_getpname.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/mpid/ch3/src/mpid_getpname.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -84,7 +84,7 @@ static inline void setupProcessorName( void ) { if (gethostname(processorName, MPI_MAX_PROCESSOR_NAME) == 0) { - processorNameLen = strlen( processorName ); + processorNameLen = (int)strlen( processorName ); } } @@ -92,7 +92,7 @@ static inline void setupProcessorName( void ); { if (sysinfo(SI_HOSTNAME, processorName, MPI_MAX_PROCESSOR_NAME) == 0) { - processorNameLen = strlen( processorName ); + processorNameLen = (int)strlen( processorName ); } } @@ -102,6 +102,6 @@ /* Set the name as the rank of the process */ MPIU_Snprintf( processorName, MPI_MAX_PROCESSOR_NAME, "%d", MPIDI_Process.my_pg_rank ); - processorNameLen = strlen( processorName ); + processorNameLen = (int)strlen( processorName ); } #endif Modified: mpich2/trunk/src/mpid/ch3/src/mpid_port.c =================================================================== --- mpich2/trunk/src/mpid/ch3/src/mpid_port.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/mpid/ch3/src/mpid_port.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -245,7 +245,7 @@ port_name_tag_mask[i]) { /* Mark the appropriate bit as used and return that */ port_name_tag_mask[i] |= (1 << ((8 * sizeof(int)) - j - 1)); - *port_name_tag = ((i * 8 * sizeof(int)) + j); + *port_name_tag = ((i * 8 * (int)sizeof(int)) + j); goto fn_exit; } } @@ -268,8 +268,8 @@ { int idx, rem_tag; - idx = tag / (sizeof(int) * 8); - rem_tag = tag - (idx * sizeof(int) * 8); + idx = tag / ((int)sizeof(int) * 8); + rem_tag = tag - (int)(idx * sizeof(int) * 8); port_name_tag_mask[idx] &= ~(1 << ((8 * sizeof(int)) - 1 - rem_tag)); } Modified: mpich2/trunk/src/mpid/ch3/src/mpidi_pg.c =================================================================== --- mpich2/trunk/src/mpid/ch3/src/mpidi_pg.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/mpid/ch3/src/mpidi_pg.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -730,9 +730,9 @@ char *string = 0; char *pg_idStr = (char *)pg->id; /* In the PMI/KVS space, the pg id is a string */ - char buf[MPIDI_MAX_KVS_VALUE_LEN]; - int i, j, vallen, rc, mpi_errno = MPI_SUCCESS, len; - int curSlen; + char buf[MPIDI_MAX_KVS_VALUE_LEN]; + int i, j, rc, mpi_errno = MPI_SUCCESS, len; + size_t vallen, curSlen; /* Make an initial allocation of a string with an estimate of the needed space */ @@ -782,7 +782,7 @@ if (len + vallen + 1 >= curSlen) { char *nstring = 0; curSlen += (pg->size - i) * (vallen + 1 ); - nstring = MPIU_Realloc( string, curSlen); + nstring = MPIU_Realloc( string, curSlen ); if (!nstring) { MPIU_ERR_SETANDJUMP(mpi_errno,MPI_ERR_OTHER,"**nomem"); } Modified: mpich2/trunk/src/mpl/include/mpltrmem.h =================================================================== --- mpich2/trunk/src/mpl/include/mpltrmem.h 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/mpl/include/mpltrmem.h 2012-12-11 16:09:42 UTC (rev 10759) @@ -12,7 +12,7 @@ does not alias any pointer prior to the call. */ void MPL_trinit(int); -void *MPL_trmalloc(unsigned int, int, const char[]); +void *MPL_trmalloc(size_t, int, const char[]); void MPL_trfree(void *, int, const char[]); int MPL_trvalid(const char[]); int MPL_trvalid2(const char[],int,const char[]); @@ -20,10 +20,10 @@ void MPL_trid(int); void MPL_trlevel(int); void MPL_trDebugLevel(int); -void *MPL_trcalloc(unsigned int, unsigned int, int, const char[]); -void *MPL_trrealloc(void *, int, int, const char[]); +void *MPL_trcalloc(size_t, size_t, int, const char[]); +void *MPL_trrealloc(void *, size_t, int, const char[]); void *MPL_trstrdup(const char *, int, const char[]); -void MPL_TrSetMaxMem(int); +void MPL_TrSetMaxMem(size_t); /* Make sure that FILE is defined */ #include <stdio.h> Modified: mpich2/trunk/src/mpl/src/mpltrmem.c =================================================================== --- mpich2/trunk/src/mpl/src/mpltrmem.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/mpl/src/mpltrmem.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -202,7 +202,7 @@ double aligned pointer to requested storage, or null if not available. +*/ -void *MPL_trmalloc(unsigned int a, int lineno, const char fname[]) +void *MPL_trmalloc(size_t a, int lineno, const char fname[]) { TRSPACE *head; char *new = NULL; @@ -753,11 +753,11 @@ Double aligned pointer to requested storage, or null if not available. +*/ -void *MPL_trcalloc(unsigned int nelem, unsigned int elsize, int lineno, const char fname[]) +void *MPL_trcalloc(size_t nelem, size_t elsize, int lineno, const char fname[]) { void *p; - p = MPL_trmalloc((unsigned) (nelem * elsize), lineno, fname); + p = MPL_trmalloc(nelem * elsize, lineno, fname); if (p) { memset(p, 0, nelem * elsize); } @@ -778,7 +778,7 @@ available. This implementation ALWAYS allocates new space and copies the contents into the new space. +*/ -void *MPL_trrealloc(void *p, int size, int lineno, const char fname[]) +void *MPL_trrealloc(void *p, size_t size, int lineno, const char fname[]) { void *pnew; size_t nsize; @@ -809,7 +809,7 @@ return NULL; } - pnew = MPL_trmalloc((unsigned) size, lineno, fname); + pnew = MPL_trmalloc(size, lineno, fname); if (p && pnew) { nsize = size; @@ -846,7 +846,7 @@ void *p; size_t len = strlen(str) + 1; - p = MPL_trmalloc((unsigned)len, lineno, (char *) fname); + p = MPL_trmalloc(len, lineno, fname); if (p) { memcpy(p, str, len); } @@ -991,7 +991,7 @@ fflush(fp); } -void MPL_TrSetMaxMem(int size) +void MPL_TrSetMaxMem(size_t size) { TRMaxMemAllow = size; } Modified: mpich2/trunk/src/pm/util/env.c =================================================================== --- mpich2/trunk/src/pm/util/env.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/pm/util/env.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -102,7 +102,8 @@ while (*lPtr) { name = lPtr++; while (*lPtr && *lPtr != ',') lPtr++; - namelen = lPtr - name; + /* The length of any environment string will fit in an int */ + namelen = (int)(lPtr - name); p = (EnvData *)MPIU_Malloc( sizeof(EnvData) ); p->value = 0; p->name = (const char *)MPIU_Malloc( namelen + 1 ); @@ -243,7 +244,8 @@ { const char *value; char *str; - int slen, rc; + int rc; + size_t slen; while (elist) { /* Skip variables that already have value strings */ Modified: mpich2/trunk/src/pm/util/ioloop.c =================================================================== --- mpich2/trunk/src/pm/util/ioloop.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/pm/util/ioloop.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -238,7 +238,7 @@ #ifdef HAVE_TIME time_t t; t = time( NULL ); - end_time = seconds + t; + end_time = seconds + (int)t; #elif defined(HAVE_GETTIMEOFDAY) struct timeval tp; gettimeofday( &tp, NULL ); @@ -264,7 +264,7 @@ #ifdef HAVE_TIME time_t t; t = time( NULL ); - time_left = end_time - t; + time_left = end_time - (int)t; #elif defined(HAVE_GETTIMEOFDAY) struct timeval tp; gettimeofday( &tp, NULL ); Modified: mpich2/trunk/src/pm/util/labelout.c =================================================================== --- mpich2/trunk/src/pm/util/labelout.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/pm/util/labelout.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -209,7 +209,7 @@ switch (*pin) { case '%': *pout++ = '%'; lenleft--; break; case 'd': - dlen = strlen( rankAsChar ); + dlen = (int)strlen( rankAsChar ); if (dlen < lenleft) { MPIU_Strncpy( pout, rankAsChar, lenleft ); pout += dlen; @@ -221,7 +221,7 @@ } break; case 'w': - dlen = strlen(worldnumAsChar); + dlen = (int)strlen(worldnumAsChar); if (dlen < lenleft) { MPIU_Strncpy( pout, worldnumAsChar, lenleft ); pout += dlen; @@ -248,7 +248,7 @@ /* Recursively invoke the label routine */ IOLabelSetLabelText( wPattern, wLabel, sizeof(wLabel), rank, worldnum ); - dlen = strlen(wLabel); + dlen = (int)strlen(wLabel); if (dlen < lenleft) { MPIU_Strncpy( pout, wLabel, lenleft ); pout += dlen; Modified: mpich2/trunk/src/pm/util/pmiserv.c =================================================================== --- mpich2/trunk/src/pm/util/pmiserv.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/pm/util/pmiserv.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -1391,7 +1391,7 @@ /* Carefully read data into buffer. This could be written to read more at one time, but would then need to know the size of the readbuf */ - n = read( fd, readbuf, 1 ); + n = (int)read( fd, readbuf, 1 ); } while (n == -1 && errno == EINTR); if (n == 0) { /* EOF */ Modified: mpich2/trunk/src/pm/util/pmutil.h =================================================================== --- mpich2/trunk/src/pm/util/pmutil.h 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/pm/util/pmutil.h 2012-12-11 16:09:42 UTC (rev 10759) @@ -54,12 +54,17 @@ #define DBG_PRINTF(a) DBG_PRINTFCOND(MPIE_Debug,a) /* #define USE_LOG_SYSCALLS */ +/* For the system calls used in PMI, values returned by the system + calls will fit in an int, and need to be an int (signed) to + test for error, since a return of -1 (typically) indicates error, + even for system calls such as write that may return an unsigned value (!) +*/ #ifdef USE_LOG_SYSCALLS #include <errno.h> #define MPIE_SYSCALL(a_,b_,c_) { \ printf( "about to call %s (%s,%d)\n", #b_ ,__FILE__, __LINE__);\ fflush(stdout); errno = 0;\ - a_ = b_ c_; \ + a_ = (int)b_ c_; \ if ((a_)>=0 || errno==0) {\ printf( "%s returned %d\n", #b_, a_ );\ } \ @@ -68,7 +73,7 @@ #b_, a_, errno, strerror(errno));\ }; fflush(stdout);} #else -#define MPIE_SYSCALL(a_,b_,c_) a_ = b_ c_ +#define MPIE_SYSCALL(a_,b_,c_) a_ = (int)b_ c_ #endif Modified: mpich2/trunk/src/pm/util/rm.c =================================================================== --- mpich2/trunk/src/pm/util/rm.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/pm/util/rm.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -210,7 +210,8 @@ char dirname[PATH_MAX]; const char *path=getenv("MPIEXEC_MACHINES_PATH"); MachineTable *mt; - int len, nFound = 0; + size_t len; + int nFound = 0; /* Try to open the machines file. arch may be null, in which case we open the default file */ @@ -341,13 +342,14 @@ mt->desc[nFound].login = 0; if (npstring) { char *newp; - int n = strtol( npstring, &newp, 0 ); + size_t n = strtol( npstring, &newp, 0 ); if (newp == npstring) { /* This indicates an error in the file. How do we report that? */ n = 1; } - mt->desc[nFound].np = n; + /* Length of hostname will fit in an int. */ + mt->desc[nFound].np = (int)n; } else mt->desc[nFound].np = 1; Modified: mpich2/trunk/src/pm/util/simple_pmiutil2.c =================================================================== --- mpich2/trunk/src/pm/util/simple_pmiutil2.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/pm/util/simple_pmiutil2.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -132,7 +132,11 @@ if (nextChar == lastChar) { lastfd = fd; do { - n = read( fd, readbuf, sizeof(readbuf)-1 ); + /* The size of the read buffer will always fit within + an int. */ + /* FIXME: the read length should be the size of the buffer, + not the size of the pointer to buffer */ + n = (int)read( fd, readbuf, sizeof(readbuf)-1 ); } while (n == -1 && errno == EINTR); if (n == 0) { /* EOF */ @@ -172,7 +176,8 @@ int PMIU_writeline( int fd, char *buf ) { - int size, n; + int n; + size_t size; size = strlen( buf ); if ( size > PMIU_MAXLINE ) { @@ -184,7 +189,10 @@ buf ); else { do { - n = write( fd, buf, size ); + /* We assume that the size of any buf to be written fits + in an int. For the PMI interface, this should always + be true */ + n = (int)write( fd, buf, size ); } while (n == -1 && errno == EINTR); if ( n < 0 ) { @@ -204,8 +212,8 @@ */ int PMIU_parse_keyvals( char *st ) { - char *p, *keystart, *valstart; - int offset; + char *p, *keystart, *valstart; + size_t offset; if ( !st ) return( -1 ); Modified: mpich2/trunk/src/util/mem/trmem.c =================================================================== --- mpich2/trunk/src/util/mem/trmem.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/util/mem/trmem.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -22,7 +22,7 @@ MPIU_THREAD_CS_EXIT(MEMALLOC,); } -void *MPIU_trmalloc(unsigned int a, int lineno, const char fname[]) +void *MPIU_trmalloc(size_t a, int lineno, const char fname[]) { void *retval; MPIU_THREAD_CS_ENTER(MEMALLOC,); @@ -75,7 +75,7 @@ MPIU_THREAD_CS_EXIT(MEMALLOC,); } -void *MPIU_trcalloc(unsigned int nelem, unsigned int elsize, int lineno, const char fname[]) +void *MPIU_trcalloc(size_t nelem, size_t elsize, int lineno, const char fname[]) { void *retval; MPIU_THREAD_CS_ENTER(MEMALLOC,); @@ -84,7 +84,7 @@ return retval; } -void *MPIU_trrealloc(void *p, int size, int lineno, const char fname[]) +void *MPIU_trrealloc(void *p, size_t size, int lineno, const char fname[]) { void *retval; MPIU_THREAD_CS_ENTER(MEMALLOC,); @@ -102,7 +102,7 @@ return retval; } -void MPIU_TrSetMaxMem(int size) +void MPIU_TrSetMaxMem(size_t size) { MPIU_THREAD_CS_ENTER(MEMALLOC,); MPL_TrSetMaxMem(size); Modified: mpich2/trunk/src/util/procmap/local_proc.c =================================================================== --- mpich2/trunk/src/util/procmap/local_proc.c 2012-12-11 04:25:54 UTC (rev 10758) +++ mpich2/trunk/src/util/procmap/local_proc.c 2012-12-11 16:09:42 UTC (rev 10759) @@ -84,6 +84,8 @@ node to the list. */ /* these two will be realloc'ed later to the appropriate size (currently unknown) */ + /* FIXME: realloc doesn't guarantee that the allocated area will be + shrunk - so using realloc is not an appropriate strategy. */ MPIU_CHKPMEM_MALLOC (external_ranks, int *, sizeof(int) * comm->remote_size, mpi_errno, "external_ranks"); MPIU_CHKPMEM_MALLOC (local_ranks, int *, sizeof(int) * comm->remote_size, mpi_errno, "local_ranks");
participants (1)
-
gropp@mcs.anl.gov