From f3e067557d3728c1856f9ac6f5cf3431ba01a6ae Mon Sep 17 00:00:00 2001 From: Moe Jette <jette1@llnl.gov> Date: Fri, 11 Nov 2005 21:48:34 +0000 Subject: [PATCH] Get srun reply agent working as pthread. --- src/srun/pmi.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/srun/pmi.c b/src/srun/pmi.c index 864b47b5da2..2137a38a050 100644 --- a/src/srun/pmi.c +++ b/src/srun/pmi.c @@ -77,7 +77,7 @@ static void _print_kvs(void); * completely independent of this one. */ static void _kvs_xmit_tasks(void) { - struct agent_arg args; + struct agent_arg *args; pthread_attr_t attr; pthread_t agent_id; @@ -85,24 +85,20 @@ static void _kvs_xmit_tasks(void) info("All tasks at barrier, transmit KVS keypairs now"); #endif /* copy the data */ - args.barrier_xmit_ptr = barrier_ptr; - args.barrier_xmit_cnt = barrier_cnt; + args = xmalloc(sizeof(struct agent_arg)); + args->barrier_xmit_ptr = barrier_ptr; + args->barrier_xmit_cnt = barrier_cnt; barrier_ptr = NULL; barrier_resp_cnt = 0; barrier_cnt = 0; - args.kvs_xmit_ptr = _kvs_comm_dup(); - args.kvs_xmit_cnt = kvs_comm_cnt; + args->kvs_xmit_ptr = _kvs_comm_dup(); + args->kvs_xmit_cnt = kvs_comm_cnt; /* Spawn a pthread to transmit it */ slurm_attr_init(&attr); pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); -#if 0 -/* FIXME: signaling problem if pthread */ - if (pthread_create(&agent_id, &attr, _agent, (void *) &args)) + if (pthread_create(&agent_id, &attr, _agent, (void *) args)) fatal("pthread_create"); -#else -_agent((void *) &args); -#endif } static void *_agent(void *x) @@ -162,6 +158,7 @@ info("got reply, rc=%d @ %ld", rc, (long)time(NULL)); xfree(args->kvs_xmit_ptr[i]); } xfree(args->kvs_xmit_ptr); + xfree(args); return NULL; } -- GitLab