Skip to main content

starnix_sync/
lock_ordering.rs

1// Copyright 2023 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5use lock_ordering_macro::lock_ordering;
6
7lock_ordering! {
8    // keep-sorted start
9    AioPendingOperationsLock => WaitQueueImplLock,
10    AshmemStateLock => FsNodeWriteGuardStateLock,
11    BeforeFsNodeAppend => FsNodeAppend,
12    BinderFreezeLevel => BinderProcessStateLevel,
13    BinderFsDevicesLevel => DeviceRegistryStateLevel,
14    BinderFsDevicesLevel => FsNodeInfoLevel,
15    BinderFsDevicesLevel => RwQueueInnerLock,
16    BinderObjectLevel => BinderThreadStateLock,
17    BinderProcessSharedMemoryLevel => BinderFreezeLevel,
18    BinderProcessSharedMemoryLevel => FsRenameRecursive,
19    BinderProcessSharedMemoryLevel => TaskFilesLock,
20    BinderProcessStateLevel => BinderContextManagerLevel,
21    BinderProcessStateLevel => BinderObjectLevel,
22    BinderProcessStateLevel => BinderThreadRequeueEventLock,
23    BinderProcsLevel => BinderProcessSharedMemoryLevel,
24    BinderThreadStateLock => BinderThreadRequeueEventLock,
25    BinderThreadStateLock => ThreadGroupMutableStateLock,
26    BinderThreadStateLock => WaiterEventHandlerLock,
27    CgroupChildrenLock => CgroupStateLock,
28    CgroupDirectoryInterfaceFilesLock => CgroupChildrenLock,
29    CgroupDirectoryInterfaceFilesLock => CgroupDirectoryNodesLock,
30    CgroupDirectoryInterfaceFilesLock => RwQueueInnerLock,
31    CgroupPidTableLock => CgroupStateLock,
32    CgroupStateLock => ThreadGroupMutableStateLock,
33    CgroupV1Level => CgroupPidTableLock,
34    DeviceMapperRegistryDevicesLock => DmDeviceStateLock,
35    DeviceMapperRegistryDevicesLock => DynamicThreadSpawnerLock,
36    DeviceRegistryStateLevel => NetlinkSocketInnerLock,
37    DeviceTerminalsLock => TerminalMutableStateLock,
38    DirEntryChildrenLevel => BinderFsDevicesLevel,
39    DirEntryChildrenLevel => CgroupDirectoryInterfaceFilesLock,
40    DirEntryChildrenLevel => FileSystemEntriesLock,
41    DirEntryChildrenLevel => FileSystemPermanentLock,
42    DirEntryChildrenLevel => InotifyStateLock,
43    DirEntryChildrenLevel => NetstackDevicesLock,
44    DirEntryChildrenLevel => NmfsNetworkManagerLock,
45    DirEntryChildrenLevel => SeLinuxPendingEntriesLock,
46    DirEntryChildrenLevel => SeLinuxUpdateLock,
47    DirEntryChildrenLevel => UnixSocketInnerLock,
48    DirEntryChildrenRecursiveLevel => FsNodeInfoRecursiveLevel,
49    DirEntryChildrenRecursiveLevel => MemoryDirectoryReaddirPositionLock,
50    DmDeviceStateLock => DirEntryChildrenLevel,
51    DynamicFileStateLock => CgroupV1Level,
52    DynamicFileStateLock => FsRegistryLock,
53    DynamicFileStateLock => MapInfoCacheBufLock,
54    DynamicFileStateLock => MemoryPressureMonitor,
55    DynamicFileStateLock => TaskCredsLock,
56    EbpfMapStateLevel => EbpfSuspendLock,
57    EbpfStateLock => EbpfSuspendLock,
58    EpollStateLock => BinderProcsLevel,
59    EpollStateLock => EventFdInnerLock,
60    EpollStateLock => MemoryPressureMonitor,
61    EpollStateLock => SuspendResumeManagerInnerLock,
62    EpollStateLock => TimerFileInfoLock,
63    EpollWaitableStateLock => WaitQueueImplLock,
64    ExecutorVmarManagerLock => ThreadGroupPtraceesLock,
65    FdTableMutableStateLock => FsNodeInfoLevel,
66    FileEpollFilesLock => EpollStateLock,
67    FileObjectOffset => BeforeFsNodeAppend,
68    FileObjectOffset => DynamicFileStateLock,
69    FileObjectOffset => FuseFsNodeInfoLevel,
70    FileObjectOffset => FuseNodeStateLock,
71    FileObjectOffset => IcmpPingGidsLock,
72    FileObjectOffset => PerfRingBufferStateLock,
73    FileObjectOffset => SeLinuxFsContextSidLock,
74    FileObjectOffset => SeLinuxPendingFileSystemsLock,
75    FileObjectOffset => StubBytesFileStateLock,
76    FramebufferInfoLock => FramebufferPresentationReceiverLock,
77    FramebufferInfoLock => FramebufferViewBoundProtocolsLock,
78    FramebufferInfoLock => FramebufferViewIdentityLock,
79    FsContextStateLock => MountsLevel,
80    FsNodeAppend => UninterruptibleLock,
81    FsNodeFlockInfoLock => WaitQueueImplLock,
82    FsNodeInfoLevel => FsNodeWriteGuardStateLock,
83    FsNodeInfoRecursiveLevel => FsRename,
84    FsNodeWriteGuardStateLock => FsNodeFsVerityLock,
85    FsNodeWriteGuardStateLock => ThreadGroupLimits,
86    FsRename => DirEntryChildrenLevel,
87    FsRenameRecursive => DirEntryChildrenRecursiveLevel,
88    FunctionFsStateLock => WaitQueueImplLock,
89    FuseConnectionStateLock => PortWaiterCallbacksLock,
90    FuseConnectionStateLock => WaitQueueImplLock,
91    FuseDirEntryChildrenLevel => FuseFsNodeInfoLevel,
92    FuseDirEntryChildrenLevel => FuseNodeStateLock,
93    FuseFsNodeInfoLevel => UninterruptibleLock,
94    FuseFsRenameLevel => FuseDirEntryChildrenLevel,
95    FutexTableStateLock => FsContextStateLock,
96    FutexTableStateLock => FsNodeInfoLevel,
97    FutexTableStateLock => InflightVmsplicedPayloadsLock,
98    GenericNetlinkServerStateLock => NetlinkSocketInnerLock,
99    InotifyStateLock => EventHandlerReadyQueueLock,
100    InotifyStateLock => PortWaiterCallbacksLock,
101    InotifyStateLock => WaitQueueImplLock,
102    InputEventRelayOpenedFilesLock => WaitQueueImplLock,
103    LoopDeviceStateLock => FsNodeInfoLevel,
104    LoopDeviceStateLock => RemoteBundleInnerLock,
105    LoopDevicesLock => DeviceRegistryStateLevel,
106    LoopDevicesLock => DynamicThreadSpawnerLock,
107    LoopDevicesLock => LoopDeviceStateLock,
108    LoopDevicesLock => SimpleDirectoryEntriesLock,
109    LoopDevicesLock => TaskMutableStateLock,
110    MagmaConnectionsLock => DirEntryChildrenLevel,
111    MemoryAttributionPublisherLock => DynamicThreadSpawnerLock,
112    MemoryDirectoryReaddirPositionLock => DirEntryChildrenLevel,
113    MemoryPressureMonitor => MemoryPressureMonitorClientState,
114    MemoryPressureMonitor => PortWaiterCallbacksLock,
115    MmDumpable => ThreadGroupLimits,
116    NetlinkSocketInnerLock => EpollWaitableStateLock,
117    NetlinkSocketInnerLock => EventHandlerReadyQueueLock,
118    NetlinkSocketInnerLock => PortWaiterCallbacksLock,
119    NetstackDevicesLock => SimpleDirectoryEntriesLock,
120    OverlayFsStateLock => FsNodeInfoLevel,
121    PidTableLock => CgroupPidTableLock,
122    PidTableLock => MemoryAttributionPublisherLock,
123    PidTableLock => ThreadGroupMutableStateLock,
124    PidTableLock => ThreadGroupPtraceesLock,
125    ProcessGroupState => ThreadGroupLimits,
126    RecordLocksStateLock => PortWaiterCallbacksLock,
127    RecordLocksStateLock => WaitQueueImplLock,
128    RemoteBinderHandleLevel => BinderProcsLevel,
129    RemoteBlockDeviceRegistryDevicesLock => SimpleDirectoryEntriesLock,
130    SessionMutableStateLock => TaskMutableStateLock,
131    SignalFdMaskLock => ThreadGroupPendingSignalsLock,
132    SimpleDirectoryEntriesLock => FsNodeInfoLevel,
133    SimpleDirectoryEntriesLock => RwQueueInnerLock,
134    SyslogSubscriptionLock => PortWaiterCallbacksLock,
135    SyslogSubscriptionLock => WaitQueueImplLock,
136    TaskCredsLock => DirEntryChildrenRecursiveLevel,
137    TaskCredsLock => FsNodeInfoRecursiveLevel,
138    TaskCredsLock => OverlayFsStateLock,
139    TaskCredsLock => TaskFilesLock,
140    TaskFilesLock => FdTableMutableStateLock,
141    TaskMutableStateLock => EpollWaitableStateLock,
142    TaskMutableStateLock => FutexTableStateLock,
143    TaskMutableStateLock => IntervalTimerState,
144    TaskMutableStateLock => MmDumpable,
145    TaskMutableStateLock => PortWaiterCallbacksLock,
146    TaskMutableStateLock => ProfileHandleCacheLock,
147    TaskMutableStateLock => SeccompNotifierLock,
148    TaskMutableStateLock => SignalActionsLock,
149    TaskMutableStateLock => SignalFdMaskLock,
150    TaskMutableStateLock => TaskCommandLevel,
151    TaskMutableStateLock => TaskFilesLock,
152    TaskMutableStateLock => UtsNamespaceLock,
153    TerminalMutableStateLock => EventHandlerReadyQueueLock,
154    TerminalMutableStateLock => SessionMutableStateLock,
155    ThreadGroupMutableStateLock => DeviceTerminalsLock,
156    ThreadGroupMutableStateLock => ProcessGroupState,
157    ThreadGroupPtraceesLock => ThreadGroupMutableStateLock,
158    TimerFileInfoLock => HrTimerManagerStateLock,
159    TimerFileInfoLock => TaskMutableStateLock,
160    TimerTableStateLock => HrTimerIsIntervalLock,
161    TimerTableStateLock => IntervalTimerState,
162    UEventNetlinkSocketDeviceListenerKeyLock => DeviceRegistryStateLevel,
163    UinputDeviceStateLock => DirEntryChildrenLevel,
164    UninterruptibleLock => AioPendingOperationsLock,
165    UninterruptibleLock => AshmemStateLock,
166    UninterruptibleLock => CgroupV1Level,
167    UninterruptibleLock => ComponentMountRecordLock,
168    UninterruptibleLock => DevKmsgLock,
169    UninterruptibleLock => DeviceMapperRegistryDevicesLock,
170    UninterruptibleLock => EbpfMapStateLevel,
171    UninterruptibleLock => EbpfStateLock,
172    UninterruptibleLock => ExecutorVmarManagerLock,
173    UninterruptibleLock => FastrpcInnerState,
174    UninterruptibleLock => FileEpollFilesLock,
175    UninterruptibleLock => FramebufferInfoLock,
176    UninterruptibleLock => FsNodeFlockInfoLock,
177    UninterruptibleLock => FunctionFsStateLock,
178    UninterruptibleLock => FuseConnectionStateLock,
179    UninterruptibleLock => GenericNetlinkServerStateLock,
180    UninterruptibleLock => InotifyWatchersLock,
181    UninterruptibleLock => InputDeviceFileNodesLock,
182    UninterruptibleLock => InputEventRelayOpenedFilesLock,
183    UninterruptibleLock => KernelIpTables,
184    UninterruptibleLock => KernelSwapFiles,
185    UninterruptibleLock => LoopDevicesLock,
186    UninterruptibleLock => MagmaConnectionsLock,
187    UninterruptibleLock => MemoryXattrStorageLevel,
188    UninterruptibleLock => OverlayFsStateLock,
189    UninterruptibleLock => PerfEventLevel,
190    UninterruptibleLock => PidTableLock,
191    UninterruptibleLock => QipcrtrSocketInnerLock,
192    UninterruptibleLock => RecordLocksStateLock,
193    UninterruptibleLock => RemoteBinderHandleLevel,
194    UninterruptibleLock => RemoteBlockDeviceRegistryDevicesLock,
195    UninterruptibleLock => SyslogSubscriptionLock,
196    UninterruptibleLock => TaskCredsLock,
197    UninterruptibleLock => UinputDeviceStateLock,
198    UninterruptibleLock => UserFaultInner,
199    UninterruptibleLock => VsockSocketInnerLock,
200    UnixSocketInnerLock => EpollWaitableStateLock,
201    UnixSocketInnerLock => EventHandlerReadyQueueLock,
202    UnixSocketInnerLock => PortWaiterCallbacksLock,
203    UnixSocketInnerLock => SeLinuxPeerSidLock,
204    UnixSocketInnerLock => SocketStateLock,
205    Unlocked => FileObjectOffset,
206    Unlocked => FuseFsRenameLevel,
207    Unlocked => UninterruptibleLock,
208    VsockSocketInnerLock => PortWaiterCallbacksLock,
209    VsockSocketInnerLock => WaitQueueImplLock,
210    WaitQueueImplLock => PortWaiterWaitQueuesLock,
211    WaiterEventHandlerLock => EpollWaitableStateLock,
212    // keep-sorted end
213
214    // Terminal Levels. No lock level should ever be defined after this.
215    // Can be used for any locks that is never acquired before any other lock.
216    // keep-sorted start
217    Terminal(AioEventsLock),
218    Terminal(AuditDenyCountsLock),
219    Terminal(AuditNetlinkClientAuditResponseLock),
220    Terminal(AuditQueueLock),
221    Terminal(AuditSinkLock),
222    Terminal(BinderThreadRequeueEventLock),
223    Terminal(BootedLock),
224    Terminal(CgroupDirectoryNodesLock),
225    Terminal(ComponentControllerLock),
226    Terminal(DynamicThreadSpawnerLock),
227    Terminal(EventFdInnerLock),
228    Terminal(EventHandlerReadyQueueLock),
229    Terminal(FileAsyncOwnerLock),
230    Terminal(FileLeaseLock),
231    Terminal(FileServerStatsLock),
232    Terminal(FileSystemEntriesLock),
233    Terminal(FileSystemPermanentLock),
234    Terminal(FramebufferMemoryLock),
235    Terminal(FramebufferPresentationReceiverLock),
236    Terminal(FramebufferSceneStateLock),
237    Terminal(FramebufferViewBoundProtocolsLock),
238    Terminal(FramebufferViewIdentityLock),
239    Terminal(FsNodeFsVerityLock),
240    Terminal(FsRegistryLock),
241    Terminal(FuchsiaRemoteTargetLock),
242    Terminal(FunctionFsResultLock),
243    Terminal(FuseConnectionsLock),
244    Terminal(FuseNodeStateLock),
245    Terminal(HrTimerIsIntervalLock),
246    Terminal(HrTimerManagerStateLock),
247    Terminal(IcmpPingGidsLock),
248    Terminal(InotifyWatchersLock),
249    Terminal(InputFileInputFileLock),
250    Terminal(IoUringStateLock),
251    Terminal(KgslAllocatorLock),
252    Terminal(KgslContextsLock),
253    Terminal(KgslGpuObjsLock),
254    Terminal(KgslSyncSourcesLock),
255    Terminal(MagmaBuffersLock),
256    Terminal(MagmaDevicesLock),
257    Terminal(MagmaSemaphoresLock),
258    Terminal(MapInfoCacheBufLock),
259    Terminal(MountsLevel),
260    Terminal(NamespaceFlagsLock),
261    Terminal(NanohubContentsLock),
262    Terminal(NanohubServiceLock),
263    Terminal(NetnsIdLock),
264    Terminal(NmfsNetworkManagerLock),
265    Terminal(OverlayFsDirEntriesLock),
266    Terminal(PagerFilesByInodeLock),
267    Terminal(PagerFilesystemsLock),
268    Terminal(PerfFormatIdLookupTableLock),
269    Terminal(PerfRingBufferStateLock),
270    Terminal(PidToKoidMapInnerLock),
271    Terminal(PortWaiterCallbacksLock),
272    Terminal(PortWaiterWaitQueuesLock),
273    Terminal(PowerMessageCountersLock),
274    Terminal(ProfileHandleCacheLock),
275    Terminal(PtsIdsSetLock),
276    Terminal(QbgReadQueueLock),
277    Terminal(QbgShutdownLock),
278    Terminal(ReadWriteBytesFileLock),
279    Terminal(RemoteBinderControllerLock),
280    Terminal(RemoteBinderResponderLock),
281    Terminal(RemoteBundleInnerLock),
282    Terminal(RemoteUnixDomainSocketStateLock),
283    Terminal(RwQueueInnerLock),
284    Terminal(SeLinuxFsContextSidLock),
285    Terminal(SeLinuxPeerSidLock),
286    Terminal(SeLinuxPendingEntriesLock),
287    Terminal(SeLinuxPendingFileSystemsLock),
288    Terminal(SeLinuxUpdateLock),
289    Terminal(SignalActionsLock),
290    Terminal(SocketStateLock),
291    Terminal(StubBytesFileStateLock),
292    Terminal(SuspendResumeManagerInnerLock),
293    Terminal(SyscallLogFiltersLock),
294    Terminal(SyslogStateLock),
295    Terminal(TaskCommandLevel),
296    Terminal(ThermalChargeLevelLock),
297    Terminal(ThreadLockupDetectorRegistryLock),
298    Terminal(TouchPowerPolicyEnabledLock),
299    Terminal(TraceFsDataLock),
300    Terminal(TunDevTunLock),
301    Terminal(UtsNamespaceLock),
302    Terminal(VmspliceSegmentsLock),
303    Terminal(WakeSourcesLock),
304    Terminal(WakeWatchersLock),
305    // keep-sorted end
306}