mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-09-29 16:21:29 +00:00
LibC+Kernel: Start implementing sysconf
For now, only the non-standard _SC_NPROCESSORS_CONF and _SC_NPROCESSORS_ONLN are implemented. Use them to make ninja pick a better default -j value. While here, make the ninja package script not fail if no other port has been built yet.
This commit is contained in:
parent
782cd93c01
commit
4eb967b5eb
Notes:
sideshowbarker
2024-07-19 04:49:35 +09:00
Author: https://github.com/nico Commit: https://github.com/SerenityOS/serenity/commit/4eb967b5ebd Pull-request: https://github.com/SerenityOS/serenity/pull/2800
|
@ -191,7 +191,8 @@ namespace Kernel {
|
||||||
__ENUMERATE_SYSCALL(ptrace) \
|
__ENUMERATE_SYSCALL(ptrace) \
|
||||||
__ENUMERATE_SYSCALL(minherit) \
|
__ENUMERATE_SYSCALL(minherit) \
|
||||||
__ENUMERATE_SYSCALL(sendfd) \
|
__ENUMERATE_SYSCALL(sendfd) \
|
||||||
__ENUMERATE_SYSCALL(recvfd)
|
__ENUMERATE_SYSCALL(recvfd) \
|
||||||
|
__ENUMERATE_SYSCALL(sysconf)
|
||||||
|
|
||||||
namespace Syscall {
|
namespace Syscall {
|
||||||
|
|
||||||
|
|
|
@ -744,6 +744,8 @@ public:
|
||||||
|
|
||||||
static Processor& by_id(u32 cpu);
|
static Processor& by_id(u32 cpu);
|
||||||
|
|
||||||
|
static size_t processor_count() { return processors().size(); }
|
||||||
|
|
||||||
template<typename Callback>
|
template<typename Callback>
|
||||||
static inline IterationDecision for_each(Callback callback)
|
static inline IterationDecision for_each(Callback callback)
|
||||||
{
|
{
|
||||||
|
|
|
@ -5308,4 +5308,15 @@ int Process::sys$recvfd(int sockfd)
|
||||||
m_fds[new_fd].set(*received_descriptor_or_error.value(), 0);
|
m_fds[new_fd].set(*received_descriptor_or_error.value(), 0);
|
||||||
return new_fd;
|
return new_fd;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long Process::sys$sysconf(int name)
|
||||||
|
{
|
||||||
|
switch (name) {
|
||||||
|
case _SC_NPROCESSORS_CONF:
|
||||||
|
case _SC_NPROCESSORS_ONLN:
|
||||||
|
return Processor::processor_count();
|
||||||
|
default:
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -327,6 +327,7 @@ public:
|
||||||
int sys$ptrace(const Syscall::SC_ptrace_params*);
|
int sys$ptrace(const Syscall::SC_ptrace_params*);
|
||||||
int sys$sendfd(int sockfd, int fd);
|
int sys$sendfd(int sockfd, int fd);
|
||||||
int sys$recvfd(int sockfd);
|
int sys$recvfd(int sockfd);
|
||||||
|
long sys$sysconf(int name);
|
||||||
|
|
||||||
template<bool sockname, typename Params>
|
template<bool sockname, typename Params>
|
||||||
int get_sock_or_peer_name(const Params&);
|
int get_sock_or_peer_name(const Params&);
|
||||||
|
|
|
@ -55,6 +55,11 @@
|
||||||
#define MS_RDONLY (1 << 4)
|
#define MS_RDONLY (1 << 4)
|
||||||
#define MS_REMOUNT (1 << 5)
|
#define MS_REMOUNT (1 << 5)
|
||||||
|
|
||||||
|
enum {
|
||||||
|
_SC_NPROCESSORS_CONF,
|
||||||
|
_SC_NPROCESSORS_ONLN,
|
||||||
|
};
|
||||||
|
|
||||||
#define PERF_EVENT_MALLOC 1
|
#define PERF_EVENT_MALLOC 1
|
||||||
#define PERF_EVENT_FREE 2
|
#define PERF_EVENT_FREE 2
|
||||||
|
|
||||||
|
|
|
@ -722,4 +722,10 @@ char* getpass(const char* prompt)
|
||||||
dbg() << "FIXME: getpass(\"" << prompt << "\")";
|
dbg() << "FIXME: getpass(\"" << prompt << "\")";
|
||||||
ASSERT_NOT_REACHED();
|
ASSERT_NOT_REACHED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
long sysconf(int name)
|
||||||
|
{
|
||||||
|
int rc = syscall(SC_sysconf, name);
|
||||||
|
__RETURN_WITH_ERRNO(rc, rc, -1);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -172,4 +172,10 @@ enum {
|
||||||
#define _POSIX_PRIORITY_SCHEDULING
|
#define _POSIX_PRIORITY_SCHEDULING
|
||||||
#define _POSIX_VDISABLE '\0'
|
#define _POSIX_VDISABLE '\0'
|
||||||
|
|
||||||
|
enum {
|
||||||
|
_SC_NPROCESSORS_CONF,
|
||||||
|
_SC_NPROCESSORS_ONLN,
|
||||||
|
};
|
||||||
|
long sysconf(int name);
|
||||||
|
|
||||||
__END_DECLS
|
__END_DECLS
|
||||||
|
|
|
@ -13,5 +13,6 @@ build() {
|
||||||
}
|
}
|
||||||
|
|
||||||
install() {
|
install() {
|
||||||
|
mkdir -p "${SERENITY_ROOT}/Build/Root/usr/local/bin"
|
||||||
cp "${workdir}/ninja" "${SERENITY_ROOT}/Build/Root/usr/local/bin/ninja"
|
cp "${workdir}/ninja" "${SERENITY_ROOT}/Build/Root/usr/local/bin/ninja"
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
diff --git a/src/util.cc b/src/util.cc
|
|
||||||
index ae94d34..72cf501 100644
|
|
||||||
--- a/src/util.cc
|
|
||||||
+++ b/src/util.cc
|
|
||||||
@@ -476,7 +476,7 @@ int GetProcessorCount() {
|
|
||||||
GetNativeSystemInfo(&info);
|
|
||||||
return info.dwNumberOfProcessors;
|
|
||||||
#else
|
|
||||||
- return sysconf(_SC_NPROCESSORS_ONLN);
|
|
||||||
+ return 1; // FIXME: serenity way of saying sysconf(_SC_NPROCESSORS_ONLN);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue