[orbis-kenel] implement sys_kenv (#60)

This commit is contained in:
Vinicius Rangel 2023-11-13 09:43:13 -03:00 committed by GitHub
parent 3a81827e9b
commit 77efd03be8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 90 additions and 4 deletions

View file

@ -55,9 +55,7 @@ public:
void deleteProcess(Process *proc);
Process *findProcessById(pid_t pid) const;
utils::LinkedNode<Process> *getProcessList() {
return m_processes;
}
utils::LinkedNode<Process> *getProcessList() { return m_processes; }
long allocatePid() {
std::lock_guard lock(m_thread_id_mtx);
@ -143,6 +141,13 @@ public:
return {};
}
std::tuple<utils::kmap<utils::kstring, char[128]> &,
std::unique_lock<shared_mutex>>
getKernelEnv() {
std::unique_lock lock(m_kenv_mtx);
return {m_kenv, std::move(lock)};
}
enum {
c_golden_ratio_prime = 2654404609u,
c_umtx_chains = 512,
@ -193,6 +198,9 @@ private:
shared_mutex mIpmiServerMtx;
utils::kmap<utils::kstring, Ref<IpmiServer>> mIpmiServers;
shared_mutex m_kenv_mtx;
utils::kmap<utils::kstring, char[128]> m_kenv; // max size: 127 + '\0'
};
extern KernelContext &g_context;