Commit Graph

70 Commits

Author SHA1 Message Date
marcel
df61d9eb64 Round of cleanups and enhancements. These include (in random order):
o  Introduce private types for use in linux syscalls for two reasons:
   1. establish type independence for ease in porting and,
   2. provide a visual queue as to which syscalls have proper
      prototypes to further cleanup the i386/alpha split.
   Linuxulator types are prefixed by 'l_'. void and char have not
   been "virtualized".

o  Provide dummy functions for all syscalls and remove dummy functions
   or implementations of truely obsolete syscalls.

o  Sanitize the shm*, sem* and msg* syscalls.

o  Make a first attempt to implement the linux_sysctl syscall. At this
   time it only returns one MIB (KERN_VERSION), but most importantly,
   it tells us when we need to add additional sysctls :-)

o  Bump the kenel version up to 2.4.2 (this is not the same as the
   KERN_VERSION MIB, BTW).

o  Implement new syscalls, of which most are specific to i386. Our
   syscall table is now up to date with Linux 2.4.2. Some highlights:
   -  Implement the 32-bit uid_t and gid_t bases syscalls.
   -  Implement a couple of 64-bit file size/offset bases syscalls.

o  Fix or improve numerous syscalls and prototypes.

o  Reduce style(9) violations while I'm here. Especially indentation
   inconsistencies within the same file are addressed. Re-indenting
   did not obfuscate actual changes to the extend that it could not
   be combined.

NOTE: I spend some time testing these changes and found that if there
      were regressions, they were not caused by these changes AFAICT.
      It was observed that installing a RH 7.1 runtime environment
      did make matters worse. Hangs and/or reboots have been observed
      with and without these changes, so when it failed to make life
      better in cases it doesn't look like it made it worse.
2001-09-08 19:07:04 +00:00
gallatin
a0087e29ad Fix linux_getcwd() so that if the cwd isn't cached (__getcwd() fails),
the cwd is looked up inside the kernel. The native getcwd() in libc
handles this in userland if __getcwd() fails.

Obtained from: NetBSD via OpenBSD
Tested by: Chris Casey <chriss@phys.ksu.edu>, Markus Holmberg <markush@acc.umu.se>
Reviewed by: Darrell Anderson <anderson@cs.duke.edu>
PR: kern/24315
2001-08-29 19:05:27 +00:00
peter
e2336f24e7 Zap obsolete (died with LKM) EXPORT_SYMS variable 2001-02-04 10:52:25 +00:00
peter
297080615f It is unlikely that we'll be supporting old-style ZMAGIC linux a.out
binaries on anything but i386.. (ia64, sparc64, etc)  Invert the .if
so that it is inclusive of i386 platforms rather than excluding just
the alpha.
2001-01-07 03:10:15 +00:00
obrien
c269c9fb36 Use a consistent style and one much closer to the rest of /usr/src 2001-01-06 14:00:42 +00:00
marcel
5611047489 Don't auto-generate the syscalls. 2000-12-03 01:30:31 +00:00
marcel
4289ffee6c Fix dependency for auto-generated files. This commit is
for archiving purposes only; auto-generation is going to
be reverted.

requested by: obrien
submitted: gallatin
2000-12-02 23:47:41 +00:00
marcel
ff963f8fc8 Fix breakage for parallel builds. 2000-11-05 03:10:45 +00:00
sheldonh
f7c4ac38dc Retire linux(8). Using shell scripts to load kernel loadable modules is
out of fashion.  This particular case, unlike joy(8) and friends which
are just plain silly, did more than just load a kernel loadable module.
However, /etc/rc and the linux_base port were adjusted a while back to
cope with the absence of this script.

The only outstanding reason to hang on to it would have been for the
linux(8) manual page, which clued folks into the existence of the
Linuxulator.  A new linux(4) was introduced a while back.  It does
a much better job.

This script just isn't useful any more.
2000-11-02 13:48:53 +00:00
gallatin
cf4f3816fd Support for the linux ipc syscalls on the alpha, where each one has
its own syscall rather than going through a demux function like
linux_ipc() on i386
2000-11-01 23:17:31 +00:00
obrien
584cf0c483 Allow the building of the syscall bits at compile time. 2000-11-01 09:23:12 +00:00
obrien
cd0e1ea5f5 Don't install manpages.
They are being moved elsewhere, and they are causing problems being here.
2000-10-08 16:56:04 +00:00
obrien
6389b1b3b0 Only install secondary components if the destination directory exists.
This may be a WIP, but `make release' needs it sooner than later.
2000-10-04 07:20:24 +00:00
obrien
8afd1b030d Since AlphaLinux is the weirdest Linux of all, probably best to do the
logic this way.
2000-09-06 20:21:55 +00:00
obrien
fa0d885311 Two sys/compat/linux sources aren't applicable on the Alpha at this time. 2000-09-06 20:21:15 +00:00
marcel
4b9a3820dd Connect the new sources in /sys/compat/linux and the new file
in /sys/i386/linux.
2000-08-22 06:02:01 +00:00
bde
a5752e4f08 Use the genassym script here too. The linux and svr4 modules were broken. 2000-06-03 07:40:19 +00:00
peter
ea11d3cf1c Use .include <bsd.kmod.mk> to get to ../../*/conf/kmod.mk instead of
encoding the relative path.
2000-05-27 01:14:33 +00:00
peter
1b38e19179 Pull in sys/conf/kmod.mk, rather than /usr/share/mk/bsd.kmod.mk.
This means that the kernel can be totally self contained now and is not
dependent on the last buildworld to update /usr/share/mk.  This might
also make it easier to build 5.x kernels on 4.0 boxes etc, assuming
gensetdefs and config(8) are updated.
2000-05-04 12:08:52 +00:00
bde
6c0066fcac Compile linux_genassym.c with ordinary ${CFLAGS}. The (small) need for
-U_KERNEL became negative when all all the genassym.c's were converted
to be cross-built.

Use "genassym ... > ${.TARGET}", not "genassym -o $@ ...", so that
genassym(1) doesn't need to support -o.

Removed duplicate -D_KERNEL from flags for compiling linux_locore.s.
2000-01-09 10:04:53 +00:00
peter
d53e4c1d80 Change #ifdef KERNEL to #ifdef _KERNEL in the public headers. "KERNEL"
is an application space macro and the applications are supposed to be free
to use it as they please (but cannot).  This is consistant with the other
BSD's who made this change quite some time ago.  More commits to come.
1999-12-29 05:07:58 +00:00
marcel
95103d1312 Use genassym(1) and <sys/assym.h> to generate assembler symbols. 1999-12-23 19:59:47 +00:00
cracauer
2f637bd745 Add a run of Linux ldconfig. 1999-12-13 08:38:22 +00:00
bde
d7156780d3 Removed special rules for building and cleaning device interface files
and empty options files.  The rules are now generated automatically in
bsd.kmod.mk.  Cleaned up related things ($S and ${CLEANFILES}).
1999-11-28 18:53:47 +00:00
marcel
858cd0e9d8 Replace 'i386' with '${MACHINE_ARCH}' in preparation of the development
of a linuxulator for Alpha.
1999-11-12 20:04:59 +00:00
marcel
591be2fb05 Install linux.sh in /usr/sbin and not in /usr/bin.
PR: 13545
Submitted by: Jose M. Alcaide <jose@we.lc.ehu.es>
1999-09-03 07:15:38 +00:00
marcel
e1a382c4fe Add MAINTAINER and remove the unused COMPAT_LINUX and VM_STACK defines. 1999-08-28 09:04:21 +00:00
peter
3b842d34e8 $Id$ -> $FreeBSD$ 1999-08-28 01:08:13 +00:00
marcel
421ba20de2 Add sysctl variables for the Linuxulator. These reside under `compat.linux' as
discussed on current.

The following variables are defined (for now):

    osname (defaults to "Linux")
        Allow users to change the name of the OS as returned by uname(2),
        specially added for all those Linux Netscape users and statistics
        maniacs :-) We now have what we all wanted!

    osrelease (defaults to "2.2.5")
        Allow users to change the version of the OS as returned by uname(2).
        Since -current supports glibc2.1 now, change the default to 2.2.5
        (was 2.0.36).

    oss_version (defaults to 198144 [0x030600])
        This one will be used by the OSS_GETVERSION ioctl (PR 12917) which I
        can commit now that we have the MIB. The default version number is the
        lowest version possible with the current 'encoding'.

A note about imprisoned processes (see jail(2)):
  These variables are copy-on-write (as suggested by phk). This means that
  imprisoned processes will use the system wide value unless it is written/set
  by the process. From that moment on, a copy local to the prison will be
  used.

A note about the implementation:
  I choose to add a single pointer to struct prison, because I didn't like the
  idea of changing struct prison every time I come up with a new variable. As
  a side effect, the extra storage is only needed when a variable is set from
  within the prison. This also minimizes kernel bloat when the Linuxulator is
  not used; both compiled in or as a module.

Reviewed by: bde (first version only) and phk
1999-08-27 19:47:41 +00:00
mpp
a8eee51fbd Sort xrefs.
Submitted by:	Alexey Zelkin <phantom@cris.net>
1999-08-19 00:10:37 +00:00
nik
3a3c35a4a9 "Linux emulator" -> "Linux image activator"
PR:             docs/12882
Submitted by:   des
1999-08-04 18:58:37 +00:00
ghelmer
aa25704686 Reference kld(4).
Submitted by:	Nathan Ahlstrom <nrahlstr@winternet.com>
1999-04-23 16:12:44 +00:00
n_hibma
62572be175 Update for the man page. 4.0 is using KLD's not LKM's. 1999-02-22 13:08:38 +00:00
julian
75fe600348 Compile the linux module with the same flags as the kernel.
(oops).

Submitted by:	"Richard Seaman, Jr." <dick@tar.com>
1999-01-26 21:29:01 +00:00
jkh
ed695f89de Install scripts without .sh suffix. 1998-11-12 00:37:39 +00:00
peter
626d7e81a1 Rename joy,ibcs2,linux to joy.sh,ibcs2.sh,linux.sh (via repo copy). 1998-11-11 07:04:10 +00:00
jkh
7e61d185d3 We need to install the linux shell script or the lkm version will
still be in place.
1998-11-10 19:39:58 +00:00
peter
b008a0c858 Build linux_genassym static, this should help aout-to-elf builds 1998-11-05 04:39:26 +00:00
peter
040d673b13 Do not overwrite the lkm versions of the install scripts for now. linux
works but ibcs2 has a load failure and joy doesn't look like it'll work.
1998-11-05 04:22:52 +00:00
peter
a912408d9c Update to use kldload, no temporary files! 1998-11-05 04:19:26 +00:00
peter
ac52f6b758 Sample initial set of kld-ified modules. Not all have been completely
converted yet.  These are more of a starting point.  This is NOT connected
to the parent Makefile.

OK'ed by jkh (who is ever so patiently waiting)
1998-10-16 04:30:52 +00:00
alex
772482444a Unregister the glibc2 brand at module unload time.
Change the ELF registration/unregistration scheme to be less error prone.
Adding a new brand requires a single addition to linux_brandlist instead of
modifying linux_load(), linux_unload(), and linux_elf_init().

Approved by:	jkh
Reviewed by:	msmith
1998-10-11 21:08:02 +00:00
msmith
23bdbca2d4 Add support for glibc consumers using the new ld-linux.so.2 linker.
I can't say this was the most inspired fix, but it matches the design OK.
1998-09-17 22:08:34 +00:00
cracauer
43e1e522ff Load linux emulator lkm only when not already loaded. This avoids
leftover files in /tmp. Script slightly modified from PR version
to use fewer processes.
PR:		i386/7725
Submitted by:	Stefan Eggers seggers@semyam.dinoco.de
1998-09-07 16:15:59 +00:00
bde
1654593f59 Added a `build-tools' target for internal tools. (linux_genassym may
not actually work for cross compiling, but that is another problem.)

Honor LDFLAGS for building internal tools.  (Tools should normally
be built static to avoid problems with picking up target shared
libraries.  bsd.kmod doesn't set -static yet, and has some problems
with `LDFLAGS=-static ...' in the environment.)
1998-07-07 02:04:20 +00:00
bde
66357b6a9f Fixed missing options headers. Options that affect LKMs shouldn't
exist.
1998-07-01 17:10:00 +00:00
bde
04d259c11a Fixed a race to build the @' and machine' symlinks early enough
for `make -jN'.
1998-03-19 12:35:55 +00:00
eivind
19c2e7eb57 Back out opt_diagnostic.h changes. 1998-02-06 23:54:27 +00:00
eivind
357ed84053 Make the LKMs handle DIAGNOSTIC as a new-style option. 1998-02-04 21:56:39 +00:00
bde
c9dfcc430a Don't handle the `machine' symlink or related include paths here.
bsd.kmod.mk now handles it more generally.
1998-02-01 17:53:56 +00:00