OpenMPI
0.1.1
Main Page
Related Pages
Modules
Data Structures
Files
File List
Globals
thread-st.h
1
/*
2
* $Id:$
3
* Solaris version
4
* by Wolfram Gloger 2004
5
*/
6
7
#include <
thread.h
>
8
#include <stdio.h>
9
10
#ifndef STACKSIZE
11
#define STACKSIZE 32768
12
#endif
13
14
struct
thread_st
{
15
char
*sp;
/* stack pointer, can be 0 */
16
void (*func)(
struct
thread_st
* st);
/* must be set by user */
17
thread_id id;
18
int
flags;
19
struct
user_data
u;
20
};
21
22
static
void
23
thread_init(
void
)
24
{
25
printf(
"Using Solaris threads.\n"
);
26
}
27
28
static
void
*
29
thread_wrapper(
void
*ptr)
30
{
31
struct
thread_st
*st = (
struct
thread_st
*)ptr;
32
33
/*printf("begin %p\n", st->sp);*/
34
st->func(st);
35
/*printf("end %p\n", st->sp);*/
36
return
NULL;
37
}
38
39
/* Create a thread. */
40
static
int
41
thread_create(
struct
thread_st
*st)
42
{
43
st->flags = 0;
44
if
(!st->sp)
45
st->sp = malloc(STACKSIZE);
46
if
(!st->sp)
return
-1;
47
thr_create(st->sp, STACKSIZE, thread_wrapper, st, THR_NEW_LWP, &st->id);
48
return
0;
49
}
50
51
/* Wait for one of several subthreads to finish. */
52
static
void
53
wait_for_thread(
struct
thread_st
st[],
int
n_thr,
54
int
(*end_thr)(
struct
thread_st
*))
55
{
56
int
i;
57
thread_t id;
58
59
thr_join(0, &
id
, NULL);
60
for
(i=0; i<n_thr; i++)
61
if
(
id
== st[i].
id
) {
62
if
(end_thr)
63
end_thr(&st[i]);
64
break
;
65
}
66
}
67
68
/*
69
* Local variables:
70
* tab-width: 4
71
* End:
72
*/
thread_st
Definition:
thread-st.h:9
thread.h
Functions for multi-threaded applications using Libevent.
user_data
Definition:
t-test1.c:28
opal
mca
memory
linux
sysdeps
solaris
thread-st.h
Generated on Wed Dec 24 2014 12:05:29 for OpenMPI by
1.8.8