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

📄 tx_api.h

📁 ThreadX for BLACKFIN BF561的源码。基于BLACKFIN的处理器。
💻 H
📖 第 1 页 / 共 3 页
字号:
/**************************************************************************/ 
/*                                                                        */ 
/*            Copyright (c) 1996-2003 by Express Logic Inc.               */ 
/*                                                                        */ 
/*  This software is copyrighted by and is the sole property of Express   */ 
/*  Logic, Inc.  All rights, title, ownership, or other interests         */ 
/*  in the software remain the property of Express Logic, Inc.  This      */ 
/*  software may only be used in accordance with the corresponding        */ 
/*  license agreement.  Any unauthorized use, duplication, transmission,  */ 
/*  distribution, or disclosure of this software is expressly forbidden.  */ 
/*                                                                        */
/*  This Copyright notice may not be removed or modified without prior    */ 
/*  written consent of Express Logic, Inc.                                */ 
/*                                                                        */ 
/*  Express Logic, Inc. reserves the right to modify this software        */ 
/*  without notice.                                                       */ 
/*                                                                        */ 
/*  Express Logic, Inc.                     info@expresslogic.com         */
/*  11423 West Bernardo Court               http://www.expresslogic.com   */
/*  San Diego, CA  92127                                                  */
/*                                                                        */
/**************************************************************************/


/**************************************************************************/
/**************************************************************************/
/**                                                                       */ 
/** ThreadX Component                                                     */
/**                                                                       */
/**   Application Interface (API)                                         */
/**                                                                       */
/**************************************************************************/
/**************************************************************************/


/**************************************************************************/ 
/*                                                                        */ 
/*  APPLICATION INTERFACE DEFINITION                       RELEASE        */ 
/*                                                                        */ 
/*    tx_api.h                                            PORTABLE C      */ 
/*                                                           4.0b         */ 
/*  AUTHOR                                                                */ 
/*                                                                        */ 
/*    William E. Lamie, Express Logic, Inc.                               */ 
/*                                                                        */ 
/*  DESCRIPTION                                                           */ 
/*                                                                        */ 
/*    This file defines the basic Application Interface (API) to the      */ 
/*    high-performance ThreadX real-time kernel.  All service prototypes  */ 
/*    and data structure definitions are defined in this file.            */ 
/*    Please note that basic data type definitions and other architecture-*/ 
/*    specific information is contained in the file tx_port.h.            */ 
/*                                                                        */ 
/*  RELEASE HISTORY                                                       */ 
/*                                                                        */ 
/*    DATE              NAME                      DESCRIPTION             */ 
/*                                                                        */ 
/*  12-31-1996     William E. Lamie         Initial Version 3.0           */ 
/*  07-04-1997     William E. Lamie         Added port-specific extension */ 
/*                                            define to thread control    */ 
/*                                            block for port-specific     */ 
/*                                            information, resulting in   */ 
/*                                            version 3.0a.               */ 
/*  11-11-1997     William E. Lamie         Modified several comments     */ 
/*                                            and added return value for  */ 
/*                                            lifting delayed suspend     */ 
/*                                            condition by the thread     */ 
/*                                            resume service, resulting   */ 
/*                                            in version 3.0b.            */ 
/*  01-01-1999     William E. Lamie         Modified comment(s),          */ 
/*                                            resulting in version 3.0e.  */ 
/*  11-01-1999     William E. Lamie         Modified comment(s), added    */ 
/*                                            logic to bring in the event */ 
/*                                            logging include file, and   */ 
/*                                            added a member to thread    */ 
/*                                            control block for compiler  */ 
/*                                            usage, resulting in         */ 
/*                                            version 3.0f.               */ 
/*  01-28-2001     William E. Lamie         Modified comment(s), added    */ 
/*                                            TX_MUTEX object, added new  */ 
/*                                            members to the thread       */ 
/*                                            control block, and          */ 
/*                                            added new service calls,    */ 
/*                                            resulting in version 4.0.   */ 
/*  07-15-2002     William E. Lamie         Modified comment(s), added    */ 
/*                                            logic to select API runtime */
/*                                            errors, declared            */ 
/*                                            tx_application_define as    */ 
/*                                            extern "C", and changed     */ 
/*                                            constant TX_FOREVER to      */ 
/*                                            TX_LOOP_FOREVER, resulting  */ 
/*                                            in version 4.0a.            */ 
/*  01-01-2003     William E. Lamie         Modified comment(s),          */ 
/*                                            resulting in version 4.0b.  */ 
/*                                                                        */ 
/**************************************************************************/ 

#ifndef  TX_API_H
#define  TX_API_H

/* Determine if a C++ compiler is being used.  If so, ensure that standard
   C is used to process the API information.  */

#ifdef   __cplusplus

/* Yes, C++ compiler is present.  Use standard C.  */
extern   "C" {

#endif


/* Include the port-specific data type file.  */
#include "tx_port.h"


/* Define basic constants for the ThreadX kernel.  */


/* API input parameters and general constants.  */

#define TX_NO_WAIT          0
#define TX_WAIT_FOREVER     0xFFFFFFFFUL
#define TX_AND              2
#define TX_AND_CLEAR        3
#define TX_OR               0
#define TX_OR_CLEAR         1
#define TX_1_ULONG          1
#define TX_2_ULONG          2
#define TX_4_ULONG          4
#define TX_8_ULONG          8
#define TX_16_ULONG         16
#define TX_NO_TIME_SLICE    0
#define TX_MAX_PRIORITIES   32
#define TX_AUTO_START       1
#define TX_DONT_START       0
#define TX_AUTO_ACTIVATE    1
#define TX_NO_ACTIVATE      0
#define TX_TRUE             1
#define TX_FALSE            0
#define TX_NULL             0
#define TX_LOOP_FOREVER     1
#define TX_INHERIT          1
#define TX_NO_INHERIT       0


/* Thread execution state values.  */

#define TX_READY            0
#define TX_COMPLETED        1
#define TX_TERMINATED       2
#define TX_SUSPENDED        3   
#define TX_SLEEP            4
#define TX_QUEUE_SUSP       5
#define TX_SEMAPHORE_SUSP   6
#define TX_EVENT_FLAG       7
#define TX_BLOCK_MEMORY     8
#define TX_BYTE_MEMORY      9
#define TX_IO_DRIVER        10
#define TX_FILE             11
#define TX_TCP_IP           12
#define TX_MUTEX_SUSP       13


/* API return values.  */

#define TX_SUCCESS          0x00
#define TX_DELETED          0x01
#define TX_NO_MEMORY        0x10
#define TX_POOL_ERROR       0x02
#define TX_PTR_ERROR        0x03
#define TX_WAIT_ERROR       0x04
#define TX_SIZE_ERROR       0x05
#define TX_GROUP_ERROR      0x06
#define TX_NO_EVENTS        0x07
#define TX_OPTION_ERROR     0x08
#define TX_QUEUE_ERROR      0x09
#define TX_QUEUE_EMPTY      0x0A
#define TX_QUEUE_FULL       0x0B
#define TX_SEMAPHORE_ERROR  0x0C
#define TX_NO_INSTANCE      0x0D
#define TX_THREAD_ERROR     0x0E
#define TX_PRIORITY_ERROR   0x0F
#define TX_START_ERROR      0x10
#define TX_DELETE_ERROR     0x11
#define TX_RESUME_ERROR     0x12
#define TX_CALLER_ERROR     0x13
#define TX_SUSPEND_ERROR    0x14
#define TX_TIMER_ERROR      0x15
#define TX_TICK_ERROR       0x16
#define TX_ACTIVATE_ERROR   0x17
#define TX_THRESH_ERROR     0x18
#define TX_SUSPEND_LIFTED   0x19
#define TX_WAIT_ABORTED     0x1A
#define TX_WAIT_ABORT_ERROR 0x1B
#define TX_MUTEX_ERROR      0x1C
#define TX_NOT_AVAILABLE    0x1D
#define TX_NOT_OWNED        0x1E
#define TX_INHERIT_ERROR    0x1F


/* Define the control block definitions for all system objects.  */


/* Define the basic timer management structures.  These are the structures 
   used to manage thread sleep, timeout, and user timer requests.  */

/* Define the common internal timer control block.  */

typedef  struct TX_INTERNAL_TIMER_STRUCT
{

    /* Define the remaining ticks and re-initialization tick value.  */
    ULONG       tx_remaining_ticks;
    ULONG       tx_re_initialize_ticks;

    /* Need to define remaining ticks, type, next and previous pointers, etc.  */
    VOID        (*tx_timeout_function)(ULONG);
    ULONG       tx_timeout_param;


    /* Define the next and previous internal link pointers for active
       internal timers.  */
    struct TX_INTERNAL_TIMER_STRUCT
                *tx_active_next,
                *tx_active_previous;

    /* Keep track of the pointer to the head of this list as well.  */
    struct TX_INTERNAL_TIMER_STRUCT
                **tx_list_head;
} TX_INTERNAL_TIMER;


/* Define the timer structure utilized by the application.  */

typedef  struct TX_TIMER_STRUCT
{

    /* Define the timer ID used for error checking.  */
    ULONG       tx_timer_id;

    /* Define the timer's name.  */
    CHAR_PTR    tx_timer_name;

    /* Define the expiration routine, parameter, initial expiration, and
       reschedule expiration.  */

    /* Define the actual contents of the timer.  This is the block that
       is used in the actual timer expiration processing.  */
    TX_INTERNAL_TIMER   tx_timer_internal;

    /* Define the pointers for the created list.  */
    struct TX_TIMER_STRUCT  
                *tx_timer_created_next,
                *tx_timer_created_previous;
} TX_TIMER;

typedef TX_TIMER *      TX_TIMER_PTR;


/* ThreadX thread control block structure follows.  Additional fields
   can be added providing they are added after the information that is
   referenced in the port-specific assembly code.  */

typedef  struct TX_THREAD_STRUCT
{
    /* The first section of the control block contains critical
       information that is referenced by the port-specific 
       assembly language code.  Any changes in this section could
       necessitate changes in the assembly language.  */
    ULONG       tx_thread_id;           /* Control block ID         */
    ULONG       tx_run_count;           /* Thread's run counter     */
    VOID_PTR    tx_stack_ptr;           /* Thread's stack pointer   */
    VOID_PTR    tx_stack_start;         /* Stack starting address   */
    VOID_PTR    tx_stack_end;           /* Stack ending address     */
    ULONG       tx_stack_size;          /* Stack size               */
    ULONG       tx_time_slice;          /* Current time-slice       */
    ULONG       tx_new_time_slice;      /* New time-slice           */

    /* Define pointers to the next and previous ready threads.  */ 
    struct TX_THREAD_STRUCT 
                *tx_ready_next,      
                *tx_ready_previous;

    /* Define the port extension field.  This typically is defined 
       to white space, but some ports of ThreadX may need to have 
       additional fields in the thread control block.  This is 
       defined in the file tx_port.h.  */
    TX_THREAD_PORT_EXTENSION
  
    /***************************************************************/  
         
    /* Nothing after this point is referenced by the target-specific

⌨️ 快捷键说明

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