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 crate::Unlocked;
6use lock_ordering_macro::lock_ordering;
7
8lock_ordering! {
9    // keep-sorted start
10    AioPendingOperationsLock => WaitQueueImplLock,
11    BeforeFsNodeAppend => FsNodeAppend,
12    BinderFreezeLevel => BinderProcessStateLevel,
13    BinderFsDevicesLevel => DeviceRegistryState,
14    BinderFsDevicesLevel => FsNodeInfoLevel,
15    BinderObjectLevel => BinderThreadStateLock,
16    BinderProcessSharedMemoryLevel => BinderFreezeLevel,
17    BinderProcessSharedMemoryLevel => FdTableWriterQueueLock,
18    BinderProcessSharedMemoryLevel => FsRenameRecursive,
19    BinderProcessStateLevel => BinderContextManagerLevel,
20    BinderProcessStateLevel => BinderObjectLevel,
21    BinderProcsLevel => BinderProcessSharedMemoryLevel,
22    CgroupChildrenLock => CgroupStateLock,
23    CgroupPidTableLock => ThreadGroupMutableStateLock,
24    CgroupStateLock => ThreadGroupMutableStateLock,
25    CgroupV1Level => CgroupPidTableLock,
26    DeviceRegistryState => NetlinkSocketInnerLock,
27    DeviceTerminalsLock => TerminalMutableStateLock,
28    DirEntryChildrenLevel => BinderFsDevicesLevel,
29    DirEntryChildrenLevel => CgroupChildrenLock,
30    DirEntryChildrenLevel => DeviceTerminalsLock,
31    DirEntryChildrenLevel => InotifyStateLock,
32    DirEntryChildrenLevel => NetstackDevicesLock,
33    DirEntryChildrenRecursiveLevel => FsNodeInfoRecursiveLevel,
34    DirEntryChildrenRecursiveLevel => MemoryDirectoryReaddirPositionLock,
35    DynamicFileStateLock => CgroupPidTableLock,
36    EbpfMapStateLevel => EbpfSuspendLock,
37    EbpfStateLock => EbpfSuspendLock,
38    EpollStateLock => EpollWaitableStateLock,
39    EpollWaitableStateLock => WaitQueueImplLock,
40    ExecutorVmarManagerLock => PidToKoidMapLock,
41    FileEpollFilesLock => EpollStateLock,
42    FileObjectOffset => BeforeFsNodeAppend,
43    FileObjectOffset => DynamicFileStateLock,
44    FileOpsCore => UninterruptibleLock,
45    FsContextStateLock => MountsLevel,
46    FsNodeAppend => FileOpsCore,
47    FsNodeFlockInfoLock => WaitQueueImplLock,
48    FsNodeInfoLevel => FsNodeWriteGuardStateLock,
49    FsNodeInfoRecursiveLevel => FsRename,
50    FsRename => DirEntryChildrenLevel,
51    FsRenameRecursive => DirEntryChildrenRecursiveLevel,
52    FuseDirEntryChildrenLevel => FuseFsNodeInfoLevel,
53    FuseFsNodeInfoLevel => UninterruptibleLock,
54    FuseFsRenameLevel => FuseDirEntryChildrenLevel,
55    FutexTableStateLock => FsContextStateLock,
56    FutexTableStateLock => FsNodeInfoLevel,
57    FutexTableStateLock => InflightVmsplicedPayloadsLock,
58    GenericNetlinkServerStateLock => NetlinkSocketInnerLock,
59    InotifyStateLock => EventHandlerReadyQueueLock,
60    InotifyStateLock => PortWaiterCallbacksLock,
61    InotifyStateLock => WaitQueueImplLock,
62    MemoryAttributionPublisherLock => DynamicThreadSpawnerLock,
63    MemoryDirectoryReaddirPositionLock => DirEntryChildrenLevel,
64    MemoryPressureMonitor => MemoryPressureMonitorClientState,
65    MmDumpable => ThreadGroupLimits,
66    NetlinkSocketInnerLock => EpollWaitableStateLock,
67    NetstackDevicesLock => RwQueueInnerLock,
68    NetstackDevicesLock => SimpleDirectoryEntriesLock,
69    ProcessGroupState => ThreadGroupLimits,
70    RecordLocksStateLock => WaitQueueImplLock,
71    RemoteBinderHandleLevel => BinderProcsLevel,
72    RemoteBlockDeviceRegistryDevicesLock => SimpleDirectoryEntriesLock,
73    ResourceAccessorLevel => FileOpsCore,
74    SessionMutableStateLock => TaskMutableStateLock,
75    SignalFdMaskLock => ThreadGroupPendingSignalsLock,
76    SimpleDirectoryEntriesLock => FsNodeInfoLevel,
77    SyslogSubscriptionLock => PortWaiterCallbacksLock,
78    SyslogSubscriptionLock => WaitQueueImplLock,
79    TaskCredsLock => FdTableWriterQueueLock,
80    TaskCredsLock => FsNodeInfoRecursiveLevel,
81    TaskMutableStateLock => EpollWaitableStateLock,
82    TaskMutableStateLock => FdTableWriterQueueLock,
83    TaskMutableStateLock => FutexTableStateLock,
84    TaskMutableStateLock => IntervalTimerState,
85    TaskMutableStateLock => MmDumpable,
86    TaskMutableStateLock => SeccompNotifierLock,
87    TaskMutableStateLock => SignalFdMaskLock,
88    TaskRelease => FileOpsCore,
89    TerminalMutableStateLock => EventHandlerReadyQueueLock,
90    TerminalMutableStateLock => PortWaiterCallbacksLock,
91    TerminalMutableStateLock => SessionMutableStateLock,
92    ThreadGroupMutableStateLock => DeviceTerminalsLock,
93    ThreadGroupMutableStateLock => ProcessGroupState,
94    ThreadGroupMutableStateLock => TaskCommandLevel,
95    ThreadGroupMutableStateLock => TerminalMutableStateLock,
96    ThreadGroupPtraceesLock => ThreadGroupMutableStateLock,
97    TimerFileInfoLock => HrTimerManagerStateLock,
98    TimerFileInfoLock => PortWaiterCallbacksLock,
99    TimerFileInfoLock => TaskMutableStateLock,
100    TimerTableStateLock => IntervalTimerState,
101    UEventNetlinkSocketDeviceListenerKeyLock => DeviceRegistryState,
102    UninterruptibleLock => AioPendingOperationsLock,
103    UninterruptibleLock => CgroupV1Level,
104    UninterruptibleLock => ComponentMountRecordLock,
105    UninterruptibleLock => DevKmsgLock,
106    UninterruptibleLock => EbpfMapStateLevel,
107    UninterruptibleLock => EbpfStateLock,
108    UninterruptibleLock => ExecutorVmarManagerLock,
109    UninterruptibleLock => FastrpcInnerState,
110    UninterruptibleLock => FileEpollFilesLock,
111    UninterruptibleLock => FsNodeFlockInfoLock,
112    UninterruptibleLock => GenericNetlinkServerStateLock,
113    UninterruptibleLock => InotifyWatchersLock,
114    UninterruptibleLock => KernelIpTables,
115    UninterruptibleLock => KernelSwapFiles,
116    UninterruptibleLock => MemoryAttributionPublisherLock,
117    UninterruptibleLock => MemoryPressureMonitor,
118    UninterruptibleLock => MemoryXattrStorageLevel,
119    UninterruptibleLock => PerfEventLevel,
120    UninterruptibleLock => QipcrtrSocketInnerLock,
121    UninterruptibleLock => RemoteBinderHandleLevel,
122    UninterruptibleLock => RemoteBlockDeviceRegistryDevicesLock,
123    UninterruptibleLock => SeccompNotifierLock,
124    UninterruptibleLock => SyslogSubscriptionLock,
125    UninterruptibleLock => TaskCredsLock,
126    UninterruptibleLock => ThreadGroupPtraceesLock,
127    UninterruptibleLock => TimerFileInfoLock,
128    UninterruptibleLock => UnixSocketInnerLock,
129    UninterruptibleLock => UserFaultInner,
130    UninterruptibleLock => VsockSocketInnerLock,
131    UninterruptibleLock => WaiterEventHandlerLock,
132    Unlocked => FileObjectOffset,
133    Unlocked => FuseFsRenameLevel,
134    Unlocked => RecordLocksStateLock,
135    Unlocked => ResourceAccessorLevel,
136    Unlocked => TaskRelease,
137    VsockSocketInnerLock => PortWaiterCallbacksLock,
138    VsockSocketInnerLock => WaitQueueImplLock,
139    WaitQueueImplLock => PortWaiterWaitQueuesLock,
140    WaiterEventHandlerLock => EpollWaitableStateLock,
141    // keep-sorted end
142
143    // Terminal Levels. No lock level should ever be defined after this.
144    // Can be used for any locks that is never acquired before any other lock.
145    // keep-sorted start
146    Terminal(AioEventsLock),
147    Terminal(AuditDenyCountsLock),
148    Terminal(AuditNetlinkClientAuditResponseLock),
149    Terminal(AuditQueueLock),
150    Terminal(AuditSinkLock),
151    Terminal(BootedLock),
152    Terminal(ComponentControllerLock),
153    Terminal(DynamicThreadSpawnerLock),
154    Terminal(EventFdInnerLock),
155    Terminal(EventHandlerReadyQueueLock),
156    Terminal(FileAsyncOwnerLock),
157    Terminal(FileLeaseLock),
158    Terminal(FileServerStatsLock),
159    Terminal(FileSystemEntriesLock),
160    Terminal(FileSystemPermanentLock),
161    Terminal(FsNodeFsVerityLock),
162    Terminal(FsRegistryLock),
163    Terminal(FuchsiaRemoteTargetLock),
164    Terminal(HrTimerIsIntervalLock),
165    Terminal(HrTimerManagerStateLock),
166    Terminal(IcmpPingGidsLock),
167    Terminal(InotifyWatchersLock),
168    Terminal(IoUringStateLock),
169    Terminal(MapInfoCacheBufLock),
170    Terminal(MountsLevel),
171    Terminal(NamespaceFlagsLock),
172    Terminal(PagerFilesByInodeLock),
173    Terminal(PagerFilesystemsLock),
174    Terminal(PerfFormatIdLookupTableLock),
175    Terminal(PerfRingBufferStateLock),
176    Terminal(PidToKoidMapInnerLock),
177    Terminal(PortWaiterCallbacksLock),
178    Terminal(PortWaiterWaitQueuesLock),
179    Terminal(PowerMessageCountersLock),
180    Terminal(ProfileHandleCacheLock),
181    Terminal(PtsIdsSetLock),
182    Terminal(RemoteBinderControllerLock),
183    Terminal(RemoteBundleInnerLock),
184    Terminal(RemoteUnixDomainSocketStateLock),
185    Terminal(RwQueueInnerLock),
186    Terminal(SeLinuxPeerSidLock),
187    Terminal(SeLinuxPendingEntriesLock),
188    Terminal(SeLinuxPendingFileSystemsLock),
189    Terminal(SeLinuxUpdateLock),
190    Terminal(SignalActionsLock),
191    Terminal(SocketStateLock),
192    Terminal(StubBytesFileStateLock),
193    Terminal(SuspendResumeManagerInnerLock),
194    Terminal(SyscallLogFiltersLock),
195    Terminal(SyslogStateLock),
196    Terminal(TaskCommandLevel),
197    Terminal(ThreadLockupDetectorRegistryLock),
198    Terminal(TouchPowerPolicyEnabledLock),
199    Terminal(UtsNamespaceLock),
200    Terminal(VmspliceSegmentsLock),
201    Terminal(WakeSourcesLock),
202    Terminal(WakeWatchersLock),
203    // keep-sorted end
204}