#ifndef _RF__RF_PQ_H_
#define _RF__RF_PQ_H_
#include "rf_archs.h"
extern RF_RedFuncs_t rf_pFuncs;
extern RF_RedFuncs_t rf_pRecoveryFuncs;
void rf_RegularONPFunc(RF_DagNode_t * node);
void rf_SimpleONPFunc(RF_DagNode_t * node);
void rf_RecoveryPFunc(RF_DagNode_t * node);
void rf_RegularPFunc(RF_DagNode_t * node);
#if (RF_INCLUDE_DECL_PQ > 0) || (RF_INCLUDE_RAID6 > 0)
extern RF_RedFuncs_t rf_qFuncs;
extern RF_RedFuncs_t rf_qRecoveryFuncs;
extern RF_RedFuncs_t rf_pqRecoveryFuncs;
void
rf_PQDagSelect(RF_Raid_t * raidPtr, RF_IoType_t type,
RF_AccessStripeMap_t * asmap, RF_VoidFuncPtr * createFunc);
RF_CREATE_DAG_FUNC_DECL(rf_PQCreateLargeWriteDAG);
void rf_RegularONQFunc(RF_DagNode_t * node);
void rf_SimpleONQFunc(RF_DagNode_t * node);
RF_CREATE_DAG_FUNC_DECL(rf_PQCreateSmallWriteDAG);
void rf_RegularPQFunc(RF_DagNode_t * node);
void rf_RegularQFunc(RF_DagNode_t * node);
void rf_Degraded_100_PQFunc(RF_DagNode_t * node);
void rf_RecoveryQFunc(RF_DagNode_t * node);
void rf_RecoveryPQFunc(RF_DagNode_t * node);
void rf_PQ_DegradedWriteQFunc(RF_DagNode_t * node);
void
rf_IncQ(unsigned long *dest, unsigned long *buf, unsigned length,
unsigned coeff);
void
rf_PQ_recover(unsigned long *pbuf, unsigned long *qbuf, unsigned long *abuf,
unsigned long *bbuf, unsigned length, unsigned coeff_a, unsigned coeff_b);
#endif
#endif