📄 bgaschd.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 + -