亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rf_dagfuncs.c

?? RAIDFrame是個非常好的磁盤陣列RAID仿真工具
?? C
?? 第 1 頁 / 共 3 頁
字號:
/* * Copyright (c) 1995 Carnegie-Mellon University. * All rights reserved. * * Author: Mark Holland, William V. Courtright II * * Permission to use, copy, modify and distribute this software and * its documentation is hereby granted, provided that both the copyright * notice and this permission notice appear in all copies of the * software, derivative works or modified versions, and any portions * thereof, and that both notices appear in supporting documentation. * * CARNEGIE MELLON ALLOWS FREE USE OF THIS SOFTWARE IN ITS "AS IS" * CONDITION.  CARNEGIE MELLON DISCLAIMS ANY LIABILITY OF ANY KIND * FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE. * * Carnegie Mellon requests users of this software to return to * *  Software Distribution Coordinator  or  Software.Distribution@CS.CMU.EDU *  School of Computer Science *  Carnegie Mellon University *  Pittsburgh PA 15213-3890 * * any improvements or extensions that they make and grant Carnegie the * rights to redistribute these changes. *//* * dagfuncs.c -- DAG node execution routines * * Rules: * 1. Every DAG execution function must eventually cause node->status to *    get set to "good" or "bad", and "FinishNode" to be called. In the *    case of nodes that complete immediately (xor, NullNodeFunc, etc), *    the node execution function can do these two things directly. In *    the case of nodes that have to wait for some event (a disk read to *    complete, a lock to be released, etc) to occur before they can *    complete, this is typically achieved by having whatever module *    is doing the operation call GenericWakeupFunc upon completion. * 2. DAG execution functions should check the status in the DAG header *    and NOP out their operations if the status is not "enable". However, *    execution functions that release resources must be sure to release *    them even when they NOP out the function that would use them. *    Functions that acquire resources should go ahead and acquire them *    even when they NOP, so that a downstream release node will not have *    to check to find out whether or not the acquire was suppressed. *//* $Locker:  $ * $Log: rf_dagfuncs.c,v $ * Revision 1.64  1996/07/31  16:29:26  jimz * LONGSHIFT -> RF_LONGSHIFT, defined in rf_types.h * * Revision 1.63  1996/07/30  04:00:20  jimz * define LONGSHIFT for mips * * Revision 1.62  1996/07/28  20:31:39  jimz * i386netbsd port * true/false fixup * * Revision 1.61  1996/07/27  23:36:08  jimz * Solaris port of simulator * * Revision 1.60  1996/07/22  19:52:16  jimz * switched node params to RF_DagParam_t, a union of * a 64-bit int and a void *, for better portability * attempted hpux port, but failed partway through for * lack of a single C compiler capable of compiling all * source files * * Revision 1.59  1996/07/18  22:57:14  jimz * port simulator to AIX * * Revision 1.58  1996/07/17  21:00:58  jimz * clean up timer interface, tracing * * Revision 1.57  1996/07/15  17:22:18  jimz * nit-pick code cleanup * resolve stdlib problems on DEC OSF * * Revision 1.56  1996/06/11  01:27:50  jimz * Fixed bug where diskthread shutdown would crash or hang. This * turned out to be two distinct bugs: * (1) [crash] The thread shutdown code wasn't properly waiting for * all the diskthreads to complete. This caused diskthreads that were * exiting+cleaning up to unlock a destroyed mutex. * (2) [hang] TerminateDiskQueues wasn't locking, and DiskIODequeue * only checked for termination _after_ a wakeup if the queues were * empty. This was a race where the termination wakeup could be lost * by the dequeueing thread, and the system would hang waiting for the * thread to exit, while the thread waited for an I/O or a signal to * check the termination flag. * * Revision 1.55  1996/06/10  22:23:18  wvcii * disk and xor funcs now optionally support undo logging * for backward error recovery experiments * * Revision 1.54  1996/06/10  11:55:47  jimz * Straightened out some per-array/not-per-array distinctions, fixed * a couple bugs related to confusion. Added shutdown lists. Removed * layout shutdown function (now subsumed by shutdown lists). * * Revision 1.53  1996/06/07  21:33:04  jimz * begin using consistent types for sector numbers, * stripe numbers, row+col numbers, recon unit numbers * * Revision 1.52  1996/06/06  17:28:44  jimz * add new read mirror partition func, rename old read mirror * to rf_DiskReadMirrorIdleFunc * * Revision 1.51  1996/06/03  23:28:26  jimz * more bugfixes * check in tree to sync for IPDS runs with current bugfixes * there still may be a problem with threads in the script test * getting I/Os stuck- not trivially reproducible (runs ~50 times * in a row without getting stuck) * * Revision 1.50  1996/06/02  17:31:48  jimz * Moved a lot of global stuff into array structure, where it belongs. * Fixed up paritylogging, pss modules in this manner. Some general * code cleanup. Removed lots of dead code, some dead files. * * Revision 1.49  1996/05/31  22:26:54  jimz * fix a lot of mapping problems, memory allocation problems * found some weird lock issues, fixed 'em * more code cleanup * * Revision 1.48  1996/05/30  12:59:18  jimz * make etimer happier, more portable * * Revision 1.47  1996/05/30  11:29:41  jimz * Numerous bug fixes. Stripe lock release code disagreed with the taking code * about when stripes should be locked (I made it consistent: no parity, no lock) * There was a lot of extra serialization of I/Os which I've removed- a lot of * it was to calculate values for the cache code, which is no longer with us. * More types, function, macro cleanup. Added code to properly quiesce the array * on shutdown. Made a lot of stuff array-specific which was (bogusly) general * before. Fixed memory allocation, freeing bugs. * * Revision 1.46  1996/05/24  22:17:04  jimz * continue code + namespace cleanup * typed a bunch of flags * * Revision 1.45  1996/05/24  04:28:55  jimz * release cleanup ckpt * * Revision 1.44  1996/05/23  21:46:35  jimz * checkpoint in code cleanup (release prep) * lots of types, function names have been fixed * * Revision 1.43  1996/05/23  00:33:23  jimz * code cleanup: move all debug decls to rf_options.c, all extern * debug decls to rf_options.h, all debug vars preceded by rf_ * * Revision 1.42  1996/05/18  19:51:34  jimz * major code cleanup- fix syntax, make some types consistent, * add prototypes, clean out dead code, et cetera * * Revision 1.41  1996/05/08  21:01:24  jimz * fixed up enum type names that were conflicting with other * enums and function names (ie, "panic") * future naming trends will be towards RF_ and rf_ for * everything raidframe-related * * Revision 1.40  1996/05/08  15:24:14  wvcii * modified GenericWakeupFunc to use recover, undone, and panic node states * * Revision 1.39  1996/05/02  17:18:01  jimz * fix up headers for user-land, following ccmn cleanup * * Revision 1.38  1996/05/01  16:26:51  jimz * don't include rf_ccmn.h (get ready to phase out) * * Revision 1.37  1995/12/12  18:10:06  jimz * MIN -> RF_MIN, MAX -> RF_MAX, ASSERT -> RF_ASSERT * fix 80-column brain damage in comments * * Revision 1.36  1995/12/04  19:19:09  wvcii * modified DiskReadMirrorFunc *  - added fifth parameter, physical disk address of mirror copy *  - SelectIdleDisk conditionally swaps parameters 0 & 4 * * Revision 1.35  1995/12/01  15:58:33  root * added copyright info * * Revision 1.34  1995/11/17  18:12:17  amiri * Changed DiskReadMirrorFunc to use the generic mapping routines * to find the mirror of the data, function was assuming RAID level 1. * * Revision 1.33  1995/11/17  15:15:59  wvcii * changes in DiskReadMirrorFunc *   - added ASSERTs *   - added call to MapParityRAID1 * * Revision 1.32  1995/11/07  16:25:50  wvcii * added DiskUnlockFuncForThreads * general debugging of undo functions (first time they were used) * * Revision 1.31  1995/09/06  19:23:36  wvcii * fixed tracing for parity logging nodes * * Revision 1.30  95/07/07  00:13:01  wvcii * added 4th parameter to ParityLogAppend *  */#ifndef KERNEL#include <errno.h>#endif /* !KERNEL */#include <sys/ioctl.h>#include <sys/param.h>#include "rf_archs.h"#include "rf_raid.h"#include "rf_dag.h"#include "rf_layout.h"#include "rf_etimer.h"#include "rf_acctrace.h"#include "rf_diskqueue.h"#include "rf_dagfuncs.h"#include "rf_general.h"#include "rf_engine.h"#include "rf_dagutils.h"#ifdef KERNEL#include "rf_kintf.h"#endif /* KERNEL */#if RF_INCLUDE_PARITYLOGGING > 0#include "rf_paritylog.h"#endif /* RF_INCLUDE_PARITYLOGGING > 0 */int (*rf_DiskReadFunc)(), (*rf_DiskWriteFunc)();int (*rf_DiskReadUndoFunc)(), (*rf_DiskWriteUndoFunc)();int (*rf_DiskUnlockFunc)(), (*rf_DiskUnlockUndoFunc)();int (*rf_RegularXorUndoFunc)();int (*rf_SimpleXorUndoFunc)();int (*rf_RecoveryXorUndoFunc)();/***************************************************************************************** * main (only) configuration routine for this module ****************************************************************************************/int rf_ConfigureDAGFuncs(listp)  RF_ShutdownList_t  **listp;{  RF_ASSERT( ((sizeof(long)==8) && RF_LONGSHIFT==3) || ((sizeof(long)==4)  && RF_LONGSHIFT==2) );  rf_DiskReadFunc  = rf_DiskReadFuncForThreads;  rf_DiskReadUndoFunc = rf_DiskUndoFunc;  rf_DiskWriteFunc = rf_DiskWriteFuncForThreads;  rf_DiskWriteUndoFunc = rf_DiskUndoFunc;  rf_DiskUnlockFunc = rf_DiskUnlockFuncForThreads;  rf_DiskUnlockUndoFunc = rf_NullNodeUndoFunc;  rf_RegularXorUndoFunc = rf_NullNodeUndoFunc;  rf_SimpleXorUndoFunc = rf_NullNodeUndoFunc;  rf_RecoveryXorUndoFunc = rf_NullNodeUndoFunc;  return(0);}/***************************************************************************************** * the execution function associated with a terminate node ****************************************************************************************/int rf_TerminateFunc(node)  RF_DagNode_t  *node;{  RF_ASSERT(node->dagHdr->numCommits == node->dagHdr->numCommitNodes);  node->status = rf_good;  return(rf_FinishNode(node, RF_THREAD_CONTEXT));}int rf_TerminateUndoFunc(node)  RF_DagNode_t  *node;{  return(0);}/***************************************************************************************** * execution functions associated with a mirror node * * parameters: * * 0 - physical disk addres of data * 1 - buffer for holding read data * 2 - parity stripe ID * 3 - flags * 4 - physical disk address of mirror (parity) * ****************************************************************************************/int rf_DiskReadMirrorIdleFunc(node)  RF_DagNode_t  *node;{  /* select the mirror copy with the shortest queue and fill in node parameters     with physical disk address */  rf_SelectMirrorDiskIdle(node);  return(rf_DiskReadFunc(node));}int rf_DiskReadMirrorPartitionFunc(node)  RF_DagNode_t  *node;{  /* select the mirror copy with the shortest queue and fill in node parameters     with physical disk address */  rf_SelectMirrorDiskPartition(node);  return(rf_DiskReadFunc(node));}int rf_DiskReadMirrorUndoFunc(node)  RF_DagNode_t  *node;{  return(0);}#if RF_INCLUDE_PARITYLOGGING > 0/***************************************************************************************** * the execution function associated with a parity log update node ****************************************************************************************/int rf_ParityLogUpdateFunc(node)  RF_DagNode_t  *node;{  RF_PhysDiskAddr_t *pda = (RF_PhysDiskAddr_t *) node->params[0].p;  caddr_t buf = (caddr_t) node->params[1].p;  RF_ParityLogData_t *logData;  RF_AccTraceEntry_t *tracerec = node->dagHdr->tracerec;  RF_Etimer_t timer;  if (node->dagHdr->status == rf_enable)    {      RF_ETIMER_START(timer);      logData = rf_CreateParityLogData(RF_UPDATE, pda, buf, (RF_Raid_t *) (node->dagHdr->raidPtr),				    node->wakeFunc, (void *) node, node->dagHdr->tracerec, timer);      if (logData)

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区电影| 成人午夜av电影| 国产精品系列在线| 555www色欧美视频| 成人高清伦理免费影院在线观看| 亚洲一区二区三区国产| 欧美国产1区2区| 91精品国产日韩91久久久久久| 99综合电影在线视频| 美女脱光内衣内裤视频久久网站| 亚洲免费在线观看| 久久久不卡网国产精品二区| 欧美日韩你懂的| 97久久久精品综合88久久| 久久97超碰国产精品超碰| 亚洲综合色在线| 综合色天天鬼久久鬼色| 久久人人97超碰com| 日韩视频免费观看高清完整版在线观看 | 亚洲制服欧美中文字幕中文字幕| 久久久久国色av免费看影院| 91精品国产欧美一区二区| 91麻豆精品在线观看| 成人性生交大片免费看视频在线 | 日本亚洲天堂网| 樱桃视频在线观看一区| 国产精品久久久99| 国产欧美日韩不卡免费| 久久久久综合网| 精品久久国产字幕高潮| 欧美一区2区视频在线观看| 欧美日韩在线三级| 欧美网站大全在线观看| 91久久精品网| 91老师国产黑色丝袜在线| 福利电影一区二区三区| 久久国产精品色婷婷| 在线观看不卡视频| 91蜜桃传媒精品久久久一区二区| 成人一级片网址| 成人h精品动漫一区二区三区| 国产99久久久精品| 日本va欧美va瓶| 蜜桃av噜噜一区二区三区小说| 偷拍亚洲欧洲综合| 日本麻豆一区二区三区视频| 日韩国产成人精品| 蜜乳av一区二区三区| 久久国产精品99久久久久久老狼| 麻豆91在线播放免费| 韩国欧美国产1区| 国产精品亚洲专一区二区三区| 久久99蜜桃精品| 国产剧情一区在线| 高清免费成人av| av中文一区二区三区| 91麻豆精品在线观看| 欧美视频一区在线观看| 精品视频1区2区3区| 欧美一区二区网站| 精品久久一二三区| 国产精品麻豆一区二区| 亚洲精品免费播放| 午夜激情久久久| 蜜臀av一区二区在线观看| 韩国精品主播一区二区在线观看| 国产黄色91视频| 91原创在线视频| 在线不卡免费欧美| 欧美精品一区二区三区在线播放| 中文字幕av不卡| 夜夜揉揉日日人人青青一国产精品 | 欧美亚洲国产bt| 在线观看91av| 日本一区二区视频在线| 亚洲精品乱码久久久久久日本蜜臀| 亚洲国产综合视频在线观看| 美女一区二区视频| 91在线高清观看| 51精品秘密在线观看| 国产日本欧洲亚洲| 亚洲最大色网站| 久久se这里有精品| 成人av第一页| 欧美一级理论性理论a| 国产午夜精品久久久久久免费视| 伊人婷婷欧美激情| 久久69国产一区二区蜜臀| 国产成人精品免费视频网站| 欧美无砖砖区免费| 国产日产欧美一区| 日韩电影在线观看网站| 成人黄动漫网站免费app| 欧美久久久久久久久中文字幕| 久久久午夜电影| 午夜久久久久久电影| 99视频精品全部免费在线| 91精品国产色综合久久ai换脸| 中文在线资源观看网站视频免费不卡| 亚洲综合丁香婷婷六月香| 韩国v欧美v亚洲v日本v| 欧美午夜精品久久久久久超碰| 国产视频一区二区在线观看| 午夜精品免费在线观看| 国产99久久久精品| 精品日韩欧美一区二区| 亚洲成av人综合在线观看| 成人app网站| 精品日产卡一卡二卡麻豆| 亚洲一区二区三区国产| av高清不卡在线| 久久精品国产亚洲一区二区三区 | 久久综合色一综合色88| 亚洲午夜精品在线| 91女神在线视频| 国产欧美精品区一区二区三区| 免费观看一级欧美片| 在线看国产一区二区| 中文字幕中文字幕在线一区 | 欧美日韩国产综合久久| 国产精品久久久久久久久免费樱桃| 日韩av午夜在线观看| 欧美四级电影在线观看| 中文字幕永久在线不卡| 国产成人精品午夜视频免费| 欧美不卡一区二区| 欧美aaaaa成人免费观看视频| 色一情一伦一子一伦一区| 欧美国产日产图区| 国产精品一区二区免费不卡 | 国产一区二区三区高清播放| 欧美一级理论片| 日韩激情在线观看| 欧美日韩视频第一区| 亚洲成va人在线观看| 欧美午夜电影在线播放| 一区二区久久久久| 色婷婷av一区二区三区gif| 国产精品久久久久一区二区三区共| 国产一区二区三区在线观看免费视频| 日韩一区二区麻豆国产| 日韩二区三区四区| 日韩欧美一级在线播放| 蜜臀精品一区二区三区在线观看 | 久久久一区二区| 国产福利精品一区| 中文字幕免费观看一区| 成人一区二区视频| 综合av第一页| 欧美色视频一区| 水蜜桃久久夜色精品一区的特点| 欧美日韩视频不卡| 看片的网站亚洲| 久久毛片高清国产| 成人免费视频视频在线观看免费| 国产精品国产自产拍高清av王其| heyzo一本久久综合| 亚洲欧美日韩国产手机在线| 色婷婷激情综合| 石原莉奈一区二区三区在线观看| 91麻豆精品国产自产在线| 美女久久久精品| 国产婷婷一区二区| 日本黄色一区二区| 免费在线观看成人| 久久久美女毛片| 一本久久a久久精品亚洲| 日韩影院在线观看| 久久久久久久久97黄色工厂| www.欧美日韩国产在线| 一区二区三区电影在线播| 日韩午夜激情av| 成人性生交大片免费看在线播放 | 国产精品全国免费观看高清| 91美女福利视频| 日韩成人一级大片| 欧美经典三级视频一区二区三区| 91欧美激情一区二区三区成人| 日韩vs国产vs欧美| 日本一区二区三区高清不卡| 在线观看视频91| 精品在线播放免费| 亚洲精品水蜜桃| 奇米在线7777在线精品| 中文天堂在线一区| 7777精品伊人久久久大香线蕉 | 一本色道综合亚洲| 青青国产91久久久久久 | 美脚の诱脚舐め脚责91 | 欧美韩国日本一区| 欧美精选一区二区| 成人动漫一区二区三区| 美女视频网站黄色亚洲| 亚洲三级免费电影| 久久综合九色综合97婷婷| 欧日韩精品视频| 成人丝袜高跟foot| 另类欧美日韩国产在线| 亚洲一区二区欧美日韩| 亚洲国产精品二十页|