| 1 | /*************************************************************** |
|---|
| 2 | ** |
|---|
| 3 | ** Broadcom Corp. Confidential |
|---|
| 4 | ** Copyright 1998-2000 Broadcom Corp. All Rights Reserved. |
|---|
| 5 | ** |
|---|
| 6 | ** THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED |
|---|
| 7 | ** SOFTWARE LICENSE AGREEMENT BETWEEN THE USER AND BROADCOM. |
|---|
| 8 | ** YOU HAVE NO RIGHT TO USE OR EXPLOIT THIS MATERIAL EXCEPT |
|---|
| 9 | ** SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. |
|---|
| 10 | ** |
|---|
| 11 | ** File: bapp_task.h |
|---|
| 12 | ** Description: Encapsulate OS functions. |
|---|
| 13 | ** |
|---|
| 14 | ** Created: Mon Sep 25 18:12:35 PDT 2006 by Jeff Fisher |
|---|
| 15 | ** |
|---|
| 16 | ****************************************************************/ |
|---|
| 17 | |
|---|
| 18 | #ifndef __BAPP_TASK_H__ |
|---|
| 19 | #define __BAPP_TASK_H__ |
|---|
| 20 | |
|---|
| 21 | #include "bapp_types.h" |
|---|
| 22 | #include "bapp_task_priorities.h" |
|---|
| 23 | |
|---|
| 24 | |
|---|
| 25 | #define TICKS_TO_MS(ticks) ((ticks) * 1000/g_ticks_per_second) |
|---|
| 26 | #define MS_TO_TICKS(x) (((x) * g_ticks_per_second)/ 1000) |
|---|
| 27 | |
|---|
| 28 | typedef struct bapp_task_params |
|---|
| 29 | { |
|---|
| 30 | int priority; /* 0 is highest, 63 lowest */ |
|---|
| 31 | unsigned int stack_size; /* stack size in words */ |
|---|
| 32 | unsigned int *stack; /* buffer to be used for thread stack */ |
|---|
| 33 | const char *name; /* thread name */ |
|---|
| 34 | } bapp_task_params; |
|---|
| 35 | |
|---|
| 36 | typedef struct bapp_task *bapp_task_t; |
|---|
| 37 | typedef struct bapp_task_queue *bapp_task_queue_t ; |
|---|
| 38 | typedef struct bapp_task_event *bapp_task_event_t; |
|---|
| 39 | typedef struct bapp_task_mutex *bapp_task_mutex_t; |
|---|
| 40 | |
|---|
| 41 | |
|---|
| 42 | |
|---|
| 43 | typedef void (*bapp_task_func)(void *pd); |
|---|
| 44 | |
|---|
| 45 | #ifdef __cplusplus |
|---|
| 46 | extern "C" { |
|---|
| 47 | #endif |
|---|
| 48 | |
|---|
| 49 | void bapp_task_init(void); |
|---|
| 50 | void bapp_task_start(void); |
|---|
| 51 | bapp_result_t bapp_task_start_task( bapp_task_t *handle, |
|---|
| 52 | const bapp_task_params *params, |
|---|
| 53 | bapp_task_func func, |
|---|
| 54 | void *data ); |
|---|
| 55 | void bapp_task_stop_task(bapp_task_t handle); |
|---|
| 56 | bapp_result_t bapp_task_create_queue( bapp_task_queue_t *handle, |
|---|
| 57 | bapp_task_event_t *events, |
|---|
| 58 | int num_events ); |
|---|
| 59 | void bapp_task_delete_queue( bapp_task_queue_t handle ); |
|---|
| 60 | bapp_result_t bapp_task_post_event( bapp_task_queue_t handle, |
|---|
| 61 | bapp_task_event_t event ); |
|---|
| 62 | bapp_task_event_t bapp_task_pend_event( bapp_task_queue_t handle, |
|---|
| 63 | int timeout_ms ); |
|---|
| 64 | void bapp_task_reset_queue( bapp_task_queue_t handle); |
|---|
| 65 | bapp_result_t bapp_task_create_mutex( bapp_task_mutex_t *handle ); |
|---|
| 66 | void bapp_task_delete_mutex( bapp_task_mutex_t handle ); |
|---|
| 67 | bapp_result_t bapp_task_acquire_mutex( bapp_task_mutex_t handle, |
|---|
| 68 | int timeout_ms ); |
|---|
| 69 | bapp_result_t bapp_task_release_mutex( bapp_task_mutex_t handle ); |
|---|
| 70 | void bapp_task_sleep( unsigned int sleep_ms ); |
|---|
| 71 | unsigned int bapp_task_getticks( void ); |
|---|
| 72 | unsigned int bapp_task_enter_critical(void); |
|---|
| 73 | void bapp_task_exit_critical(unsigned int flags); |
|---|
| 74 | |
|---|
| 75 | extern int g_ticks_per_second; |
|---|
| 76 | #ifdef __cplusplus |
|---|
| 77 | } |
|---|
| 78 | #endif |
|---|
| 79 | |
|---|
| 80 | #endif /* __BAPP_TASK_H__ */ |
|---|