OpenMP Runtime
omp.h
Go to the documentation of this file.
00001 
00007 #ifndef OMP_H_
00008 #define OMP_H_
00009 
00010 #ifdef __cplusplus
00011 extern "C"
00012 {
00013 #endif /* __cplusplus */
00014 
00015 /* Lock type */
00016 typedef struct _omp_lock
00017 {
00018     volatile int  entered;
00019     void         *owner_task;
00020     volatile int  count;
00021     int           hw_sem;
00022 } *omp_lock_t;
00023 
00024 typedef struct _omp_lock *omp_nest_lock_t;
00025 
00026 /* Schedule kinds */
00027 typedef enum omp_sched_t
00028 {
00029   omp_sched_static = 1,
00030   omp_sched_dynamic = 2,
00031   omp_sched_guided = 3,
00032   omp_sched_auto = 4
00033 } omp_sched_t;
00034 
00035 /* Execution environment routines */
00036 void omp_set_num_threads (int nthreads);
00037 int omp_get_num_threads (void);
00038 int omp_get_max_threads (void);
00039 int omp_get_thread_num (void);
00040 int omp_get_num_procs(void);
00041 int omp_in_parallel(void);
00042 void omp_set_dynamic (int nthreads);
00043 int omp_get_dynamic (void);
00044 void omp_set_nested (int val);
00045 int omp_get_nested (void);
00046 void omp_set_schedule (omp_sched_t kind, int modifier);
00047 void omp_get_schedule (omp_sched_t *kind, int *modifier);
00048 int omp_get_thread_limit (void);
00049 void omp_set_max_active_levels(int val);
00050 int omp_get_max_active_levels(void);
00051 int omp_get_level (void);
00052 int omp_get_ancestor_thread_num (int level);
00053 int omp_get_team_size (int level);
00054 int omp_get_active_level (void);
00055 int omp_is_initial_device (void);
00056 #if 0
00057 int omp_in_final (void);
00058 #endif
00059 
00060 /* Lock Routines */
00061 void omp_init_lock (omp_lock_t* lock);
00062 void omp_destroy_lock (omp_lock_t *lock);
00063 void omp_set_lock (omp_lock_t* lock);
00064 int  omp_test_lock (omp_lock_t* lock);
00065 void omp_unset_lock (omp_lock_t* lock);
00066 
00067 void omp_init_nest_lock (omp_nest_lock_t* lock);
00068 void omp_destroy_nest_lock (omp_nest_lock_t *lock);
00069 void omp_set_nest_lock (omp_nest_lock_t* lock);
00070 int  omp_test_nest_lock (omp_nest_lock_t* lock);
00071 void omp_unset_nest_lock (omp_nest_lock_t* lock);
00072 
00073 /* Timing Routines */
00074 double omp_get_wtime (void);
00075 double omp_get_wtick (void);
00076 
00077 /* TI specific API to configure the OpenMP runtime */
00078 void __TI_omp_configure(void);
00079 void __TI_omp_config_thread_stack(char from_heap, unsigned int size);
00080 
00081 void __TI_omp_reset(void);
00082 
00083 void __TI_omp_configure_caches(void);
00084 void __TI_omp_enable_caching(unsigned int start, unsigned int length);
00085 void __TI_omp_disable_caching(unsigned int start, unsigned int length);
00086 
00087 void __TI_setMPAX(unsigned int mpax_id, unsigned int base_addr, 
00088                   unsigned long long replacement_addr,
00089                   unsigned int seg_size_encoding);
00090 
00091 void __TI_omp_config_cores (unsigned char master_core_idx, 
00092                             unsigned char num_cores);
00093 
00094 void __TI_omp_config_hw_queues (char init_qmss,
00095                                 int  hw_queue_base_idx,
00096                                 int  first_desc_idx_in_linking_ram,
00097                                 int  first_memory_region_idx);
00098 
00099 void __TI_omp_config_hw_semaphores(unsigned char hw_sem_base_idx);
00100 
00101 void __TI_omp_config_clock_freq_in_mhz(unsigned int clock_freq);
00102 
00103 void __TI_omp_wait_at_core_barrier(void);
00104 
00105 /* Dynamic memory management APIs */
00106 #include <stdlib.h>
00107 
00108 void  __heap_init_ddr  (void *ptr,  size_t size);
00109 void *__malloc_ddr     (size_t size);
00110 void *__calloc_ddr     (size_t num, size_t size);
00111 void *__realloc_ddr    (void *ptr,  size_t size);
00112 void  __free_ddr       (void *ptr);
00113 void *__memalign_ddr   (size_t alignment, size_t size);
00114 
00115 void  __heap_init_msmc (void *ptr, size_t size);
00116 void *__malloc_msmc    (size_t size);
00117 void *__calloc_msmc    (size_t num, size_t size);
00118 void *__realloc_msmc   (void *ptr, size_t size);
00119 void  __free_msmc      (void *ptr);
00120 void *__memalign_msmc  (size_t alignment, size_t size);
00121 
00122 void  __heap_init_l2   (void *ptr, size_t size);
00123 void *__malloc_l2      (size_t size);
00124 
00125 #ifdef __cplusplus
00126 } /* extern "C" */
00127 #endif /* __cplusplus */
00128 
00129 #endif /* OMP_H_ */
 All Classes Files Functions Variables Typedefs Enumerations Defines