1
0
mirror of https://github.com/Interlisp/maiko.git synced 2026-01-16 16:19:10 +00:00

533 Commits

Author SHA1 Message Date
Nick Briggs
2b270e6697 Use mmap() in place of posix_memalign() to allocate Lisp memory
posix_memalign() does not guarantee initializing the allocated
  memory to zero, which Lisp expects, so the code must memset() the
  entire allocated region to zero.  The effect of this is (generally) to
  force the allocation of RAM to the process, which is wasteful, since
  we normally start with only 4% of 256 MB in use for a full.sysout.
  Allocating memory with mmap, using MAP_ANON, guarantees that the
  memory is already zeroed (effectively mapping /dev/zero with copy-on-write)
  so it is not necessary to touch it before use.  This keeps the
  pre-allocated RAM to a minimum.
2022-08-31 12:42:39 -07:00
Nick Briggs
d35b964393 Cleanup in eqf.c
Correct procedure declarations since N_OP_xxx function args are all LispPTRs
    Replace my.h defn of IsNumber() with Numberp() defn in lsptypes.h
2022-08-15 16:19:38 -07:00
Nick Briggs
58f6f68c7e Correct procedure declarations since N_OP_xxx function args are all LispPTRs 2022-08-15 16:18:37 -07:00
Nick Briggs
873d4927ce Wholesale removal of deprecated register attribute from all source files 2022-08-15 15:04:07 -07:00
Nick Briggs
5c0349cc69 Remove deprecated register attribute, ensure return types match system call results in chardev.c 2022-08-15 14:50:59 -07:00
Nick Briggs
f8f7b2ace9 Clean up types in dsk.c
Remove deprecated register attribute
    Ensure correct type used to store result of system calls
    Use memset to zero buffer vs byte-at-a-time stores
    Use GetPosSmallP where appropriate
2022-08-15 13:44:28 -07:00
Nick Briggs
4a02a1a24d Rename lisp2c's LispStringLength to LispStringSimpleLength
Avoid confusion with the LispStringLength definition in locfile.h
    This lisp2c function ONLY looks at the fillpointer for the length.
2022-08-14 21:43:48 -07:00
Nick Briggs
1fe71e5b84 Cleanups in vmemsave.c
Remove deprecated register attribute
    Use #ifdef SYM (vs #if SYM) when SYM may be undefined
    Use ptrdiff_t rather than int for pointer differences
    Correct signedness problems
2022-08-14 13:54:24 -07:00
Nick Briggs
ad045ce356 Alarm timer requires an unsigned timeout value in timer.c, timeout.h 2022-08-14 12:50:16 -07:00
Nick Briggs
c49eb4a4ce Clean up abuse of comma operator as statement separator in vmemsave.c 2022-08-14 12:06:02 -07:00
Nick Briggs
1c5881fad4 Cleanups in uutils.c
Resolve shadow declarations
    Remove deprecated register attribute
    Simplify for-loop syntax, use C99 style loop var declaration
    Make (not used elsewhere) string functions static
2022-08-14 11:44:27 -07:00
Nick Briggs
77ad9204af Remove unused variable and avoid shadow declarations, declare temps near point-of-use in unixcomm.c 2022-08-14 10:55:56 -07:00
Nick Briggs
41e7a15b1e Fix types for boxed add/subtract, the boxes contain FIXPs not pointers 2022-08-13 16:04:58 -07:00
Nick Briggs
5a7cfcbbe7 Correct procedure declarations since N_OP_xxx function args are all LispPTRs 2022-08-13 15:55:11 -07:00
Nick Briggs
543f7985a2 Fix type of parameter to SAFEREAD in unixfork.c 2022-08-13 09:11:58 -07:00
Nick Briggs
c07ad9fe8e A couple of variables that should be static rather than global in unixfork.c 2022-08-13 09:11:58 -07:00
Nick Briggs
fff53ba224 Move ldeboot.c #defines to under same #if condition as when they are used 2022-08-13 09:11:58 -07:00
Nick Briggs
d91de66322 Correct -Wformat-pedantic warnings
Many of the warnings were newly visible after the DBPRINT macro
was modified, but the pedantic warnings also caught existing printf
family usage which was not strictly correct.

Mostly replacing 0x%x with %p for pointers, adding (void *) for
those and other pointers, %td for ptrdiff_t, but also changing
some function parameters from UNSIGNED (uintptr_t) to int
where that was the more appropriate type.
2022-08-11 15:38:07 -07:00
Nick Briggs
b94cb8809b Combine three small arithmetic opcode implementation files into one
Combines arith2.c ... arith4.c files and their associated header files
into new arithops.c/arithopsdefs.h files, and adjusts the CMakeLists.txt,
and old-style makefile-tail.  Also updates  makefile-dos,
inlnPS2.h, and inlndos.h to reflect these changes, though these are not
used.
2022-08-10 20:16:59 -07:00
Nick Briggs
601d6e9142 Combine six small array opcode implementation files into one
Combines the array..array6 files and their associated header files
into new arrayops.c/arrayopsdefs.h files, and adjusts the CMakeLists.txt
and old-style makefile-tail to reflect these changes.
2022-08-10 12:54:06 -07:00
Nick Briggs
3d9f090e70
Cleanup of includes and related changes based on include-what-you-use diagnostics (#436)
Remove unused #define PERCENT_OF_SCREEN in MyWindow.h
Move structures for dir.c to dirdefs.h where they are used
Resolve S_CHAR vs S_CHARACTER in favor of S_CHARACTER and cleanup #defines
Fix  = vs == bug in FSDEBUG code in dir.c
Eliminate duplicate/unused constant definitions in gcr.c
Declare static internal function bytecmp in mkatom.c
Update many source and include files to include headers for what they use
2022-08-10 11:07:57 -07:00
Nick Briggs
4bd1f4b49a
Ensure compiler sees debug printf even if won't be executed (#433)
If the debugging printf macros are elided by the preprocessor
rather than being removed by the compiler's optimizer then
the debugging statements may get out-of-date as variables are
modified.  Wrap the non-debug case in "if (0) ..." instead.
2022-08-09 18:11:05 -07:00
Nick Briggs
c3f79872f1
Update memory allocator function (#434)
* Missing include unistd.h for getpagesize()

* Update from valloc() to posix_memalign() for large aligned allocations
2022-08-03 09:59:08 -07:00
Nick Briggs
a15de4df10
quick_stack_check() should return a result indicating status (#432) 2022-07-24 21:49:39 -07:00
Bruce Mitchener
430da79e73
Remove a dead store. (#431) 2022-07-22 11:54:19 -07:00
Bruce Mitchener
259658fa2c
No need for NULL mode arg to open when not creating a file. (#430) 2022-07-22 11:53:49 -07:00
Nick Briggs
5fa05ac3d7
Cleanup types in URaid and move declarations to separate include file (#428) 2022-07-20 10:45:37 -07:00
Nick Briggs
9a10f63fe6
some cleanups in the arithmetic operations code (#427)
* arithmetic opcode implementations should return LispPTR rather than int

* all callers of ERROR_EXIT() have return type LispPTR, therefore ERROR_EXIT should too

* N_[I]GETNUMBER, [N_]ARITH_SWITCH need (int) casts for some large constants that would otherwise be unsigned

* Expand use of macro N_ARITH_BODY_1_UNSIGNED and correct types

* Remove unused macros N_ARITH_BODY_1 and N_ARITH_BODY_1_UNSIGNED

* Cast to correct type for storing to TopOfStack, and return type of TIMER_EXIT()
2022-07-20 10:28:21 -07:00
Nick Briggs
77957d421a
fix some compiler warnings (#423)
* Pedantic C compilers want an extern declaration separate from initialization

* Remove duplicate definitions for fns in initdspdefs.h from display.h

* Remove misleading comments on structure member offsets and reorder to minimize padding
2022-07-20 10:18:59 -07:00
Nick Briggs
e81345218a
Prevent X11 error when resuming after call to RAID when -noscroll is in use (#426)
The device_before_raid() call that disables X11 scrolling and bit-gravity
selection needs to avoid referring to the scrollbars and other ancillary
windows that have not been initialized when the "-noscroll" option was
given at startup.
2022-07-16 07:32:19 -07:00
Nick Briggs
b27bd2fbab
Fix ldeinit segmentation fault on keyboard/mouse input (#425)
Keyboard, cursor, and mouse pointers are not initialized in
ldeinit.  Do not process X events as they will cause a segmentation
fault referencing the uninitialized pointers.
2022-07-14 13:34:36 -07:00
Nick Briggs
b5f51d58f1 Correct missing htons() on port number for TCPop connect 2022-06-03 18:32:36 -07:00
Nick Briggs
60af445afa
If SHELL is not set, fall back to /bin/sh so CHAT(SHELL) might work. (#424) 2022-05-28 12:37:43 -07:00
Nick Briggs
a18f09d788
Create missing directories when opening directory/file on {UNIX} device for output (#422)
Prior to this change there was no mechanism within Medley to create a new directory
on a {UNIX} style device.  This change makes the {UNIX} directory creation happen in
the same manner that {DSK} directory creation is done.  Opening a file with access
OUTPUT, BOTH, or APPEND, which would create the file if it does not exist, will also
create any missing directories in the path.
2022-05-24 16:08:26 -07:00
Nick Briggs
2bf7047709
Correct usage of stat.st_mode result for testing S_IFREG and S_IFDIR (#421)
stat.st_mode cannot be tested for whether a node is S_IFDIR with
    if (stat.st_mode & S_IFDIR) ...
since S_IFDIR bit (0040000) is a subset of S_IFSOCK (0140000) bits.
A correct check is
    if ((stat.st_mode & S_IFMT) == S_IFDIR) ...
or alternatively, since the convenience macros are defined on all modern systems
    if (S_ISDIR(stat.st_mode)) ...
2022-03-29 18:15:21 -07:00
Nick Briggs
90b967c8d3
Implement DELFILE for (empty) directories on the {unix} device (#409)
If the argument to DELFILE represents a directory on the {unix} device
either directly or through resolving to a full pathname via the connected
host/directory, and the directory is empty, then the directory will be deleted
and the deleted directory name will be returned.  Will error if the
directory is not empty, and return NIL if the argument does not name a directory
or file.
2022-03-18 18:20:35 -07:00
Nick Briggs
3e7c71c0c0 Use pointer format and don't cast address to int for ethernet debuggging 2022-01-22 17:04:39 -08:00
Nick Briggs
f2a3715930
Remove support for GET-NATIVE-ADDR-FROM-LISP-PTR and GET-LISP-PTR-FROM-NATIVE-ADDR (#414)
Since the native addresses for objects within the Lisp memory may be at locations
that can't be represented in 32-bits conversion between a native address and a
Lisp FIXP can't be supported.  For now, return NIL for conversion in either direction.

There are no known users of these two subrs.  Should it be necessary to reimplement them
at some future time the representation will need to be something that can hold 64 bits.
2022-01-22 16:02:26 -08:00
Nick Briggs
f15d8eca09 Use correct size for %x format for LispPTR in debug output for GC array problems. 2022-01-22 15:21:20 -08:00
Nick Briggs
bb0b011f90 Remove debugging printf(.) that was left in unixcomm.c 2022-01-03 22:48:23 -08:00
Nick Briggs
6bccbfbcf3
Clean up issues in Unix_handlecomm preventing clean process exit (#413)
When Medley closes a stream open to a process it uses a "unixcomm"
command (3) which should close() the communication channel open with
the process and give it a chance to handle that and exit cleanly
before using a SIGKILL on it.  We can't determine apriori whether the
process is going to cooperate, so we're stuck trying for up to 0.1s
(arbitrary choice!)  waiting for the process to exit, then it gets a
SIGKILL, and we wait up to 0.1s again to see that it really exited.
2021-12-23 10:46:37 -08:00
Nick Briggs
e3af3b03b9 Remove unused "readsock" field from Unix job table. 2021-12-21 21:33:03 -08:00
Nick Briggs
c7fd28a438 Removed unused (and unimplemented) stackcheck() and stackoverflow() routines
These routines were stubs that did nothing and were not called from anywhere
so lack value in even providing a template or hook for a fuller implementation.
Also note that "stackcheck" conflicts with a predefined symbol in some runtime
libraries.  Should these be implemented in the future they should use a
maiko-specific name.
2021-12-09 14:57:45 -08:00
Nick Briggs
65bbcb7d9d
Remove makepathname() (#410)
makepathname() is only ever called with one of two constant string
arguments, in one case (DOS) such that it only does a strncpy(...),
and the other case (non-DOS) expanding "~" to the current user's home
directory. Additional code duplicates realpath() functionality but is
never used.
2021-11-26 19:53:26 -08:00
Nick Briggs
de5ea2110f
Correct integer type warnings (#405)
* Correct warning: cast to smaller integer type -- X_init/lispbitmap

* Fixes to INTRSAFE, INTRSAFE0 and ensure TIMEOUT, TIMEOUT0 used appropriately

INTRSAFE and INTRSAFE0 must clear errno before executing the library or system
call because not all library calls set errno on success.
Avoid casting pointers or larger integer values down to smaller ints before
comparing to 0 or -1, and use NULL (a pointer) rather than 0.

Fix cases where the result of the library call is a pointer rather than an int
to use TIMEOUT0 instead of TIMEOUT, testing for NULL rather than -1
on timeout (errno == EINTR)

* Remove useless validity check of LASTVMEMFILEPAGE_word pointer

* Convert pointer arithmetic type in drawline from int to ptrdiff_t

* Add NOTE warning about a 32-bit vs 64-bit issue affecting currently unused GET_NATIVE_ADDR_FROM_LISP_PTR
2021-11-04 09:08:55 -07:00
Nick Briggs
6c241f1eaa Make opcode_table (names of opcodes) visible as useful debug aid. 2021-10-29 10:02:47 -07:00
Nick Briggs
19688bc314
Drop setuid privilege correctly. (#401) 2021-10-29 09:52:51 -07:00
Nick Briggs
c39b751f42
Rework make_atom() to allow removal of parse_number() (#404)
No calls to make_atom() depend on the ability to parse the atom's
pname as a number.  Additionally, the parse_number() implementation
used here was non-functional.

We remove parse_number() and adjust the parameter list of make_atom()
to remove the non_numericp flag.
2021-10-29 09:51:32 -07:00
Nick Briggs
75c668f1cd
The pointers Atomspace, Spospspace, Snegspace, Arrayspace can be removed (#402)
These pointers are neither initialized nor referenced anywhere in the code.
2021-10-10 16:55:33 -07:00
Nick Briggs
a25368714f
Use SHELL rather than /bin/csh when forking shells. Issue Interlisp/medley#384 (#400)
As long as $(SHELL) names an executable that appears in /etc/shells (as determined
by the getusershell() function) use that.  It used to always use /bin/csh, but some
modern distros do not ship with csh installed.  Using the user's preferred shell
seems like a better choice, while allowing the choice from /etc/shells gives some
additional flexibility.
2021-10-08 17:58:29 -07:00