77 void setInterval(Time::Timestamp interval, Time::Timestamp* prevInterval =
nullptr);
80 void setTimerValue(Time::Timestamp value, Time::Timestamp* prevValue =
nullptr);
84 Time::Timestamp* prevInterval =
nullptr,
85 Time::Timestamp* prevValue =
nullptr);
90 void getIntervalAndValue(Time::Timestamp& interval, Time::Timestamp& value);
95 Time::Timestamp getInterval()
const;
96 Time::Timestamp getValue()
const;
99 virtual void timer(uint64_t delta);
101 Time::Timestamp absoluteTotal()
const;
102 bool advanceTimeLocked(Time::Timestamp absoluteTotal);
103 void armHardwareLocked();
104 void setArmedLocked(
bool armed);
109 Time::Timestamp m_Value;
110 Time::Timestamp m_Interval;
111 Time::Timestamp m_LastTotal;
140 FilesystemContextMode filesystemContext = FilesystemContextMode::Inherit,
141 bool emptyAddressSpace =
false);
154 void leaveProcessGroup();
156 void setGroupMembership(Membership type);
157 Membership getGroupMembership()
const;
161 bool jobControlReady()
const;
162 void markExecCommitted();
163 bool hasExecCommitted()
const;
164 Time::Timestamp getStartTimeTicks()
const {
165 return m_AccountingLifetime.started;
167 void snapshotAccountingMemory();
169 int changeProcessGroup(
PosixProcess& caller,
int groupId);
171 void setMask(uint32_t mask);
172 uint32_t getMask()
const;
179 using CredentialChange = PosixCredentials::Change;
180 using CredentialStatus = PosixCredentials::Status;
181 CredentialSnapshot snapshotCredentials()
const;
184 bool installUserIdentity(
User*,
Group*,
const uint32_t*,
size_t)
override;
185 CredentialStatus changeCredentials(
Thread&, CredentialChange, uint32_t, uint32_t, uint32_t);
186 CredentialStatus replaceGroups(
Thread&,
const uint32_t*,
size_t);
187 uint32_t changeFilesystemId(
Thread&,
bool group, uint32_t requested);
188 void setDumpable(
bool);
189 void commitExecCredentials(
Thread&,
bool allExecutableFilesReadable);
192 return static_cast<int64_t
>(__atomic_load_n(&m_RealUserId, __ATOMIC_ACQUIRE));
194 virtual int64_t getGroupId()
const;
195 virtual int64_t getEffectiveUserId()
const;
196 virtual int64_t getEffectiveGroupId()
const;
199 void setUserId(int64_t
id)
override;
200 void setGroupId(int64_t
id)
override;
201 void setEffectiveUserId(int64_t
id)
override;
202 void setEffectiveGroupId(int64_t
id)
override;
205 int64_t getSavedUserId()
const;
206 int64_t getSavedGroupId()
const;
207 void setSavedUserId(int64_t
id);
208 void setSavedGroupId(int64_t
id);
211 void setTrustedIdentity(uint32_t CredentialSnapshot::* field, int64_t id);
214 void registerProcess();
215 void unregisterProcess();
223 void initializeJobControl(
Process* parent);
224 void publishCredentialReadCache();
230 bool m_ExecCommitted;
231 Membership m_GroupMembership;
238 CredentialSnapshot m_Credentials;
241 volatile uint32_t m_RealUserId;
void setIntervalAndValue(Time::Timestamp interval, Time::Timestamp value, Time::Timestamp *prevInterval=nullptr, Time::Timestamp *prevValue=nullptr)
Set both interval and value atomically.