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 #if 0
00056 int omp_in_final (void);
00057 #endif
00058 
00059 /* Lock Routines */
00060 void omp_init_lock (omp_lock_t* lock);
00061 void omp_destroy_lock (omp_lock_t *lock);
00062 void omp_set_lock (omp_lock_t* lock);
00063 int  omp_test_lock (omp_lock_t* lock);
00064 void omp_unset_lock (omp_lock_t* lock);
00065 
00066 void omp_init_nest_lock (omp_nest_lock_t* lock);
00067 void omp_destroy_nest_lock (omp_nest_lock_t *lock);
00068 void omp_set_nest_lock (omp_nest_lock_t* lock);
00069 int  omp_test_nest_lock (omp_nest_lock_t* lock);
00070 void omp_unset_nest_lock (omp_nest_lock_t* lock);
00071 
00072 /* Timing Routines */
00073 double omp_get_wtime (void);
00074 double omp_get_wtick (void);
00075 
00076 /* TI specific API to configure the OpenMP runtime */
00077 void __TI_omp_configure(void);
00078 void __TI_omp_config_thread_stack(char from_heap, unsigned int size);
00079 
00080 void __TI_omp_reset(void);
00081 
00082 void __TI_omp_configure_caches(void);
00083 void __TI_omp_enable_caching(unsigned int start, unsigned int length);
00084 void __TI_omp_disable_caching(unsigned int start, unsigned int length);
00085 
00086 void __TI_setMPAX(unsigned int mpax_id, unsigned int base_addr, 
00087                   unsigned long long replacement_addr,
00088                   unsigned int seg_size_encoding);
00089 
00090 void __TI_omp_config_cores (unsigned char master_core_idx, 
00091                             unsigned char num_cores);
00092 
00093 void __TI_omp_config_hw_queues (char init_qmss,
00094                                 int  hw_queue_base_idx,
00095                                 int  first_desc_idx_in_linking_ram,
00096                                 int  first_memory_region_idx);
00097 
00098 void __TI_omp_config_hw_semaphores(unsigned char hw_sem_base_idx);
00099 
00100 void __TI_omp_config_clock_freq_in_mhz(unsigned int clock_freq);
00101 
00102 void __TI_omp_wait_at_core_barrier(void);
00103 
00104 #ifdef __cplusplus
00105 } /* extern "C" */
00106 #endif /* __cplusplus */
00107 
00108 #endif /* OMP_H_ */
 All Classes Files Functions Variables Typedefs Enumerations Defines