PFUNC  1.0
Defines | Typedefs | Functions | Variables
pfunc/pfunc.h File Reference
#include <pfunc/pfunc_common.h>
#include "pfunc_atomics.h"
#include <pfunc/generator.hpp>

Go to the source code of this file.

Defines

#define PFUNC_GEN_C_TYPES(sched)
#define PFUNC_GEN_ATTR_INITCLEAR_DECLS(sched)
#define PFUNC_GEN_ATTR_SET_DECLS(sched)
#define PFUNC_GEN_ATTR_GET_DECLS(sched)
#define PFUNC_GEN_ATTR_DECLS(sched)
#define PFUNC_GEN_GROUP_INITCLEAR_DECLS(sched)
#define PFUNC_GEN_GROUP_SET_DECLS(sched)
#define PFUNC_GEN_GROUP_GET_DECLS(sched)
#define PFUNC_GEN_GROUP_DECLS(sched)
#define PFUNC_GEN_TASK_INITCLEAR_DECLS(sched)
#define PFUNC_GEN_TASK_DECLS(sched)   PFUNC_GEN_TASK_INITCLEAR_DECLS(sched)
#define PFUNC_GEN_TASKMGR_INITCLEAR_DECLS(sched)
#define PFUNC_GEN_TASKMGR_SET_AND_GET_MAX_ATTEMPTS_DECLS(sched)
#define PFUNC_GEN_TASKMGR_DECLS(sched)
#define PFUNC_GEN_WORK_TYPES_DECLS(sched)
#define PFUNC_GEN_TESTS_AND_WAITS_DECLS(sched)
#define PFUNC_GEN_RUN_DECLS(sched)
#define PFUNC_GEN_RANK_AND_SIZE_DECLS(sched)
#define PFUNC_GEN_GLOBAL_TASKMGR_INIT_CLEAR(sched)
#define PFUNC_GEN_TASKMGR_GLOBAL_SET_AND_GET_MAX_ATTEMPTS_DECLS(sched)
#define PFUNC_GEN_GLOBAL_TASKMGR_DECLS(sched)
#define PFUNC_GEN_GLOBAL_TESTS_AND_WAITS_DECLS(sched)
#define PFUNC_GEN_GLOBAL_RUN_DECLS(sched)
#define PFUNC_GEN_GLOBAL_RANK_AND_SIZE_DECLS(sched)
#define PFUNC_GEN_ALL_TYPES_DECLS(sched)

Typedefs

typedef void(* pfunc_c_work_func_t )(void *)
typedef int pfunc_attr_priority_t
typedef unsigned int pfunc_attr_qnum_t
typedef unsigned int pfunc_attr_num_waiters_t
typedef unsigned int pfunc_attr_nested_t
typedef unsigned int pfunc_attr_grouped_t
typedef unsigned int pfunc_attr_level_t
typedef unsigned int pfunc_group_size_t
typedef unsigned int pfunc_group_id_t
typedef unsigned int pfunc_group_barrier_t

Functions

int pfunc_pack (char **, const char *format,...)
int pfunc_unpack (char *, const char *format,...)

Variables

pfunc_cilk_taskmgr_t pfunc_cilk_global_tmanager
pfunc_fifo_taskmgr_t pfunc_fifo_global_tmanager
pfunc_lifo_taskmgr_t pfunc_lifo_global_tmanager
pfunc_prio_taskmgr_t pfunc_prio_global_tmanager

Define Documentation

#define PFUNC_GEN_ALL_TYPES_DECLS (   sched)
Value:
PFUNC_GEN_C_TYPES(sched) \
  PFUNC_GEN_ATTR_DECLS(sched) \
  PFUNC_GEN_GROUP_DECLS(sched) \
  PFUNC_GEN_TASK_DECLS(sched) \
  PFUNC_GEN_TASKMGR_DECLS(sched) \
  PFUNC_GEN_WORK_TYPES_DECLS(sched) \
  PFUNC_GEN_TESTS_AND_WAITS_DECLS(sched) \
  PFUNC_GEN_RUN_DECLS(sched) \
  PFUNC_GEN_RANK_AND_SIZE_DECLS(sched) \
  PFUNC_GEN_GLOBAL_TASKMGR_DECLS(sched) \
  PFUNC_GEN_GLOBAL_TESTS_AND_WAITS_DECLS(sched) \
  PFUNC_GEN_GLOBAL_RUN_DECLS(sched) \
  PFUNC_GEN_GLOBAL_RANK_AND_SIZE_DECLS(sched)
#define PFUNC_GEN_ATTR_DECLS (   sched)
Value:
PFUNC_GEN_ATTR_INITCLEAR_DECLS(sched)\
  PFUNC_GEN_ATTR_SET_DECLS(sched) \
  PFUNC_GEN_ATTR_GET_DECLS(sched)
#define PFUNC_GEN_ATTR_GET_DECLS (   sched)
Value:
int pfunc_##sched##_attr_priority_get \
    (pfunc_##sched##_attr_t, pfunc_attr_priority_t*);\
int pfunc_##sched##_attr_qnum_get \
    (pfunc_##sched##_attr_t, pfunc_attr_qnum_t*);\
int pfunc_##sched##_attr_num_waiters_get \
    (pfunc_##sched##_attr_t, pfunc_attr_num_waiters_t*);\
int pfunc_##sched##_attr_nested_get \
    (pfunc_##sched##_attr_t, pfunc_attr_nested_t*);\
int pfunc_##sched##_attr_grouped_get \
    (pfunc_##sched##_attr_t, pfunc_attr_grouped_t*); \
int pfunc_##sched##_attr_level_get \
    (pfunc_##sched##_attr_t, pfunc_attr_level_t*);
#define PFUNC_GEN_ATTR_INITCLEAR_DECLS (   sched)
Value:
int pfunc_##sched##_attr_init (pfunc_##sched##_attr_t*); \
int pfunc_##sched##_attr_clear (pfunc_##sched##_attr_t*); \
#define PFUNC_GEN_ATTR_SET_DECLS (   sched)
Value:
int pfunc_##sched##_attr_priority_set \
    (pfunc_##sched##_attr_t, pfunc_attr_priority_t);\
int pfunc_##sched##_attr_qnum_set \
    (pfunc_##sched##_attr_t, pfunc_attr_qnum_t);\
int pfunc_##sched##_attr_num_waiters_set \
    (pfunc_##sched##_attr_t, pfunc_attr_num_waiters_t);\
int pfunc_##sched##_attr_nested_set \
    (pfunc_##sched##_attr_t, pfunc_attr_nested_t);\
int pfunc_##sched##_attr_grouped_set \
    (pfunc_##sched##_attr_t, pfunc_attr_grouped_t);\
int pfunc_##sched##_attr_level_set \
    (pfunc_##sched##_attr_t, pfunc_attr_level_t);
#define PFUNC_GEN_C_TYPES (   sched)
Value:
struct pfunc_##sched##_dummy_attr_t; \
typedef struct pfunc_##sched##_dummy_attr_t* pfunc_##sched##_attr_t; \
struct pfunc_##sched##_dummy_task_t; \
typedef struct pfunc_##sched##_dummy_task_t* pfunc_##sched##_task_t; \
struct pfunc_##sched##_dummy_taskmgr_t; \
typedef struct pfunc_##sched##_dummy_taskmgr_t* pfunc_##sched##_taskmgr_t; \
struct pfunc_##sched##_dummy_group_t; \
typedef struct pfunc_##sched##_dummy_group_t* pfunc_##sched##_group_t; \
Value:
int pfunc_##sched##_thread_id_gbl (unsigned int*); \
int pfunc_##sched##_group_rank_gbl (unsigned int*); \
int pfunc_##sched##_group_size_gbl (unsigned int*); \
int pfunc_##sched##_barrier_gbl ();
#define PFUNC_GEN_GLOBAL_RUN_DECLS (   sched)
Value:
int pfunc_##sched##_spawn_c_gbl (pfunc_##sched##_task_t, \
                                 pfunc_##sched##_attr_t, \
                                 pfunc_##sched##_group_t, \
                                 pfunc_c_work_func_t, \
                                 void*); \
int pfunc_##sched##_spawn_cxx_gbl (pfunc_##sched##_task_t, \
                                   pfunc_##sched##_attr_t, \
                                   pfunc_##sched##_group_t, \
                                   pfunc_##sched##_work_t);
#define PFUNC_GEN_GLOBAL_TASKMGR_DECLS (   sched)
Value:
PFUNC_GEN_GLOBAL_TASKMGR_INIT_CLEAR(sched)  \
        PFUNC_GEN_TASKMGR_GLOBAL_SET_AND_GET_MAX_ATTEMPTS_DECLS(sched)
Value:
int pfunc_##sched##_init (pfunc_##sched##_taskmgr_t*); \
int pfunc_##sched##_clear ();
Value:
int pfunc_##sched##_wait_gbl (pfunc_##sched##_task_t); \
int pfunc_##sched##_wait_all_gbl (pfunc_##sched##_task_t*, int); \
int pfunc_##sched##_wait_any_gbl (pfunc_##sched##_task_t*, int, int*); \
int pfunc_##sched##_test_gbl (pfunc_##sched##_task_t); \
int pfunc_##sched##_test_all_gbl (pfunc_##sched##_task_t*, int, int*); \
#define PFUNC_GEN_GROUP_DECLS (   sched)
Value:
PFUNC_GEN_GROUP_INITCLEAR_DECLS(sched)\
  PFUNC_GEN_GROUP_SET_DECLS(sched) \
  PFUNC_GEN_GROUP_GET_DECLS(sched)
#define PFUNC_GEN_GROUP_GET_DECLS (   sched)
Value:
int pfunc_##sched##_group_size_get \
    (pfunc_##sched##_group_t, pfunc_group_size_t*);\
int pfunc_##sched##_group_id_get \
    (pfunc_##sched##_group_t, pfunc_group_id_t*);\
int pfunc_##sched##_group_barrier_get \
    (pfunc_##sched##_group_t, pfunc_group_barrier_t*);\
#define PFUNC_GEN_GROUP_INITCLEAR_DECLS (   sched)
Value:
int pfunc_##sched##_group_init (pfunc_##sched##_group_t*); \
int pfunc_##sched##_group_clear (pfunc_##sched##_group_t*); \
#define PFUNC_GEN_GROUP_SET_DECLS (   sched)
Value:
int pfunc_##sched##_group_size_set \
    (pfunc_##sched##_group_t, pfunc_group_size_t);\
int pfunc_##sched##_group_id_set \
    (pfunc_##sched##_group_t, pfunc_group_id_t);\
int pfunc_##sched##_group_barrier_set \
    (pfunc_##sched##_group_t, pfunc_group_barrier_t);\
#define PFUNC_GEN_RANK_AND_SIZE_DECLS (   sched)
Value:
int pfunc_##sched##_thread_id (pfunc_##sched##_taskmgr_t, unsigned int*); \
int pfunc_##sched##_group_rank (pfunc_##sched##_taskmgr_t, unsigned int*); \
int pfunc_##sched##_group_size (pfunc_##sched##_taskmgr_t, unsigned int*); \
int pfunc_##sched##_barrier (pfunc_##sched##_taskmgr_t);
#define PFUNC_GEN_RUN_DECLS (   sched)
Value:
int pfunc_##sched##_spawn_c (pfunc_##sched##_taskmgr_t, \
                             pfunc_##sched##_task_t, \
                             pfunc_##sched##_attr_t, \
                             pfunc_##sched##_group_t, \
                             pfunc_c_work_func_t, \
                             void*); \
int pfunc_##sched##_spawn_cxx (pfunc_##sched##_taskmgr_t, \
                               pfunc_##sched##_task_t, \
                               pfunc_##sched##_attr_t, \
                               pfunc_##sched##_group_t, \
                               pfunc_##sched##_work_t);
#define PFUNC_GEN_TASK_DECLS (   sched)    PFUNC_GEN_TASK_INITCLEAR_DECLS(sched)
#define PFUNC_GEN_TASK_INITCLEAR_DECLS (   sched)
Value:
int pfunc_##sched##_task_init (pfunc_##sched##_task_t*); \
int pfunc_##sched##_task_clear (pfunc_##sched##_task_t*);
#define PFUNC_GEN_TASKMGR_DECLS (   sched)
Value:
PFUNC_GEN_TASKMGR_INITCLEAR_DECLS(sched) \
  PFUNC_GEN_TASKMGR_SET_AND_GET_MAX_ATTEMPTS_DECLS(sched)
Value:
int pfunc_##sched##_taskmgr_max_attempts_set_gbl (const unsigned int); \
int pfunc_##sched##_taskmgr_max_attempts_get_gbl (unsigned int*);
#define PFUNC_GEN_TASKMGR_INITCLEAR_DECLS (   sched)
Value:
int pfunc_##sched##_taskmgr_init (pfunc_##sched##_taskmgr_t*, \
                                  const unsigned int, \
                                  const unsigned int*, \
                                  const unsigned int**); \
int pfunc_##sched##_taskmgr_clear (pfunc_##sched##_taskmgr_t*);
Value:
int pfunc_##sched##_taskmgr_max_attempts_set (pfunc_##sched##_taskmgr_t, \
                                              const unsigned int); \
int pfunc_##sched##_taskmgr_max_attempts_get (pfunc_##sched##_taskmgr_t, \
                                              unsigned int*);
#define PFUNC_GEN_TESTS_AND_WAITS_DECLS (   sched)
Value:
int pfunc_##sched##_wait (pfunc_##sched##_taskmgr_t, pfunc_##sched##_task_t); \
int pfunc_##sched##_wait_all (pfunc_##sched##_taskmgr_t, pfunc_##sched##_task_t*, int); \
int pfunc_##sched##_wait_any (pfunc_##sched##_taskmgr_t, pfunc_##sched##_task_t*, int, int*); \
int pfunc_##sched##_test (pfunc_##sched##_taskmgr_t, pfunc_##sched##_task_t); \
int pfunc_##sched##_test_all (pfunc_##sched##_taskmgr_t, pfunc_##sched##_task_t*, int, int*); \
#define PFUNC_GEN_WORK_TYPES_DECLS (   sched)
Value:
struct pfunc_##sched##_dummy_work_t; \
typedef struct pfunc_##sched##_dummy_work_t* pfunc_##sched##_work_t; \
int pfunc_##sched##_work_init (pfunc_##sched##_work_t*); \
int pfunc_##sched##_work_clear (pfunc_##sched##_work_t*); \
int pfunc_##sched##_work_func_set (pfunc_##sched##_work_t, pfunc_c_work_func_t); \
int pfunc_##sched##_work_arg_set (pfunc_##sched##_work_t, void*); \
int pfunc_##sched##_work_func_get (pfunc_##sched##_work_t, pfunc_c_work_func_t*); \
int pfunc_##sched##_work_arg_get (pfunc_##sched##_work_t, void**); \

Typedef Documentation

typedef unsigned int pfunc_attr_grouped_t

Type to be used for specifying if a task belongs to a group or not

typedef unsigned int pfunc_attr_level_t

Type to be used for specifying the level of a task

typedef unsigned int pfunc_attr_nested_t

Type to be used for specifying if a task is nested or not

typedef unsigned int pfunc_attr_num_waiters_t

Type to be used for specifying the number of waiters for a task

typedef int pfunc_attr_priority_t

Priority (when using "prio" is always of type "int"

typedef unsigned int pfunc_attr_qnum_t

Type to be used for specifying the queue numbers

typedef void(* pfunc_c_work_func_t)(void *)

we only need decls of pack and unpack Type of the work function

typedef unsigned int pfunc_group_barrier_t

Type to be used for getting and setting the type of barrier to use

typedef unsigned int pfunc_group_id_t

Type to be used for getting and setting the group ID

typedef unsigned int pfunc_group_size_t

Type to be used for getting and setting the group size


Function Documentation

int pfunc_pack ( char **  ,
const char *  format,
  ... 
)

PFUNC_PACK_CODE Utility functions to pack and unpack the arguements into a single buffer.

int pfunc_unpack ( char *  ,
const char *  format,
  ... 
)

Variable Documentation

pfunc_cilk_taskmgr_t pfunc_cilk_global_tmanager

Generate all declarations for cilk Generate all declarations for fifo Generate all declarations for lifo Generate all declarations for prio Declare the global cilk task manager handle

definition of the cilk global taskmgr object

pfunc_fifo_taskmgr_t pfunc_fifo_global_tmanager

Declare the global fifo task manager handle

definition of the fifo global taskmgr object

pfunc_lifo_taskmgr_t pfunc_lifo_global_tmanager

Declare the global lifo task manager handle

definition of the lifo global taskmgr object

pfunc_prio_taskmgr_t pfunc_prio_global_tmanager

Declare the global prio task manager handle

definition of the prio global taskmgr object