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

📄 bgaschd.h

📁 RAID卡的测试程序
💻 H
字号:
/*******************************************************************************
 * Filename    : bgaschd.h
 * Description : bga schedule header file
 *               It provides the constant definitions, data structures and
 *               related functional routines.
 * Created on  : 06/19/03
 * CVS Version : $Id: bgaschd.h,v 1.5 2004/03/24 03:26:13 weny Exp $
 *
 * (C) Copyright Promise Technology Inc., 2003
 * All Rights Reserved
 ******************************************************************************/

#ifndef __PI_BGASCHEDULE_H__
#define __PI_BGASCHEDULE_H__

/* --- standard C lib header files ----------------------------------------- */

/* --- internal header files ----------------------------------------------- */
#include "schedule.h"
#include "i2limit.h"

/* --- constant definitions & data structures ------------------------------ */

#define BGAS_TYPE_MP    0
#define BGAS_TYPE_RC    1
#define BGAS_TYPE_BRC   2
#define BGAS_TYPE_SC    3
#define BGAS_TYPE_MG	4
#define BGAS_TYPE_RB	5
#define BGAS_TYPE_ALL   0xFF
#define MAX_LD_LIST	128
typedef struct
{
	u8 bs_u8BgaType; /* BGAS_TYPE_MP or BGAS_TYPE_RC */
	u8 bs_u8SeqNum; /* MP and RC schedule have their own independent sequence numbers */
	u8 bs_u8Reserved[2]; /* reserved for alignment */ 
	schedule_t bs_sSchedule;
} bga_schedule_t;

/*typedef struct
{
    bga_schedule_t bsSchedule;
	u16 reserved[MAX_LOGICAL_DRIVES];
} bga_schedule_t;*/

typedef struct
{
    bga_schedule_t brcs_bsSchedule;	
} brc_schedule_t;

typedef struct
{
    bga_schedule_t mps_bsSchedule;
} mp_schedule_t;

typedef struct
{
    bga_schedule_t ss_bsSchedule;
} sc_schedule_t; 

typedef struct
{
    bga_schedule_t ms_bsSchedule;
	u16 ms_u16RaidLevel; /* Migrate To Which One */
	u16 ms_u16LdId; /* LdId */
	u8  ms_u8ParityCount;
	u8  ms_u8SubArrayCount;
	u16 ms_u16NumberOfDevices; /* max is MAX_LOGICAL_DRIVES. If it 0, it means all logical drives */
    u16 ms_u16DeviceIds[2];
}mg_schedule_t;

typedef struct
{
    bga_schedule_t rs_bsSchedule;
	u16 rbs_u16LdId; /* LdId */
	u16 rbs_u16NumberOfDevices; /* max is MAX_LOGICAL_DRIVES. If it 0, it means all logical drives */
	u16 rbs_u16DeviceIds[2];
}rb_schedule_t;

typedef struct
{
    bga_schedule_t rcs_bsSchedule;
	boolean_t rcs_bFix; /* to fix or not to fix */  
	boolean_t rcs_bPause;   /* to pause or not to pause on error */
	u16 rcs_u16NumberOfDevices; /* max is MAX_LOGICAL_DRIVES. If it 0, it means all logical drives */
	u16 rcs_u16DeviceIds[2];
} rc_schedule_t;

//add 20060524
#define BGAS_OPSTATUS_NEW       0 /* the schedule is newly added/updated */
#define BGAS_OPSTATUS_PENDING   1 /* the bga schedule is pending for execution */
#define BGAS_OPSTATUS_RUNNING   2 /* the schedule is currently running */
#define SCHD_SEQNUM_AUTO  0xFF  /* auto seq num */
//add end
#define RC_SCHEDULE_SIZE(numOfDev) \
(((numOfDev) <= 2)?\
(sizeof(rc_schedule_t)):\
(sizeof(rc_schedule_t) + (((numOfDev)-2) * sizeof(u16))))

#define MG_SCHEDULE_SIZE(numOfDev) \
(((numOfDev) <= 2)?\
(sizeof(mg_schedule_t)):\
(sizeof(mg_schedule_t) + (((numOfDev)-2) * sizeof(u16))))

#define RB_SCHEDULE_SIZE(numOfDev) \
(((numOfDev) <= 2)?\
(sizeof(rb_schedule_t)):\
(sizeof(rb_schedule_t) + (((numOfDev)-2) * sizeof(u16))))
typedef struct
{
    bga_schedule_t rcs_bsSchedule;
    boolean_t rcs_bFix; /* to fix or not to fix */
    boolean_t rcs_bPause;   /* to pause or not to pause on error */
    u16 rcs_u16NumberOfDevices; /* max is MAX_LOGICAL_DRIVES. If it 0, it means all logical drives */
    u16 rcs_u16DeviceIds[MAX_LOGICAL_DRIVES];
} rc_schedule_setting_t;
typedef struct
{
    bga_schedule_t ms_bsSchedule;
	u16 ms_u16RaidLevel; /* Migrate To Which One */
	u16 ms_u16LdId; /* LdId */
	u8  ms_u8ParityCount;
	u8  ms_u8SubArrayCount;
	u16 ms_u16NumberOfDevices; /* max is MAX_LOGICAL_DRIVES. If it 0, it means all logical drives */
    u16 ms_u16DeviceIds[MAX_LOGICAL_DRIVES];	
} mg_schedule_setting_t;
typedef struct
{
    bga_schedule_t rs_bsSchedule;
	u16 rbs_u16LdId; /* LdId */
	u16 rbs_u16NumberOfDevices; /* max is MAX_LOGICAL_DRIVES. If it 0, it means all logical drives */
	u16 rbs_u16DeviceIds[MAX_LOGICAL_DRIVES];
	u16 reserved[2];
} rb_schedule_setting_t;

#define MAX_NUM_RC_SCHD 4
#define MAX_NUM_MG_SCHD 8
#define MAX_NUM_RB_SCHD 8
//modify 20060524  
typedef struct
{
#ifndef EMBEDDED
    u8 bss_u8WWN[32];
#endif
    u16 bs_u8CtrlId;	
	u8 bs_u8CurrentMPSchedules; /* READ ONLY */
	u8 bs_u8CurrentRCSchedules; /* READ ONLY */
        u8 bs_u8CurrentBRCSchedules; /* READ ONLY */
    u8 bs_u8CurrentSCSchedules; /* READ ONLY */
	u8 bs_u8CurrentMGSchedules; /*READ ONLY */
	u8 bs_u8CurrentRBSchedules;	/*READ ONLY */

	u8 bs_u8MaxMPScheudles; /* READ ONLY */
	u8 bs_u8MaxRCSchedules; /* READ ONLY */
        u8 bs_u8MaxBRCSchedules; /* READ ONLY */
    u8 bs_u8MaxSCSchedules; /* READ ONLY */
	u8 bs_u8MaxMGSchedules; /* READ ONLY */
	u8 bs_u8MaxRBSchedules; /* READ ONLY */

	u8 bs_u8NumberOfMPSchedules;  /* number of MP schedules in the bs_bsSchedules */
	u8 bs_u8NumberOfRCSchedules;  /* number of RC schedules in the bs_bsSchedules */
        u8 bs_u8NumberOfBRCSchedules;  /* number of BRC schedules in the bs_bsSchedules */
    u8 bs_u8NumberOfSCSchedules;  /* number of SC schedules in the bs_bsSchedules */
	u8 bs_u8NumberOfMGSchedules;  /* number of MG schedules in the bs_bsSchedules */
	u8 bs_u8NumberOfRBSchedules;  /* number of RB schedules in the bs_bsSchedules */

    //u8 bs_u8Reserved[4]; /* reserved for alignment */
	bga_schedule_t bs_bsSchedules[1]; /*number of MP schedules followed by number of RC schedules*/
} bga_schedules_t;
//modify end
//following two structures are for save bga setting to flash



//modify 20060524
typedef struct
{
#ifndef EMBEDDED
    u8 bss_u8WWN[32];
#endif
    u16 bss_u8CtrlId;		
    u8 bss_u8MaxMPScheudles; /* READ ONLY */
    u8 bss_u8MaxRCSchedules; /* READ ONLY */
    u8 bss_u8MaxBRCSchedules; /* READ ONLY */ 
    u8 bss_u8MaxSCSchedules; /* READ ONLY */
	u8 bss_u8MaxMGSchedules; /* READ ONLY */
	u8 bss_u8MaxRBSchedules; /* READ ONLY */

    u8 bss_u8NumberOfMPSchedules;  /* number of MP schedules in the bs_bsSchedules */
    u8 bss_u8NumberOfRCSchedules;  /* number of RC schedules in the bs_bsSchedules */
    u8 bss_u8NumberOfBRCSchedules;  /* number of BRC schedules in the bs_bsSchedules */
    u8 bss_u8NumberOfSCSchedules;  /* number of SC schedules in the bs_bsSchedules */
	u8 bss_u8NumberOfMGSchedules;  /* number of MG schedules in the bs_bsSchedules */
	u8 bss_u8NumberOfRBSchedules;  /* number of RB schedules in the bs_bsSchedules */

    //u8 bss_u8Reserved[1]; /* reserved for alignment */
    mp_schedule_t  bss_msMPSchedules; 
    brc_schedule_t  bss_bsBRCSchedules;
    sc_schedule_t  bss_ssSCSchedules;	

    rc_schedule_setting_t  bss_baRCSchedules[MAX_NUM_RC_SCHD];
	mg_schedule_setting_t	bss_baMGSchedules[MAX_NUM_MG_SCHD];
	rb_schedule_setting_t	bss_baRBSchedules[MAX_NUM_RB_SCHD];
    u8 bss_u8Version[6];
} bga_schedules_setting_t;
//modify end
/* --- functional routines ------------------------------------------------- */

/**************************************************************************
* Function Name: bgaschd_locateNextSchedule 
* Description: locate the next schedule in the buffer after the pointer
*       specified by the index
* Parameters:    
*   	[in] pBuf, the buffer of the schedules
*       [in] u32Size, the size of the buffer
*       [in] u32Index, the index, specifying the pointer
*       [out] pbs, the schedule to be returned 
* Return: PIERR_NO_ERROR: succeed, otherwise: fail
* Remarks: none.     
****************************************************************************/
u32 bgaschd_locateNextSchedule(bga_schedules_t * pBuf, u32 u32Size, u32 u32Index, 
    bga_schedule_t ** ppbs);

#endif /*__PI_BGASCHEDULE_H__*/

/*******************************************************************************
 * Change Log
 *
 * $Log: bgaschd.h,v $
 * Revision 1.5  2004/03/24 03:26:13  weny
 * I2 API porting
 *
 * Revision 1.4  2004/03/11 00:03:07  debinc
 * Add battery conditioning support
 *
 * Revision 1.3  2003/09/19 00:45:29  debinc
 * Add data structure
 *
 * Revision 1.2  2003/09/17 01:47:21  debinc
 * New data strcuture needed to save/restore to flash
 *
 * Revision 1.1  2003/06/28 05:41:52  weny
 * add for bga scheduler
 *
 ******************************************************************************/

⌨️ 快捷键说明

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