亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? sys_arch.c

?? 44b0+lwip
?? C
字號(hào):
/*
 * Copyright (c) 2001, Swedish Institute of Computer Science.
 * All rights reserved. 
 *
 * Redistribution and use in source and binary forms, with or without 
 * modification, are permitted provided that the following conditions 
 * are met: 
 * 1. Redistributions of source code must retain the above copyright 
 *    notice, this list of conditions and the following disclaimer. 
 * 2. Redistributions in binary form must reproduce the above copyright 
 *    notice, this list of conditions and the following disclaimer in the 
 *    documentation and/or other materials provided with the distribution. 
 * 3. Neither the name of the Institute nor the names of its contributors 
 *    may be used to endorse or promote products derived from this software 
 *    without specific prior written permission. 
 *
 * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND 
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE 
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
 * SUCH DAMAGE. 
 *
 * This file is part of the lwIP TCP/IP stack.
 * 
 * Author: Adam Dunkels <adam@sics.se>
 *
 * $Id: sys_arch.c,v 1.1.1.1 2003/05/17 05:06:56 chenyu Exp $
 */

#include "debug.h"

#include "def.h"
#include "sys.h"
#include "mem.h"

//yangye 2003-1-22
#include "sys_arch.h" 
//yangye 2003-1-27
//notice: we use OSTaskQuery in sys_arch_timeouts() !
//#include "ucos_ii.h"
//#include "os_cfg.h"


const void * const pvNullPointer;  

static OS_MEM * pQueueMem;  //消息隊(duì)列內(nèi)存塊首地址

static char pcQueueMemoryPool[MAX_QUEUES * sizeof(TQ_DESCR) ];//消息隊(duì)列內(nèi)存塊

//yangye 2003-1-27
struct sys_timeouts lwip_timeouts[LWIP_TASK_MAX];  //超時(shí)列表
struct sys_timeouts null_timeouts;



OS_STK LWIP_TASK_STK[LWIP_TASK_MAX][LWIP_STK_SIZE]; //TCP/IP任務(wù)堆棧
u8_t curr_prio_offset;  //TCP/IP起始優(yōu)先級(jí)

/*-----------------------------------------------------------------------------------*/
sys_mbox_t sys_mbox_new(void)
{
    u8_t       ucErr;
    PQ_DESCR    pQDesc;
    
    pQDesc = OSMemGet( pQueueMem, &ucErr );
    if( ucErr == OS_NO_ERR ) {   
        pQDesc->pQ = OSQCreate( &(pQDesc->pvQEntries[0]), MAX_QUEUE_ENTRIES );       
        if( pQDesc->pQ != NULL ) {
            return pQDesc;
        }
    } 
    return SYS_MBOX_NULL;
}

/*-----------------------------------------------------------------------------------*/
void
sys_mbox_free(sys_mbox_t mbox)
{
    u8_t     ucErr;
    
    //clear OSQ EVENT
    OSQFlush( mbox->pQ );
    //del OSQ EVENT
    (void)OSQDel( mbox->pQ, OS_DEL_NO_PEND, &ucErr);
    //put mem back to mem queue
    ucErr = OSMemPut( pQueueMem, mbox );
}

/*-----------------------------------------------------------------------------------*/
void
sys_mbox_post(sys_mbox_t mbox, void *data)
{
    if( !data ) 
	data = (void*)&pvNullPointer;
    (void)OSQPost( mbox->pQ, data);
}

/*-----------------------------------------------------------------------------------*/
u16_t
sys_arch_mbox_fetch(sys_mbox_t mbox, void **data, u16_t timeout)
{
    u8_t     ucErr;
    u16_t ucos_timeout;
  //yangye 2003-1-27
  //in lwip ,timeout is  millisecond 
  //in ucosII ,timeout is timer  tick! 
  //chang timeout from millisecond to ucos tick
  ucos_timeout = 0;
  if(timeout != 0){
  ucos_timeout = (timeout * OS_TICKS_PER_SEC)/1000;
  if(ucos_timeout < 1)
  	ucos_timeout = 1;
  else if(ucos_timeout > 65535)
  	ucos_timeout = 65535;
  }  
    
  //yangye 2003-1-29
  //it is very importent!!!! 
  //sometimes lwip calls sys_mbox_fetch(mbox,NULL)
  //it is dangrous to return (void *) to NULL ! (from OSQPend())
  if(data != NULL){
    *data = OSQPend( mbox->pQ, (u16_t)ucos_timeout, &ucErr );        
  }else{
    //just discard return value if data==NULL
    OSQPend(mbox->pQ,(u16_t)ucos_timeout,&ucErr);
  }
    
  if( ucErr == OS_TIMEOUT ) {
        timeout = 0;
    } else {
      if(*data == (void*)&pvNullPointer ) 
	  *data = NULL;
      timeout = 1;
    }
  return timeout;
}

/*-----------------------------------------------------------------------------------*/

sys_sem_t sys_sem_new(u8_t count)
{
    sys_sem_t pSem;
    pSem = OSSemCreate((u16_t)count );
    return pSem;
}

/*-----------------------------------------------------------------------------------*/

void sys_sem_signal(sys_sem_t sem)
{
    u8_t     ucErr;
    ucErr = OSSemPost((OS_EVENT *)sem );
}

/*-----------------------------------------------------------------------------------*/
//yangye 2003-1-25
u16_t sys_arch_sem_wait(sys_sem_t sem, u16_t timeout)
{
  u8_t err;
  u32_t ucos_timeout;
  //yangye 2003-1-27
  //in lwip ,timeout is  millisecond 
  //in ucosII ,timeout is timer  tick! 
  //chang timeout from millisecond to ucos tick
  ucos_timeout = 0;
  if(timeout != 0){
  ucos_timeout = (timeout * OS_TICKS_PER_SEC)/1000;
  if(ucos_timeout < 1)
  	ucos_timeout = 1;
  else if(ucos_timeout > 65535)
  	ucos_timeout = 65535;
  }
  	
  OSSemPend ((OS_EVENT *)sem,(u16_t)ucos_timeout, (u8_t *)&err);
  //should not return 0 when wait time is 0, only when timeout!
  //see sys_arch.txt in doc 
  if(err == OS_TIMEOUT)
  	return 0;
  else
  	return 1;
}

/*-----------------------------------------------------------------------------------*/

void sys_sem_free(sys_sem_t sem)
{
    u8_t     ucErr;
    (void)OSSemDel((OS_EVENT *)sem, OS_DEL_NO_PEND, &ucErr );
}

/*-----------------------------------------------------------------------------------*/
void sys_init(void)
{
    u8_t i;
    //this func is called first in lwip task!
    INT8U   ucErr;
    //init mem used by sys_mbox_t
    //use ucosII functions
    pQueueMem = OSMemCreate( (void*)pcQueueMemoryPool, MAX_QUEUES, sizeof(TQ_DESCR), &ucErr );
                            //為消息隊(duì)創(chuàng)建內(nèi)存分區(qū)
    //init lwip task prio offset
    curr_prio_offset = 0;
    //init lwip_timeouts for every lwip task
    for(i=0;i<LWIP_TASK_MAX;i++){
    	lwip_timeouts[i].next = NULL;
    }              //初始化LWIP定時(shí)事件表
}
/*-----------------------------------------------------------------------------------*/

/*----------------------------------------------------------------------*/
struct sys_timeouts * sys_arch_timeouts(void)
{
  u8_t curr_prio;
  s16_t err,offset;
  OS_TCB curr_task_pcb; 
    
  null_timeouts.next = NULL;
  //get current task prio
  err = OSTaskQuery(OS_PRIO_SELF,&curr_task_pcb);
  curr_prio = curr_task_pcb.OSTCBPrio;
  
  offset = curr_prio - LWIP_START_PRIO;
  //not called by a lwip task ,return timeouts->NULL
  if(offset < 0 || offset >= LWIP_TASK_MAX)
  {
    return &null_timeouts;
  }

  return &lwip_timeouts[offset];
}
/*------------------------------------------------------------------------*/



void
sys_thread_new(void (* function)(void *arg), void *arg,u8_t prio_offset)
{

  if(curr_prio_offset < LWIP_TASK_MAX){
  
    OSTaskCreate(function, (void *)0x1111, &LWIP_TASK_STK[curr_prio_offset][LWIP_STK_SIZE-1],LWIP_START_PRIO+prio_offset );
    curr_prio_offset++; 
  } else {
    // PRINT(" lwip task prio out of range ! error! ");
  }
}







?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产午夜精品一区二区三区四区| 欧美成人三级在线| 亚洲一区二区三区四区五区黄| 欧美一区二区三区啪啪| www.亚洲在线| 精品一区二区在线播放| 亚洲综合丝袜美腿| 国产日产欧美精品一区二区三区| 欧美日韩国产电影| 国产成人av电影免费在线观看| 午夜在线电影亚洲一区| 国产精品国产三级国产aⅴ无密码| 欧美一级国产精品| 在线观看91视频| 成人毛片视频在线观看| 久久精品久久综合| 亚洲线精品一区二区三区八戒| 国产精品欧美精品| 久久只精品国产| 日韩亚洲电影在线| 欧美性感一区二区三区| 97精品国产97久久久久久久久久久久| 久久99精品久久久久久国产越南| 亚洲国产一区二区三区| 日韩一区在线看| 日本一区二区三级电影在线观看| 日韩欧美中文字幕公布| 欧美精品久久一区| 在线欧美日韩国产| 91美女精品福利| 99视频精品全部免费在线| 国产成人在线色| 国产美女一区二区三区| 久久精品国产99国产精品| 日韩精品一区第一页| 亚洲一区二区三区视频在线| 亚洲天堂免费看| 亚洲乱码国产乱码精品精小说| 亚洲欧美在线视频观看| 国产精品色哟哟网站| 国产农村妇女精品| 欧美极品xxx| 国产精品传媒入口麻豆| 中文字幕一区二区三区在线播放 | 欧美剧情电影在线观看完整版免费励志电影| 色综合久久久久综合| 99久久久国产精品| 色哟哟在线观看一区二区三区| 色综合天天做天天爱| 91片在线免费观看| 日本道色综合久久| 欧美日韩一区在线观看| 欧美男人的天堂一二区| 欧美日韩国产高清一区二区| 欧美一区二区私人影院日本| 日韩三级视频中文字幕| 亚洲精品一区二区三区蜜桃下载| 精品盗摄一区二区三区| 国产女人aaa级久久久级| 中文字幕免费在线观看视频一区| 中文字幕在线不卡一区二区三区| 亚洲自拍偷拍网站| 婷婷六月综合网| 久久99精品视频| 丁香六月久久综合狠狠色| 99久久精品免费看| 欧美视频中文字幕| 日韩欧美国产综合一区 | 欧美一区二区黄色| 久久精品视频网| 亚洲三级在线播放| 午夜欧美电影在线观看| 久久av资源网| 99在线精品观看| 欧美绝品在线观看成人午夜影视| 2024国产精品视频| 亚洲三级小视频| 日韩 欧美一区二区三区| 国产一区二区三区四区五区美女| 99久久久久久99| 337p亚洲精品色噜噜狠狠| 久久天堂av综合合色蜜桃网| 亚洲天堂精品在线观看| 男女视频一区二区| 波多野结衣亚洲一区| 在线电影院国产精品| 久久精品视频免费| 亚洲成av人片一区二区| 国产伦精品一区二区三区免费迷| 色就色 综合激情| 精品成人在线观看| 一区二区三区在线观看欧美| 久久99精品国产麻豆婷婷洗澡| 一道本成人在线| 久久婷婷一区二区三区| 亚洲国产精品久久艾草纯爱| 国产精品一区二区x88av| 欧美在线免费播放| 日本一区二区三区四区 | 蜜臀国产一区二区三区在线播放| 成av人片一区二区| 欧美一级久久久久久久大片| 一区二区三区在线观看国产| 国产一区二区91| 欧美日韩激情在线| 国产精品久久福利| 激情综合色综合久久综合| 欧美专区亚洲专区| 中文字幕av一区二区三区免费看| 蜜桃精品视频在线观看| 欧洲国内综合视频| 国产精品美女久久久久久2018 | 日韩欧美区一区二| 亚洲一区二区三区中文字幕在线| 国产999精品久久| 精品国产乱码久久久久久免费| 亚洲chinese男男1069| 91麻豆免费观看| 国产精品久久久久天堂| 久久不见久久见中文字幕免费| 欧美妇女性影城| 亚洲午夜电影在线观看| 99精品视频中文字幕| 国产欧美综合色| 国产一区二区91| www日韩大片| 国模冰冰炮一区二区| 日韩美女视频在线| 日产欧产美韩系列久久99| 欧美中文一区二区三区| 亚洲精品国产a| 色呦呦网站一区| 一区二区三区成人在线视频| 91香蕉视频污| 亚洲色图另类专区| 99久久精品免费看国产| 成人欧美一区二区三区黑人麻豆 | 欧美日韩国产免费一区二区| 亚洲自拍偷拍九九九| 色欧美乱欧美15图片| 亚洲桃色在线一区| 91女神在线视频| 国产精品888| 久久久久久亚洲综合影院红桃| 国模大尺度一区二区三区| 久久免费的精品国产v∧| 国产黑丝在线一区二区三区| 亚洲国产高清aⅴ视频| av成人免费在线观看| 成人欧美一区二区三区小说| 色婷婷精品久久二区二区蜜臂av | 欧美精品久久99| 青青青伊人色综合久久| 精品理论电影在线观看| 国产精品综合视频| 欧美国产日韩a欧美在线观看| 99精品视频在线观看免费| 一区二区在线观看视频| 欧美日韩国产a| 久久99精品国产.久久久久| 久久久激情视频| 91在线码无精品| 亚洲成人免费在线观看| 欧美一级日韩一级| 国产精品91xxx| 一区二区三区日韩在线观看| 3d动漫精品啪啪| 丁香桃色午夜亚洲一区二区三区| 亚洲天天做日日做天天谢日日欢| 欧美日韩中文国产| 精品一二线国产| 中文字幕日韩欧美一区二区三区| 欧美午夜免费电影| 久久精品国产精品亚洲综合| 国产精品久久久久桃色tv| 欧美撒尿777hd撒尿| 韩国女主播成人在线| 成人欧美一区二区三区小说 | 图片区小说区区亚洲影院| 亚洲精品一区二区三区精华液| av激情综合网| 日产国产高清一区二区三区 | 免费成人av资源网| 久久精品人人爽人人爽| 色综合色综合色综合色综合色综合 | 91首页免费视频| 老鸭窝一区二区久久精品| 国产精品护士白丝一区av| 欧美日韩午夜在线视频| 国产91精品在线观看| 午夜精品久久久久久久久| 国产亚洲va综合人人澡精品| 欧美日韩一区二区电影| 国产成人在线电影| 午夜精品免费在线观看| 国产精品护士白丝一区av| 日韩美女视频一区二区在线观看| 91成人网在线| 丰满放荡岳乱妇91ww| 麻豆精品在线视频|