QueueGprot.h
上传用户:lqx1163
上传日期:2014-08-13
资源大小:9183k
文件大小:10k
源码类别:

MTK

开发平台:

C/C++

  1. /*****************************************************************************
  2. *  Copyright Statement:
  3. *  --------------------
  4. *  This software is protected by Copyright and the information contained
  5. *  herein is confidential. The software may not be copied and the information
  6. *  contained herein may not be used or disclosed except with the written
  7. *  permission of MediaTek Inc. (C) 2005
  8. *
  9. *  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
  10. *  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
  11. *  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
  12. *  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
  13. *  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
  14. *  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
  15. *  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
  16. *  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
  17. *  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
  18. *  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
  19. *  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
  20. *  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
  21. *
  22. *  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
  23. *  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
  24. *  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
  25. *  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
  26. *  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
  27. *
  28. *  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
  29. *  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
  30. *  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
  31. *  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
  32. *  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
  33. *
  34. *****************************************************************************/
  35. /*******************************************************************************
  36.  * Filename:
  37.  * ---------
  38.  * QueueGprot.h
  39.  *
  40.  * Project:
  41.  * --------
  42.  *   MAUI
  43.  *
  44.  * Description:
  45.  * ------------
  46.  *   This file is intends for message queue handle.
  47.  *
  48.  * Author:
  49.  * -------
  50.  * -------
  51.  *
  52.  *==============================================================================
  53.  *             HISTORY
  54.  * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  55.  *------------------------------------------------------------------------------
  56.  * removed!
  57.  *
  58.  * removed!
  59.  * removed!
  60.  * removed!
  61.  *
  62.  * removed!
  63.  * removed!
  64.  * removed!
  65.  *
  66.  * removed!
  67.  * removed!
  68.  * removed!
  69.  *
  70.  * removed!
  71.  * removed!
  72.  * removed!
  73.  *
  74.  * removed!
  75.  * removed!
  76.  * removed!
  77.  *
  78.  *------------------------------------------------------------------------------
  79.  * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
  80.  *==============================================================================
  81.  *******************************************************************************/
  82. #ifndef _QUEUE_GPROT_H
  83. #define _QUEUE_GPROT_H
  84. // #include "MMIDataType.h"
  85. #include "OslMemory.h"
  86. /***************************************************************************** 
  87. * Define
  88. *****************************************************************************/
  89. #ifdef MMI_ON_WIN32
  90. #if (!defined LOCAL_PARA_HDR) && (!defined __NEWSIMULATOR )
  91. #define LOCAL_PARA_HDR
  92.      U8  ref_count;        
  93.      U16 msg_len;
  94. #endif /* (!defined LOCAL_PARA_HDR) && (!defined __NEWSIMULATOR ) */ 
  95. #endif /* MMI_ON_WIN32 */ 
  96. #ifndef MMI_ON_WIN32
  97. #include "kal_release.h"
  98. #include "stack_common.h"
  99. #include "stack_msgs.h"
  100. #include "task_main_func.h"
  101. #include "app_ltlcom.h"
  102. #include "lcd_ip_cqueue.h"
  103. #include "stack_types.h"
  104. #include "task_config.h"
  105. #include "syscomp_config.h"
  106. #include "stack_init.h"
  107. #include "stack_ltlcom.h"
  108. #include "app_buff_alloc.h"
  109. #define MYQUEUE   ilm_struct
  110. #define oslMsgqid kal_msgqid
  111. #define OslReceiveMsgExtQ  receive_msg_ext_q
  112. #define OslGetMyTaskIndex  kal_get_my_task_index
  113. #define OslStackSetActiveModuleID   stack_set_active_module_id
  114.    /* define LOCAL_PARA_HDR
  115.       U8  ref_count;
  116.       U16 msg_len; */
  117. #define oslModuleType module_type
  118. #define oslMsgType msg_type
  119. #define  oslParaType local_para_struct
  120. #define  oslSrcId src_mod_id
  121. #define oslDestId dest_mod_id
  122. #define oslMsgId  msg_id
  123. #define oslSapId  sap_id
  124. #define oslDataPtr   local_para_ptr
  125. #define oslPeerBuffPtr peer_buff_ptr
  126. #define OSLWAITMODE kal_wait_mode
  127. #define  OSL_NO_WAIT KAL_NO_WAIT
  128. #define  OSL_INFINITE_WAIT KAL_INFINITE_WAIT
  129. extern U32 OslIntReceiveMsgExtQ(oslMsgqid msgqid, MYQUEUE *Message);
  130. extern void OslIntMsgSendExtQueue(MYQUEUE *Message);
  131. extern void *OslIntConstructDataPtr(U32 size);
  132. extern void OslIntFreeDataPtr(void *ptr);
  133. extern U32 OslIntSizeofDataPtr(void *ptr);
  134. extern void OslIntFreeInterTaskMsg(void *Message);
  135. #define OslCreateMsgQ   kal_create_msg_q
  136. #define OslDeleteMsgQ   kal_delete_msg_q
  137. #define OslWriteMsgQ kal_enque_msg
  138. #define  OslReadMsgQ    kal_deque_msg
  139. #define  OslMsgSendExtQueue   OslIntMsgSendExtQueue
  140. #define OslConstructDataPtr   OslIntConstructDataPtr
  141. #define  OslFreeDataPtr OslIntFreeDataPtr
  142. #define  OslSizeofDataPtr  OslIntSizeofDataPtr
  143. #define  OslFreeInterTaskMsg  OslIntFreeInterTaskMsg
  144. #else /* MMI_ON_WIN32 */ 
  145. #define MYQUEUE     WINTERTASKMSG
  146. #define oslModuleType U32
  147. #define oslMsgType U32
  148. #define  oslParaType void
  149. #define oslPeerParaPtr void
  150. #define  oslSrcId wSrcId
  151. #define oslDestId wDestId
  152. #define oslMsgId  wMsgId
  153. #define oslSapId  wSapId
  154. #define oslDataPtr   wDataPtr
  155. #define oslPeerBuffPtr  wPeerBuffPtr
  156. #define OslCreateMsgQ   OslIntCreateMsgQ
  157. #define OslDeleteMsgQ   OslIntDeleteMsgQ
  158. #define OslWriteMsgQ OslIntWriteMsgQ
  159. #define  OslReadMsgQ    OslIntReadMsgQ
  160. typedef struct wintertaskmsgstruct
  161. {
  162.     oslModuleType wSrcId;
  163.     oslModuleType wDestId;
  164.     oslMsgType wMsgId;
  165.     oslMsgType wSapId;
  166.     oslParaType *wDataPtr;
  167.     oslPeerParaPtr *wPeerBuffPtr;
  168. } WINTERTASKMSG;
  169. extern oslMsgqid OslIntCreateMsgQ(
  170.                     PS8 queue_name,
  171.                     U32 max_msg_size,
  172.                     /* Size of Message in bytes (divisible by 4) */ U32 max_msgs);        /* Max No. of Messages */
  173. extern void OslIntDeleteMsgQ(oslMsgqid msgqid);
  174. extern OSLSTATUS OslIntWriteMsgQ(oslMsgqid msgqid, void *msgPtr, U32 msgSize, OSLWAITMODE wait_mode);
  175. extern OSLSTATUS OslIntReadMsgQ(oslMsgqid msgqid, void *msgPtr, U32 *msgSize, OSLWAITMODE wait_mode);
  176. extern U32 OslIntReceiveMsgExtQ(oslMsgqid msgqid, MYQUEUE *Message);
  177. extern void OslIntMsgSendExtQueue(MYQUEUE *Message);
  178. extern void *OslIntConstructDataPtr(U32 size);
  179. extern void OslIntFreeDataPtr(void *ptr);
  180. extern U32 OslIntSizeofDataPtr(void *ptr);
  181. extern void OslIntFreeInterTaskMsg(void *Message);
  182. #define OslCreateMsgQ   OslIntCreateMsgQ
  183. #define OslDeleteMsgQ   OslIntDeleteMsgQ
  184. #define OslWriteMsgQ    OslIntWriteMsgQ
  185. #define OslReadMsgQ     OslIntReadMsgQ
  186. #define OslReceiveMsgExtQ  OslIntReceiveMsgExtQ
  187. #define OslMsgSendExtQueue OslIntMsgSendExtQueue
  188. #define OslGetMyTaskIndex
  189. #define OslStackSetActiveModuleID
  190. // #define OslConstructDataPtr  OslIntConstructDataPtr
  191. #define OslConstructDataPtr(size) lastMemory= (void *)((((U8 *)OslMalloc((size)+sizeof(TSIZE))) + sizeof(TSIZE)));
  192.                              lastSize=(TSIZE *)lastMemory - 1;                                                       
  193.                              lastSize->s=(U32)(size);
  194. #define  OslFreeDataPtr(frp)  if((frp)) OslMfree((U8 *)(frp) - sizeof(TSIZE));
  195. #define  OslSizeofDataPtr  ((TSIZE *)((TSIZE *)(ptr) - 1))->s
  196. #define  OslFreeInterTaskMsg(frp)                                       
  197.    {                                                                       
  198.    extern MYQUEUE* qPtr;                                                   
  199.    qPtr = (MYQUEUE*)frp;                                                   
  200.    if(qPtr->oslSrcId==MOD_L4C)                                             
  201.    {                                                                       
  202.          qPtr->oslSrcId=MOD_MMI;                                           
  203.          qPtr->oslDestId=MOD_L4C;                                          
  204.          qPtr->oslMsgId = 0;                                               
  205.          OslMsgSendExtQueue(qPtr);                                         
  206.    }                                                                       
  207.    else                                                                    
  208.    {                                                                       
  209.       if(*(frp.oslDataPtr) != NULL)                                        
  210.       {                                                                    
  211.          void *actualAddress;                                              
  212.          actualAddress=(void *)((U8 *)(*(frp.oslDataPtr)) - sizeof(TSIZE));
  213.          OslMfree(actualAddress);                                          
  214.       }                                                                    
  215.    }                                                                       
  216.    }
  217. extern U8 OslNumOfQMsgs(void);
  218. #endif /* MMI_ON_WIN32 */ 
  219. /***************************************************************************** 
  220. * Typedef 
  221. *****************************************************************************/
  222. /***************************************************************************** 
  223. * Extern Global Variable
  224. *****************************************************************************/
  225. /***************************************************************************** 
  226. * Extern Global Function
  227. *****************************************************************************/
  228. /* hold_local_para */
  229. #define OslHoldDataPtr(ptr)                                         
  230.     do {                                                            
  231.         MMI_ASSERT(((local_para_struct*)(ptr))->ref_count != 0);    
  232.         hold_local_para((local_para_struct*)(ptr));                 
  233.     } while(0)
  234. extern U8 OslReadCircularQ(void *msgPtr);
  235. extern U8 OslLookUpLastCircularQMsg(void *msgPtr);
  236. extern U8 OslWriteCircularQ(void *msgPtr);
  237. extern U8 OslNumOfCircularQMsgs(void);
  238. extern U8 OslIsCircularQFull(void);
  239. #endif /* _QUEUE_GPROT_H */