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