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

📄 canfixedll.h

📁 cpc-1631的BSP包for VxWorks操作系统
💻 H
字号:
/* canFixedLL.h - WN-CAN fixed-node linked lists */

/* Copyright 2002 Wind River Systems, Inc. */

/* 
modification history 
--------------------
07nov02,rgp written

*/

/* 

DESCRIPTION
The file defines the fixed-node linked lists. A fixed-object linked list is
a normal linked list, except that each node in the linked is statically allocated.
Therefore, this list does not use any dynamic memory.

As a result, there may only be limited use of the linked lists.

In addition, since we want to use common code with what essentially
amounts to sub-classes of the nodes (i.e. specific data for each
separate linked list), define all data within this header file.

*/

#ifndef CAN_FIXEDLL_H_
#define CAN_FIXEDLL_H_

#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */

#include "CAN/wnCAN.h"
#include "CAN/canBoard.h"
#include "CAN/canController.h"

/* Define Common Fixed-Node Data Structure */
typedef struct _fll_node 
{
    struct _fll_node *pNext;       /* next node ptr */
    int               key;         /* identifying key value for each node */
    
    /* define union for all uses of our linked list. This is effectively
    ** our sub-classing of the data structure
    **/
    union 
    {
        /* board's linked list data */
        struct 
	{
	  pfn_Board_EstabLnks_Type  establinks_fn;  /* establishlinks function */
	  pfn_Board_Open_Type       open_fn;        /* open function */
	  pfn_Board_Close_Type      close_fn;       /* close function */
          pfn_Board_Show_Type       show_fn;        /* show function */
        } boarddata;

        /* controller's linked list data */
	struct {
	  pfn_Ctrlr_EstabLnks_Type  establinks_fn;  /* establishlinks function */
	} controllerdata;    

    } nodedata;

} FLL_NodeType;


/* define types for each of the supported lists */
typedef FLL_NodeType BoardLLNode;
typedef FLL_NodeType ControllerLLNode;


/* define struct for an instance of the linked-list */
typedef struct _fll_instance
{
    FLL_NodeType *pFirst;
} FLL_RootType;



/* Linked List APIs */
void FLL_Create(FLL_RootType*);
void FLL_Add(FLL_RootType*, FLL_NodeType*);
FLL_NodeType *FLL_Find(FLL_RootType*, int key);

#define FLL_FirstNode(rootptr)    ( (rootptr) ? (rootptr)->pFirst : NULL )
#define FLL_NextNode(nodeptr)     ( (nodeptr) ? (nodeptr)->pNext : NULL )

/***************************************************************************/
/***************************************************************************/
/***************************************************************************/
/* due do the recursive includes of canboard,cancontroller and this file,
** need to declare the extern'd global variables here becase the root type
** is now fully resolved.
*/
extern FLL_RootType g_BoardLLRoot;
extern FLL_RootType g_ControllerLLRoot;

#ifdef __cplusplus
}
#endif /* __cplusplus */


#endif /* CAN_FIXEDLL_H_ */

⌨️ 快捷键说明

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