Fixed various mapped memory errors.
git-svn-id: http://svn.zoneminder.com/svn/zm/trunk@2624 e3e1d417-86f3-4887-817a-d78f3d33393f
This commit is contained in:
parent
dfb9331c62
commit
a79594387c
|
@ -80,7 +80,7 @@ bool Monitor::MonitorLink::connect()
|
||||||
map_fd = open( mem_file, O_RDWR, (mode_t)0600 );
|
map_fd = open( mem_file, O_RDWR, (mode_t)0600 );
|
||||||
if ( map_fd < 0 )
|
if ( map_fd < 0 )
|
||||||
{
|
{
|
||||||
Debug( 3, ( "Can't open linked memory map file %s: %s", mem_file, strerror(errno)));
|
Debug( 3, "Can't open linked memory map file %s: %s", mem_file, strerror(errno) );
|
||||||
disconnect();
|
disconnect();
|
||||||
return( false );
|
return( false );
|
||||||
}
|
}
|
||||||
|
@ -88,20 +88,20 @@ bool Monitor::MonitorLink::connect()
|
||||||
struct stat map_stat;
|
struct stat map_stat;
|
||||||
if ( fstat( map_fd, &map_stat ) < 0 )
|
if ( fstat( map_fd, &map_stat ) < 0 )
|
||||||
{
|
{
|
||||||
Error(( "Can't stat linked memory map file %s: %s", mem_file, strerror(errno)));
|
Error( "Can't stat linked memory map file %s: %s", mem_file, strerror(errno) );
|
||||||
disconnect();
|
disconnect();
|
||||||
return( false );
|
return( false );
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( map_stat.st_size == 0 )
|
if ( map_stat.st_size == 0 )
|
||||||
{
|
{
|
||||||
Error(( "Linked memory map file %s is empty: %s", mem_file, strerror(errno)));
|
Error( "Linked memory map file %s is empty: %s", mem_file, strerror(errno) );
|
||||||
disconnect();
|
disconnect();
|
||||||
return( false );
|
return( false );
|
||||||
}
|
}
|
||||||
else if ( map_stat.st_size < mem_size )
|
else if ( map_stat.st_size < mem_size )
|
||||||
{
|
{
|
||||||
Error(( "Got unexpected memory map file size %d, expected %d", map_stat.st_size, mem_size ));
|
Error( "Got unexpected memory map file size %ld, expected %d", map_stat.st_size, mem_size );
|
||||||
disconnect();
|
disconnect();
|
||||||
return( false );
|
return( false );
|
||||||
}
|
}
|
||||||
|
@ -109,7 +109,7 @@ bool Monitor::MonitorLink::connect()
|
||||||
mem_ptr = (unsigned char *)mmap( NULL, mem_size, PROT_READ|PROT_WRITE, MAP_SHARED, map_fd, 0 );
|
mem_ptr = (unsigned char *)mmap( NULL, mem_size, PROT_READ|PROT_WRITE, MAP_SHARED, map_fd, 0 );
|
||||||
if ( mem_ptr == MAP_FAILED )
|
if ( mem_ptr == MAP_FAILED )
|
||||||
{
|
{
|
||||||
Error(( "Can't map file %s (%d bytes) to memory: %s", mem_file, mem_size, strerror(errno)));
|
Error( "Can't map file %s (%d bytes) to memory: %s", mem_file, mem_size, strerror(errno) );
|
||||||
disconnect();
|
disconnect();
|
||||||
return( false );
|
return( false );
|
||||||
}
|
}
|
||||||
|
@ -336,30 +336,30 @@ Monitor::Monitor(
|
||||||
snprintf( mem_file, sizeof(mem_file), "%s/.zm.mmap.%d", config.path_map, id );
|
snprintf( mem_file, sizeof(mem_file), "%s/.zm.mmap.%d", config.path_map, id );
|
||||||
map_fd = open( mem_file, O_RDWR|O_CREAT, (mode_t)0600 );
|
map_fd = open( mem_file, O_RDWR|O_CREAT, (mode_t)0600 );
|
||||||
if ( map_fd < 0 )
|
if ( map_fd < 0 )
|
||||||
Fatal(( "Can't open memory map file %s, probably not enough space free: %s", mem_file, strerror(errno)));
|
Fatal( "Can't open memory map file %s, probably not enough space free: %s", mem_file, strerror(errno) );
|
||||||
struct stat map_stat;
|
struct stat map_stat;
|
||||||
if ( fstat( map_fd, &map_stat ) < 0 )
|
if ( fstat( map_fd, &map_stat ) < 0 )
|
||||||
Fatal(( "Can't stat memory map file %s: %s", mem_file, strerror(errno)));
|
Fatal( "Can't stat memory map file %s: %s", mem_file, strerror(errno) );
|
||||||
if ( map_stat.st_size == 0 )
|
if ( map_stat.st_size == 0 )
|
||||||
{
|
{
|
||||||
// Allocate the size
|
// Allocate the size
|
||||||
if ( ftruncate( map_fd, mem_size ) < 0 )
|
if ( ftruncate( map_fd, mem_size ) < 0 )
|
||||||
Fatal(( "Can't extend memory map file %s to %d bytes: %s", mem_file, mem_size, strerror(errno)));
|
Fatal( "Can't extend memory map file %s to %d bytes: %s", mem_file, mem_size, strerror(errno) );
|
||||||
}
|
}
|
||||||
else if ( map_stat.st_size != mem_size )
|
else if ( map_stat.st_size != mem_size )
|
||||||
{
|
{
|
||||||
Error(( "Got unexpected memory map file size %d, expected %d", map_stat.st_size, mem_size ));
|
Error( "Got unexpected memory map file size %ld, expected %d", map_stat.st_size, mem_size );
|
||||||
}
|
}
|
||||||
|
|
||||||
mem_ptr = (unsigned char *)mmap( NULL, mem_size, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_LOCKED, map_fd, 0 );
|
mem_ptr = (unsigned char *)mmap( NULL, mem_size, PROT_READ|PROT_WRITE, MAP_SHARED|MAP_LOCKED, map_fd, 0 );
|
||||||
if ( mem_ptr == MAP_FAILED )
|
if ( mem_ptr == MAP_FAILED )
|
||||||
if ( errno == EAGAIN )
|
if ( errno == EAGAIN )
|
||||||
{
|
{
|
||||||
Debug( 1, ( "Unable to map file %s (%d bytes) to locked memory, trying unlocked", mem_file, mem_size, strerror(errno), errno ));
|
Debug( 1, "Unable to map file %s (%d bytes) to locked memory, trying unlocked", mem_file, mem_size );
|
||||||
mem_ptr = (unsigned char *)mmap( NULL, mem_size, PROT_READ|PROT_WRITE, MAP_SHARED, map_fd, 0 );
|
mem_ptr = (unsigned char *)mmap( NULL, mem_size, PROT_READ|PROT_WRITE, MAP_SHARED, map_fd, 0 );
|
||||||
}
|
}
|
||||||
if ( mem_ptr == MAP_FAILED )
|
if ( mem_ptr == MAP_FAILED )
|
||||||
Fatal(( "Can't map file %s (%d bytes) to memory: %s(%d)", mem_file, mem_size, strerror(errno), errno ));
|
Fatal( "Can't map file %s (%d bytes) to memory: %s(%d)", mem_file, mem_size, strerror(errno), errno );
|
||||||
#else // ZM_MEM_MAPPED
|
#else // ZM_MEM_MAPPED
|
||||||
shm_id = shmget( (config.shm_key&0xffff0000)|id, mem_size, IPC_CREAT|0700 );
|
shm_id = shmget( (config.shm_key&0xffff0000)|id, mem_size, IPC_CREAT|0700 );
|
||||||
if ( shm_id < 0 )
|
if ( shm_id < 0 )
|
||||||
|
|
Loading…
Reference in New Issue