1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/****************************************************************************** 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 3e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Copyright (C) 1999-2012 Broadcom Corporation 4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * you may not use this file except in compliance with the License. 7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * You may obtain a copy of the License at: 8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * See the License for the specific language governing permissions and 15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * limitations under the License. 16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project * 17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ******************************************************************************/ 18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef GKI_INT_H 19e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_INT_H 20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include "gki_common.h" 22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <pthread.h> 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/********************************************************************** 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project** OS specific definitions 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef ANDROID 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#include <sys/times.h> 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project pthread_mutex_t GKI_mutex; 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project pthread_t thread_id[GKI_MAX_TASKS]; 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project pthread_mutex_t thread_evt_mutex[GKI_MAX_TASKS]; 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project pthread_cond_t thread_evt_cond[GKI_MAX_TASKS]; 37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project pthread_mutex_t thread_timeout_mutex[GKI_MAX_TASKS]; 38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project pthread_cond_t thread_timeout_cond[GKI_MAX_TASKS]; 39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project int no_timer_suspend; /* 1: no suspend, 0 stop calling GKI_timer_update() */ 40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project pthread_mutex_t gki_timer_mutex; 41e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project pthread_cond_t gki_timer_cond; 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project int gki_timer_wake_lock_on; 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if (GKI_DEBUG == TRUE) 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project pthread_mutex_t GKI_trace_mutex; 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tGKI_OS; 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* condition to exit or continue GKI_run() timer loop */ 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_TIMER_TICK_RUN_COND 1 50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_TIMER_TICK_STOP_COND 0 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define GKI_TIMER_TICK_EXIT_COND 2 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern void gki_system_tick_start_stop_cback(BOOLEAN start); 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Contains common control block as well as OS specific variables */ 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef struct 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project{ 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tGKI_OS os; 59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project tGKI_COM_CB com; 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} tGKI_CB; 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus 64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectextern "C" { 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#if GKI_DYNAMIC_MEMORY == FALSE 68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern tGKI_CB gki_cb; 69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#else 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectGKI_API extern tGKI_CB *gki_cb_ptr; 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define gki_cb (*gki_cb_ptr) 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifdef __cplusplus 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project} 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif 79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 80