1 /* $OpenBSD: rf_driver.h,v 1.4 2002/12/16 07:01:03 tdeval Exp $ */ 2 /* $NetBSD: rf_driver.h,v 1.4 2000/02/13 04:53:57 oster Exp $ */ 3 4 /* 5 * rf_driver.h 6 */ 7 /* 8 * Copyright (c) 1996 Carnegie-Mellon University. 9 * All rights reserved. 10 * 11 * Author: Jim Zelenka 12 * 13 * Permission to use, copy, modify and distribute this software and 14 * its documentation is hereby granted, provided that both the copyright 15 * notice and this permission notice appear in all copies of the 16 * software, derivative works or modified versions, and any portions 17 * thereof, and that both notices appear in supporting documentation. 18 * 19 * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" 20 * CONDITION. CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND 21 * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. 22 * 23 * Carnegie Mellon requests users of this software to return to 24 * 25 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU 26 * School of Computer Science 27 * Carnegie Mellon University 28 * Pittsburgh PA 15213-3890 29 * 30 * any improvements or extensions that they make and grant Carnegie the 31 * rights to redistribute these changes. 32 */ 33 34 #ifndef _RF__RF_DRIVER_H_ 35 #define _RF__RF_DRIVER_H_ 36 37 #include "rf_threadstuff.h" 38 #include "rf_types.h" 39 40 #if defined(__NetBSD__) 41 #include "rf_netbsd.h" 42 #elif defined(__OpenBSD__) 43 #include "rf_openbsd.h" 44 #endif 45 46 #if _KERNEL 47 RF_DECLARE_EXTERN_MUTEX(rf_printf_mutex); 48 int rf_BootRaidframe(void); 49 int rf_UnbootRaidframe(void); 50 int rf_Shutdown(RF_Raid_t *); 51 int rf_Configure(RF_Raid_t *, RF_Config_t *, RF_AutoConfig_t *); 52 RF_RaidAccessDesc_t *rf_AllocRaidAccDesc(RF_Raid_t *, RF_IoType_t, 53 RF_RaidAddr_t, RF_SectorCount_t, caddr_t, void *, RF_DagHeader_t **, 54 RF_AccessStripeMapHeader_t **, RF_RaidAccessFlags_t, 55 void (*) (struct buf *), void *, RF_AccessState_t *); 56 void rf_FreeRaidAccDesc(RF_RaidAccessDesc_t *); 57 int rf_DoAccess(RF_Raid_t *, RF_IoType_t, int, RF_RaidAddr_t, 58 RF_SectorCount_t, caddr_t, void *, RF_DagHeader_t **, 59 RF_AccessStripeMapHeader_t **, RF_RaidAccessFlags_t, 60 RF_RaidAccessDesc_t **, void (*) (struct buf *), void *); 61 int rf_SetReconfiguredMode(RF_Raid_t *, RF_RowCol_t, RF_RowCol_t); 62 int rf_FailDisk(RF_Raid_t *, RF_RowCol_t, RF_RowCol_t, int); 63 void rf_SignalQuiescenceLock(RF_Raid_t *, RF_RaidReconDesc_t *); 64 int rf_SuspendNewRequestsAndWait(RF_Raid_t *); 65 void rf_ResumeNewRequests(RF_Raid_t *); 66 void rf_StartThroughputStats(RF_Raid_t *); 67 void rf_StartUserStats(RF_Raid_t *); 68 void rf_StopUserStats(RF_Raid_t *); 69 void rf_UpdateUserStats(RF_Raid_t *, int, int); 70 void rf_PrintUserStats(RF_Raid_t *); 71 #endif /* _KERNEL */ 72 73 #endif /* !_RF__RF_DRIVER_H_ */ 74