]> Zhao Yanbai Git Server - minix.git/log
minix.git
14 years agoRemoved unused variable ip_port from icmp_router_advertisment().
Kees van Reeuwijk [Wed, 20 Jan 2010 22:02:25 +0000 (22:02 +0000)]
Removed unused variable ip_port from icmp_router_advertisment().

14 years agoRemove iov_src variables, that were only declared and incremented,
Kees van Reeuwijk [Wed, 20 Jan 2010 21:31:59 +0000 (21:31 +0000)]
Remove iov_src variables, that were only declared and incremented,
but never used, all over the network drivers.

14 years agoRewrote a number of cases where variables were used before they initialized.
Kees van Reeuwijk [Wed, 20 Jan 2010 17:59:48 +0000 (17:59 +0000)]
Rewrote a number of cases where variables were used before they initialized.

14 years agoRemoved some unused tests.
Kees van Reeuwijk [Wed, 20 Jan 2010 17:55:14 +0000 (17:55 +0000)]
Removed some unused tests.

14 years agoRemoved unused code in the ethernet driver that was left from an old implementation
Kees van Reeuwijk [Wed, 20 Jan 2010 17:02:55 +0000 (17:02 +0000)]
Removed unused code in the ethernet driver that was left from an old implementation
Removed/rewritten the use of uninitialized variables in error messages.

14 years agoFix typo in ENOPSUP definition
Erik van der Kouwe [Wed, 20 Jan 2010 16:36:48 +0000 (16:36 +0000)]
Fix typo in ENOPSUP definition

14 years agoremove SYS_MAPDMA
David van Moolenbroek [Tue, 19 Jan 2010 21:24:42 +0000 (21:24 +0000)]
remove SYS_MAPDMA

14 years agorename message.m5_c[12] to m5_s[12]
David van Moolenbroek [Tue, 19 Jan 2010 21:19:59 +0000 (21:19 +0000)]
rename message.m5_c[12] to m5_s[12]

14 years agosetgroups fix
David van Moolenbroek [Tue, 19 Jan 2010 21:15:43 +0000 (21:15 +0000)]
setgroups fix

14 years agoVM information interface
David van Moolenbroek [Tue, 19 Jan 2010 21:00:20 +0000 (21:00 +0000)]
VM information interface

14 years agoFixed warnings in watchdog.c
Tomas Hruby [Tue, 19 Jan 2010 14:47:25 +0000 (14:47 +0000)]
Fixed warnings in watchdog.c

14 years agoFixed some flawed defensive programming in audio drivers.
Kees van Reeuwijk [Mon, 18 Jan 2010 21:37:24 +0000 (21:37 +0000)]
Fixed some flawed defensive programming in audio drivers.

14 years agoUse _POSIX_SOURCE rather than _MINIX to protect popen, pclose and snprintf
Erik van der Kouwe [Mon, 18 Jan 2010 18:06:43 +0000 (18:06 +0000)]
Use _POSIX_SOURCE rather than _MINIX to protect popen, pclose and snprintf

14 years agoFix to make making a bootable cd possible again.
Ben Gras [Mon, 18 Jan 2010 14:10:04 +0000 (14:10 +0000)]
Fix to make making a bootable cd possible again.

ow that the image has grown beyond the 1.44M that fits on a floppy.
(previously, the floppy emulation mode was used for cd's.)

the boot cd now uses 'no emulation mode,' where an image is provided on
the cd that is loaded and executed directly. this is the boot monitor.

in order to make this work (the entry point is the same as where the
image is loaded, and the boot monitor needs its a.out header too) and
keep compatability with the same code being used for regular booting, i
prepended 16 bytes that jumps over its header so execution can start
there.

to be able to read the CD (mostly in order to read the boot image),
boot has to use the already present 'extended read' call, but address
the CD using 2k sectors.

14 years agoNMI watchdog is an awesome feature for debugging locked up kernels.
Tomas Hruby [Sat, 16 Jan 2010 20:53:55 +0000 (20:53 +0000)]
NMI watchdog is an awesome feature for debugging locked up kernels.
There is not that much use for it on a single CPU, however, deadlock
between kernel and system task can be delected. Or a runaway loop.

If a kernel gets locked up the timer interrupts don't occure (as all
interrupts are disabled in kernel mode). The only chance is to
interrupt the kernel by a non-maskable interrupt.

This patch generates NMIs using performance counters. It uses the most
widely available performace counters. As the performance counters are
highly model-specific this patch is not guaranteed to work on every
machine.  Unfortunately this is also true for KVM :-/ On the other
hand adding this feature for other models is not extremely difficult
and the framework makes it hopefully easy enough.

Depending on the frequency of the CPU an NMI is generated at most
about every 0.5s If the cpu's speed is less then 2Ghz it is generated
at most every 1s. In general an NMI is generated much less often as
the performance counter counts down only if the cpu is not idle.
Therefore the overhead of this feature is fairly minimal even if the
load is high.

Uppon detecting that the kernel is locked up the kernel dumps the
state of the kernel registers and panics.

Local APIC must be enabled for the watchdog to work.

The code is _always_ compiled in, however, it is only enabled if
watchdog=<non-zero> is set in the boot monitor.

One corner case is serial console debugging. As dumping a lot of stuff
to the serial link may take a lot of time, the watchdog does not
detect lockups during this time!!! as it would result in too many
false positives. 10 nmi have to be handled before the lockup is
detected. This means something between ~5s to 10s.

Another corner case is that the watchdog is enabled only after the
paging is enabled as it would be pure madness to try to get it right.

14 years agoGive SETALARM privilege to atl2 driver
David van Moolenbroek [Sat, 16 Jan 2010 14:31:35 +0000 (14:31 +0000)]
Give SETALARM privilege to atl2 driver

14 years agoAdded a missing return statement in paired_grant().
Kees van Reeuwijk [Fri, 15 Jan 2010 21:45:30 +0000 (21:45 +0000)]
Added a missing return statement in paired_grant().
Removed lots of unused variables.

14 years agomake C function setgroups() be _setgroups(), called by the asm stub.
Ben Gras [Fri, 15 Jan 2010 17:16:15 +0000 (17:16 +0000)]
make C function setgroups() be _setgroups(), called by the asm stub.
initgroups() can then use _setgroups() instead of setgroups().

14 years ago_cpuid() - full cpuid instruction wrapper
Tomas Hruby [Fri, 15 Jan 2010 15:23:57 +0000 (15:23 +0000)]
_cpuid() - full cpuid instruction wrapper

- the prototype changes to

_cpuid(u32_t *eax, u32_t *ebx, u32_t *ecx, u32_t *edx)

- this makes possible to use all the features of the cpuid instruction as
  described in the Intel specs

14 years agoFixed extern declaration from pointer to array
Ben Gras [Fri, 15 Jan 2010 12:08:57 +0000 (12:08 +0000)]
Fixed extern declaration from pointer to array

14 years agoCompile and install e1000 driver by default
David van Moolenbroek [Fri, 15 Jan 2010 10:22:34 +0000 (10:22 +0000)]
Compile and install e1000 driver by default

14 years agoMerge of Wu's GSOC 09 branch (src.20090525.r4372.wu)
Cristiano Giuffrida [Thu, 14 Jan 2010 15:24:16 +0000 (15:24 +0000)]
Merge of Wu's GSOC 09 branch (src.20090525.r4372.wu)

Main changes:
- COW optimization for safecopy.
- safemap, a grant-based interface for sharing memory regions between processes.
- Integration with safemap and complete rework of DS, supporting new data types
  natively (labels, memory ranges, memory mapped ranges).
- For further information:
  http://wiki.minix3.org/en/SummerOfCode2009/MemoryGrants

Additional changes not included in the original Wu's branch:
- Fixed unhandled case in VM when using COW optimization for safecopy in case
  of a block that has already been shared as SMAP.
- Better interface and naming scheme for sys_saferevmap and ds_retrieve_map
  calls.
- Better input checking in syslib: check for page alignment when creating
  memory mapping grants.
- DS notifies subscribers when an entry is deleted.
- Documented the behavior of indirect grants in case of memory mapping.
- Test suite in /usr/src/test/safeperf|safecopy|safemap|ds/* reworked
  and extended.
- Minor fixes and general cleanup.
- TO-DO: Grant ids should be generated and managed the way endpoints are to make
sure grant slots are never misreused.

14 years agoFixed a bug in do_sdevio() that broke I/O size computations.
Kees van Reeuwijk [Thu, 14 Jan 2010 14:51:23 +0000 (14:51 +0000)]
Fixed a bug in do_sdevio() that broke I/O size computations.
Removed redundant size computations.
Cleaned up code.

14 years agoRemoved a whole herd of unused variables.
Kees van Reeuwijk [Thu, 14 Jan 2010 13:53:12 +0000 (13:53 +0000)]
Removed a whole herd of unused variables.
Some other cleanup.

14 years agoRemove obsolete m_ptr calculations in try_one() and mini_senda().
Kees van Reeuwijk [Thu, 14 Jan 2010 12:04:24 +0000 (12:04 +0000)]
Remove obsolete m_ptr calculations in try_one() and mini_senda().

14 years agoUninitialized variable fix in VM to kernel protocol
Tomas Hruby [Thu, 14 Jan 2010 11:30:02 +0000 (11:30 +0000)]
Uninitialized variable fix in VM to kernel protocol

- index must be initialized to 0 otherwise bad things happen like the mappings
  for local APIC are not correct after turning paging on.

14 years agoKilling Minix by typing Q on serial console
Tomas Hruby [Thu, 14 Jan 2010 09:46:16 +0000 (09:46 +0000)]
Killing Minix by typing Q on serial console

- if debugging on serial console is enabled typing Q kills the system. It is
  handy if the system gets locked up and the timer interrupts still work. Good
  for remote debugging.

- NOT_REACHABLE reintroduced and fixed. It should be used for marking code which
  is not reachable because the previous code _should_ not return. Such places
  are not always obvious

14 years agoFixed redundant typecast in lapic write/read macros
Tomas Hruby [Wed, 13 Jan 2010 18:23:58 +0000 (18:23 +0000)]
Fixed redundant typecast in lapic write/read macros

14 years agoAPIC disabled if CPU lacks TSC
Tomas Hruby [Wed, 13 Jan 2010 18:22:41 +0000 (18:22 +0000)]
APIC disabled if CPU lacks TSC

- we cannot calibrate local APIC timer in such a case

- fixes possible uninitialized variable problem during calibration if no TSC

14 years ago- Make packman unmount the packages cd if it was mounted.
Thomas Veerman [Wed, 13 Jan 2010 15:52:55 +0000 (15:52 +0000)]
- Make packman unmount the packages cd if it was mounted.
- Manpages for packman and packit.

14 years agoFixed a bug in apic.c that broke lapic_stop_timer().
Kees van Reeuwijk [Wed, 13 Jan 2010 14:44:19 +0000 (14:44 +0000)]
Fixed a bug in apic.c that broke lapic_stop_timer().
Fixed bugs in liveupdate.c that rendered load_state_info() meaningless.
More informative error message in do_config() in service.c.

14 years agoPCI: add 64-bit BAR support
David van Moolenbroek [Wed, 13 Jan 2010 10:52:47 +0000 (10:52 +0000)]
PCI: add 64-bit BAR support

14 years agoMount updates:
David van Moolenbroek [Tue, 12 Jan 2010 23:08:50 +0000 (23:08 +0000)]
Mount updates:
- allow mounting with "none" block device
- allow unmounting by mountpoint
- make VFS aware of file system process labels
- allow m3_ca1 to use the full available message size
- use *printf in u/mount(1), as mount(2) uses it already
- fix reference leaks for some mount error cases in VFS

14 years agoAdd tests for sigsetjmp/siglongjmp
Erik van der Kouwe [Tue, 12 Jan 2010 09:53:39 +0000 (09:53 +0000)]
Add tests for sigsetjmp/siglongjmp

14 years agoLocal apic is dissabled by default
Tomas Hruby [Mon, 11 Jan 2010 17:21:19 +0000 (17:21 +0000)]
Local apic is dissabled by default

to enable it set no_apic=0 in the boot monitor

14 years agoFixed some missing return statements.
Kees van Reeuwijk [Mon, 11 Jan 2010 14:22:29 +0000 (14:22 +0000)]
Fixed some missing return statements.

14 years agoUpdate years in man-pages (thanks to Antoine Leca for pointing this out)
Erik van der Kouwe [Sat, 9 Jan 2010 08:18:26 +0000 (08:18 +0000)]
Update years in man-pages (thanks to Antoine Leca for pointing this out)

14 years agoImplementations of readv and writev
Erik van der Kouwe [Fri, 8 Jan 2010 13:40:34 +0000 (13:40 +0000)]
Implementations of readv and writev

14 years agoAdd scalbn family of functions
Erik van der Kouwe [Fri, 8 Jan 2010 07:27:54 +0000 (07:27 +0000)]
Add scalbn family of functions

14 years agoAdd fabsf function
Erik van der Kouwe [Fri, 8 Jan 2010 07:27:11 +0000 (07:27 +0000)]
Add fabsf function

14 years agoInitialization protocol for system services.
Cristiano Giuffrida [Fri, 8 Jan 2010 01:20:42 +0000 (01:20 +0000)]
Initialization protocol for system services.

SYSLIB CHANGES:
- SEF framework now supports a new SEF Init request type from RS. 3 different
callbacks are available (init_fresh, init_lu, init_restart) to specify
initialization code when a service starts fresh, starts after a live update,
or restarts.

SYSTEM SERVICE CHANGES:
- Initialization code for system services is now enclosed in a callback SEF will
automatically call at init time. The return code of the callback will
tell RS whether the initialization completed successfully.
- Each init callback can access information passed by RS to initialize. As of
now, each system service has access to the public entries of RS's system process
table to gather all the information required to initialize. This design
eliminates many existing or potential races at boot time and provides a uniform
initialization interface to system services. The same interface will be reused
for the upcoming publish/subscribe model to handle dynamic
registration / deregistration of system services.

VM CHANGES:
- Uniform privilege management for all system services. Every service uses the
same call mask format. For boot services, VM copies the call mask from init
data. For dynamic services, VM still receives the call mask via rs_set_priv
call that will be soon replaced by the upcoming publish/subscribe model.

RS CHANGES:
- The system process table has been reorganized and split into private entries
and public entries. Only the latter ones are exposed to system services.
- VM call masks are now entirely configured in rs/table.c
- RS has now its own slot in the system process table. Only kernel tasks and
user processes not included in the boot image are now left out from the system
process table.
- RS implements the initialization protocol for system services.
- For services in the boot image, RS blocks till initialization is complete and
panics when failure is reported back. Services are initialized in their order of
appearance in the boot image priv table and RS blocks to implements synchronous
initialization for every system service having the flag SF_SYNCH_BOOT set.
- For services started dynamically, the initialization protocol is implemented
as though it were the first ping for the service. In this case, if the
system service fails to report back (or reports failure), RS brings the service
down rather than trying to restart it.

14 years agoPrevent nanosleep from potentially overwriting sleep time
Erik van der Kouwe [Thu, 7 Jan 2010 19:25:18 +0000 (19:25 +0000)]
Prevent nanosleep from potentially overwriting sleep time
suggested by Rene Zatvo

14 years agoAdd ENOTSUP error code
Erik van der Kouwe [Thu, 7 Jan 2010 09:53:31 +0000 (09:53 +0000)]
Add ENOTSUP error code

14 years agoMake get/setsockopt handle SOREUSEADDR
Erik van der Kouwe [Thu, 7 Jan 2010 09:53:08 +0000 (09:53 +0000)]
Make get/setsockopt handle SOREUSEADDR

14 years agoAllow test43 to deal with broken symlinks
Erik van der Kouwe [Thu, 7 Jan 2010 09:52:23 +0000 (09:52 +0000)]
Allow test43 to deal with broken symlinks

14 years agoFix brackets in kernel/arch/i386/include/archconst.h
Erik van der Kouwe [Wed, 6 Jan 2010 08:46:33 +0000 (08:46 +0000)]
Fix brackets in kernel/arch/i386/include/archconst.h

14 years agoFix bracket with different color in netconf(8) man-page
Erik van der Kouwe [Wed, 6 Jan 2010 08:31:11 +0000 (08:31 +0000)]
Fix bracket with different color in netconf(8) man-page

14 years agoMan-page for netconf(8), contributed by Leith Brandeland
Erik van der Kouwe [Wed, 6 Jan 2010 08:24:06 +0000 (08:24 +0000)]
Man-page for netconf(8), contributed by Leith Brandeland

14 years agoFixed a typing bug.
Kees van Reeuwijk [Wed, 6 Jan 2010 08:23:14 +0000 (08:23 +0000)]
Fixed a typing bug.
More explicit type conversion from virual to physical bytes.
Bracket negative #defines for extra paranoia.
Added a forgotten 'void' to a function.

14 years agoFix netconf alignment now that there is a number 10"
Erik van der Kouwe [Wed, 6 Jan 2010 08:20:12 +0000 (08:20 +0000)]
Fix netconf alignment now that there is a number 10"
Note: should fix again when we reach 100 :)

14 years agoMove man-pages for zoneinfo, replace with links
Erik van der Kouwe [Wed, 6 Jan 2010 08:00:39 +0000 (08:00 +0000)]
Move man-pages for zoneinfo, replace with links

14 years agoOops, forgot to svn add this
Erik van der Kouwe [Wed, 6 Jan 2010 07:49:54 +0000 (07:49 +0000)]
Oops, forgot to svn add this

14 years agoMove man-pages for bzip2, replace with links.
Erik van der Kouwe [Wed, 6 Jan 2010 07:45:45 +0000 (07:45 +0000)]
Move man-pages for bzip2, replace with links.

14 years agoMan-page for ping, contributed by Leith Brandeland
Erik van der Kouwe [Wed, 6 Jan 2010 07:36:12 +0000 (07:36 +0000)]
Man-page for ping, contributed by Leith Brandeland

14 years agoGeneral cleanup:
David van Moolenbroek [Tue, 5 Jan 2010 19:39:27 +0000 (19:39 +0000)]
General cleanup:
- clean up kernel section of minix/com.h somewhat
- remove ALLOCMEM and VM_ALLOCMEM calls
- remove non-safecopy and minix-vmd support from Inet
- remove SYS_VIRVCOPY and SYS_PHYSVCOPY calls
- remove obsolete segment encoding in SYS_SAFECOPY*
- remove DEVCTL call, svrctl(FSDEVUNMAP), map_driverX
- remove declarations of unimplemented svrctl requests
- remove everything related to swapping to disk
- remove floppysetup.sh
- remove traces of rescue device
- update DESCRIBE.sh with new devices
- some other small changes

14 years agoVM: make munmap(2) round length up, not down (reported by Althaf K Backer)
David van Moolenbroek [Tue, 5 Jan 2010 09:40:07 +0000 (09:40 +0000)]
VM: make munmap(2) round length up, not down (reported by Althaf K Backer)

14 years agoadd ptrace(2) TO_NOEXEC flag
David van Moolenbroek [Tue, 5 Jan 2010 09:30:28 +0000 (09:30 +0000)]
add ptrace(2) TO_NOEXEC flag

14 years agostart a.out2com script with 'sh' (Bug#365.1, reported by Antoine Leca)
David van Moolenbroek [Tue, 5 Jan 2010 09:21:55 +0000 (09:21 +0000)]
start a.out2com script with 'sh' (Bug#365.1, reported by Antoine Leca)

14 years agotypo (Bug#376, reported by Kees van Reeuwijk)
David van Moolenbroek [Mon, 4 Jan 2010 12:29:51 +0000 (12:29 +0000)]
typo (Bug#376, reported by Kees van Reeuwijk)

14 years agomore kernel header typos
David van Moolenbroek [Fri, 1 Jan 2010 20:18:05 +0000 (20:18 +0000)]
more kernel header typos

14 years agoAdd man entry for new errno code
Erik van der Kouwe [Thu, 31 Dec 2009 12:09:31 +0000 (12:09 +0000)]
Add man entry for new errno code

14 years agoAdded EILSEQ, based on newsgroup post by Leith
Erik van der Kouwe [Thu, 31 Dec 2009 11:48:08 +0000 (11:48 +0000)]
Added EILSEQ, based on newsgroup post by Leith

14 years agoDriver for Attansic L2 FastEthernet (atl2)
David van Moolenbroek [Wed, 30 Dec 2009 22:42:44 +0000 (22:42 +0000)]
Driver for Attansic L2 FastEthernet (atl2)

14 years agoMan-page name order fixes
Erik van der Kouwe [Wed, 30 Dec 2009 20:35:05 +0000 (20:35 +0000)]
Man-page name order fixes

14 years agoAdd timeout to test42
Erik van der Kouwe [Wed, 30 Dec 2009 20:22:21 +0000 (20:22 +0000)]
Add timeout to test42

14 years agoKernel: fix do_stime.c header comment (2)
David van Moolenbroek [Wed, 30 Dec 2009 14:56:54 +0000 (14:56 +0000)]
Kernel: fix do_stime.c header comment (2)

14 years agoKernel: fix do_stime.c header comment
David van Moolenbroek [Wed, 30 Dec 2009 14:56:35 +0000 (14:56 +0000)]
Kernel: fix do_stime.c header comment

14 years agomdb(1) fixes:
David van Moolenbroek [Tue, 29 Dec 2009 21:38:26 +0000 (21:38 +0000)]
mdb(1) fixes:
- allow core file offsets with high bit set
- repair and enable gcc-compiled binary support
- fix bug leading to random command execution
- remove obsolete ptrace.2 manpage

14 years agosuppress kernel/VM memory debugging information
David van Moolenbroek [Tue, 29 Dec 2009 21:35:12 +0000 (21:35 +0000)]
suppress kernel/VM memory debugging information

14 years agounbreak, deprivilege dumpcore(1)
David van Moolenbroek [Tue, 29 Dec 2009 21:34:06 +0000 (21:34 +0000)]
unbreak, deprivilege dumpcore(1)

14 years agoptrace(2) modifications:
David van Moolenbroek [Tue, 29 Dec 2009 21:32:15 +0000 (21:32 +0000)]
ptrace(2) modifications:
- add T_GETRANGE/T_SETRANGE to get/set ranges of values
- change EIO error code to EFAULT
- move common-I&D text-to-data translation to umap_local

14 years agounbreak "make dos" in boot (Bug#365, patch by Antoine Leca)
David van Moolenbroek [Thu, 24 Dec 2009 23:49:23 +0000 (23:49 +0000)]
unbreak "make dos" in boot (Bug#365, patch by Antoine Leca)

14 years agoFix MFS ftruncate crash (Bug#370, reported by Aki Goto)
David van Moolenbroek [Thu, 24 Dec 2009 23:43:16 +0000 (23:43 +0000)]
Fix MFS ftruncate crash (Bug#370, reported by Aki Goto)

14 years agoFloating point support functions
Erik van der Kouwe [Thu, 24 Dec 2009 20:22:41 +0000 (20:22 +0000)]
Floating point support functions

14 years agounbreak building CDs
David van Moolenbroek [Wed, 23 Dec 2009 23:59:32 +0000 (23:59 +0000)]
unbreak building CDs

14 years agoCorrect ping(1) usage string (Bug#372, reported by Leith Brandeland
David van Moolenbroek [Wed, 23 Dec 2009 23:42:07 +0000 (23:42 +0000)]
Correct ping(1) usage string (Bug#372, reported by Leith Brandeland

14 years agoMove setuid() hack where it belongs.
Cristiano Giuffrida [Wed, 23 Dec 2009 16:26:28 +0000 (16:26 +0000)]
Move setuid() hack where it belongs.

14 years agoShare exec images in RS.
Cristiano Giuffrida [Wed, 23 Dec 2009 14:05:20 +0000 (14:05 +0000)]
Share exec images in RS.

RS CHANGES:
- RS retains information on both labels and process names now. Labels for boot
processes are configured in the boot image priv table. Process names are
inherited from the in-kernel boot image table.
- When RS_REUSE is specified in do_up, RS looks for an existing slot having the
same process name as the one we are about to start. If one is found with
an in-memory copy of its executable image, the image is then shared between
the two processes, rather than copying it again. This behavior can be specified
by using 'service -r' when starting a system service from the command line.

14 years agoConsole function keys and color support:
David van Moolenbroek [Tue, 22 Dec 2009 23:30:50 +0000 (23:30 +0000)]
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

14 years agoanother warning regression fix
David van Moolenbroek [Tue, 22 Dec 2009 00:05:09 +0000 (00:05 +0000)]
another warning regression fix

14 years agono! no new warnings
David van Moolenbroek [Mon, 21 Dec 2009 23:39:08 +0000 (23:39 +0000)]
no! no new warnings

14 years agoFilter driver updates:
David van Moolenbroek [Mon, 21 Dec 2009 23:30:01 +0000 (23:30 +0000)]
Filter driver updates:
- optionally vectorize I/O requests to work around hardware bugs
- extend default buffer size to cover MFS's default maximum request size
- use mmap directly, rather than alloc_contig
- add 'nil' checksum type for comparison with layout
- minor style corrections

14 years agoTTY fixes:
David van Moolenbroek [Mon, 21 Dec 2009 23:19:01 +0000 (23:19 +0000)]
TTY fixes:
- reenable code to restore screen/cursor at shutdown
- add proper signal checking logic
- lock to first console during shutdown

14 years agoBasic System Event Framework (SEF) with ping and live update.
Cristiano Giuffrida [Mon, 21 Dec 2009 14:12:21 +0000 (14:12 +0000)]
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.

14 years agoFix typo
Thomas Veerman [Mon, 21 Dec 2009 13:59:04 +0000 (13:59 +0000)]
Fix typo

14 years agoSupport for larger disks.
David van Moolenbroek [Mon, 21 Dec 2009 11:20:30 +0000 (11:20 +0000)]
Support for larger disks.
- MFS, df(1), fsck(1), badblocks(8), de(1x) now compute the
  superblock's s_firstdatazone value if the on-disk value is zero
- mkfs(1) sets s_firstdatazone in the superblock to zero if the
  on-disk field is too small to store the actual value
- more agressive mkfs(1) inode number heuristic, copied from r5261

14 years agoFix typo and a bug causing vnode references to become too low.
Thomas Veerman [Mon, 21 Dec 2009 09:36:34 +0000 (09:36 +0000)]
Fix typo and a bug causing vnode references to become too low.

14 years agoFix compilation errors caused by more files not added in previous commit
Thomas Veerman [Sun, 20 Dec 2009 21:31:03 +0000 (21:31 +0000)]
Fix compilation errors caused by more files not added in previous commit

14 years agoAdd PFS (missing in previous commit)
Thomas Veerman [Sun, 20 Dec 2009 20:41:50 +0000 (20:41 +0000)]
Add PFS (missing in previous commit)

14 years ago- Introduce support for sticky bit.
Thomas Veerman [Sun, 20 Dec 2009 20:27:14 +0000 (20:27 +0000)]
- Introduce support for sticky bit.
- Revise VFS-FS protocol and update VFS/MFS/ISOFS accordingly.
- Clean up MFS by removing old, dead code (backwards compatibility is broken by
  the new VFS-FS protocol, anyway) and rewrite other parts. Also, make sure all
  functions have proper banners and prototypes.
- VFS should always provide a (syntactically) valid path to the FS; no need for
  the FS to do sanity checks when leaving/entering mount points.
- Fix several bugs in MFS:
  - Several path lookup bugs in MFS.
  - A link can be too big for the path buffer.
  - A mountpoint can become inaccessible when the creation of a new inode
    fails, because the inode already exists and is a mountpoint.
- Introduce support for supplemental groups.
- Add test 46 to test supplemental group functionality (and removed obsolete
  suppl. tests from test 2).
- Clean up VFS (not everything is done yet).
- ISOFS now opens device read-only. This makes the -r flag in the mount command
  unnecessary (but will still report to be mounted read-write).
- Introduce PipeFS. PipeFS is a new FS that handles all anonymous and
  named pipes. However, named pipes still reside on the (M)FS, as they are part
  of the file system on disk. To make this work VFS now has a concept of
  'mapped' inodes, which causes read, write, truncate and stat requests to be
  redirected to the mapped FS, and all other requests to the original FS.

14 years agoRemove some GCC library warnings
Erik van der Kouwe [Thu, 17 Dec 2009 08:43:31 +0000 (08:43 +0000)]
Remove some GCC library warnings

14 years agoDrivers and servers are simply known as services.
Cristiano Giuffrida [Thu, 17 Dec 2009 01:53:26 +0000 (01:53 +0000)]
Drivers and servers are simply known as services.

/etc CHANGES:
- /etc/drivers.conf has been renamed to /etc/system.conf. Every entry in
the file is now marked as "service" rather than driver.
- user "service" has been added to password file /etc/passwd.
- docs/UPDATING updated accordingly, as well as every other mention to the old
drivers.conf in the system.

RS CHANGES:
- No more distinction between servers and drivers.
- RS_START has been renamed to RS_UP and the old legacy RS_UP and RS_UP_COPY
dropped.
- RS asks PCI to set / remove ACL entries only for services whose ACL properties
have been set. This change eliminates unnecessary warnings.
- Temporarily minimize the risk of potential races at boot time or when starting
a new service. Upcoming changes will eliminate races completely.
- General cleanup.

14 years agoFix bug in IPC deadlock detection code.
Cristiano Giuffrida [Wed, 16 Dec 2009 23:32:08 +0000 (23:32 +0000)]
Fix bug in IPC deadlock detection code.

The old deadlock code was misplaced and unable to deal with asynchronous
IPC primitives (notify and senda) effectively. As an example, the following
sequence of messages allowed the deadlock detection code to
trigger a false positive:
1. A.notify(B)
2. A.receive(B)
3. B.receive(A)
1. B.notify(A)
The solution is to run the deadlock detection routine only when a process is
about to block in mini_send() or mini_receive().

14 years agotypo
David van Moolenbroek [Wed, 16 Dec 2009 12:17:02 +0000 (12:17 +0000)]
typo

14 years agofix remaining warnings in 'make world'
David van Moolenbroek [Mon, 14 Dec 2009 20:25:52 +0000 (20:25 +0000)]
fix remaining warnings in 'make world'

14 years agoawk: check presence of parameters
David van Moolenbroek [Mon, 14 Dec 2009 20:24:33 +0000 (20:24 +0000)]
awk: check presence of parameters

14 years agotest42: disable attach-to-PM test
David van Moolenbroek [Sun, 13 Dec 2009 21:45:23 +0000 (21:45 +0000)]
test42: disable attach-to-PM test

14 years agoRewrite of boot process
Cristiano Giuffrida [Fri, 11 Dec 2009 00:08:19 +0000 (00:08 +0000)]
Rewrite of boot process

KERNEL CHANGES:
- The kernel only knows about privileges of kernel tasks and the root system
process (now RS).
- Kernel tasks and the root system process are the only processes that are made
schedulable by the kernel at startup. All the other processes in the boot image
don't get their privileges set at startup and are inhibited from running by the
RTS_NO_PRIV flag.
- Removed the assumption on the ordering of processes in the boot image table.
System processes can now appear in any order in the boot image table.
- Privilege ids can now be assigned both statically or dynamically. The kernel
assigns static privilege ids to kernel tasks and the root system process. Each
id is directly derived from the process number.
- User processes now all share the static privilege id of the root user
process (now INIT).
- sys_privctl split: we have more calls now to let RS set privileges for system
processes. SYS_PRIV_ALLOW / SYS_PRIV_DISALLOW are only used to flip the
RTS_NO_PRIV flag and allow / disallow a process from running. SYS_PRIV_SET_SYS /
SYS_PRIV_SET_USER are used to set privileges for a system / user process.
- boot image table flags split: PROC_FULLVM is the only flag that has been
moved out of the privilege flags and is still maintained in the boot image
table. All the other privilege flags are out of the kernel now.

RS CHANGES:
- RS is the only user-space process who gets to run right after in-kernel
startup.
- RS uses the boot image table from the kernel and three additional boot image
info table (priv table, sys table, dev table) to complete the initialization
of the system.
- RS checks that the entries in the priv table match the entries in the boot
image table to make sure that every process in the boot image gets schedulable.
- RS only uses static privilege ids to set privileges for system services in
the boot image.
- RS includes basic memory management support to allocate the boot image buffer
dynamically during initialization. The buffer shall contain the executable
image of all the system services we would like to restart after a crash.
- First step towards decoupling between resource provisioning and resource
requirements in RS: RS must know what resources it needs to restart a process
and what resources it has currently available. This is useful to tradeoff
reliability and resource consumption. When required resources are missing, the
process cannot be restarted. In that case, in the future, a system flag will
tell RS what to do. For example, if CORE_PROC is set, RS should trigger a
system-wide panic because the system can no longer function correctly without
a core system process.

PM CHANGES:
- The process tree built at initialization time is changed to have INIT as root
with pid 0, RS child of INIT and all the system services children of RS. This
is required to make RS in control of all the system services.
- PM no longer registers labels for system services in the boot image. This is
now part of RS's initialization process.

14 years agoAdjust number of tests
Erik van der Kouwe [Wed, 9 Dec 2009 19:30:39 +0000 (19:30 +0000)]
Adjust number of tests

14 years agoImplementation of strto(u)ll, documentation and tests for strto(u)l(l)
Erik van der Kouwe [Wed, 9 Dec 2009 19:01:38 +0000 (19:01 +0000)]
Implementation of strto(u)ll, documentation and tests for strto(u)l(l)