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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? stos.c

?? stos Linux 源碼示范程序。 可以移植到其他平臺
?? C
?? 第 1 頁 / 共 3 頁
字號:
/*****************************************************************************

File name   :  stos.c

Description :  Operating system independence file.

               COPYRIGHT (C) STMicroelectronics 2005.

Date               Modification                                          Name
----               ------------                                          ----
04/05/2005         Added support for semaphore calls                     DG
05/01/2005         Created                                               MH

*****************************************************************************/

/*#######################################################################*/
/*########################## INCLUDES FILE ##############################*/
/*#######################################################################*/

/* --- Includes -------------------------------------------------------- */
#if !defined ST_OSLINUX || (defined ST_OSLINUX && !defined MODULE)
/* MODULE is a Linux specific define, if not defined current working space is USER space */
#include <stdio.h>
#include <assert.h>
#endif

#if defined ST_OSLINUX && defined MODULE
#include <linux/kthread.h>
#include <linux/kernel.h>
#endif

#include "stos.h"

#if !defined ST_OSLINUX
#include "stsys.h"
/* Define to add debug info */
/* define STOS_DEBUG */
#if defined(STOS_DEBUG)
#include "sttbx.h"
#else
#define STTBX_Print(x) {}
#endif
#endif  /* ST_OSLINUX */

/*#######################################################################*/
/*########################### DEFINITION ################################*/
/*#######################################################################*/

/* --- Constants (default values) -------------------------------------- */

/* --- Global variables ------------------------------------------------ */

/* --- Prototype ------------------------------------------------------- */

/* --- Externals ------------------------------------------------------- */


/*******************************************************************************
Name        : STOS_GetRevision
Description : Get revision of the STOS driver
Parameters  :
Assumptions :
Limitations :
Returns     :
*******************************************************************************/
ST_Revision_t STOS_GetRevision(void)
{
  static const char Revision[] = "STOS-REL_1.4.2";

  return((ST_Revision_t) Revision);
}

/*******************************************************************************
Name        : STOS_TaskCreate
Description : Common call to OS20 and OS21 for task creation
Parameters  :
Assumptions :
Limitations :
Returns     : ST_NO_ERROR, ST_ERROR_NO_MEMORY
*******************************************************************************/
ST_ErrorCode_t  STOS_TaskCreate   (void (*Function)(void* Param),
                                        void* Param,
                                        partition_t* StackPartition,
                                        size_t StackSize,
                                        void** Stack,
                                        partition_t* TaskPartition,
                                        task_t** Task,
                                        tdesc_t* Tdesc,
                                        int Priority,
                                        const char* Name,
                                        task_flags_t Flags )
{
#if defined (ST_OS20)

    ST_ErrorCode_t Error = ST_NO_ERROR;

    *Stack = (void *) memory_allocate(StackPartition, StackSize);
    if(*Stack == NULL)
    {
        STTBX_Print(("ERROR: Couldn't Allocate memory for task %s's stack\n", Name));
        Error = ST_ERROR_NO_MEMORY;
    }
    else
    {
        *Task = (void *) memory_allocate(TaskPartition, sizeof(task_t));
        if(*Task == NULL)
        {
            STTBX_Print(("ERROR: Couldn't Allocate memory for task %s\n", Name));

            /* deallocate memory for the stack*/
            memory_deallocate((void *) StackPartition, *Stack);
            Error = ST_ERROR_NO_MEMORY;
        }
    }

    if(Error == ST_NO_ERROR)
    {
        Error = task_init( Function, Param, *Stack, StackSize, *Task, Tdesc, Priority, Name, 0);

        if (Error != STOS_SUCCESS)
        {
            STTBX_Print(("ERROR: Couldn't create task %s\n", Name));
            Error = ST_ERROR_NO_MEMORY;
        }
    }
    return Error;

#elif defined (ST_OS21)

    *Task = task_create_p(TaskPartition, Function, Param, StackPartition, StackSize,
                          Priority, Name, Flags | task_flags_no_min_stack_size);

    if(*Task == NULL)
    {
        STTBX_Print(("ERROR: Couldn't create task %s\n", Name ));
        return ST_ERROR_NO_MEMORY;
    }
    return(ST_NO_ERROR);
#elif defined (ST_OSLINUX)

#ifdef MODULE
/* MODULE is a Linux specific define, if not defined current working space is USER space */
    struct sched_param  SchedParam;

    *Task = kthread_run((int(*)(void *))Function, (void *) Param, "%s", Name);
    if( IS_ERR((*Task)) )
    {
        STTBX_Print(("%s: Error task creation.\n", Name));
        return(ST_ERROR_BAD_PARAMETER);
    }
    else
    {
        SchedParam.sched_priority = Priority;
        if (STLINUX_sched_setscheduler((*Task)->pid, SCHED_RR, &SchedParam) < 0)
        {
            STTBX_Print(("%s: could not switch thread %d to RT\n", Name, (*Task)->pid));
        }
        else
        {
            STTBX_Print(("Thread %s created: RT priority=%d, PID=%d\n", Name, Priority, (*Task)->pid));
        }
    }

    return(ST_NO_ERROR);
#else
    if (pthread_create(*Task, NULL, (void*)Function, (void *)Param))
	{
        return(ST_ERROR_BAD_PARAMETER);
	}
    return(ST_NO_ERROR);
#endif  /* MODULE */

#else
    #error STOS_TaskCreate() can only be used with OS20, OS21 or LINUX!
#endif
}

/*******************************************************************************
Name        : STOS_TaskDelete
Description : Common call to OS20 and OS21 for task deletion
Parameters  :
Assumptions :
Limitations :
Returns     : ST_NO_ERROR or ST_ERROR_TIMEOUT
*******************************************************************************/
ST_ErrorCode_t  STOS_TaskDelete ( task_t* Task,
                                  partition_t* TaskPartition,
                                  void* Stack,
                                  partition_t* StackPartition )
{
#if defined (ST_OS20)

    ST_ErrorCode_t Error = ST_NO_ERROR;

    if(task_delete(Task) != 0)
    {
        STTBX_Print(("ERROR: Couldn't delete Task - it may not have terminated...\n"));
        Error = ST_ERROR_TIMEOUT;
    }
    else
    {
        /* Deallocate the task memory */
        memory_deallocate((void *)TaskPartition, Task);

        /* Deallocate the stack memory */
        memory_deallocate((void *)StackPartition, Stack);
    }
    return Error;
#elif defined (ST_OS21)

    if( task_delete(Task) == STOS_SUCCESS)
    {
        STTBX_Print(("Task Deleted Successfully\n"));
        return ST_NO_ERROR;
    }
    else
    {
        STTBX_Print(("ERROR: Couldn't delete Task - it may not have terminated...\n"));
        return ST_ERROR_TIMEOUT;
    }

#elif defined (ST_OSLINUX)

#ifdef MODULE
/* MODULE is a Linux specific define, if not defined current working space is USER space */
    /* Nothing to do */
    return ST_NO_ERROR;
#else
    if (Task == NULL)    
    {
        return ST_ERROR_BAD_PARAMETER;
    }

    if (pthread_cancel(*Task))
    {
        STTBX_Print(("ERROR: Couldn't delete Task - it may not have terminated...\n"));
        return ST_ERROR_TIMEOUT;
    }

    return ST_NO_ERROR;
#endif  /* MODULE */

#else
    #error STOS_TaskDelete() can only be used with OS20, OS21 or LINUX!
#endif
}

/*******************************************************************************
Name        : STOS_TaskWait
Description : Common call to OS20 and OS21 for task deletion wait
Parameters  :
Assumptions :
Limitations :
Returns     : ST_NO_ERROR or ST_ERROR_TIMEOUT
*******************************************************************************/
ST_ErrorCode_t  STOS_TaskWait ( task_t** Task, const STOS_Clock_t * TimeOutValue_p )
{
#if defined (ST_OS20) || defined (ST_OS21)
    ST_ErrorCode_t   ret;
    ret = task_wait(Task, 1, (STOS_Clock_t *)TimeOutValue_p);

    return ret;

#elif defined (ST_OSLINUX)

#ifdef MODULE
/* MODULE is a Linux specific define, if not defined current working space is USER space */
    kill_proc((*Task)->pid, SIGKILL, 1);
    kthread_stop(*Task);

    return ST_NO_ERROR;
#else
    Task = Task;                        /* To avoid warnings */
    TimeOutValue_p = TimeOutValue_p;    /* To avoid warnings */
    
    return ST_NO_ERROR;
#endif  /* MODULE */

#else
    #error STOS_TaskWait() can only be used with OS20, OS21 or LINUX!
#endif
}

/*******************************************************************************
Name        : STOS_TaskEnter
Description : Common call to OS20, OS21 and LINUX for task entering
Parameters  :
Assumptions :
Limitations :
Returns     : ST_NO_ERROR
*******************************************************************************/
ST_ErrorCode_t  STOS_TaskEnter ( void * Param )
{
    Param = Param;   /* To avoid warnings */

#if defined (ST_OS20) || defined (ST_OS21)
    /* Nothing to do */

    return ST_NO_ERROR;

#elif defined (ST_OSLINUX)

#ifdef MODULE
    set_current_state(TASK_INTERRUPTIBLE);
    allow_signal(SIGKILL);

    return ST_NO_ERROR;
#else
    return ST_NO_ERROR;
#endif  /* MODULE */

#else
    #error STOS_TaskEnter() can only be used with OS20, OS21 or LINUX!
#endif
}

/*******************************************************************************
Name        : STOS_TaskExit
Description : Common call to OS20, OS21 and LINUX for task exiting
Parameters  :
Assumptions :

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人综合亚洲91猫咪| 精品国产污污免费网站入口 | 成人在线一区二区三区| 欧美在线一区二区| 一区二区三区在线播| 丰满亚洲少妇av| 久久久久久99久久久精品网站| 亚洲成av人片观看| 欧美日韩在线播放| 亚洲国产综合视频在线观看| 色婷婷亚洲婷婷| 亚洲自拍另类综合| 在线看不卡av| 污片在线观看一区二区| 欧美疯狂做受xxxx富婆| 日韩黄色免费电影| 日韩欧美二区三区| 国产一区二区三区电影在线观看 | 菠萝蜜视频在线观看一区| 精品国产一区二区三区久久久蜜月 | 亚洲精品一区二区三区精华液 | 91成人在线精品| 一区二区视频在线看| 欧美精品自拍偷拍| 激情另类小说区图片区视频区| 2024国产精品| 成人精品鲁一区一区二区| 亚洲精品成人少妇| 日韩精品中午字幕| 欧美一区三区二区| 欧美激情在线观看视频免费| 国内精品自线一区二区三区视频| 亚洲精品一区二区三区蜜桃下载| 成人的网站免费观看| 亚洲综合免费观看高清完整版| 日韩欧美黄色影院| 91视频观看免费| 狠狠色狠狠色综合系列| 亚洲免费观看高清完整版在线观看| 在线成人午夜影院| 91亚洲国产成人精品一区二三| 日韩精品乱码免费| 亚洲成人激情社区| 久久夜色精品一区| 91精品一区二区三区久久久久久| 99精品国产99久久久久久白柏| 久久99久久久欧美国产| 日韩国产欧美三级| 午夜精品久久一牛影视| 亚洲一区二区在线免费看| 国产精品国产自产拍高清av| 欧美精品一区二区三区很污很色的| 欧美日韩久久久一区| 欧美日韩亚洲高清一区二区| 色婷婷一区二区| 欧美中文字幕一区| 欧美日韩中字一区| 欧美一区二区三区男人的天堂| 欧美乱熟臀69xxxxxx| 欧美日韩亚洲丝袜制服| 欧美日韩一二区| 欧美一区二区三区在线观看| 日韩欧美高清在线| 国产婷婷色一区二区三区| 国产精品黄色在线观看| 亚洲美女屁股眼交3| 天堂精品中文字幕在线| 久久 天天综合| 99在线精品免费| 国产专区欧美精品| 视频在线在亚洲| 秋霞国产午夜精品免费视频| 日韩电影在线一区| 成人高清视频在线观看| 欧洲国产伦久久久久久久| 日韩写真欧美这视频| 日本一区二区成人在线| 香蕉加勒比综合久久| 国产一区二区电影| 欧美放荡的少妇| 国产喷白浆一区二区三区| 亚洲欧美色一区| 国产高清一区日本| 欧美乱妇15p| 亚洲男人的天堂av| 国产精品一区在线| 69av一区二区三区| 国产精品乱码一区二三区小蝌蚪| 日韩精品一级二级| 99精品视频中文字幕| 久久久美女毛片| 亚洲福利视频一区| 成人永久免费视频| 久久午夜羞羞影院免费观看| 亚洲一二三区在线观看| 成人免费视频国产在线观看| 久久五月婷婷丁香社区| 奇米影视在线99精品| 欧美日本一区二区在线观看| 综合色中文字幕| 不卡电影一区二区三区| 久久天堂av综合合色蜜桃网| 免费视频一区二区| 日韩亚洲欧美中文三级| 日韩精彩视频在线观看| 3d动漫精品啪啪| 麻豆视频一区二区| 欧美va亚洲va香蕉在线 | 日韩精品中午字幕| 久久精品国产免费| 国产色一区二区| 国产精品亚洲专一区二区三区| 韩国欧美国产1区| 久久久www成人免费毛片麻豆 | 老汉av免费一区二区三区| 欧美成人精品高清在线播放| 精品一区二区免费| 欧美韩日一区二区三区四区| 99麻豆久久久国产精品免费优播| 亚洲综合在线第一页| 欧美日韩一区二区欧美激情| 蜜桃传媒麻豆第一区在线观看| 精品久久久网站| 91污片在线观看| 免费欧美高清视频| 中文字幕在线一区| 欧美蜜桃一区二区三区| 精品一区二区影视| 亚洲精品菠萝久久久久久久| 日韩一区二区在线看| 99re这里只有精品6| 麻豆成人久久精品二区三区红 | 精品国产乱码久久久久久浪潮| 成人小视频免费在线观看| 午夜影院在线观看欧美| 亚洲日本韩国一区| 久久精品亚洲乱码伦伦中文 | 一区二区欧美在线观看| 欧美精品一区二区三区在线播放| 91蝌蚪porny成人天涯| 经典三级一区二区| 免费人成精品欧美精品| 亚洲尤物在线视频观看| 亚洲视频你懂的| 国产精品日韩精品欧美在线| 日韩视频一区二区三区在线播放 | 91啦中文在线观看| 免费高清在线视频一区·| 久久亚洲二区三区| 欧美乱妇23p| 欧美日韩在线观看一区二区| 色综合久久综合网欧美综合网 | 成人激情免费网站| 国产高清久久久久| 国产98色在线|日韩| 精东粉嫩av免费一区二区三区 | 亚洲欧美福利一区二区| 成人欧美一区二区三区| 亚洲精品中文字幕在线观看| 自拍偷拍国产精品| 亚洲精品第一国产综合野| 亚洲午夜一区二区| 日韩国产在线观看一区| 亚洲一区av在线| 美国三级日本三级久久99| 精品一区二区久久| av在线不卡网| 欧美日韩精品福利| 国产精品视频你懂的| 亚洲精品欧美激情| 日本欧美肥老太交大片| 成人综合婷婷国产精品久久蜜臀 | 国产不卡免费视频| 欧美伊人久久久久久午夜久久久久| 欧美日本一区二区三区| 国产精品―色哟哟| 男男视频亚洲欧美| 色婷婷久久99综合精品jk白丝 | 欧美在线一区二区三区| 欧美tickle裸体挠脚心vk| 亚洲人成亚洲人成在线观看图片 | 亚洲综合色网站| 国产黄色成人av| 337p亚洲精品色噜噜噜| 亚洲欧洲av另类| 国产露脸91国语对白| 欧美乱熟臀69xxxxxx| 亚洲免费在线电影| 不卡的av在线播放| 久久久91精品国产一区二区三区| 亚洲综合在线免费观看| 亚洲高清免费视频| 91精品91久久久中77777| 日本一区二区高清| 国产一区二区不卡| 精品91自产拍在线观看一区| 免费不卡在线观看| 91精品国产福利| 亚洲精品综合在线| 色噜噜狠狠一区二区三区果冻|