/*************************************************************** ** ** Broadcom Corp. Confidential ** Copyright 1998-2000 Broadcom Corp. All Rights Reserved. ** ** THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED ** SOFTWARE LICENSE AGREEMENT BETWEEN THE USER AND BROADCOM. ** YOU HAVE NO RIGHT TO USE OR EXPLOIT THIS MATERIAL EXCEPT ** SUBJECT TO THE TERMS OF SUCH AN AGREEMENT. ** ** File: bapp_task.h ** Description: Encapsulate OS functions. ** ** Created: Mon Sep 25 18:12:35 PDT 2006 by Jeff Fisher ** ****************************************************************/ #ifndef __BAPP_TASK_H__ #define __BAPP_TASK_H__ #include "bapp_types.h" #include "bapp_task_priorities.h" #define TICKS_TO_MS(ticks) ((ticks) * 1000/g_ticks_per_second) #define MS_TO_TICKS(x) (((x) * g_ticks_per_second)/ 1000) typedef struct bapp_task_params { int priority; /* 0 is highest, 63 lowest */ unsigned int stack_size; /* stack size in words */ unsigned int *stack; /* buffer to be used for thread stack */ const char *name; /* thread name */ } bapp_task_params; typedef struct bapp_task *bapp_task_t; typedef struct bapp_task_queue *bapp_task_queue_t ; typedef struct bapp_task_event *bapp_task_event_t; typedef struct bapp_task_mutex *bapp_task_mutex_t; typedef void (*bapp_task_func)(void *pd); #ifdef __cplusplus extern "C" { #endif void bapp_task_init(void); void bapp_task_start(void); bapp_result_t bapp_task_start_task( bapp_task_t *handle, const bapp_task_params *params, bapp_task_func func, void *data ); void bapp_task_stop_task(bapp_task_t handle); bapp_result_t bapp_task_create_queue( bapp_task_queue_t *handle, bapp_task_event_t *events, int num_events ); void bapp_task_delete_queue( bapp_task_queue_t handle ); bapp_result_t bapp_task_post_event( bapp_task_queue_t handle, bapp_task_event_t event ); bapp_task_event_t bapp_task_pend_event( bapp_task_queue_t handle, int timeout_ms ); void bapp_task_reset_queue( bapp_task_queue_t handle); bapp_result_t bapp_task_create_mutex( bapp_task_mutex_t *handle ); void bapp_task_delete_mutex( bapp_task_mutex_t handle ); bapp_result_t bapp_task_acquire_mutex( bapp_task_mutex_t handle, int timeout_ms ); bapp_result_t bapp_task_release_mutex( bapp_task_mutex_t handle ); void bapp_task_sleep( unsigned int sleep_ms ); unsigned int bapp_task_getticks( void ); unsigned int bapp_task_enter_critical(void); void bapp_task_exit_critical(unsigned int flags); extern int g_ticks_per_second; #ifdef __cplusplus } #endif #endif /* __BAPP_TASK_H__ */