TCharm: manages a CthThread's creation, load balacing,
[charm.git] / src / libs / ck-libs / tcharm / tcharmc.h
1 /*
2 User-callable C API for TCharm library
3 Orion Sky Lawlor, olawlor@acm.org, 11/20/2001
4 */
5 #ifndef __TCHARM_H
6 #define __TCHARM_H
7
8 #include "pup_c.h"
9
10 #ifdef __cplusplus
11 extern "C" {
12 #endif
13
14
15 /*User callbacks: you define these functions*/
16 void TCharmUserNodeSetup(void);
17 void TCharmUserSetup(void);
18
19
20 /*Routines you can call from UserSetup:*/
21
22 /*Set the size of the thread stack*/
23 void TCharmSetStackSize(int newStackSize);
24
25 /*Create a new array of threads, which will be bound to by subsequent libraries*/
26 typedef void (*TCharmThreadStartFn)(void);
27 void TCharmCreate(int nThreads,TCharmThreadStartFn threadFn);
28
29 /*As above, but pass along (arbitrary) data to thread*/
30 typedef void (*TCharmThreadDataStartFn)(void *threadData);
31 void TCharmCreateData(int nThreads,TCharmThreadDataStartFn threadFn,
32                   void *threadData,int threadDataLen);
33
34 /*Get the unconsumed command-line arguments (C only; no Fortran)*/
35 char **TCharmArgv(void);
36 int TCharmArgc(void);
37
38 /*Get the number of chunks we expect based on the command line*/
39 int TCharmGetNumChunks(void);
40
41 /*Implementation routines*/
42 void TCharmInDefaultSetup(void);
43
44
45 /*Routines you can call from a thread*/
46 int TCharmElement(void);
47 int TCharmNumElements(void);
48
49 typedef void (*TCharmPupFn)(pup_er p,void *data);
50 int TCharmRegister(void *data,TCharmPupFn pfn);
51 void *TCharmGetUserdata(int id);
52 void TCharmMigrate(void);
53 void TCharmDone(void);
54
55 #ifdef __cplusplus
56 };
57 #endif
58 #endif /*def(thisHeader)*/
59