Greatly expand system() shell code features

The cosmopolitan command interpreter now has 13 builtin commands,
variable support, support for ; / && / || syntax, asynchronous support,
and plenty of unit tests with bug fixes.

This change fixes a bug in posix_spawn() with null envp arg. strace
logging now uses atomic writes for scatter functions. Breaking change
renaming GetCpuCount() to _getcpucount(). TurfWar is now updated to use
the new token bucket algorithm. WIN32 affinity masks now inherit across
fork() and execve().
This commit is contained in:
Justine Tunney 2022-10-11 21:06:27 -07:00
parent e7329b7cba
commit b41f91c658
No known key found for this signature in database
GPG key ID: BE714B4575D6E328
80 changed files with 1370 additions and 344 deletions

View file

@ -17,7 +17,6 @@
PERFORMANCE OF THIS SOFTWARE.
*/
#include "libc/calls/calls.h"
#include "libc/mem/copyfd.internal.h"
#include "libc/calls/copyfile.h"
#include "libc/calls/ioctl.h"
#include "libc/calls/struct/itimerval.h"
@ -42,12 +41,12 @@
#include "libc/macros.internal.h"
#include "libc/math.h"
#include "libc/mem/alg.h"
#include "libc/mem/copyfd.internal.h"
#include "libc/mem/gc.internal.h"
#include "libc/mem/mem.h"
#include "libc/nexgen32e/kcpuids.h"
#include "libc/nexgen32e/x86feature.h"
#include "libc/runtime/runtime.h"
#include "libc/runtime/sysconf.h"
#include "libc/stdio/append.h"
#include "libc/stdio/stdio.h"
#include "libc/str/str.h"
@ -301,7 +300,7 @@ void PrintMakeCommand(void) {
appends(&output, "make MODE=");
appends(&output, mode);
appends(&output, " -j");
appendd(&output, buf, FormatUint64(buf, GetCpuCount()) - buf);
appendd(&output, buf, FormatUint64(buf, _getcpucount()) - buf);
appendw(&output, ' ');
appends(&output, target);
}

View file

@ -39,7 +39,6 @@
#include "libc/runtime/ezmap.internal.h"
#include "libc/runtime/runtime.h"
#include "libc/runtime/stack.h"
#include "libc/runtime/sysconf.h"
#include "libc/stdio/append.h"
#include "libc/stdio/stdio.h"
#include "libc/str/str.h"
@ -426,7 +425,7 @@ int main(int argc, char *argv[]) {
ShowCrashReports();
if (argc == 2 && !strcmp(argv[1], "-n")) exit(0);
GetOpts(argc, argv);
threads = 1; // GetCpuCount();
threads = 1; // _getcpucount();
th = calloc(threads, sizeof(*th));
bouts = calloc(threads, sizeof(*bouts));
LoadRelationships(argc, argv);

View file

@ -44,7 +44,6 @@
#include "libc/mem/mem.h"
#include "libc/nexgen32e/kcpuids.h"
#include "libc/runtime/runtime.h"
#include "libc/runtime/sysconf.h"
#include "libc/sock/sock.h"
#include "libc/sock/struct/pollfd.h"
#include "libc/stdio/stdio.h"
@ -162,9 +161,9 @@ static void GetOpts(int argc, char *argv[]) {
g_fszquota = 256 * 1000 * 1000;
if (!sysinfo(&si)) {
g_memquota = si.totalram;
g_proquota = GetCpuCount() + si.procs;
g_proquota = _getcpucount() + si.procs;
} else {
g_proquota = GetCpuCount() * 100;
g_proquota = _getcpucount() * 100;
g_memquota = 4L * 1024 * 1024 * 1024;
}
while ((opt = getopt(argc, argv, "hnqkNVT:p:u:g:c:C:D:P:M:F:O:v:")) != -1) {

View file

@ -1711,6 +1711,7 @@ Keywords={
"LLONG_MAX",
"LONG_LONG_MAX",
"SIZE_MAX",
"SSIZE_MAX",
"INT8_MAX",
"INT16_MAX",
"INT32_MAX",

View file

@ -42,6 +42,7 @@
"LLONG_MAX"
"LONG_LONG_MAX"
"SIZE_MAX"
"SSIZE_MAX"
"INT8_MAX"
"INT16_MAX"
"INT32_MAX"

View file

@ -39,7 +39,6 @@
#include "libc/nexgen32e/rdtsc.h"
#include "libc/nexgen32e/rdtscp.h"
#include "libc/runtime/runtime.h"
#include "libc/runtime/sysconf.h"
#include "libc/sock/sock.h"
#include "libc/stdio/rand.h"
#include "libc/str/str.h"
@ -126,7 +125,7 @@ int LuaGetCpuCore(lua_State *L) {
}
int LuaGetCpuCount(lua_State *L) {
lua_pushinteger(L, GetCpuCount());
lua_pushinteger(L, _getcpucount());
return 1;
}