⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 queuegprot.h

📁 MTK手机平台的MMI部分的源代码
💻 H
字号:
/*****************************************************************************
*  Copyright Statement:
*  --------------------
*  This software is protected by Copyright and the information contained
*  herein is confidential. The software may not be copied and the information
*  contained herein may not be used or disclosed except with the written
*  permission of MediaTek Inc. (C) 2005
*
*  BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
*  THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
*  RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
*  AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
*  EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
*  MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
*  NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
*  SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
*  SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
*  THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
*  NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
*  SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
*  BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
*  LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
*  AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
*  OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
*  MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE. 
*
*  THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
*  WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
*  LAWS PRINCIPLES.  ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
*  RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
*  THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/

/*******************************************************************************
 * Filename:
 * ---------
 * QueueGprot.h
 *
 * Project:
 * --------
 *   MAUI
 *
 * Description:
 * ------------
 *   This file is intends for message queue handle.
 *
 * Author:
 * -------
 * -------
 *
 *==============================================================================
 *             HISTORY
 * Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
 *------------------------------------------------------------------------------
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 * removed!
 * removed!
 * removed!
 *
 *------------------------------------------------------------------------------
 * Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!! 
 *==============================================================================
 *******************************************************************************/

#ifndef _QUEUE_GPROT_H
#define _QUEUE_GPROT_H

// #include "MMIDataType.h"
#include "OslMemory.h"

/***************************************************************************** 
* Define
*****************************************************************************/

#ifdef MMI_ON_WIN32
#if (!defined LOCAL_PARA_HDR) && (!defined __NEWSIMULATOR )
#define LOCAL_PARA_HDR\
     U8  ref_count;        \
     U16 msg_len;
#endif /* (!defined LOCAL_PARA_HDR) && (!defined __NEWSIMULATOR ) */ 
#endif /* MMI_ON_WIN32 */ 

#ifndef MMI_ON_WIN32
#include "kal_release.h"
#include "stack_common.h"
#include "stack_msgs.h"
#include "task_main_func.h"
#include "app_ltlcom.h"
#include "lcd_ip_cqueue.h"
#include "stack_types.h"
#include "task_config.h"
#include "syscomp_config.h"
#include "stack_init.h"
#include "stack_ltlcom.h"
#include "app_buff_alloc.h"
#define MYQUEUE   ilm_struct
#define oslMsgqid kal_msgqid
#define OslReceiveMsgExtQ  receive_msg_ext_q
#define OslGetMyTaskIndex  kal_get_my_task_index
#define OslStackSetActiveModuleID   stack_set_active_module_id

   /* define LOCAL_PARA_HDR\
      U8  ref_count;\
      U16 msg_len; */
#define oslModuleType module_type
#define oslMsgType msg_type
#define  oslParaType local_para_struct
#define  oslSrcId src_mod_id
#define oslDestId dest_mod_id
#define oslMsgId  msg_id
#define oslSapId  sap_id
#define oslDataPtr   local_para_ptr
#define oslPeerBuffPtr peer_buff_ptr
#define OSLWAITMODE kal_wait_mode
#define  OSL_NO_WAIT KAL_NO_WAIT
#define  OSL_INFINITE_WAIT KAL_INFINITE_WAIT

extern U32 OslIntReceiveMsgExtQ(oslMsgqid msgqid, MYQUEUE *Message);
extern void OslIntMsgSendExtQueue(MYQUEUE *Message);
extern void *OslIntConstructDataPtr(U32 size);
extern void OslIntFreeDataPtr(void *ptr);
extern U32 OslIntSizeofDataPtr(void *ptr);
extern void OslIntFreeInterTaskMsg(void *Message);

#define OslCreateMsgQ   kal_create_msg_q
#define OslDeleteMsgQ   kal_delete_msg_q
#define OslWriteMsgQ kal_enque_msg
#define  OslReadMsgQ    kal_deque_msg

#define  OslMsgSendExtQueue   OslIntMsgSendExtQueue
#define OslConstructDataPtr   OslIntConstructDataPtr
#define  OslFreeDataPtr OslIntFreeDataPtr
#define  OslSizeofDataPtr  OslIntSizeofDataPtr
#define  OslFreeInterTaskMsg  OslIntFreeInterTaskMsg

#else /* MMI_ON_WIN32 */ 
#define MYQUEUE     WINTERTASKMSG
#define oslModuleType U32
#define oslMsgType U32
#define  oslParaType void
#define oslPeerParaPtr void
#define  oslSrcId wSrcId
#define oslDestId wDestId
#define oslMsgId  wMsgId
#define oslSapId  wSapId
#define oslDataPtr   wDataPtr
#define oslPeerBuffPtr  wPeerBuffPtr
#define OslCreateMsgQ   OslIntCreateMsgQ
#define OslDeleteMsgQ   OslIntDeleteMsgQ
#define OslWriteMsgQ OslIntWriteMsgQ
#define  OslReadMsgQ    OslIntReadMsgQ

typedef struct wintertaskmsgstruct
{
    oslModuleType wSrcId;
    oslModuleType wDestId;
    oslMsgType wMsgId;
    oslMsgType wSapId;
    oslParaType *wDataPtr;
    oslPeerParaPtr *wPeerBuffPtr;
} WINTERTASKMSG;

extern oslMsgqid OslIntCreateMsgQ(
                    PS8 queue_name,
                    U32 max_msg_size,
                    /* Size of Message in bytes (divisible by 4) */ U32 max_msgs);        /* Max No. of Messages */

extern void OslIntDeleteMsgQ(oslMsgqid msgqid);

extern OSLSTATUS OslIntWriteMsgQ(oslMsgqid msgqid, void *msgPtr, U32 msgSize, OSLWAITMODE wait_mode);

extern OSLSTATUS OslIntReadMsgQ(oslMsgqid msgqid, void *msgPtr, U32 *msgSize, OSLWAITMODE wait_mode);

extern U32 OslIntReceiveMsgExtQ(oslMsgqid msgqid, MYQUEUE *Message);
extern void OslIntMsgSendExtQueue(MYQUEUE *Message);
extern void *OslIntConstructDataPtr(U32 size);
extern void OslIntFreeDataPtr(void *ptr);
extern U32 OslIntSizeofDataPtr(void *ptr);
extern void OslIntFreeInterTaskMsg(void *Message);

#define OslCreateMsgQ   OslIntCreateMsgQ
#define OslDeleteMsgQ   OslIntDeleteMsgQ
#define OslWriteMsgQ    OslIntWriteMsgQ
#define OslReadMsgQ     OslIntReadMsgQ
#define OslReceiveMsgExtQ  OslIntReceiveMsgExtQ
#define OslMsgSendExtQueue OslIntMsgSendExtQueue
#define OslGetMyTaskIndex
#define OslStackSetActiveModuleID
// #define OslConstructDataPtr  OslIntConstructDataPtr

#define OslConstructDataPtr(size) lastMemory= (void *)((((U8 *)OslMalloc((size)+sizeof(TSIZE))) + sizeof(TSIZE)));\
                             lastSize=(TSIZE *)lastMemory - 1;                                                       \
                             lastSize->s=(U32)(size);

#define  OslFreeDataPtr(frp)  if((frp)) OslMfree((U8 *)(frp) - sizeof(TSIZE));

#define  OslSizeofDataPtr  ((TSIZE *)((TSIZE *)(ptr) - 1))->s

#define  OslFreeInterTaskMsg(frp)                                       \
   {                                                                       \
   extern MYQUEUE* qPtr;                                                   \
   qPtr = (MYQUEUE*)frp;                                                   \
   if(qPtr->oslSrcId==MOD_L4C)                                             \
   {                                                                       \
         qPtr->oslSrcId=MOD_MMI;                                           \
         qPtr->oslDestId=MOD_L4C;                                          \
         qPtr->oslMsgId = 0;                                               \
         OslMsgSendExtQueue(qPtr);                                         \
   }                                                                       \
   else                                                                    \
   {                                                                       \
      if(*(frp.oslDataPtr) != NULL)                                        \
      {                                                                    \
         void *actualAddress;                                              \
         actualAddress=(void *)((U8 *)(*(frp.oslDataPtr)) - sizeof(TSIZE));\
         OslMfree(actualAddress);                                          \
      }                                                                    \
   }                                                                       \
   }

extern U8 OslNumOfQMsgs(void);
#endif /* MMI_ON_WIN32 */ 
/***************************************************************************** 
* Typedef 
*****************************************************************************/

/***************************************************************************** 
* Extern Global Variable
*****************************************************************************/

/***************************************************************************** 
* Extern Global Function
*****************************************************************************/

/* hold_local_para */
#define OslHoldDataPtr(ptr)                                         \
    do {                                                            \
        MMI_ASSERT(((local_para_struct*)(ptr))->ref_count != 0);    \
        hold_local_para((local_para_struct*)(ptr));                 \
    } while(0)

extern U8 OslReadCircularQ(void *msgPtr);
extern U8 OslLookUpLastCircularQMsg(void *msgPtr);
extern U8 OslWriteCircularQ(void *msgPtr);
extern U8 OslNumOfCircularQMsgs(void);
extern U8 OslIsCircularQFull(void);

#endif /* _QUEUE_GPROT_H */ 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -