implemented several unresolved functions
This commit was SVN r578.
Этот коммит содержится в:
родитель
f6ab0af1db
Коммит
076c43a194
@ -165,6 +165,30 @@ int lam_ifnametoaddr(const char* if_name, struct sockaddr* addr, int length)
|
|||||||
return LAM_ERROR;
|
return LAM_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Look for interface by name and returns its
|
||||||
|
* corresponding kernel index.
|
||||||
|
*/
|
||||||
|
|
||||||
|
int lam_ifnametoindex(const char* if_name)
|
||||||
|
{
|
||||||
|
lam_if_t* intf;
|
||||||
|
int rc = lam_ifinit();
|
||||||
|
if(rc != LAM_SUCCESS)
|
||||||
|
return rc;
|
||||||
|
|
||||||
|
for(intf = (lam_if_t*)lam_list_get_first(&lam_if_list);
|
||||||
|
intf != (lam_if_t*)lam_list_get_end(&lam_if_list);
|
||||||
|
intf = (lam_if_t*)lam_list_get_next(intf)) {
|
||||||
|
if(strcmp(intf->if_name, if_name) == 0) {
|
||||||
|
return intf->if_index;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Attempt to resolve the adddress as either a dotted decimal formated
|
* Attempt to resolve the adddress as either a dotted decimal formated
|
||||||
* string or a hostname and lookup corresponding interface.
|
* string or a hostname and lookup corresponding interface.
|
||||||
|
@ -25,17 +25,9 @@ mca_ptl_tcp_t mca_ptl_tcp = {
|
|||||||
0, /* ptl_frag_max_size */
|
0, /* ptl_frag_max_size */
|
||||||
mca_ptl_tcp_add_proc,
|
mca_ptl_tcp_add_proc,
|
||||||
mca_ptl_tcp_del_proc,
|
mca_ptl_tcp_del_proc,
|
||||||
#if TIM_HASNT_IMPLEMENTED_THIS_YET
|
|
||||||
mca_ptl_tcp_fini,
|
mca_ptl_tcp_fini,
|
||||||
#else
|
|
||||||
NULL,
|
|
||||||
#endif
|
|
||||||
mca_ptl_tcp_send,
|
mca_ptl_tcp_send,
|
||||||
#if TIM_HASNT_IMPLEMENTED_THIS_YET
|
|
||||||
mca_ptl_tcp_request_alloc
|
mca_ptl_tcp_request_alloc
|
||||||
#else
|
|
||||||
NULL
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -103,3 +95,16 @@ int mca_ptl_tcp_del_proc(struct mca_ptl_t* ptl, struct lam_proc_t *proc, struct
|
|||||||
return LAM_SUCCESS;
|
return LAM_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int mca_ptl_tcp_fini(struct mca_ptl_t* ptl)
|
||||||
|
{
|
||||||
|
|
||||||
|
return LAM_SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
int mca_ptl_tcp_request_alloc(struct mca_ptl_t* ptl, struct mca_ptl_base_send_request_t** request)
|
||||||
|
{
|
||||||
|
int rc;
|
||||||
|
*request = (struct mca_ptl_base_send_request_t*)lam_free_list_get(&mca_ptl_tcp_module.tcp_send_requests, &rc);
|
||||||
|
return rc;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -157,14 +157,12 @@ static int mca_ptl_tcp_module_create_instances(void)
|
|||||||
argv = include = lam_argv_split(mca_ptl_tcp_module.tcp_if_include,'\'');
|
argv = include = lam_argv_split(mca_ptl_tcp_module.tcp_if_include,'\'');
|
||||||
while(argv && *argv) {
|
while(argv && *argv) {
|
||||||
char* if_name = *argv;
|
char* if_name = *argv;
|
||||||
#if TIM_HASNT_IMPLEMENTED_THIS_YET
|
|
||||||
int if_index = lam_ifnametoindex(if_name);
|
int if_index = lam_ifnametoindex(if_name);
|
||||||
if(if_index < 0) {
|
if(if_index < 0) {
|
||||||
lam_output(0,"mca_ptl_tcp_module_init: invalid interface \"%s\"", if_name);
|
lam_output(0,"mca_ptl_tcp_module_init: invalid interface \"%s\"", if_name);
|
||||||
} else {
|
} else {
|
||||||
mca_ptl_tcp_create(if_index);
|
mca_ptl_tcp_create(if_index);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
argv++;
|
argv++;
|
||||||
}
|
}
|
||||||
lam_argv_free(include);
|
lam_argv_free(include);
|
||||||
|
@ -121,11 +121,7 @@ int mca_ptl_tcp_peer_send(mca_ptl_peer_t* ptl_peer, mca_ptl_tcp_send_frag_t* fra
|
|||||||
bool mca_ptl_tcp_peer_accept(mca_ptl_peer_t* ptl_peer, struct sockaddr_in* addr, int sd)
|
bool mca_ptl_tcp_peer_accept(mca_ptl_peer_t* ptl_peer, struct sockaddr_in* addr, int sd)
|
||||||
{
|
{
|
||||||
mca_ptl_tcp_addr_t* ptl_addr;
|
mca_ptl_tcp_addr_t* ptl_addr;
|
||||||
#if TIM_HASNT_IMPLEMENTED_THIS_YET
|
|
||||||
mca_ptl_tcp_proc_t* this_proc = mca_ptl_tcp_proc_local();
|
mca_ptl_tcp_proc_t* this_proc = mca_ptl_tcp_proc_local();
|
||||||
#else
|
|
||||||
mca_ptl_tcp_proc_t* this_proc = NULL;
|
|
||||||
#endif
|
|
||||||
THREAD_LOCK(&ptl_peer->peer_lock);
|
THREAD_LOCK(&ptl_peer->peer_lock);
|
||||||
if((ptl_addr = ptl_peer->peer_addr) != NULL &&
|
if((ptl_addr = ptl_peer->peer_addr) != NULL &&
|
||||||
ptl_addr->addr_inet.s_addr == addr->sin_addr.s_addr) {
|
ptl_addr->addr_inet.s_addr == addr->sin_addr.s_addr) {
|
||||||
@ -303,11 +299,7 @@ static int mca_ptl_tcp_peer_recv_connect_ack(mca_ptl_peer_t* ptl_peer)
|
|||||||
static int mca_ptl_tcp_peer_send_connect_ack(mca_ptl_peer_t* ptl_peer)
|
static int mca_ptl_tcp_peer_send_connect_ack(mca_ptl_peer_t* ptl_peer)
|
||||||
{
|
{
|
||||||
/* send process identifier to remote peer */
|
/* send process identifier to remote peer */
|
||||||
#if TIM_HASNT_IMPLEMENTED_THIS_YET
|
|
||||||
mca_ptl_tcp_proc_t* ptl_proc = mca_ptl_tcp_proc_local();
|
mca_ptl_tcp_proc_t* ptl_proc = mca_ptl_tcp_proc_local();
|
||||||
#else
|
|
||||||
mca_ptl_tcp_proc_t* ptl_proc = NULL;
|
|
||||||
#endif
|
|
||||||
uint32_t size_n = htonl(ptl_proc->proc_guid_size);
|
uint32_t size_n = htonl(ptl_proc->proc_guid_size);
|
||||||
if(mca_ptl_tcp_peer_send_blocking(ptl_peer, &size_n, sizeof(size_n)) != sizeof(size_n) ||
|
if(mca_ptl_tcp_peer_send_blocking(ptl_peer, &size_n, sizeof(size_n)) != sizeof(size_n) ||
|
||||||
mca_ptl_tcp_peer_send_blocking(ptl_peer, ptl_proc->proc_guid, ptl_proc->proc_guid_size) !=
|
mca_ptl_tcp_peer_send_blocking(ptl_peer, ptl_proc->proc_guid, ptl_proc->proc_guid_size) !=
|
||||||
|
@ -18,8 +18,8 @@ lam_class_info_t mca_ptl_tcp_proc_cls = {
|
|||||||
|
|
||||||
static lam_list_t mca_ptl_tcp_procs;
|
static lam_list_t mca_ptl_tcp_procs;
|
||||||
static lam_mutex_t mca_ptl_tcp_proc_mutex;
|
static lam_mutex_t mca_ptl_tcp_proc_mutex;
|
||||||
static mca_ptl_tcp_proc_t* mca_ptl_tcp_proc;
|
|
||||||
static mca_ptl_tcp_proc_t* mca_ptl_tcp_proc_lookup_lam(lam_proc_t* lam_proc);
|
static mca_ptl_tcp_proc_t* mca_ptl_tcp_proc_lookup_lam(lam_proc_t* lam_proc);
|
||||||
|
mca_ptl_tcp_proc_t* mca_ptl_tcp_proc_self = 0;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -115,10 +115,8 @@ mca_ptl_tcp_proc_t* mca_ptl_tcp_proc_create(lam_proc_t* lam_proc)
|
|||||||
OBJ_RELEASE(ptl_proc);
|
OBJ_RELEASE(ptl_proc);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
#if TIM_HASNT_IMPLEMENTED_THIS_YET
|
if(NULL == mca_ptl_tcp_proc_self && lam_proc == lam_proc_local())
|
||||||
if(lam_proc == lam_proc_local())
|
mca_ptl_tcp_proc_self = ptl_proc;
|
||||||
mca_ptl_tcp_proc = ptl_proc;
|
|
||||||
#endif
|
|
||||||
return ptl_proc;
|
return ptl_proc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -40,7 +40,14 @@ void mca_ptl_tcp_proc_destroy(mca_ptl_tcp_proc_t*);
|
|||||||
|
|
||||||
mca_ptl_tcp_proc_t* mca_ptl_tcp_proc_create(lam_proc_t* lam_proc);
|
mca_ptl_tcp_proc_t* mca_ptl_tcp_proc_create(lam_proc_t* lam_proc);
|
||||||
mca_ptl_tcp_proc_t* mca_ptl_tcp_proc_lookup(void *guid, size_t size);
|
mca_ptl_tcp_proc_t* mca_ptl_tcp_proc_lookup(void *guid, size_t size);
|
||||||
mca_ptl_tcp_proc_t* mca_ptl_tcp_proc_local(void);
|
|
||||||
|
static inline mca_ptl_tcp_proc_t* mca_ptl_tcp_proc_local(void)
|
||||||
|
{
|
||||||
|
extern mca_ptl_tcp_proc_t* mca_ptl_tcp_proc_self;
|
||||||
|
if(NULL == mca_ptl_tcp_proc_self)
|
||||||
|
mca_ptl_tcp_proc_self = mca_ptl_tcp_proc_create(lam_proc_local());
|
||||||
|
return mca_ptl_tcp_proc_self;
|
||||||
|
}
|
||||||
|
|
||||||
int mca_ptl_tcp_proc_insert(mca_ptl_tcp_proc_t*, mca_ptl_peer_t*);
|
int mca_ptl_tcp_proc_insert(mca_ptl_tcp_proc_t*, mca_ptl_peer_t*);
|
||||||
int mca_ptl_tcp_proc_remove(mca_ptl_tcp_proc_t*, mca_ptl_peer_t*);
|
int mca_ptl_tcp_proc_remove(mca_ptl_tcp_proc_t*, mca_ptl_peer_t*);
|
||||||
|
@ -12,6 +12,7 @@ noinst_LTLIBRARIES = libmpi_convenience.la
|
|||||||
sources = \
|
sources = \
|
||||||
datatype/libmpi_datatype.la \
|
datatype/libmpi_datatype.la \
|
||||||
interface/libmpi_interface.la \
|
interface/libmpi_interface.la \
|
||||||
|
proc/libmpi_proc.la \
|
||||||
request/libmpi_request.la \
|
request/libmpi_request.la \
|
||||||
runtime/libmpi_runtime.la
|
runtime/libmpi_runtime.la
|
||||||
|
|
||||||
|
@ -5,11 +5,17 @@
|
|||||||
|
|
||||||
include $(top_srcdir)/config/Makefile.options
|
include $(top_srcdir)/config/Makefile.options
|
||||||
|
|
||||||
|
noinst_LTLIBRARIES = libmpi_proc.la
|
||||||
|
|
||||||
# Source code files
|
# Source code files
|
||||||
|
|
||||||
headers = \
|
headers = \
|
||||||
proc.h
|
proc.h
|
||||||
|
|
||||||
|
libmpi_proc_la_SOURCES = \
|
||||||
|
$(headers) \
|
||||||
|
proc.c
|
||||||
|
|
||||||
# Conditionally install the header files
|
# Conditionally install the header files
|
||||||
|
|
||||||
if WANT_INSTALL_HEADERS
|
if WANT_INSTALL_HEADERS
|
||||||
|
@ -1,4 +1,10 @@
|
|||||||
#include "proc.h"
|
#include "lam/threads/mutex.h"
|
||||||
|
#include "mpi/proc/proc.h"
|
||||||
|
|
||||||
|
|
||||||
|
static lam_list_t lam_proc_list;
|
||||||
|
static lam_mutex_t lam_proc_lock;
|
||||||
|
lam_proc_t* lam_proc_self = 0;
|
||||||
|
|
||||||
|
|
||||||
lam_class_info_t lam_proc_cls = {
|
lam_class_info_t lam_proc_cls = {
|
||||||
@ -8,17 +14,30 @@ lam_class_info_t lam_proc_cls = {
|
|||||||
(class_destroy_t)lam_proc_destroy
|
(class_destroy_t)lam_proc_destroy
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
void lam_proc_init(lam_proc_t* proc)
|
void lam_proc_init(lam_proc_t* proc)
|
||||||
{
|
{
|
||||||
|
static int init = 0;
|
||||||
|
if(init++ == 0) {
|
||||||
|
lam_list_init(&lam_proc_list);
|
||||||
|
lam_mutex_init(&lam_proc_lock);
|
||||||
|
}
|
||||||
|
|
||||||
SUPER_INIT(proc, &lam_list_cls);
|
SUPER_INIT(proc, &lam_list_cls);
|
||||||
proc->proc_job_id = 0;
|
proc->proc_job = 0;
|
||||||
proc->proc_vpid = 0;
|
proc->proc_vpid = 0;
|
||||||
proc->proc_pml = 0;
|
proc->proc_pml = 0;
|
||||||
|
|
||||||
|
THREAD_LOCK(&lam_proc_lock);
|
||||||
|
lam_list_append(&lam_proc_list, (lam_list_item_t*)proc);
|
||||||
|
THREAD_UNLOCK(&lam_proc_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void lam_proc_destroy(lam_proc_t* proc)
|
void lam_proc_destroy(lam_proc_t* proc)
|
||||||
{
|
{
|
||||||
|
THREAD_LOCK(&lam_proc_lock);
|
||||||
|
lam_list_remove_item(&lam_proc_list, (lam_list_item_t*)proc);
|
||||||
|
THREAD_UNLOCK(&lam_proc_lock);
|
||||||
SUPER_DESTROY(proc, &lam_list_cls);
|
SUPER_DESTROY(proc, &lam_list_cls);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,7 +10,6 @@
|
|||||||
|
|
||||||
|
|
||||||
extern lam_class_info_t lam_proc_cls;
|
extern lam_class_info_t lam_proc_cls;
|
||||||
extern lam_list_t lam_procs;
|
|
||||||
|
|
||||||
|
|
||||||
struct lam_proc_t {
|
struct lam_proc_t {
|
||||||
@ -33,7 +32,12 @@ typedef struct lam_proc_t lam_proc_t;
|
|||||||
|
|
||||||
void lam_proc_init(lam_proc_t*);
|
void lam_proc_init(lam_proc_t*);
|
||||||
void lam_proc_destroy(lam_proc_t*);
|
void lam_proc_destroy(lam_proc_t*);
|
||||||
lam_proc_t* lam_proc_local(void);
|
|
||||||
|
static inline lam_proc_t* lam_proc_local(void)
|
||||||
|
{
|
||||||
|
extern lam_proc_t* lam_proc_self;
|
||||||
|
return lam_proc_self;
|
||||||
|
}
|
||||||
|
|
||||||
#endif /* LAM_PROC */
|
#endif /* LAM_PROC */
|
||||||
|
|
||||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user