]> Zhao Yanbai Git Server - minix.git/log
minix.git
12 years agoVFS: remove support for sync FS communication
Thomas Veerman [Tue, 17 Jul 2012 10:12:34 +0000 (10:12 +0000)]
VFS: remove support for sync FS communication

12 years agoVFS: prevent buffer overflow
Thomas Veerman [Tue, 17 Jul 2012 08:47:51 +0000 (08:47 +0000)]
VFS: prevent buffer overflow

If an FS returns faulty struct dirent data, VFS could overflow
a buffer that holds this data.

12 years agovarious coverity-inspired fixes
Ben Gras [Mon, 16 Jul 2012 11:17:11 +0000 (13:17 +0200)]
various coverity-inspired fixes

. some strncpy/strcpy to strlcpy conversions
. new <minix/param.h> to avoid including other minix headers
  that have colliding definitions with library and commands code,
  causing parse warnings
. removed some dead code / assignments

12 years agoVFS: Use safe string copy functions
Thomas Veerman [Fri, 13 Jul 2012 16:08:06 +0000 (16:08 +0000)]
VFS: Use safe string copy functions

12 years agosegmentless smp fixes
Ben Gras [Thu, 12 Jul 2012 22:54:27 +0000 (00:54 +0200)]
segmentless smp fixes

adjust the smp booting procedure for segmentless operation. changes are
mostly due to gdt/idt being dependent on paging, because of the high
location, and paging being on much sooner because of that too.

also smaller fixes: redefine DESC_SIZE, fix kernel makefile variable name
(crosscompiling), some null pointer checks that trap now because of a
sparser pagetable, acpi sanity checking

12 years agoNo more intel/minix segments.
Ben Gras [Mon, 7 May 2012 14:03:35 +0000 (16:03 +0200)]
No more intel/minix segments.

This commit removes all traces of Minix segments (the text/data/stack
memory map abstraction in the kernel) and significance of Intel segments
(hardware segments like CS, DS that add offsets to all addressing before
page table translation). This ultimately simplifies the memory layout
and addressing and makes the same layout possible on non-Intel
architectures.

There are only two types of addresses in the world now: virtual
and physical; even the kernel and processes have the same virtual
address space. Kernel and user processes can be distinguished at a
glance as processes won't use 0xF0000000 and above.

No static pre-allocated memory sizes exist any more.

Changes to booting:
        . The pre_init.c leaves the kernel and modules exactly as
          they were left by the bootloader in physical memory
        . The kernel starts running using physical addressing,
          loaded at a fixed location given in its linker script by the
          bootloader.  All code and data in this phase are linked to
          this fixed low location.
        . It makes a bootstrap pagetable to map itself to a
          fixed high location (also in linker script) and jumps to
          the high address. All code and data then use this high addressing.
        . All code/data symbols linked at the low addresses is prefixed by
          an objcopy step with __k_unpaged_*, so that that code cannot
          reference highly-linked symbols (which aren't valid yet) or vice
          versa (symbols that aren't valid any more).
        . The two addressing modes are separated in the linker script by
          collecting the unpaged_*.o objects and linking them with low
          addresses, and linking the rest high. Some objects are linked
          twice, once low and once high.
        . The bootstrap phase passes a lot of information (e.g. free memory
          list, physical location of the modules, etc.) using the kinfo
          struct.
        . After this bootstrap the low-linked part is freed.
        . The kernel maps in VM into the bootstrap page table so that VM can
          begin executing. Its first job is to make page tables for all other
          boot processes. So VM runs before RS, and RS gets a fully dynamic,
          VM-managed address space. VM gets its privilege info from RS as usual
          but that happens after RS starts running.
        . Both the kernel loading VM and VM organizing boot processes happen
  using the libexec logic. This removes the last reason for VM to
  still know much about exec() and vm/exec.c is gone.

Further Implementation:
        . All segments are based at 0 and have a 4 GB limit.
        . The kernel is mapped in at the top of the virtual address
          space so as not to constrain the user processes.
        . Processes do not use segments from the LDT at all; there are
          no segments in the LDT any more, so no LLDT is needed.
        . The Minix segments T/D/S are gone and so none of the
          user-space or in-kernel copy functions use them. The copy
          functions use a process endpoint of NONE to realize it's
          a physical address, virtual otherwise.
        . The umap call only makes sense to translate a virtual address
          to a physical address now.
        . Segments-related calls like newmap and alloc_segments are gone.
        . All segments-related translation in VM is gone (vir2map etc).
        . Initialization in VM is simpler as no moving around is necessary.
        . VM and all other boot processes can be linked wherever they wish
          and will be mapped in at the right location by the kernel and VM
          respectively.

Other changes:
        . The multiboot code is less special: it does not use mb_print
          for its diagnostics any more but uses printf() as normal, saving
          the output into the diagnostics buffer, only printing to the
          screen using the direct print functions if a panic() occurs.
        . The multiboot code uses the flexible 'free memory map list'
          style to receive the list of free memory if available.
        . The kernel determines the memory layout of the processes to
          a degree: it tells VM where the kernel starts and ends and
          where the kernel wants the top of the process to be. VM then
          uses this entire range, i.e. the stack is right at the top,
          and mmap()ped bits of memory are placed below that downwards,
          and the break grows upwards.

Other Consequences:
        . Every process gets its own page table as address spaces
          can't be separated any more by segments.
        . As all segments are 0-based, there is no distinction between
          virtual and linear addresses, nor between userspace and
          kernel addresses.
        . Less work is done when context switching, leading to a net
          performance increase. (8% faster on my machine for 'make servers'.)
. The layout and configuration of the GDT makes sysenter and syscall
  possible.

12 years agoprofiling related cleanup
Ben Gras [Sat, 16 Jun 2012 16:38:31 +0000 (16:38 +0000)]
profiling related cleanup

. do not declare any data in <minix/profile.h>
. addr check no longer necessary

12 years agoboot programs gzip/strip changes
Ben Gras [Thu, 5 Jul 2012 15:32:15 +0000 (17:32 +0200)]
boot programs gzip/strip changes

as disk space typically isn't a concern when crosscompiling, but
convenience and ability to debug is, change the strip and gzip defaults

. do not strip or gzip the binaries when crosscompiling

this makes it faster to rebuild and restart a compiled system, with
debugging info if so desired.

12 years agoAdd entry in fstab and let the mount system call start devman.
Kees Jongenburger [Tue, 3 Jul 2012 12:57:13 +0000 (12:57 +0000)]
Add entry in fstab and let the mount system call start devman.

After this commit you will need an additional entry in fstab for
the /sys file system (see docs/UPDATING).

12 years agoAllow to specify the rslabel to use for a file system.
Kees Jongenburger [Wed, 4 Jul 2012 12:00:28 +0000 (12:00 +0000)]
Allow to specify the rslabel to use for a file system.

When a file system is mounted some heuristics are used to define
a RS label for that system. This commit allows to specify the
label to use in an optional mount argument using either
mount -o rslabel=fs_myfs or as a mount option in fstab.

This can be used to start services that later also need to be
accessed directly.

12 years agoFixes for mount -a.
Kees Jongenburger [Thu, 5 Jul 2012 09:04:15 +0000 (11:04 +0200)]
Fixes for mount -a.

* Display an error message upon failure to mount a device.
* Handle a special case when the source device is "none"
* pass the mount options stored in fourth field of fstab
  to mount(3).

12 years agoAdd a /sys entry to minix.mtree
Kees Jongenburger [Tue, 3 Jul 2012 11:43:42 +0000 (11:43 +0000)]
Add a /sys entry to minix.mtree

12 years agoCleanup minix.mtree.
Kees Jongenburger [Mon, 2 Jul 2012 16:32:30 +0000 (16:32 +0000)]
Cleanup minix.mtree.

Use consistent indenting and sort entries alphabetically.

12 years agodevmand call the cleanup method before doing an exit.
Kees Jongenburger [Tue, 3 Jul 2012 14:42:08 +0000 (14:42 +0000)]
devmand call the cleanup method before doing an exit.

Call the cleanup mehtod before doing an exit to prevent stale pid
files.

12 years agodon't leave _VCS_REVISION in
Ben Gras [Fri, 29 Jun 2012 14:34:41 +0000 (16:34 +0200)]
don't leave _VCS_REVISION in

12 years agoalign messages
Ben Gras [Fri, 29 Jun 2012 11:39:40 +0000 (13:39 +0200)]
align messages

Has a small but measurable performance improvement.

12 years agovarious symbol referencing fixes
Ben Gras [Thu, 28 Jun 2012 12:56:50 +0000 (14:56 +0200)]
various symbol referencing fixes

make weak symbol references and namespace renames references
the renamed versions.

function renaming, weak symbol references and libc namespace.h
protection interact in hairy ways and causes weak symbol references
for renamed functions to be unresolved; e.g. vfork should be an
alias for _vfork but _vfork doesn't exist because __vfork14()
exists.

this is a problem for dynamically linked executables as all symbols
have to be resolved, used or not, at link time. it was masked by
clang-compiled base system libraries but is a problem when gcc does
it.

12 years agolibvassert: don't build shared lib
Thomas Veerman [Tue, 26 Jun 2012 09:32:02 +0000 (09:32 +0000)]
libvassert: don't build shared lib

12 years agoreleasetools: use build system macros
Thomas Veerman [Tue, 26 Jun 2012 09:31:30 +0000 (09:31 +0000)]
releasetools: use build system macros

12 years agoxz: add libc dependency
Ben Gras [Mon, 25 Jun 2012 15:21:01 +0000 (17:21 +0200)]
xz: add libc dependency

12 years agold.so: be more mmap()-behaviour-independent
Ben Gras [Fri, 22 Jun 2012 09:55:11 +0000 (11:55 +0200)]
ld.so: be more mmap()-behaviour-independent

. if the layout of virtual address regions as returned
  by mmap() without a location hint changes, ld.so could
  trip itself up (under minix). this change allocates
  the full size it needs for every object that's loaded
  so that if that succeeds, it's sure there's virtual address
  space for the whole thing no matter what other bits happen
  to be there already.

. this fix exposed a bug in the test; at atexit() execution
  time the loaded object is unmapped, so that part of the
  test is removed.

12 years agofetch.sh: serve tarballs ourselves
Thomas Veerman [Mon, 25 Jun 2012 10:46:31 +0000 (10:46 +0000)]
fetch.sh: serve tarballs ourselves

And use the original sources as backup.

12 years agoImport lib{mpc,gmp,mpfr}
Thomas Veerman [Mon, 25 Jun 2012 09:15:27 +0000 (09:15 +0000)]
Import lib{mpc,gmp,mpfr}

This decreases external dependencies for crosscompilation. Note that
these libraries are not built nor used by Minix itself.

Furthermore, the shell scripts that download the tarballs for these
libraries, gcc, binutils, and gmake now also support curl in addition
to wget.

12 years agosed: unbreak crosscompilation
Thomas Veerman [Thu, 21 Jun 2012 14:07:59 +0000 (14:07 +0000)]
sed: unbreak crosscompilation

12 years agosed: add compatability symlink properly
Ben Gras [Wed, 20 Jun 2012 13:47:44 +0000 (15:47 +0200)]
sed: add compatability symlink properly

12 years agoInclude bsd.own.mk in /usr/Makefile to have INSTALL_DIR defined.
Kees Jongenburger [Tue, 19 Jun 2012 17:21:13 +0000 (17:21 +0000)]
Include bsd.own.mk in /usr/Makefile to have INSTALL_DIR defined.

12 years agosed: add compatability symlink
Ben Gras [Wed, 20 Jun 2012 12:47:01 +0000 (14:47 +0200)]
sed: add compatability symlink

12 years agosetup: copy boot.cfg.default to /boot.cfg
Thomas Veerman [Tue, 19 Jun 2012 16:07:40 +0000 (16:07 +0000)]
setup: copy boot.cfg.default to /boot.cfg

This way the setup stays in sync with the source tree.

12 years ago/etc/rc: use mount -a instead of manual parsing
Thomas Veerman [Tue, 19 Jun 2012 16:03:11 +0000 (16:03 +0000)]
/etc/rc: use mount -a instead of manual parsing

The rc script manually parses /etc/fstab to mount all file systems.
To do that it needs /bin/sed which does not exist anymore. mount(8)
now supports the -a flag which causes it to mount all file systems
listed in /etc/fstab except for '/'. File systems marked with 'noauto'
are skipped.

12 years agoAdding a symlink from /usr/bin/strip to /usr/pkg/bin/strip.
Kees Jongenburger [Tue, 19 Jun 2012 15:09:55 +0000 (15:09 +0000)]
Adding a symlink from /usr/bin/strip to /usr/pkg/bin/strip.

When calling the new install with the -s (strip) argument it will
use the hard coded /usr/bin/strip unless a STRIP environment is set.

12 years agoRemoved unused control fifo in devmand.
Kees Jongenburger [Tue, 19 Jun 2012 13:17:25 +0000 (13:17 +0000)]
Removed unused control fifo in devmand.

12 years agoDecrease verbosity of devmand.
Kees Jongenburger [Tue, 19 Jun 2012 10:14:14 +0000 (10:14 +0000)]
Decrease verbosity of devmand.

Display warnings(non critical errors) only when the verbose flag
is set.

12 years agogenerate offsets for ucontext.S
Ben Gras [Tue, 19 Jun 2012 02:16:41 +0000 (02:16 +0000)]
generate offsets for ucontext.S

12 years agoFix release script
Thomas Veerman [Tue, 19 Jun 2012 08:50:33 +0000 (08:50 +0000)]
Fix release script

12 years agoRelease script: tools -> releasetools rename
Thomas Veerman [Mon, 18 Jun 2012 15:13:26 +0000 (15:13 +0000)]
Release script: tools -> releasetools rename

12 years agomkfs.mfs: no need to include a.out.h
Thomas Veerman [Mon, 18 Jun 2012 13:39:21 +0000 (13:39 +0000)]
mkfs.mfs: no need to include a.out.h

12 years agoDon't build ext2 ramdisk for cross compilation
Thomas Veerman [Mon, 18 Jun 2012 09:29:44 +0000 (09:29 +0000)]
Don't build ext2 ramdisk for cross compilation

. as mkfs.mfs is now cross compilable, we can remove the ext2 ramdisk
  special case for cross compilation.

12 years agoClean up generated files for ash,ramdisk,libutil,libc
Thomas Veerman [Wed, 13 Jun 2012 09:25:15 +0000 (09:25 +0000)]
Clean up generated files for ash,ramdisk,libutil,libc

12 years agoCross compile MFS ramdisk
Thomas Veerman [Fri, 15 Jun 2012 14:13:12 +0000 (14:13 +0000)]
Cross compile MFS ramdisk

12 years agoMake mkfs.mfs cross compilable
Thomas Veerman [Tue, 12 Jun 2012 18:45:29 +0000 (20:45 +0200)]
Make mkfs.mfs cross compilable

12 years agoNot every shell understands 'let'
Thomas Veerman [Tue, 12 Jun 2012 18:51:17 +0000 (20:51 +0200)]
Not every shell understands 'let'

12 years agoUpdate nbsd_ports to account for new utils
Thomas Veerman [Mon, 11 Jun 2012 11:49:23 +0000 (11:49 +0000)]
Update nbsd_ports to account for new utils

12 years agoBuild file cross compilation tool
Thomas Veerman [Fri, 8 Jun 2012 09:32:09 +0000 (09:32 +0000)]
Build file cross compilation tool

12 years agoxinstall fix for cross compilation
Thomas Veerman [Fri, 8 Jun 2012 09:29:47 +0000 (09:29 +0000)]
xinstall fix for cross compilation

12 years agoUpdate gitignore for releasetools
Thomas Veerman [Thu, 7 Jun 2012 13:35:33 +0000 (13:35 +0000)]
Update gitignore for releasetools

12 years agoImport NetBSD tools and build.sh
Thomas Veerman [Wed, 6 Jun 2012 14:46:00 +0000 (14:46 +0000)]
Import NetBSD tools and build.sh

This commit finalizes support for cross compilation. The tools
directory are all links to the actual tools and are built on the
host system to build Minix. build.sh is the work horse that takes
care of all environment settings. It's slightly adjusted for Minix.
The /usr/src/Makefile has additional targets needed for cross
compilation.

12 years agoRemove duplicate sed
Thomas Veerman [Wed, 6 Jun 2012 14:41:53 +0000 (14:41 +0000)]
Remove duplicate sed

12 years agoFix sed for cross compilation
Thomas Veerman [Wed, 6 Jun 2012 14:32:59 +0000 (14:32 +0000)]
Fix sed for cross compilation

12 years agoImport NetBSD xinstall
Thomas Veerman [Wed, 6 Jun 2012 14:31:59 +0000 (14:31 +0000)]
Import NetBSD xinstall

Also, fix mk files for cross compilation.

12 years agoImport NetBSD mtree
Thomas Veerman [Wed, 6 Jun 2012 14:34:11 +0000 (14:34 +0000)]
Import NetBSD mtree

mtree is only used for cross compilation at this point. Also, the
required patches to make it compile on Minix cripple it probably
enough to make it unusable anyway.

12 years agoImport NetBSD mktemp
Thomas Veerman [Wed, 6 Jun 2012 14:28:48 +0000 (14:28 +0000)]
Import NetBSD mktemp

12 years agoImport NetBSD make
Thomas Veerman [Wed, 6 Jun 2012 14:24:31 +0000 (14:24 +0000)]
Import NetBSD make

12 years agoImport NetBSD flex
Thomas Veerman [Wed, 6 Jun 2012 14:10:32 +0000 (14:10 +0000)]
Import NetBSD flex

12 years agoImport NetBSD byacc
Thomas Veerman [Wed, 6 Jun 2012 13:25:48 +0000 (13:25 +0000)]
Import NetBSD byacc

12 years agoPartially import gcc and binutils
Thomas Veerman [Wed, 6 Jun 2012 13:06:52 +0000 (13:06 +0000)]
Partially import gcc and binutils

They are used as build tools for cross compilation. This import does
not include the full distribution. Rather, it sports a shell script
that will download and patch the distribution when compiled from
/usr/src/tools (yet to be committed). This part of the source tree is
only necessary for cross compilation. It's not used or compiled for
native builds.

12 years agoImport NetBSD nawk
Thomas Veerman [Wed, 6 Jun 2012 13:03:39 +0000 (13:03 +0000)]
Import NetBSD nawk

12 years agoAdd gnu directory for gmake
Thomas Veerman [Wed, 6 Jun 2012 12:02:46 +0000 (12:02 +0000)]
Add gnu directory for gmake

12 years agoAdd mk and h files needed for cross compilation
Thomas Veerman [Wed, 6 Jun 2012 12:01:38 +0000 (12:01 +0000)]
Add mk and h files needed for cross compilation

12 years agoRename tools to releasetools
Thomas Veerman [Fri, 8 Jun 2012 13:09:54 +0000 (13:09 +0000)]
Rename tools to releasetools

This is in preparation of NetBSD's tools directory to build tools
for cross compilation.

12 years agoRewrite osrelease.sh to parse Minix version
Thomas Veerman [Wed, 6 Jun 2012 11:53:19 +0000 (11:53 +0000)]
Rewrite osrelease.sh to parse Minix version

12 years agoDynamically determine which ramdisk to use
Thomas Veerman [Wed, 6 Jun 2012 11:49:36 +0000 (11:49 +0000)]
Dynamically determine which ramdisk to use

.Also, rename ext2_ramdisk to ramdisk_ext2.

12 years agoUse MACHINE_ARCH instead of ARCH
Thomas Veerman [Wed, 6 Jun 2012 11:27:00 +0000 (11:27 +0000)]
Use MACHINE_ARCH instead of ARCH

12 years agoRemove MINIXSRCDIR and use NETBSDSRCDIR
Thomas Veerman [Wed, 6 Jun 2012 11:16:32 +0000 (11:16 +0000)]
Remove MINIXSRCDIR and use NETBSDSRCDIR

NETBSDSRCDIR is used all over the place anyway, and this reduces
our diff with NetBSD a little.

12 years agoNo need to define NETBSD_SOURCE explicitly
Thomas Veerman [Wed, 6 Jun 2012 09:46:10 +0000 (09:46 +0000)]
No need to define NETBSD_SOURCE explicitly

12 years agoUse buildsystem commands instead of {cp,mkdir}
Thomas Veerman [Mon, 7 May 2012 14:28:01 +0000 (16:28 +0200)]
Use buildsystem commands instead of {cp,mkdir}

12 years agomtree.sh: reverse last two parameters
Thomas Veerman [Mon, 7 May 2012 14:22:27 +0000 (14:22 +0000)]
mtree.sh: reverse last two parameters

This way we can treat DESTDIR like a special case just as the build
system does (i.e., if not set, assume DESTDIR="/").

12 years agoCross-compilation fixes
Thomas Veerman [Mon, 7 May 2012 11:38:39 +0000 (13:38 +0200)]
Cross-compilation fixes

. Some Makefile fixes to automatically differentiate between a normal
  compilation and cross-compilation. Also, build compressed images.
. Harmonize ramdisk rc scripts for normal use case and ext2 ramdisk.
. ext2_ramdisk filesystem prototype fixes.

12 years agoFix mk file for cross compilation (2)
Thomas Veerman [Wed, 2 May 2012 12:33:27 +0000 (14:33 +0200)]
Fix mk file for cross compilation (2)

12 years agonewroot is gone too
Thomas Veerman [Wed, 2 May 2012 12:01:12 +0000 (14:01 +0200)]
newroot is gone too

12 years agobios_wini is no longer amongst us
Thomas Veerman [Wed, 2 May 2012 11:56:43 +0000 (13:56 +0200)]
bios_wini is no longer amongst us

12 years agoNew file(1) port
Dirk Vogt [Wed, 2 May 2012 11:23:57 +0000 (13:23 +0200)]
New file(1) port

12 years agoFix up mtree.sh
Dirk Vogt [Wed, 2 May 2012 11:19:41 +0000 (13:19 +0200)]
Fix up mtree.sh

12 years agoAlso copy kernel into multiboot dir
Dirk Vogt [Tue, 1 May 2012 15:04:37 +0000 (17:04 +0200)]
Also copy kernel into multiboot dir

12 years agoext2 ramdisk: copy rc to correct destination
Dirk Vogt [Tue, 1 May 2012 15:01:30 +0000 (17:01 +0200)]
ext2 ramdisk: copy rc to correct destination

12 years agoramdisk: don't do anything at dependall
Dirk Vogt [Tue, 1 May 2012 14:58:59 +0000 (16:58 +0200)]
ramdisk: don't do anything at dependall

12 years agoFix compiler check
Dirk Vogt [Tue, 1 May 2012 14:57:11 +0000 (16:57 +0200)]
Fix compiler check

12 years agoMake var overridable for cross compilation
Thomas Veerman [Tue, 1 May 2012 14:55:13 +0000 (16:55 +0200)]
Make var overridable for cross compilation

12 years agoInclude ext2 ramdisk in build and remove sync
Dirk Vogt [Tue, 1 May 2012 14:51:03 +0000 (16:51 +0200)]
Include ext2 ramdisk in build and remove sync

As the ramdisk and ext2 ramdisk don't build anything for the install
and all targets, memory does not have to wait for them anymore.

12 years agoAdd ext2 ramdisk, intended for cross compilation
Dirk Vogt [Tue, 1 May 2012 14:46:53 +0000 (16:46 +0200)]
Add ext2 ramdisk, intended for cross compilation

12 years agoMake ramdisk location configurable
Dirk Vogt [Tue, 1 May 2012 14:43:09 +0000 (16:43 +0200)]
Make ramdisk location configurable

Also, the ramdisk is now built when the memory driver is compiled.

12 years agoWhen MKUNPRIV is set do not require root privilege
Dirk Vogt [Tue, 1 May 2012 14:32:15 +0000 (16:32 +0200)]
When MKUNPRIV is set do not require root privilege

12 years agoMakefile fixups for cross compilation
Dirk Vogt [Tue, 1 May 2012 14:09:06 +0000 (16:09 +0200)]
Makefile fixups for cross compilation

12 years agoMake TTY cross-compilable
Dirk Vogt [Tue, 1 May 2012 13:17:05 +0000 (15:17 +0200)]
Make TTY cross-compilable

12 years agoMake commands cross-compilable
Dirk Vogt [Tue, 1 May 2012 13:13:07 +0000 (15:13 +0200)]
Make commands cross-compilable

12 years agoLet the kernel load figure out where to put mods
Dirk Vogt [Tue, 1 May 2012 13:04:26 +0000 (15:04 +0200)]
Let the kernel load figure out where to put mods

This patch makes the mkimage tool obsolete

12 years agoCreate cc symlink to clang
Thomas Veerman [Thu, 7 Jun 2012 13:34:12 +0000 (13:34 +0000)]
Create cc symlink to clang

12 years agodrop from segments physcopy/vircopy invocations
Ben Gras [Sat, 16 Jun 2012 17:29:37 +0000 (17:29 +0000)]
drop from segments physcopy/vircopy invocations

. sys_vircopy always uses D for both src and dst
. sys_physcopy uses PHYS_SEG if and only if corresponding
  endpoint is NONE, so we can derive the mode (PHYS_SEG or D)
  from the endpoint arg in the kernel, dropping the seg args
. fields in msg still filled in for backwards compatability,
  using same NONE-logic in the library

12 years agodrop segments from safemap/safeunmap invocations
Ben Gras [Sat, 16 Jun 2012 18:42:27 +0000 (18:42 +0000)]
drop segments from safemap/safeunmap invocations

12 years agoAdd hot plugging infrastructure in rc file.
Kees Jongenburger [Mon, 4 Jun 2012 11:15:23 +0000 (11:15 +0000)]
Add hot plugging infrastructure in rc file.

Adding hot plugging infrastructure in rc file. This includes
starting the devman service, mounting it's file system and
starting the corresponding devmand daemon.

This patch also provide error free shutdown of the USB sub-system.

The USB sub system needs to be shutdown in a certain order but also
consists of components living in /usr/pkg/. By checking the
existence of usbd we can stop it in the correct order.

12 years agoAdd devmand configuration to /etc.
Kees Jongenburger [Tue, 5 Jun 2012 10:49:50 +0000 (10:49 +0000)]
Add devmand configuration to /etc.

12 years agoAdd support in devmand for using config dirs.
Kees Jongenburger [Mon, 4 Jun 2012 09:34:04 +0000 (09:34 +0000)]
Add support in devmand for using config dirs.

Add support in devmand for using configuration directories to
allow 3rd party packages to add configuration items.

12 years agoUpgrade libddekit and introduce devmand.
Kees Jongenburger [Tue, 5 Jun 2012 09:43:18 +0000 (09:43 +0000)]
Upgrade libddekit and introduce devmand.

Devmand (Device manager daemon) is the daemon that will
dynamically manage services based on events received from
the system.

12 years agoMove setjmp and strnlen to common/lib.
Kees Jongenburger [Tue, 5 Jun 2012 09:37:32 +0000 (09:37 +0000)]
Move setjmp and strnlen to common/lib.

Move setjmp and strnlen to common/lib to allow libddekit to use them.

12 years agodrop segment from safecopy invocations
Ben Gras [Sat, 16 Jun 2012 01:46:15 +0000 (03:46 +0200)]
drop segment from safecopy invocations

. all invocations were S or D, so can safely be dropped
  to prepare for the segmentless world
. still assign D to the SCP_SEG field in the message
  to make previous kernels usable

12 years agodumpcore: use ptrace function to trigger a coredump
Ben Gras [Fri, 15 Jun 2012 00:38:00 +0000 (02:38 +0200)]
dumpcore: use ptrace function to trigger a coredump

. dumpcore currently relies on minix segments
. also ptrace dumpcore fix

12 years agopm: ignore notify() from unknown sender
Ben Gras [Thu, 14 Jun 2012 13:36:38 +0000 (15:36 +0200)]
pm: ignore notify() from unknown sender

. avoids annoying error message if e.g. buggy drivers
  send pm notify()s that pm tries to reply() ENOSYS to

12 years agofurther libexec generalization
Ben Gras [Wed, 6 Jun 2012 17:05:28 +0000 (19:05 +0200)]
further libexec generalization

. new mode for sys_memset: include process so memset can be
  done in physical or virtual address space.
. add a mode to mmap() that lets a process allocate uninitialized
  memory.
. this allows an exec()er (RS, VFS, etc.) to request uninitialized
  memory from VM and selectively clear the ranges that don't come
  from a file, leaving no uninitialized memory left for the process
  to see.
. use callbacks for clearing the process, clearing memory in the
  process, and copying into the process; so that the libexec code
  can be used from rs, vfs, and in the future, kernel (to load vm)
  and vm (to load boot-time processes)

12 years agoexec() cleanup, generalization, improvement
Ben Gras [Wed, 30 May 2012 17:34:07 +0000 (19:34 +0200)]
exec() cleanup, generalization, improvement

. make exec() callers (i.e. vfs and rs) determine the
  memory layout by explicitly reserving regions using
  mmap() calls on behalf of the exec()ing process,
  i.e. handling all of the exec logic, thereby eliminating
  all special exec() knowledge from VM.
. the new procedure is: clear the exec()ing process
  first, then call third-party mmap()s to reserve memory, then
  copy the executable file section contents in, all using callbacks
  tailored to the caller's way of starting an executable
. i.e. no more explicit EXEC_NEWMEM-style calls in PM or VM
  as with rigid 2-section arguments
. this naturally allows generalizing exec() by simply loading
  all ELF sections
. drop/merge of lots of duplicate exec() code into libexec
. not copying the code sections to vfs and into the executable
  again is a measurable performance improvement (about 3.3% faster
  for 'make' in src/servers/)

12 years agodrop aout support
Ben Gras [Wed, 6 Jun 2012 22:35:10 +0000 (00:35 +0200)]
drop aout support

justification: soon we won't be able to execute sep I&D aouts at
all (because of the vanishing segments), which was the default mode
to generate them so most binaries will be sep I&D.

this makes the vfs/rs exec() unification work simpler.

after unification, common I&D aout could be added back quite simply.

12 years agovm: add third-party mmap() mode and PROCCTL
Ben Gras [Tue, 5 Jun 2012 22:50:13 +0000 (00:50 +0200)]
vm: add third-party mmap() mode and PROCCTL

these two functions will be used to support all exec() functionality
going into a single library shared by RS and VFS and exec() knowledge
leaving VM.

. third-party mmap: allow certain processes (VFS, RS) to
  do mmap() on behalf of another process
. PROCCTL: used to free and clear a process' address space