1 /* $OpenBSD: rf_dagfuncs.h,v 1.4 2002/12/16 07:01:03 tdeval Exp $ */ 2 /* $NetBSD: rf_dagfuncs.h,v 1.4 2000/03/30 13:39:07 oster Exp $ */ 3 4 /* 5 * Copyright (c) 1995 Carnegie-Mellon University. 6 * All rights reserved. 7 * 8 * Author: Mark Holland, William V. Courtright II, Jim Zelenka 9 * 10 * Permission to use, copy, modify and distribute this software and 11 * its documentation is hereby granted, provided that both the copyright 12 * notice and this permission notice appear in all copies of the 13 * software, derivative works or modified versions, and any portions 14 * thereof, and that both notices appear in supporting documentation. 15 * 16 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 17 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND 18 * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 19 * 20 * Carnegie Mellon requests users of this software to return to 21 * 22 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 23 * School of Computer Science 24 * Carnegie Mellon University 25 * Pittsburgh PA 15213-3890 26 * 27 * any improvements or extensions that they make and grant Carnegie the 28 * rights to redistribute these changes. 29 */ 30 31 /***************************************************************************** 32 * 33 * dagfuncs.h -- Header file for DAG node execution routines. 34 * 35 *****************************************************************************/ 36 37 #ifndef _RF__RF_DAGFUNCS_H_ 38 #define _RF__RF_DAGFUNCS_H_ 39 40 int rf_ConfigureDAGFuncs(RF_ShutdownList_t **); 41 int rf_TerminateFunc(RF_DagNode_t *); 42 int rf_TerminateUndoFunc(RF_DagNode_t *); 43 int rf_DiskReadMirrorIdleFunc(RF_DagNode_t *); 44 int rf_DiskReadMirrorPartitionFunc(RF_DagNode_t *); 45 int rf_DiskReadMirrorUndoFunc(RF_DagNode_t *); 46 int rf_ParityLogUpdateFunc(RF_DagNode_t *); 47 int rf_ParityLogOverwriteFunc(RF_DagNode_t *); 48 int rf_ParityLogUpdateUndoFunc(RF_DagNode_t *); 49 int rf_ParityLogOverwriteUndoFunc(RF_DagNode_t *); 50 int rf_NullNodeFunc(RF_DagNode_t *); 51 int rf_NullNodeUndoFunc(RF_DagNode_t *); 52 int rf_DiskReadFuncForThreads(RF_DagNode_t *); 53 int rf_DiskWriteFuncForThreads(RF_DagNode_t *); 54 int rf_DiskUndoFunc(RF_DagNode_t *); 55 int rf_DiskUnlockFuncForThreads(RF_DagNode_t *); 56 int rf_GenericWakeupFunc(RF_DagNode_t *, int); 57 int rf_RegularXorFunc(RF_DagNode_t *); 58 int rf_SimpleXorFunc(RF_DagNode_t *); 59 int rf_RecoveryXorFunc(RF_DagNode_t *); 60 int rf_XorIntoBuffer(RF_Raid_t *, RF_PhysDiskAddr_t *, char *, char *, void *); 61 int rf_bxor(char *, char *, int, void *); 62 int rf_longword_bxor(unsigned long *, unsigned long *, int, void *); 63 int rf_longword_bxor3(unsigned long *, unsigned long *, unsigned long *, 64 unsigned long *, int, void *); 65 int rf_bxor3(unsigned char *, unsigned char *, unsigned char *, 66 unsigned char *, unsigned long, void *); 67 68 /* Function ptrs defined in ConfigureDAGFuncs(). */ 69 extern int (*rf_DiskReadFunc) (RF_DagNode_t *); 70 extern int (*rf_DiskWriteFunc) (RF_DagNode_t *); 71 extern int (*rf_DiskReadUndoFunc) (RF_DagNode_t *); 72 extern int (*rf_DiskWriteUndoFunc) (RF_DagNode_t *); 73 extern int (*rf_DiskUnlockFunc) (RF_DagNode_t *); 74 extern int (*rf_DiskUnlockUndoFunc) (RF_DagNode_t *); 75 extern int (*rf_SimpleXorUndoFunc) (RF_DagNode_t *); 76 extern int (*rf_RegularXorUndoFunc) (RF_DagNode_t *); 77 extern int (*rf_RecoveryXorUndoFunc) (RF_DagNode_t *); 78 79 /* Macros for manipulating the param[3] in a read or write node. */ 80 #define RF_CREATE_PARAM3(pri,lk,unlk,wru) \ 81 (((RF_uint64) (((wru & 0xFFFFFF) << 8) | ((lk) ? 0x10 : 0) | \ 82 ((unlk) ? 0x20 : 0) | ((pri) & 0xF)))) 83 #define RF_EXTRACT_PRIORITY(_x_) \ 84 ((((unsigned) ((unsigned long)(_x_))) >> 0) & 0x0F) 85 #define RF_EXTRACT_LOCK_FLAG(_x_) \ 86 ((((unsigned) ((unsigned long)(_x_))) >> 4) & 0x1) 87 #define RF_EXTRACT_UNLOCK_FLAG(_x_) \ 88 ((((unsigned) ((unsigned long)(_x_))) >> 5) & 0x1) 89 #define RF_EXTRACT_RU(_x_) \ 90 ((((unsigned) ((unsigned long)(_x_))) >> 8) & 0xFFFFFF) 91 92 #endif /* !_RF__RF_DAGFUNCS_H_ */ 93