Commit graph

166 commits

Author SHA1 Message Date
David van Moolenbroek
123683d4a5 Console function keys and color support:
- if "debug_fkeys" boot monitor variable is set to 0:
  - pass Fn, Shift+Fn, Ctrl+Fn, Shift+Ctrl+Fn to applications
  - don't start IS
- update termcap files with function key, color, end key support
2009-12-22 23:30:50 +00:00
David van Moolenbroek
492d663444 TTY fixes:
- reenable code to restore screen/cursor at shutdown
- add proper signal checking logic
- lock to first console during shutdown
2009-12-21 23:19:01 +00:00
Cristiano Giuffrida
1f5841c8ed Basic System Event Framework (SEF) with ping and live update.
SYSLIB CHANGES:
- SEF must be used by every system process and is thereby part of the system
library.
- The framework provides a receive() interface (sef_receive) for system
processes to automatically catch known system even messages and process them.
- SEF provides a default behavior for each type of system event, but allows
system processes to register callbacks to override the default behavior.
- Custom (local to the process) or predefined (provided by SEF) callback
implementations can be registered to SEF.
- SEF currently includes support for 2 types of system events:
  1. SEF Ping. The event occurs every time RS sends a ping to figure out
  whether a system process is still alive. The default callback implementation
  provided by SEF is to notify RS back to let it know the process is alive
  and kicking.
  2. SEF Live update. The event occurs every time RS sends a prepare to update
  message to let a system process know an update is available and to prepare
  for it. The live update support is very basic for now. SEF only deals with
  verifying if the prepare state can be supported by the process, dumping the
  state for debugging purposes, and providing an event-driven programming
  model to the process to react to state changes check-in when ready to update.
- SEF should be extended in the future to integrate support for more types of
system events. Ideally, all the cross-cutting concerns should be integrated into
SEF to avoid duplicating code and ease extensibility. Examples include:
  * PM notify messages primarily used at shutdown.
  * SYSTEM notify messages primarily used for signals.
  * CLOCK notify messages used for system alarms.
  * Debug messages. IS could still be in charge of fkey handling but would
  forward the debug message to the target process (e.g. PM, if the user
  requested debug information about PM). SEF would then catch the message and
  do nothing unless the process has registered an appropriate callback to
  deal with the event. This simplifies the programming model to print debug
  information, avoids duplicating code, and reduces the effort to print
  debug information.

SYSTEM PROCESSES CHANGES:
- Every system process registers SEF callbacks it needs to override the default
system behavior and calls sef_startup() right after being started.
- sef_startup() does almost nothing now, but will be extended in the future to
support callbacks of its own to let RS control and synchronize with every
system process at initialization time.
- Every system process calls sef_receive() now rather than receive() directly,
to let SEF handle predefined system events.

RS CHANGES:
- RS supports a basic single-component live update protocol now, as follows:
  * When an update command is issued (via "service update *"), RS notifies the
  target system process to prepare for a specific update state.
  * If the process doesn't respond back in time, the update is aborted.
  * When the process responds back, RS kills it and marks it for refreshing.
  * The process is then automatically restarted as for a buggy process and can
  start running again.
  * Live update is currently prototyped as a controlled failure.
2009-12-21 14:12:21 +00:00
David van Moolenbroek
56d485c1d6 Various small IS, TTY, isofs fixes
IS:
- do not use p_getfrom_e for a process that is sending
- register with TTY only function keys that are used
- various header and formatting fixes
- proper shutdown code

TTY:
- restore proper Ctrl+F1 dump contents

isofs:
- don't even try to call sys_exit()
2009-11-02 23:04:52 +00:00
Erik van der Kouwe
4c2f0eb22f Suppress spurious scancodes in VMWare 2009-10-18 07:12:42 +00:00
Tomas Hruby
4dad30937b Removed macros that depend on NOTIFY_FROM from servers and drivers. They
determine the information defined by these macros from the m_source field of the
notify message.
2009-09-29 18:47:56 +00:00
Ben Gras
89bf7bae27 - tty: only report unrecognized scancodes once; forget about
remembering the origin and cursor position as that feature didn't
   really work properly anyway
 - tty: map in video and font memory using a vm call, access it from C,
   thereby eliminating pesky weird segment calls and assembly to access it,
   and unbreaks loadfont (Roman Ignatov)
 - bios_wini: fix bios_wini by allocating a <1MB buffers for it
 - memory: preallocate ramdisk, makes it a bit faster (and doesn't
   fail halfway if you allocate a huge one)
 - floppy: use <1MB buffer
 - ramdisk proto: because of the 2x1 page reservations, binaries
   got a little fatter and didn't fit on the ramdisk any more.
   increase it.
2009-09-21 14:25:54 +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
4cd6875d05 don't flush output for SIGWINCH. found by Joren l'Ami. 2009-04-06 09:39:42 +00:00
Ben Gras
46d28c6ffb workaround for qemu writing the configuration byte on the AUX port pre-0.10. 2009-03-24 15:41:18 +00:00
Ben Gras
bb18be5d06 simplified the code a little, corrected some hasty statements. 2009-02-04 17:30:01 +00:00
Ben Gras
6a0e8e3b80 Added a separate keymap for escaped scancodes. This makes the code
a little cleaner (escaped scancodes are less of a special case) and
lets us be completely flexible when assigning meaning to them.

Future: a tool and ioctl to load the escaped keymap.
2009-02-04 17:04:16 +00:00
Ben Gras
ba4687e519 the escaped keymap is usually the same as the original. 2009-02-04 16:55:30 +00:00
Ben Gras
80f5eea8b8 If serial debugging in the boot monitor / kernel is enabled, don't touch
the serial line in use for it (mostly so that input isn't eaten by tty).
2009-01-29 15:06:40 +00:00
Ben Gras
3cc092ff06 . new kernel call sysctl for generic unprivileged system operations;
now used for printing diagnostic messages through the kernel message
   buffer. this lets processes print diagnostics without sending messages
   to tty and log directly, simplifying the message protocol a lot and
   reducing difficulties with deadlocks and other situations in which
   diagnostics are blackholed (e.g. grants don't work). this makes
   DIAGNOSTICS(_S), ASYN_DIAGNOSTICS and DIAG_REPL obsolete, although tty
   and log still accept the codes for 'old' binaries. This also simplifies
   diagnostics in several servers and drivers - only tty needs its own
   kputc() now.
 . simplifications in vfs, and some effort to get the vnode references
   right (consistent) even during shutdown. m_mounted_on is now NULL
   for root filesystems (!) (the original and new root), a less awkward
   special case than 'm_mounted_on == m_root_node'. root now has exactly
   one reference, to root, if no files are open, just like all other
   filesystems. m_driver_e is unused.
2009-01-26 17:43:59 +00:00
Ben Gras
36909196cf make bootinfo valid immediately 2009-01-14 08:56:20 +00:00
Ben Gras
0579810535 don't ignore the fact that scancodes are escaped.
if not understood explicitly, print diagnostic and 
ignore scancode.
2008-12-21 03:53:25 +00:00
Ben Gras
f4d0d635fd - hz dynamic
- new map /dev/video implementation
 - ser_putc into library
2008-12-08 16:40:29 +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
Philip Homburg
00ef93d6a2 Use nonblocking sends to reply, fixed reply message for DIAGNOSTICS(_S) 2008-02-22 16:03:00 +00:00
Ben Gras
2c45324c47 keymap contributed by Roman Ignatov. 2008-02-06 15:16:50 +00:00
Philip Homburg
1d4afb3599 Compile-time option to duplicate console output to the first serial line 2007-08-07 11:27:03 +00:00
Ben Gras
03446f5554 micro_delay in sysutil, used in ti1225, dp8390, fxp and
orinoco now. Uses a combination of tickdelay (where possible) and
calibrated busywait (where necessary).
2007-07-31 15:01:49 +00:00
Ben Gras
b918f61820 Boot monitor flag that enables 'sticky right-alt', permanent change
to col selected from the keymap untill right-alt is pressed again.

Sticky alt code and russian keymap contributed by Roman Ignatov
and Yaroslav Schekin.
2007-05-16 13:14:37 +00:00
Philip Homburg
bb659b1ad6 Disabled ser_putc for reporting debug internal to tty over the serial line.
Disabled return statement for serial debug input in the kernel.
2007-04-23 14:59:32 +00:00
Ben Gras
9f2f3dd488 don't call mkdep with an absolute path 2007-02-08 16:26:20 +00:00
Ben Gras
8ea438ae93 Retired DEV_{READ,WRITE,GATHER,SCATTER,IOCTL} (safe versions *_S are to
be used and drivers should never receieve these 'unsafe' variants
any more).
2007-02-07 16:22:19 +00:00
Ben Gras
753f7bebde Don't let rs232 code send REVIVEs. 2007-01-04 12:06:04 +00:00
Ben Gras
6f77685609 Split of architecture-dependent and -independent functions for i386,
mainly in the kernel and headers. This split based on work by
Ingmar Alting <iaalting@cs.vu.nl> done for his Minix PowerPC architecture
port.

 . kernel does not program the interrupt controller directly, do any
   other architecture-dependent operations, or contain assembly any more,
   but uses architecture-dependent functions in arch/$(ARCH)/.
 . architecture-dependent constants and types defined in arch/$(ARCH)/include.
 . <ibm/portio.h> moved to <minix/portio.h>, as they have become, for now,
   architecture-independent functions.
 . int86, sdevio, readbios, and iopenable are now i386-specific kernel calls
   and live in arch/i386/do_* now.
 . i386 arch now supports even less 86 code; e.g. mpx86.s and klib86.s have
   gone, and 'machine.protected' is gone (and always taken to be 1 in i386).
   If 86 support is to return, it should be a new architecture.
 . prototypes for the architecture-dependent functions defined in
   kernel/arch/$(ARCH)/*.c but used in kernel/ are in kernel/proto.h
 . /etc/make.conf included in makefiles and shell scripts that need to
   know the building architecture; it defines ARCH=<arch>, currently only
   i386.
 . some basic per-architecture build support outside of the kernel (lib)
 . in clock.c, only dequeue a process if it was ready
 . fixes for new include files

files deleted:
 . mpx/klib.s - only for choosing between mpx/klib86 and -386
 . klib86.s - only for 86

i386-specific files files moved (or arch-dependent stuff moved) to arch/i386/:
 . mpx386.s (entry point)
 . klib386.s
 . sconst.h
 . exception.c
 . protect.c
 . protect.h
 . i8269.c
2006-12-22 15:22:27 +00:00
Ben Gras
7195fe3325 System statistical and call profiling
support by Rogier Meurs <rogier@meurs.org>.
2006-10-30 15:53:38 +00:00
Philip Homburg
0ac9521c94 TTY should not panic when it is impossible to reply. A driver may crash
before receiving the reply from TTY.
2006-08-28 12:16:15 +00:00
Ben Gras
9d9e14941e At least 8k stack for all drivers so that malloc() works, for grants,
for printf().
2006-08-02 22:51:47 +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
Ben Gras
cbfcdcc4c2 Use grant address type in loadfont ioctl. 2006-07-21 14:39:48 +00:00
Philip Homburg
f6d1f6fdf6 Switch to vc 0 and softscrolling when /dev/video is opened and switch back
at the close. This should prevent problems with X on (emulated) Cirrus
cards.
2006-07-19 11:50:18 +00:00
Philip Homburg
ee09d50403 Changed to use sys_readbios to get screen parameters. Added safecopy version
to get log messages.
2006-07-10 12:37:39 +00:00
Ben Gras
1561067ee4 Grant system dynamic-only. 2006-06-30 14:40:29 +00:00
Ben Gras
1c8b206a5d . Safe I/O, ioctl() and DIAGNOSTICS variants conversion - safe copies,
include grant id in DEV_REVIVE messages.
. Removal of TTY_FLAGS field (and so O_NONBLOCK support).
. Fixed CANCEL behaviour and return code on blocking I/O,
  previously handled by O_NONBLOCK
. Totally removed REVIVE replies, previously still possible on
  blocking ioctls (REVIVE directly called) and ptys (missing TTY_REVIVE
  check), removes deadlock bug with FS
. Removed obsolete *COMPAT options and associated code
2006-06-20 09:02:54 +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
5a8315cf5b call cons_stop() before sys_abort() to not break tty on shutdown 2006-05-11 14:01:44 +00:00
Ben Gras
2ab95796b5 Don't install in /sbin - confusing with real tty command 2006-03-29 12:41:11 +00:00
Ben Gras
0524ed35cd Install tty in /sbin 2006-03-26 16:22:02 +00:00
Ben Gras
dac520e6f2 Compile warnings 2006-03-24 23:02:56 +00:00
Ben Gras
9f6b2666e1 Compiler warnings fix 2006-03-24 14:16:13 +00:00
Ben Gras
471c1e5f00 reply failed to whom? 2006-03-24 12:45:35 +00:00
Ben Gras
e76a222de7 Rename latin-am to latin-america 2006-03-22 13:02:28 +00:00
Ben Gras
9d564995cd Fix rename 2006-03-20 10:44:43 +00:00
Ben Gras
95ea6383b5 we have longer filenames now so can spell scandinavian in full.
: ----------------------------------------------------------------------
2006-03-19 20:53:20 +00:00
Jorrit Herder
376d8485d8 *** empty log message *** 2006-03-10 16:20:24 +00:00
Ben Gras
f877da3aec endpoint migration for drivers.
mostly renaming message field names to the new names.

tty stored process numbers in chars in tty and pty structs - now ints.
2006-03-03 10:21:45 +00:00
Ben Gras
65e7b878d4 getmachine info first, then init tty.
Problem report and fix given by:
Prof: Alejandro T. Bello Ruiz <abello@macareo.pucp.edu.pe>
2006-02-17 10:23:16 +00:00
Ben Gras
13e0afef7b #ifdeffed out some more debug stuff 2006-02-06 15:03:51 +00:00
Ben Gras
dc410a6245 #ifdeffed out some debug code 2006-02-06 15:02:19 +00:00
Ben Gras
06db462da4 Added dvorak keymap. 2006-01-23 09:28:04 +00:00
Philip Homburg
ac7f7f3022 Less debug output from keyboard. 2006-01-12 14:44:02 +00:00
Philip Homburg
a894f5842f Larger raw keyboard/kbdaux buffer 2005-11-10 15:41:25 +00:00
Philip Homburg
5556281540 Added /dev/video for mapping video memory. 2005-11-09 15:45:48 +00:00
Philip Homburg
0b5a135a67 Raw keyboard and AUX support. Needs cleaning up. 2005-10-24 13:57:19 +00:00
Jorrit Herder
bf3f53be27 Removed check if slot in use for keymapping: otherwise IS may have problems
to recover.
2005-10-17 13:19:48 +00:00
Ben Gras
7226f4685f Get out silly debug message 2005-10-13 08:49:42 +00:00
Jorrit Herder
ee1f2bcb39 Minor fixes for RS. Install signal handlers. 2005-10-12 15:06:00 +00:00
Ben Gras
87dbfc7dda Added DEV_PING message type to drivers (but not ethernet drivers) so
RS can monitor them.
2005-10-12 14:31:39 +00:00
Ben Gras
f463c247b6 Minor number for pty device nodes computed wrongly 2005-10-11 17:04:56 +00:00
Ben Gras
b9defa9abd select status should return minor device number instead of tty
line number
2005-10-04 12:04:00 +00:00
Ben Gras
8c4166ee85 Add SIGWINCH signal and functionality in tty and support in PM. 2005-10-03 12:03:57 +00:00
Philip Homburg
9f8f2484dd Forward debug output that originates within TTY first to the log device. 2005-09-30 13:01:34 +00:00
Ben Gras
2559cff6dc Fix by Kenichi TAKAHAGI 2005-09-23 20:59:45 +00:00
Ben Gras
bd85f7015e typo 2005-09-22 21:18:02 +00:00
Ben Gras
859f2ba189 Remove debug message 2005-09-22 12:08:11 +00:00
Ben Gras
e3709af1b8 Andy's code fixes 2005-09-11 17:09:11 +00:00
Ben Gras
a32fa468f3 Make compiling with 0 pty's or rs232 lines possible (Al's patch) 2005-09-04 18:16:44 +00:00
Ben Gras
ae5f1f2286 ata-pci support for at driver.
added a hook in libdriver for HARD_INT messages.
2005-08-25 08:19:11 +00:00
Ben Gras
94ed5c2a4c Separated one-time keyboard initialization from per-console keyboard
initialization. One-time init is called from tty.

Side effect is that the one-time init is done after the sys_getmachine()
call, which makes set_leds() work, which makes numlock go off at booting.
2005-08-24 08:15:23 +00:00
Jorrit Herder
b4d7de6ee1 New makefile (src/tools/Makefile) logic:
- make fresh install: still builds new everything (libraries, services, image)
- make clean image: only builds new boot image (about 5 sec. now!)
2005-08-23 12:53:35 +00:00
Ben Gras
e2e90b1fdc Remove double-blank lines (Al) 2005-08-22 15:17:42 +00:00
Ben Gras
73847b7d50 *** empty log message *** 2005-08-05 16:48:44 +00:00
Jorrit Herder
e396496d8c Fixed small bug in alarm code.
Kernel timer count was not reset after expiry.
2005-08-05 16:46:27 +00:00
Ben Gras
0e3bef8597 pty select() support 2005-08-05 13:50:58 +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
e561081545 Miscellaneous clean ups and fixes to the kernel.
Support for FLOPPY in boot image. (Set controller=fd at boot monitor.)
Moved major device numbers to <minix/dmap.h> (maybe rename to dev.h?)
2005-08-04 09:26:36 +00:00
Jorrit Herder
375f6f8754 Miscellaneous cleanups. 2005-08-03 11:53:36 +00:00
Jorrit Herder
52965b6f17 Various updates to support dynamically starting drivers.
Output during initialization should be suppressed. Unless an error occurs.
Note that main() can now be main(int argc, char **argv) and arguments can
be passed when bringing up the driver.
2005-08-02 15:30:36 +00:00
Philip Homburg
537d7ddcdf Replace REVIVE with notify. 2005-08-01 14:40:21 +00:00
Jorrit Herder
1198491af2 *** empty log message *** 2005-07-29 15:33:31 +00:00
Philip Homburg
a93faca75f rs232 support 2005-07-29 15:22:58 +00:00
Jorrit Herder
aec394a330 Updated drivers according to syslib interface changes. 2005-07-29 15:00:22 +00:00
Jorrit Herder
d62e515660 Small update to SYS_IRQCTL -> setting an interrupt policy now allows the caller
to provide an index (0 .. 31) that is passed in the HARD_INT message when an
interrupt occurs. The NOTIFY_ARG field contains a bitmap with all indexes for
which an interrupt occured.
2005-07-29 12:44:42 +00:00
Jorrit Herder
fe0dcb5c00 AT driver is not modified (debugging only);
TTY: select and revive with new notify and FS call back;
kernel: removed old notify code; removed ugly prepare_shutdown timer
kputc: don't send to FS if PRINTF_PROC fails
2005-07-27 14:32:16 +00:00
Jorrit Herder
30d95cad82 Removed debug output. 2005-07-26 14:54:49 +00:00
Jorrit Herder
a63d324caa Small update to shared driver code: SYS_EVENT (signal) is now known.
Fixed drivers. HARD_STOP message no longer exists.
2005-07-26 12:50:25 +00:00
Jorrit Herder
d2d975246d Kernel sends SIGKSTOP just before shutdown. Drivers do clean up and exit. 2005-07-20 15:28:05 +00:00
Jorrit Herder
5594b767c0 Renamed src/lib/utils to src/lib/sysutil --- because of new src/lib/util 2005-07-19 13:21:51 +00:00
Jorrit Herder
8c024e28a1 Changed Makefiles: drivers are now installed in /usr/sbin.
TTY now gets SYS_EVENT message with sigset (e.g., SIGKMESS, SIGKSTOP).
2005-07-19 12:12:48 +00:00
Jorrit Herder
279250889f Renamed some system library functionality. 2005-07-14 15:15:18 +00:00
Philip Homburg
a467c43c01 use relative directories in makefiles. 2005-06-28 14:56:30 +00:00
Jorrit Herder
5654996c07 New Makefiles for mkdep script. 2005-06-24 16:21:54 +00:00
Jorrit Herder
ec24a0798c Updated function key mapping because of possible changes to NOTIFY.
The TTY driver now only notifies the IS server about function key event,
but does not tell which keys are pressed. The IS servers queries the TTY
driver to find out about this.
2005-06-20 14:23:31 +00:00
Ben Gras
471e0448c3 Changed timer library function args.
Added select() support for tty fd's (not ptys yet).
2005-06-17 13:37:41 +00:00
Jorrit Herder
c2cd510adf Removed debug dumps from the PM and FS servers. The dumps are now done by the
IS servers, which obtains a copy of the data through the getsysinfo() system
call. CTRL-F1 now is a special TTY key to shows function key mappings.
2005-06-07 14:43:35 +00:00
Jorrit Herder
c281867f46 Fixed bug relating to FS and MEMORY during startup;
Relocated some syslib functions to utils library;
Changed location of 'Multiuser startup ..." echo in /etc/rc
2005-06-06 09:30:44 +00:00