1
1

rename data structure for clarifications, remove code in favor of using

aspintf, fix a file naming bug.

This commit was SVN r2199.
Этот коммит содержится в:
Rich Graham 2004-08-18 15:02:21 +00:00
родитель 8ba268c8dd
Коммит 99b3506ef5
4 изменённых файлов: 30 добавлений и 35 удалений

Просмотреть файл

@ -65,7 +65,7 @@ static int mca_common_sm_mmap_open(char* path)
* *
* @param size_ctl_structure size of the control structure at * @param size_ctl_structure size of the control structure at
* the head of the file. The control structure * the head of the file. The control structure
* is assumed to have mca_common_sm_segment_t * is assumed to have mca_common_sm_file_header_t
* as its first segment (IN) * as its first segment (IN)
* *
* @param data_set_alignment alignment of the data segment. this * @param data_set_alignment alignment of the data segment. this
@ -77,16 +77,17 @@ mca_common_sm_mmap_t* mca_common_sm_mmap_init(size_t size, char *file_name,
{ {
int fd,return_code=OMPI_SUCCESS; int fd,return_code=OMPI_SUCCESS;
bool file_previously_opened; bool file_previously_opened;
mca_common_sm_segment_t* seg; mca_common_sm_file_header_t* seg;
mca_common_sm_mmap_t* map; mca_common_sm_mmap_t* map;
struct stat s_stat; struct stat s_stat;
unsigned char *addr; unsigned char *addr;
size_t tmp,mem_offset; size_t tmp,mem_offset;
/* input parameter error checks */ /* input parameter error checks */
if( (size < sizeof(mca_common_sm_segment_t) ) || if( (size < sizeof(mca_common_sm_file_header_t) ) ||
( file_name == NULL ) || ( file_name == NULL ) ||
( size_ctl_structure < sizeof(mca_common_sm_segment_t ) ) || ( size_ctl_structure <
sizeof(mca_common_sm_file_header_t ) ) ||
( data_seg_alignment == 0 ) ) { ( data_seg_alignment == 0 ) ) {
return NULL; return NULL;
} }
@ -142,7 +143,7 @@ mca_common_sm_mmap_t* mca_common_sm_mmap_init(size_t size, char *file_name,
map = OBJ_NEW(mca_common_sm_mmap_t); map = OBJ_NEW(mca_common_sm_mmap_t);
strncpy(map->map_path, file_name, PATH_MAX); strncpy(map->map_path, file_name, PATH_MAX);
/* the first entry in the file is the control strcuture. the first /* the first entry in the file is the control strcuture. the first
entry in the control structure is an mca_common_sm_segment_t entry in the control structure is an mca_common_sm_file_header_t
element */ element */
map->map_seg = seg; map->map_seg = seg;
@ -197,7 +198,7 @@ mca_common_sm_mmap_t* mca_common_sm_mmap_init(size_t size, char *file_name,
void* mca_common_sm_mmap_alloc(size_t* size) void* mca_common_sm_mmap_alloc(size_t* size)
{ {
mca_common_sm_mmap_t* map = mca_common_sm_mmap; mca_common_sm_mmap_t* map = mca_common_sm_mmap;
mca_common_sm_segment_t* seg = map->map_seg; mca_common_sm_file_header_t* seg = map->map_seg;
void* addr; void* addr;
spinlock(&seg->seg_lock); spinlock(&seg->seg_lock);

Просмотреть файл

@ -5,7 +5,7 @@
#include "os/atomic.h" #include "os/atomic.h"
#include "class/ompi_list.h" #include "class/ompi_list.h"
struct mca_common_sm_segment_t { struct mca_common_sm_file_header_t {
/* lock to control atomic access */ /* lock to control atomic access */
ompi_lock_data_t seg_lock; ompi_lock_data_t seg_lock;
/* is the segment ready for use */ /* is the segment ready for use */
@ -15,13 +15,14 @@ struct mca_common_sm_segment_t {
/* total size of the segment */ /* total size of the segment */
size_t seg_size; size_t seg_size;
}; };
typedef struct mca_common_sm_segment_t mca_common_sm_segment_t; typedef struct mca_common_sm_file_header_t mca_common_sm_file_header_t;
struct mca_common_sm_mmap_t { struct mca_common_sm_mmap_t {
/* double link list element */ /* double link list element */
ompi_list_item_t map_item; ompi_list_item_t map_item;
mca_common_sm_segment_t* map_seg; /* pointer to header imbeded in the shared memory file */
mca_common_sm_file_header_t* map_seg;
/* base address of the mmap'ed file */ /* base address of the mmap'ed file */
unsigned char *map_addr; unsigned char *map_addr;
/* base address of data segment */ /* base address of data segment */
@ -46,11 +47,13 @@ OBJ_CLASS_DECLARATION(mca_common_sm_mmap_t);
* *
* @param size_ctl_structure size of the control structure at * @param size_ctl_structure size of the control structure at
* the head of the file. The control structure * the head of the file. The control structure
* is assumed to have mca_common_sm_segment_t * is assumed to have mca_common_sm_file_header_t
* as its first segment (IN) * as its first segment (IN)
* *
* @param data_set_alignment alignment of the data segment. this * @param data_set_alignment alignment of the data segment. this
* follows the control structure (IN) * follows the control structure (IN)
*
* @returnvalue pointer to control structure at head of file.
*/ */
mca_common_sm_mmap_t* mca_common_sm_mmap_init(size_t size, char *file_name, mca_common_sm_mmap_t* mca_common_sm_mmap_init(size_t size, char *file_name,

Просмотреть файл

@ -3,6 +3,8 @@
*/ */
#include <string.h> #include <string.h>
#include <stdlib.h>
#include "util/output.h" #include "util/output.h"
#include "util/if.h" #include "util/if.h"
#include "mca/pml/pml.h" #include "mca/pml/pml.h"
@ -156,31 +158,16 @@ int mca_ptl_sm_add_procs(
* data structure. This will reside in shared memory */ * data structure. This will reside in shared memory */
/* Create backing file */ /* Create backing file */
len=strlen(ompi_process_info.job_session_dir) + /* set file name */
strlen(ompi_system_info.nodename)+ len=asprintf(&(mca_ptl_sm_component.sm_resouce_ctl_file),
/* length of fixed-string name part */ "%s/shared_mem_ptl_module.%s",ompi_process_info.job_session_dir,
23; ompi_system_info.nodename);
memset(&(file_name[0]),0,PATH_MAX); if( 0 > len ) {
if( PATH_MAX <= len ) {
ompi_output(0, "mca_ptl_sm_add_procs: name of backing file too long %ld \n",
len);
return_code=OMPI_ERROR;
goto CLEANUP;
}
mca_ptl_sm_component.sm_resouce_ctl_file= (char *)
malloc(len+1);
if( NULL == mca_ptl_sm_component.sm_resouce_ctl_file ){
return_code=OMPI_ERR_OUT_OF_RESOURCE;
goto CLEANUP; goto CLEANUP;
} }
memset(mca_ptl_sm_component.sm_resouce_ctl_file,0,len+1);
sprintf(mca_ptl_sm_component.sm_resouce_ctl_file,
"%s/shared_mem_ptl_module.%s",
ompi_process_info.job_session_dir,
ompi_system_info.nodename);
size=sizeof(mca_ptl_sm_module_resource_t); size=sizeof(mca_ptl_sm_module_resource_t);
if(NULL == if(NULL ==
(mca_ptl_sm_component.resource_ctl = (mca_ptl_sm_component.mmap_file =
mca_common_sm_mmap_init(size, mca_common_sm_mmap_init(size,
mca_ptl_sm_component.sm_resouce_ctl_file, mca_ptl_sm_component.sm_resouce_ctl_file,
sizeof(mca_ptl_sm_module_resource_t), 8 ))) sizeof(mca_ptl_sm_module_resource_t), 8 )))
@ -196,9 +183,14 @@ int mca_ptl_sm_add_procs(
* make this array growable, but then one would need to uses mutexes * make this array growable, but then one would need to uses mutexes
* for any access to these queues to ensure data consistancy when * for any access to these queues to ensure data consistancy when
* the array is grown */ * the array is grown */
if(0 == ptl_sm->my_smp_rank ) {
mca_ptl_sm_component.mmap_file->map_seg->seg_inited=true;
}
/* Note: Need to make sure that proc 0 initializes control /* Note: Need to make sure that proc 0 initializes control
* structures before any of the other procs can progress */ * structures before any of the other procs can progress */
if( 0 != ptl_sm->my_smp_rank ) {
}
/* Initizlize queue data structures /* Initizlize queue data structures
* - proc with lowest local rank does this * - proc with lowest local rank does this

Просмотреть файл

@ -21,7 +21,7 @@
* Shared Memory resource managment * Shared Memory resource managment
*/ */
struct mca_ptl_sm_module_resource_t { struct mca_ptl_sm_module_resource_t {
mca_common_sm_segment_t segment_header; mca_common_sm_file_header_t segment_header;
}; };
typedef struct mca_ptl_sm_module_resource_t mca_ptl_sm_module_resource_t; typedef struct mca_ptl_sm_module_resource_t mca_ptl_sm_module_resource_t;
extern mca_ptl_sm_module_resource_t mca_ptl_sm_module_resource; extern mca_ptl_sm_module_resource_t mca_ptl_sm_module_resource;
@ -44,9 +44,8 @@ struct mca_ptl_sm_component_t {
ompi_mutex_t sm_lock; ompi_mutex_t sm_lock;
char* sm_resouce_ctl_file; /**< name of shared memory file used char* sm_resouce_ctl_file; /**< name of shared memory file used
to coordinate resource usage */ to coordinate resource usage */
mca_ptl_sm_module_resource_t *resource_ctl; mca_common_sm_mmap_t *mmap_file; /**< description of mmap'ed
/**< shared memory coordination data. file */
Resides in shared memory */
}; };
typedef struct mca_ptl_sm_component_t mca_ptl_sm_component_t; typedef struct mca_ptl_sm_component_t mca_ptl_sm_component_t;
extern mca_ptl_sm_component_t mca_ptl_sm_component; extern mca_ptl_sm_component_t mca_ptl_sm_component;