diff options
Diffstat (limited to 'private/net/svcdlls/repl/server/repllock.h')
-rw-r--r-- | private/net/svcdlls/repl/server/repllock.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/private/net/svcdlls/repl/server/repllock.h b/private/net/svcdlls/repl/server/repllock.h new file mode 100644 index 000000000..a1ab1c303 --- /dev/null +++ b/private/net/svcdlls/repl/server/repllock.h @@ -0,0 +1,87 @@ +/*++ + +Copyright (c) 1991-1993 Microsoft Corporation + +Module Name: + + ReplLock.h + +Abstract: + + This module defines lock equates for use with net/inc/netlock.h. + + For more information, see the comments in that file. + See also public/spec/network/repllock.txt. + +Author: + + John Rogers (JohnRo) 30-Dec-1991 + +Environment: + + Portable to any flat, 32-bit environment. (Uses Win32 typedefs.) + Requires ANSI C extensions: slash-slash comments, long external names. + +Revision History: + + 30-Dec-1991 JohnRo + Created. + 02-Jan-1992 JohnRo + Added support for FAKE_PER_PROCESS_RW_CONFIG handling. + 09-Jan-1992 JohnRo + Client list lock and pool lock can be held at same time. + 15-Jan-1992 JohnRo + Added config list lock level. + 10-Feb-1992 JohnRo + Added lock for master's client list (RMGlobalClientList). + 25-Mar-1992 JohnRo + Revised/corrected lock level numbers. + 09-Nov-1992 JohnRo + RAID 7962: Repl APIs in wrong role kill svc. + 25-Mar-1993 JohnRo + RAID 4267: Replicator has problems when work queue gets large. + +--*/ + +#ifndef _REPLLOCK_ +#define _REPLLOCK_ + + +// +// Define levels for locks used by the replicator service. These levels +// are checked during debugging. Locks which shouldn't be held at the same +// time can have the same level. Make sure there are no conflicts with the +// reserved lock level(s) in netlock.h. +// +// Config data lock can be held while getting client list lock. +// For instance, this happens in NetrImportDirAdd. +// +// Config data lock is held while getting a master list lock in +// NetrReplImportDirAdd, GuardUpdate, etc. +// +// Client list lock can be held while getting lock on delay list. +// This happens when ReplDoUpdate calls ReplScanQueuesForMoreRecentMsg. +// +// The client list lock can be held while getting a pool lock. This +// happens when ReplRemoveClientRecForDirName calls ReplClientFreePoolEntry. +// Also ReplCheckTimeList calls ReplQuePut, which calls ReplClientGetPoolEntry. +// +// Client list lock can be held while getting lock on work queue. +// +// Client list lock can be held while getting lock on duplicate list. +// +// The delay list lock can be held while getting a lock +// for the work queue. +// + + +#define CONFIG_DATA_LOCK_LEVEL ((DWORD) 0x00000100) +#define CLIENT_LIST_LOCK_LEVEL ((DWORD) 0x00000200) +#define DELAY_LIST_LOCK_LEVEL ((DWORD) 0x00000300) +#define POOL_LOCK_LEVEL ((DWORD) 0x00000400) +#define WORK_QUEUE_LOCK_LEVEL ((DWORD) 0x00000500) +#define MASTER_LIST_LOCK_LEVEL ((DWORD) 0x00000600) +#define DUPL_LIST_LOCK_LEVEL ((DWORD) 0x00000700) + + +#endif // ndef _REPLLOCK_ |