Skip to content

Commit

Permalink
Merge pull request #1203 from Qwinci/sysconf-mem
Browse files Browse the repository at this point in the history
Implement _SC_{AV}PHYS_PAGES sysconfs
  • Loading branch information
64 authored Dec 29, 2024
2 parents 9b72503 + afd0f18 commit 9a69dda
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
21 changes: 21 additions & 0 deletions options/posix/generic/unistd.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
#include <mlibc/bsd-sysdeps.hpp>
#include <mlibc/thread.hpp>

#if __MLIBC_LINUX_OPTION
#include <mlibc/linux-sysdeps.hpp>
#endif

namespace {

constexpr bool logExecvpeTries = false;
Expand Down Expand Up @@ -724,8 +728,25 @@ long sysconf(int number) {
mlibc::infoLogger() << "\e[31mmlibc: sysconf(_SC_OPEN_MAX) returns fallback value 256\e[39m" << frg::endlog;
return 256;
case _SC_PHYS_PAGES:
#if __MLIBC_LINUX_OPTION
if(mlibc::sys_sysinfo) {
struct sysinfo info{};
if(mlibc::sys_sysinfo(&info) == 0)
return info.totalram * info.mem_unit / mlibc::page_size;
}
#endif
mlibc::infoLogger() << "\e[31mmlibc: sysconf(_SC_PHYS_PAGES) returns fallback value 1024\e[39m" << frg::endlog;
return 1024;
case _SC_AVPHYS_PAGES:
#if __MLIBC_LINUX_OPTION
if(mlibc::sys_sysinfo) {
struct sysinfo info{};
if(mlibc::sys_sysinfo(&info) == 0)
return info.freeram * info.mem_unit / mlibc::page_size;
}
#endif
mlibc::infoLogger() << "\e[31mmlibc: sysconf(_SC_AVPHYS_PAGES) returns fallback value 1024\e[39m" << frg::endlog;
return 1024;
case _SC_NPROCESSORS_ONLN:
mlibc::infoLogger() << "\e[31mmlibc: sysconf(_SC_NPROCESSORS_ONLN) returns fallback value 1\e[39m" << frg::endlog;
return 1;
Expand Down
5 changes: 5 additions & 0 deletions sysdeps/managarm/generic/file.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2663,6 +2663,11 @@ int sys_sysconf(int num, long *ret) {
*ret = (ru.rlim_cur == RLIM_INFINITY) ? -1 : ru.rlim_cur;
break;
}
case _SC_PHYS_PAGES:
case _SC_AVPHYS_PAGES: {
// defer these to the generic implementation.
return EINVAL;
}
default: {
SignalGuard sguard;

Expand Down

0 comments on commit 9a69dda

Please sign in to comment.