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