From 9be7cceddf3d8effcd94190af4f7c56d76823512 Mon Sep 17 00:00:00 2001 From: "Jan (janneke) Nieuwenhuizen" Date: Wed, 19 Oct 2022 08:49:24 +0200 Subject: [PATCH] NEXT __M2__ --- include/signal.h | 9 +++++++-- include/sys/ioctl.h | 5 +++++ include/sys/stat.h | 24 +++++++++++++++++++++++- include/sys/types.h | 11 ++++++++++- include/time.h | 6 +++--- src/gc.c | 17 ++++++++++++----- src/posix.c | 15 ++++++++++----- 7 files changed, 70 insertions(+), 17 deletions(-) diff --git a/include/signal.h b/include/signal.h index 07730b02..aef1da50 100644 --- a/include/signal.h +++ b/include/signal.h @@ -29,9 +29,12 @@ #define _SIGSET_NITEMS (_NSIG / (8 * sizeof(unsigned long))) -typedef struct { +#if !__M2__ +typedef struct +{ unsigned long items[_SIGSET_NITEMS]; } sigset_t; +#endif typedef long stack_t; #include @@ -91,6 +94,7 @@ typedef long stack_t; #define SA_NOMASK SA_NODEFER #define SA_ONESHOT SA_RESETHAND +#if !__M2__ // lacks short, casts typedef struct siginfo_t { int si_signo; @@ -120,7 +124,7 @@ typedef struct siginfo_t } siginfo_t; // *INDENT-ON* -#if __MESC__ +#if __M2__ || __MESC__ typedef long sighandler_t; #else typedef void (*sighandler_t) (int); @@ -255,6 +259,7 @@ int sigemptyset (sigset_t * set); #endif int sigprocmask (int how, sigset_t const *set, sigset_t * oldset); +#endif // !__M2__ #endif //! SYSTEM_LIBC #endif // __MES_SIGNAL_H diff --git a/include/sys/ioctl.h b/include/sys/ioctl.h index 2650929e..c4bf13e5 100644 --- a/include/sys/ioctl.h +++ b/include/sys/ioctl.h @@ -28,8 +28,13 @@ #define TCGETS 0x5401 #define TCGETA 0x5405 +#if __M2__ +int ioctl (int fd, unsigned request, long data); +int ioctl3 (int fd, unsigned request, long data); +#else int ioctl (int fd, unsigned long request, ...); int ioctl3 (int fd, unsigned long request, long data); +#endif #endif // ! SYSTEM_LIBC diff --git a/include/sys/stat.h b/include/sys/stat.h index 0aefa286..0644b361 100644 --- a/include/sys/stat.h +++ b/include/sys/stat.h @@ -36,7 +36,29 @@ typedef int mode_t; #endif // *INDENT-OFF* -#if __i386__ || __arm__ +#if __M2__ +struct stat +{ + unsigned st_dev; + unsigned st_ino; + char st_mode[2]; + char st_nlink[2]; + char st_uid[2]; + char st_gid[2]; + unsigned st_rdev; + long st_size; /* Linux: unsigned long; glibc: off_t (i.e. signed) */ + unsigned st_blksize; + unsigned st_blocks; + time_t st_atime; /* Linux: unsigned long; glibc: time_t */ + unsigned st_atime_usec; + time_t st_mtime; /* Linux: unsigned long; glibc: time_t */ + unsigned st_mtime_usec; + time_t st_ctime; /* Linux: unsigned long; glibc: time_t */ + unsigned st_ctime_usec; + unsigned __foo0; + unsigned __foo1; +}; +#elif __i386__ || __arm__ struct stat { unsigned long st_dev; diff --git a/include/sys/types.h b/include/sys/types.h index 24ea71c7..368dd12f 100644 --- a/include/sys/types.h +++ b/include/sys/types.h @@ -32,7 +32,12 @@ #endif #ifndef EOF -#define EOF -1 +// FIXME M2_Planet chokes on -1, even inside #if ! __M2__ +#if __arm__ || __i386__ +#define EOF 0xffffffff +#else +#define EOF 0xffffffffffffffff +#endif #endif #ifndef NULL @@ -142,9 +147,13 @@ typedef long sigval_t; #ifndef __MES_SIZE_T #define __MES_SIZE_T #undef size_t +#if __M2__ +typedef unsigned size_t; +#else typedef unsigned long size_t; #endif #endif +#endif #ifndef __MES_SSIZE_T #define __MES_SSIZE_T diff --git a/include/time.h b/include/time.h index 161d006f..189200a1 100644 --- a/include/time.h +++ b/include/time.h @@ -1,6 +1,6 @@ /* -*-comment-start: "//";comment-end:""-*- * GNU Mes --- Maxwell Equations of Software - * Copyright © 2017 Jan (janneke) Nieuwenhuizen + * Copyright © 2017,2022 Jan (janneke) Nieuwenhuizen * * This file is part of GNU Mes. * @@ -27,8 +27,8 @@ #ifndef __MES_TIME_T #define __MES_TIME_T 1 -typedef long int clockid_t; -typedef long int time_t; +typedef long clockid_t; +typedef long time_t; #endif struct tm diff --git a/src/gc.c b/src/gc.c index 4b45069e..a55f24dc 100644 --- a/src/gc.c +++ b/src/gc.c @@ -1,6 +1,6 @@ /* -*-comment-start: "//";comment-end:""-*- * GNU Mes --- Maxwell Equations of Software - * Copyright © 2016,2017,2018,2019,2020,2021 Jan (janneke) Nieuwenhuizen + * Copyright © 2016,2017,2018,2019,2020,2021,2022 Jan (janneke) Nieuwenhuizen * Copyright © 2022 Gabriel Wicki * * This file is part of GNU Mes. @@ -31,8 +31,11 @@ int g_dump_filedes; +#if __M2__ +#define M2_CELL_SIZE 12 +#else #define M2_CELL_SIZE 1U -// CONSTANT M2_CELL_SIZE 12 +#endif char * cell_bytes (struct scm *x) @@ -41,16 +44,20 @@ cell_bytes (struct scm *x) return p + (2 * sizeof (long)); } +#if __M2__ +#define U10 10 +#define U100 100 +#else #define U10 10U -// CONSTANT U10 10 #define U100 100U -// CONSTANT U100 100 +#endif + void gc_init () { #if SYSTEM_LIBC ARENA_SIZE = 100000000; /* 2.3GiB */ -#elif ! __M2_PLANET__ +#elif ! __M2__ ARENA_SIZE = 300000; /* 32b: 3MiB, 64b: 6 MiB */ #else ARENA_SIZE = 20000000; diff --git a/src/posix.c b/src/posix.c index bfb1bcd3..74e04675 100644 --- a/src/posix.c +++ b/src/posix.c @@ -35,7 +35,7 @@ #include #if SYSTEM_LIBC -#define __raise(x) -1 +//#define __raise(x) -1 #endif struct scm * @@ -377,13 +377,14 @@ waitpid_ (struct scm *pid, struct scm *options) return cons (make_number (child), make_number (status)); } -#if __x86_64__ +#if __M2__ +/* Milliseconds for everyone else. */ +#define TIME_UNITS_PER_SECOND 1000 +#elif __x86_64__ /* Nanoseconds on 64-bit systems with POSIX timers. */ -// CONSTANT TIME_UNITS_PER_SECOND 1000000000 #define TIME_UNITS_PER_SECOND 1000000000U #else /* Milliseconds for everyone else. */ -// CONSTANT TIME_UNITS_PER_SECOND 1000 #define TIME_UNITS_PER_SECOND 1000U #endif @@ -408,8 +409,12 @@ gettimeofday_ () /*:((name . "gettimeofday")) */ return cons (make_number (time->tv_sec), make_number (time->tv_usec)); } +#if __M2__ +#define UL1000000000 1000000000 +#else #define UL1000000000 1000000000UL -// CONSTANT UL1000000000 1000000000 +#endif + long seconds_and_nanoseconds_to_long (long s, long ns) {