Commit graph

174 commits

Author SHA1 Message Date
David van Moolenbroek b423d7b477 Merge of David's ptrace branch. Summary:
o Support for ptrace T_ATTACH/T_DETACH and T_SYSCALL
o PM signal handling logic should now work properly, even with debuggers
  being present
o Asynchronous PM/VFS protocol, full IPC support for senda(), and
  AMF_NOREPLY senda() flag

DETAILS

Process stop and delay call handling of PM:
o Added sys_runctl() kernel call with sys_stop() and sys_resume()
  aliases, for PM to stop and resume a process
o Added exception for sending/syscall-traced processes to sys_runctl(),
  and matching SIGKREADY pseudo-signal to PM
o Fixed PM signal logic to deal with requests from a process after
  stopping it (so-called "delay calls"), using the SIGKREADY facility
o Fixed various PM panics due to race conditions with delay calls versus
  VFS calls
o Removed special PRIO_STOP priority value
o Added SYS_LOCK RTS kernel flag, to stop an individual process from
  running while modifying its process structure

Signal and debugger handling in PM:
o Fixed debugger signals being dropped if a second signal arrives when
  the debugger has not retrieved the first one
o Fixed debugger signals being sent to the debugger more than once
o Fixed debugger signals unpausing process in VFS; removed PM_UNPAUSE_TR
  protocol message
o Detached debugger signals from general signal logic and from being
  blocked on VFS calls, meaning that even VFS can now be traced
o Fixed debugger being unable to receive more than one pending signal in
  one process stop
o Fixed signal delivery being delayed needlessly when multiple signals
  are pending
o Fixed wait test for tracer, which was returning for children that were
  not waited for
o Removed second parallel pending call from PM to VFS for any process
o Fixed process becoming runnable between exec() and debugger trap
o Added support for notifying the debugger before the parent when a
  debugged child exits
o Fixed debugger death causing child to remain stopped forever
o Fixed consistently incorrect use of _NSIG

Extensions to ptrace():
o Added T_ATTACH and T_DETACH ptrace request, to attach and detach a
  debugger to and from a process
o Added T_SYSCALL ptrace request, to trace system calls
o Added T_SETOPT ptrace request, to set trace options
o Added TO_TRACEFORK trace option, to attach automatically to children
  of a traced process
o Added TO_ALTEXEC trace option, to send SIGSTOP instead of SIGTRAP upon
  a successful exec() of the tracee
o Extended T_GETUSER ptrace support to allow retrieving a process's priv
  structure
o Removed T_STOP ptrace request again, as it does not help implementing
  debuggers properly
o Added MINIX3-specific ptrace test (test42)
o Added proper manual page for ptrace(2)

Asynchronous PM/VFS interface:
o Fixed asynchronous messages not being checked when receive() is called
  with an endpoint other than ANY
o Added AMF_NOREPLY senda() flag, preventing such messages from
  satisfying the receive part of a sendrec()
o Added asynsend3() that takes optional flags; asynsend() is now a
  #define passing in 0 as third parameter
o Made PM/VFS protocol asynchronous; reintroduced tell_fs()
o Made PM_BASE request/reply number range unique
o Hacked in a horrible temporary workaround into RS to deal with newly
  revealed RS-PM-VFS race condition triangle until VFS is asynchronous

System signal handling:
o Fixed shutdown logic of device drivers; removed old SIGKSTOP signal
o Removed is-superuser check from PM's do_procstat() (aka getsigset())
o Added sigset macros to allow system processes to deal with the full
  signal set, rather than just the POSIX subset

Miscellaneous PM fixes:
o Split do_getset into do_get and do_set, merging common code and making
  structure clearer
o Fixed setpriority() being able to put to sleep processes using an
  invalid parameter, or revive zombie processes
o Made find_proc() global; removed obsolete proc_from_pid()
o Cleanup here and there

Also included:
o Fixed false-positive boot order kernel warning
o Removed last traces of old NOTIFY_FROM code

THINGS OF POSSIBLE INTEREST

o It should now be possible to run PM at any priority, even lower than
  user processes
o No assumptions are made about communication speed between PM and VFS,
  although communication must be FIFO
o A debugger will now receive incoming debuggee signals at kill time
  only; the process may not yet be fully stopped
o A first step has been made towards making the SYSTEM task preemptible
2009-09-30 09:57:22 +00:00
Ben Gras 8a54d267f0 - VM_KERN_NOPAGEZERO feature is gone
- sys_getbiosbuffer feature is gone (from kernel; available from vm)
- bump version number because munmap() calls that newly compiled binaries
  will do trigger an ugly (but harmless) error message in older VM's
- some new VM calls and flags, the new IPC calls
- some new CR0 register bits
- added files for shared memory
2009-09-21 14:23:10 +00:00
Tomas Hruby bd2dd15cc6 Missing defines preventing recursive includesion in some include/sys/*.h files 2009-08-17 14:34:14 +00:00
David van Moolenbroek d82e260a90 Support for setitimer(ITIMER_REAL). 2009-08-15 16:09:32 +00:00
Tomas Hruby 88f7b63019 u64_t for human beings - the high and low parts are named hi and lo, lib/sysutil/profile.c updated accordingly 2009-08-13 15:47:49 +00:00
Thomas Veerman c2ffe723d1 - Moved (u)mount prototypes from unistd.h to sys/mount.h.
- Prepared mount system call to accept multiple mount flags
   instead of just read_only (however, it remains backwards
   compatible).
 - Updated the man mount(2) to reflect new header file usage. 
 - Updated badblocks, newroot, mount, and umount commands to use the
   new header file.
2009-08-12 19:57:37 +00:00
David van Moolenbroek 66d1f1260c remove last traces of FSDEVMAP svrctl 2009-06-13 13:09:14 +00:00
Ben Gras fe39483dc9 4MB mask 2009-05-18 15:56:13 +00:00
Ben Gras bdab3c4cfb Library call for cpu features; make kernel and vm use this to query cpu
features (specifically: 4MB pages and TLB global bit).  Only enable
these features in CR4 if available. 4MB pages to be used in the near
future.
2009-05-15 17:07:36 +00:00
Ben Gras dd56aa321f to let tty run with its own page table (instead of with the kernel identity
map table), make it map in video memory.

sadly, this breaks tty in non-paged mode.

happily, this simplifies the code by throwing out the messing
around with segments, and throws out vidcopy.s.
2009-05-12 12:43:18 +00:00
Ben Gras ebe050dbe2 large page size constant. 2009-05-12 09:23:27 +00:00
Ben Gras 3b3e3b36c2 some more vm bits. 2009-04-23 15:21:03 +00:00
Arun Thomas e9e1ae1cfc Move queue.h to include/sys so that it can be used elsewhere. Pull in
FreeBSD's r179210 queue.h.
2009-04-22 20:02:39 +00:00
Arun Thomas 9e7837f63c Tweak 64-bit integer type declarations; Fixes GCC sysutil build
breakage.
2009-03-30 17:07:39 +00:00
Arun Thomas 7ce582c783 Define 64 bit integer types when compiling with GCC 2009-03-06 16:56:46 +00:00
Ben Gras 59e972f074 let drivers allocate memory at 64k physical boundary. 2009-02-12 12:26:08 +00:00
Ben Gras 6009642110 for compatability with older images. 2008-12-11 15:50:33 +00:00
Ben Gras dd9e9c74cd vm map request - ioctl to /dev/video 2008-12-11 14:11:59 +00:00
Ben Gras c078ec0331 Basic VM and other minor improvements.
Not complete, probably not fully debugged or optimized.
2008-11-19 12:26:10 +00:00
Ben Gras c67a56708e es1370 driver and updated es1371 and framework by Pieter Hijma. 2007-11-23 11:40:33 +00:00
Ben Gras 0d2d8c6db2 audio drivers. (not updated for trunk.)
sb16: port of isa sb16 driver to user-space. Port by Peter Boonstoppel.
es1371: By Laurens Bronwasser.
2007-11-23 11:30:50 +00:00
Philip Homburg b74b3315a3 Added PF_UNIX and PF_INET to make porting easier. 2007-09-17 11:35:44 +00:00
Ben Gras 056ac0a0d3 replace library time handling functions
mktime, tzset, asctime, ctime, gmtime, localtime, strftime
with zoneinfo implementations in src/commands/zoneinfo, referenced
from src/lib/stdtime/Makefile.in.
2007-03-30 15:36:49 +00:00
David van Moolenbroek d4e6fe3546 Setjmp/longjmp updates and cleanup. 2006-12-08 16:23:18 +00:00
Philip Homburg bafc45a309 First cut at 64-bit file offsets in block devices for mkfs/fsck. 2006-11-27 14:21:43 +00:00
Ben Gras 140afcfb7d Use size-dependant no. of words, with OPEN_MAX as default for fd_set size. 2006-10-06 15:45:13 +00:00
Philip Homburg f6c4002b35 first commit of extra ptrace code for fault injection. 2006-08-28 15:03:03 +00:00
Ben Gras 6dbca44030 Turn off prototypes for readv and writev until they're defined
(properly) in the library.
2006-08-02 15:18:49 +00:00
Ben Gras 82173212ee Introduction of a 'big' ioctl, with more bits (20) reserved for encoding the
size field. The TIOCSFON ioctl size (8192) didn't get encoded properly,
as there weren't enough bits for it (12) in the regular format.

The new format has only one type field, and an extra flag (_IOC_BIG)
turned on. FS checks for this flag and uses the alternative decoding
of the ioctl codes to determine the size when doing grants.

This unbreaks loadfont, although that still uses a phys copy in tty.
2006-07-25 09:41:40 +00:00
Philip Homburg 59830eda3f Prototypes for send and recv. Fixed send (pass null address) and sendto
(fail when a null address is passed to a socket that is not connected).
2006-07-14 14:34:00 +00:00
Ben Gras cfb984e9bd . renamed __str to __makestr to allow for g++
. changed some CMOS ioctl codes to have correct sizes (struct tm instead
  of u32_t), a disk ioctl code from W to RW, and memory ioctl codes from R
  to W, needed for proper matching of grant in FS
2006-06-20 08:40:26 +00:00
Philip Homburg e9aabcf2f8 Disabled building rescue driver (no longer needed). Moved allocmem from
library to the memory driver. Always put output from within TTY directly on
the console. Removed second include of driver.h from tty.c. Made tty_inrepcode
bigger. First step to move PM and FS calls that are not regular (API)
system calls out of callnr.h (renumbered them, and removed them from the
table.c files). Imported the Minix-vmd uname implementation. This provides
a more stable ABI than the current implementation. Added a bit of security
checking. Unfortunately not nearly enough to get a secure system. Fixed a
bug related to the sizes of the programs in the image (in PM patch_mem_chunks).
2006-05-19 12:19:37 +00:00
Ben Gras 461a4fafb1 Added fchmod() and fchown() 2006-04-18 11:26:04 +00:00
Jorrit Herder 021e3234d8 Jorrit's ... "progress?" 2006-03-10 16:10:05 +00:00
Philip Homburg fa6f63c3cb New errors and defines for socket options. 2006-02-17 13:43:50 +00:00
Ben Gras dd284552b4 fixes to include major() and minor() in system header files (in a different
file than sys/types.h)

small binpackage update
2006-01-27 13:57:18 +00:00
Ben Gras e04832580d Some misc portability-enhancing definitions.
Added fts.h for fts library imported from freebsd.
2006-01-20 13:42:29 +00:00
Philip Homburg 988493b2e2 Added caching bits 2006-01-12 14:32:42 +00:00
Ben Gras fbc190e562 Added truncate and ftruncate() prototypes and call numbers (prematurely)
Added symlink-related prototypes
2005-12-20 14:17:05 +00:00
Ben Gras 32d5141935 Added prototype for getsockopt(). 2005-12-12 10:40:29 +00:00
Ben Gras e45c9f2741 Synonyms for helping porting applications. 2005-11-17 01:23:33 +00:00
Philip Homburg 4102a5db28 Various changes to header files for tcpdump. 2005-11-09 15:43:39 +00:00
Philip Homburg 8950d7eae7 Make struct sockaddr at least as big as struct sockaddr_in 2005-11-04 17:07:39 +00:00
Ben Gras 6e37eb17b2 (mode_t) casts confused preprocessor 2005-11-03 17:04:50 +00:00
Ben Gras 4c648c343e Giovanni's symlink patches (includes only) 2005-10-31 14:14:54 +00:00
Philip Homburg d920f5e0f9 Support for raw keyboard I/O and the AUX (PS/2 mouse) channel. 2005-10-24 13:52:53 +00:00
Ben Gras 5b452954ba FSDEVUNMAP, late commit 2005-10-04 11:46:51 +00:00
Philip Homburg 31c1d6bf0d Changes to includes for VM, IOPL, logging. Increased _NR_PROCS, CLICK_SIZE is
now 4096.
2005-09-30 12:47:03 +00:00
Philip Homburg a9a8299e88 Misc. compatibility changes 2005-09-30 12:41:25 +00:00
Ben Gras 688910d983 Ast@'s formatting fixes 2005-09-16 14:23:14 +00:00
Ben Gras d9557981d1 c -> d char 2005-09-14 01:44:13 +00:00
Ben Gras 1de242401f An empty <sys/file.h> helps porting. 2005-09-06 16:19:21 +00:00
Ben Gras 43ea6a9ce8 Added <minix/sys_config.h>. This file is intended to be included from
other, user-includable config files. It only defines names that don't
pollute the users namespace (start with _). <minix/config.h> still works
like always; it includes sys_config.h now and defines the 'messy' names
(such as CHIP) as the 'cleaner' names (such as _MINIX_CHIP).

Changed some of the other include files to use sys_config.h and the
'cleaner' names. This solves some (past and future) compilation problems.
2005-08-29 13:52:08 +00:00
Ben Gras 647e179038 . release fixes
. added OPENCT ioctl to at driver, which returns the number of times
  a device is opened. if it's not opened exactly once, new partition info
  will not be read in (at the next open after this close). included
  this check in autopart.
2005-08-25 09:47:31 +00:00
Ben Gras d11b2e4b8c Al's double-blank-line removal request 2005-08-22 15:23:47 +00:00
Jorrit Herder 74711a3b14 Check if kernel calls is allowed (from process' call mask) added. Not yet
enforced. If a call is denied, this will be kprinted. Please report any such
errors, so that I can adjust the mask before returning errors instead of
warnings.

Wrote CMOS driver. All CMOS code from FS has been removed. Currently the
driver only supports get time calls. Set time is left out as an exercise
for the book readers ... startup scripts were updated because the CMOS driver
is needed early on. (IS got same treatment.) Don't forget to run MAKEDEV cmos
in /dev/, otherwise the driver cannot be loaded.
2005-08-04 19:23:03 +00:00
Jorrit Herder 120e514506 Changed various header file to support dynamically staring drivers.
Note: full recompile necessary.
2005-08-02 15:31:12 +00:00
Philip Homburg 920c462e8c Added {h,n}to{l,s} prototypes. Added IPPROTO_TCP. SA_FAMILY_T -> _SA_FAMILY_T
Added SOCK_RAW, SOCK_RDM, SOCK_SEQPACKET, SO_DEBUG, SO_ERROR.
2005-07-27 11:42:54 +00:00
Ben Gras b5a5d3ec1c new svrctl SETPARAM to set or override environment variables obtained
from the boot monitor
2005-07-22 18:37:33 +00:00
Ben Gras d4b173ee50 Misc fixes and additions 2005-07-12 13:10:06 +00:00
Philip Homburg 11cbb6faae Many changes to simplify porting applications. 2005-07-11 13:00:43 +00:00
Ben Gras dd31785aa6 Added some data for the new log device. 2005-07-08 17:24:49 +00:00
Ben Gras 1adcfcdf1c Changed FD_* select() fd set manipulation functions to macros. Also
made FD_SETSIZE pre-#include-definable, with OPEN_MAX as default if unset.
2005-07-06 07:22:21 +00:00
Ben Gras 83f0f501f8 Added <sys/resource.h> for [gs]etpriority() call. 2005-07-01 09:59:49 +00:00
Ben Gras 81081a4063 _POSIX_SOURCE doesn't make sense in <sys/select.h> 2005-06-28 16:02:58 +00:00
Philip Homburg 013f484525 select.h should include <sys.time.h>. Added struct svrqueryparam to svrctl.h. 2005-06-28 15:01:55 +00:00
Philip Homburg 0979014807 Renamed some types Uid_t, Gid_t, Mode_t, etc. for perl5.
More space for synctree.
2005-06-23 11:07:31 +00:00
Ben Gras c40770ce68 Various select() support flags, prototypes, definitions.
Major numbers for inet, tty, ctty.

Defined _MINIX_VERSION to check for major minix version in applications.

Prototype for (fake) readlink().
2005-06-17 13:34:47 +00:00
Jorrit Herder 36c3091342 *** empty log message *** 2005-06-17 09:15:39 +00:00
Philip Homburg dc23e18cef Improved compatibility with other Unix systems. 2005-06-10 15:12:03 +00:00
Ben Gras e44e9ad261 small compile fixes; initial select() stubs; release.sh script doesn't
need /tmp any more since 16MB root device; increase to 3.0.5 to make new
CD with working FXP driver. (not tagged 3.0.5 yet as at driver bios-copy
workaround hasn't been done.)
2005-06-06 11:40:32 +00:00
Ben Gras dfe2b4513f Moved timing structs around to be more standard 2005-06-01 09:34:37 +00:00
Jorrit Herder 1cb880b158 Intermediate update---please await next commit. 2005-05-19 09:36:44 +00:00
Ben Gras 9865aeaa79 Initial revision 2005-04-21 14:53:53 +00:00