fm_defs.h

来自「NecluesRTX RTOS的源码」· C头文件 代码 · 共 100 行

H
100
字号
/************************************************************************/
/*                                                                      */
/*              Copyright 1990 by Accelerated Technology                */
/*                                                                      */
/*  PROPRIETARY RIGHTS of Accelerated Technology are involved in the    */
/*  subject matter of this material.  All manufacturing, reproduction,  */
/*  use, and sales rights pertaining to this subject matter are         */
/*  governed by the license agreement.  The buyer or recipient of this  */
/*  package, implicitly accepts the terms of the license.               */
/*                                                                      */
/************************************************************************/

/************************************************************************/
/*                                                                      */
/*  FILE DESCRIPTION                                                    */
/*                                                                      */
/*  This file contains the description of the Fixed Length Memory       */
/*  Management structures and associated suspension structures.         */
/*                                                                      */
/*  ROUTINES                                                            */
/*                                                                      */
/*      None                                                            */
/*                                                                      */
/*  NOTES                                                               */
/*                                                                      */
/*      None                                                            */
/*                                                                      */
/************************************************************************/

/* Define the test patterns that are placed on the front and back sides of 
   the memory headers.  Through examination of these fields, nucleus can 
   detect (in most cases) whether or not the header has been corrupted.  */

#define            TOP_PATTERN       0x1234
#define            BOTTOM_PATTERN    0x5678


/* The structure "FM_SUSPENSION_STRUCT" defines the information necessary 
   to suspend a task for a particular partition type.  This structure is 
   allocated off of calling application's stack.  */

struct FM_SUSPENSION_STRUCT 
{
    unsigned int             fm_not_used;   /* Not used                 */
    /* Note that the pointers must be one unsigned after the front of the 
       list in order to be compatible with the linked list management.  */
    struct FM_SUSPENSION_STRUCT
                            *fm_next_susp,  /* Next suspension ptr      */
                            *fm_prev_susp;  /* Previous suspension ptr  */
    signed int               fm_task_id;    /* Task suspended           */
    signed int               fm_partition_id;/* ID of partition          */
    unsigned int           **fm_return_addr;/* Address to return value  */
};


/* The structure "FM_BLOCK_HEADER_STRUCT" defines the information necessary 
   for management of a system partition.  */

struct FM_BLOCK_HEADER_STRUCT 
{
    unsigned int             fm_pattern_1;  /* Test pattern at the top  */
    /* Note that the pointers must be one unsigned after the top of the 
       list in order to be compatible with the linked list management.  */
    struct FM_BLOCK_HEADER_STRUCT
                            *fm_next_block, /* Next block ptr           */
                            *fm_prev_block; /* Previous block ptr       */
    signed int               fm_task_id;    /* Task that allocated it   */
    signed int               fm_in_use;     /* Partition is in use      */
    signed int              fm_partition_id;/* ID of partition          */
    unsigned int             fm_pattern_2;  /* Test pattern on bottom   */
};


/* The structure "FM_LIST_STRUCT" defines the information necessary 
   for management of a linked list.  */

struct FM_LIST_STRUCT 
{
    unsigned int             fm_not_used;   /* Not used for anything    */
    struct FM_LIST_STRUCT   *fm_next_ptr,   /* Next ptr                 */
                            *fm_prev_ptr;   /* Previous ptr             */
};


/* The structure "FM_PARTITION_CONTROL_STRUCT" defines the information 
   necessary to manage allocation/deallocation of a partition.  In the file 
   "FM.C" an array of these structures is allocated relative to the 
   specification in the file "IN_DATA.C."  */

struct FM_BLOCK_CONTROL_STRUCT 
{
    struct FM_BLOCK_HEADER_STRUCT
                        *fm_available_head, /* Available list head      */
                        *fm_available_tail; /* Available list tail      */
    int                  fm_free_partitions;/* Number of free partitions*/
    struct FM_SUSPENSION_STRUCT
                        *fm_alloc_wait_head,/* Partition not available  */
                        *fm_alloc_wait_tail;/* Partition not available  */
};

⌨️ 快捷键说明

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