1993-08-21 22:24:24 +00:00
|
|
|
# This file tells config what files go into building a kernel,
|
|
|
|
# files marked standard are always included.
|
1993-06-12 14:58:17 +00:00
|
|
|
#
|
1999-08-28 01:08:13 +00:00
|
|
|
# $FreeBSD$
|
Mega-commit for Linux emulator update.. This has been stress tested under
netscape-2.0 for Linux running all the Java stuff. The scrollbars are now
working, at least on my machine. (whew! :-)
I'm uncomfortable with the size of this commit, but it's too
inter-dependant to easily seperate out.
The main changes:
COMPAT_LINUX is *GONE*. Most of the code has been moved out of the i386
machine dependent section into the linux emulator itself. The int 0x80
syscall code was almost identical to the lcall 7,0 code and a minor tweak
allows them to both be used with the same C code. All kernels can now
just modload the lkm and it'll DTRT without having to rebuild the kernel
first. Like IBCS2, you can statically compile it in with "options LINUX".
A pile of new syscalls implemented, including getdents(), llseek(),
readv(), writev(), msync(), personality(). The Linux-ELF libraries want
to use some of these.
linux_select() now obeys Linux semantics, ie: returns the time remaining
of the timeout value rather than leaving it the original value.
Quite a few bugs removed, including incorrect arguments being used in
syscalls.. eg: mixups between passing the sigset as an int, vs passing
it as a pointer and doing a copyin(), missing return values, unhandled
cases, SIOC* ioctls, etc.
The build for the code has changed. i386/conf/files now knows how
to build linux_genassym and generate linux_assym.h on the fly.
Supporting changes elsewhere in the kernel:
The user-mode signal trampoline has moved from the U area to immediately
below the top of the stack (below PS_STRINGS). This allows the different
binary emulations to have their own signal trampoline code (which gets rid
of the hardwired syscall 103 (sigreturn on BSD, syslog on Linux)) and so
that the emulator can provide the exact "struct sigcontext *" argument to
the program's signal handlers.
The sigstack's "ss_flags" now uses SS_DISABLE and SS_ONSTACK flags, which
have the same values as the re-used SA_DISABLE and SA_ONSTACK which are
intended for sigaction only. This enables the support of a SA_RESETHAND
flag to sigaction to implement the gross SYSV and Linux SA_ONESHOT signal
semantics where the signal handler is reset when it's triggered.
makesyscalls.sh no longer appends the struct sysentvec on the end of the
generated init_sysent.c code. It's a lot saner to have it in a seperate
file rather than trying to update the structure inside the awk script. :-)
At exec time, the dozen bytes or so of signal trampoline code are copied
to the top of the user's stack, rather than obtaining the trampoline code
the old way by getting a clone of the parent's user area. This allows
Linux and native binaries to freely exec each other without getting
trampolines mixed up.
1996-03-02 19:38:20 +00:00
|
|
|
#
|
1997-06-01 20:25:55 +00:00
|
|
|
# The long compile-with and dependency lines are required because of
|
|
|
|
# limitations in config: backslash-newline doesn't work in strings, and
|
|
|
|
# dependency lines other than the first are silently ignored.
|
|
|
|
#
|
2000-08-22 05:01:08 +00:00
|
|
|
linux_genassym.o optional compat_linux \
|
|
|
|
dependency "$S/i386/linux/linux_genassym.c" \
|
2002-01-11 07:52:02 +00:00
|
|
|
compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \
|
2000-08-22 05:01:08 +00:00
|
|
|
no-obj no-implicit-rule \
|
1999-12-23 21:52:17 +00:00
|
|
|
clean "linux_genassym.o"
|
Mega-commit for Linux emulator update.. This has been stress tested under
netscape-2.0 for Linux running all the Java stuff. The scrollbars are now
working, at least on my machine. (whew! :-)
I'm uncomfortable with the size of this commit, but it's too
inter-dependant to easily seperate out.
The main changes:
COMPAT_LINUX is *GONE*. Most of the code has been moved out of the i386
machine dependent section into the linux emulator itself. The int 0x80
syscall code was almost identical to the lcall 7,0 code and a minor tweak
allows them to both be used with the same C code. All kernels can now
just modload the lkm and it'll DTRT without having to rebuild the kernel
first. Like IBCS2, you can statically compile it in with "options LINUX".
A pile of new syscalls implemented, including getdents(), llseek(),
readv(), writev(), msync(), personality(). The Linux-ELF libraries want
to use some of these.
linux_select() now obeys Linux semantics, ie: returns the time remaining
of the timeout value rather than leaving it the original value.
Quite a few bugs removed, including incorrect arguments being used in
syscalls.. eg: mixups between passing the sigset as an int, vs passing
it as a pointer and doing a copyin(), missing return values, unhandled
cases, SIOC* ioctls, etc.
The build for the code has changed. i386/conf/files now knows how
to build linux_genassym and generate linux_assym.h on the fly.
Supporting changes elsewhere in the kernel:
The user-mode signal trampoline has moved from the U area to immediately
below the top of the stack (below PS_STRINGS). This allows the different
binary emulations to have their own signal trampoline code (which gets rid
of the hardwired syscall 103 (sigreturn on BSD, syslog on Linux)) and so
that the emulator can provide the exact "struct sigcontext *" argument to
the program's signal handlers.
The sigstack's "ss_flags" now uses SS_DISABLE and SS_ONSTACK flags, which
have the same values as the re-used SA_DISABLE and SA_ONSTACK which are
intended for sigaction only. This enables the support of a SA_RESETHAND
flag to sigaction to implement the gross SYSV and Linux SA_ONESHOT signal
semantics where the signal handler is reset when it's triggered.
makesyscalls.sh no longer appends the struct sysentvec on the end of the
generated init_sysent.c code. It's a lot saner to have it in a seperate
file rather than trying to update the structure inside the awk script. :-)
At exec time, the dozen bytes or so of signal trampoline code are copied
to the top of the user's stack, rather than obtaining the trampoline code
the old way by getting a clone of the parent's user area. This allows
Linux and native binaries to freely exec each other without getting
trampolines mixed up.
1996-03-02 19:38:20 +00:00
|
|
|
#
|
2000-08-22 05:01:08 +00:00
|
|
|
linux_assym.h optional compat_linux \
|
|
|
|
dependency "$S/kern/genassym.sh linux_genassym.o" \
|
2000-06-02 09:27:48 +00:00
|
|
|
compile-with "sh $S/kern/genassym.sh linux_genassym.o > ${.TARGET}" \
|
2000-08-22 05:01:08 +00:00
|
|
|
no-obj no-implicit-rule before-depend \
|
Mega-commit for Linux emulator update.. This has been stress tested under
netscape-2.0 for Linux running all the Java stuff. The scrollbars are now
working, at least on my machine. (whew! :-)
I'm uncomfortable with the size of this commit, but it's too
inter-dependant to easily seperate out.
The main changes:
COMPAT_LINUX is *GONE*. Most of the code has been moved out of the i386
machine dependent section into the linux emulator itself. The int 0x80
syscall code was almost identical to the lcall 7,0 code and a minor tweak
allows them to both be used with the same C code. All kernels can now
just modload the lkm and it'll DTRT without having to rebuild the kernel
first. Like IBCS2, you can statically compile it in with "options LINUX".
A pile of new syscalls implemented, including getdents(), llseek(),
readv(), writev(), msync(), personality(). The Linux-ELF libraries want
to use some of these.
linux_select() now obeys Linux semantics, ie: returns the time remaining
of the timeout value rather than leaving it the original value.
Quite a few bugs removed, including incorrect arguments being used in
syscalls.. eg: mixups between passing the sigset as an int, vs passing
it as a pointer and doing a copyin(), missing return values, unhandled
cases, SIOC* ioctls, etc.
The build for the code has changed. i386/conf/files now knows how
to build linux_genassym and generate linux_assym.h on the fly.
Supporting changes elsewhere in the kernel:
The user-mode signal trampoline has moved from the U area to immediately
below the top of the stack (below PS_STRINGS). This allows the different
binary emulations to have their own signal trampoline code (which gets rid
of the hardwired syscall 103 (sigreturn on BSD, syslog on Linux)) and so
that the emulator can provide the exact "struct sigcontext *" argument to
the program's signal handlers.
The sigstack's "ss_flags" now uses SS_DISABLE and SS_ONSTACK flags, which
have the same values as the re-used SA_DISABLE and SA_ONSTACK which are
intended for sigaction only. This enables the support of a SA_RESETHAND
flag to sigaction to implement the gross SYSV and Linux SA_ONESHOT signal
semantics where the signal handler is reset when it's triggered.
makesyscalls.sh no longer appends the struct sysentvec on the end of the
generated init_sysent.c code. It's a lot saner to have it in a seperate
file rather than trying to update the structure inside the awk script. :-)
At exec time, the dozen bytes or so of signal trampoline code are copied
to the top of the user's stack, rather than obtaining the trampoline code
the old way by getting a clone of the parent's user area. This allows
Linux and native binaries to freely exec each other without getting
trampolines mixed up.
1996-03-02 19:38:20 +00:00
|
|
|
clean "linux_assym.h"
|
|
|
|
#
|
2000-08-22 05:01:08 +00:00
|
|
|
svr4_genassym.o optional compat_svr4 \
|
|
|
|
dependency "$S/i386/svr4/svr4_genassym.c" \
|
2002-01-11 07:52:02 +00:00
|
|
|
compile-with "${CC} ${CFLAGS:N-fno-common} -c ${.IMPSRC}" \
|
2000-08-22 05:01:08 +00:00
|
|
|
no-obj no-implicit-rule \
|
|
|
|
clean "svr4_genassym.o"
|
|
|
|
#
|
|
|
|
svr4_assym.h optional compat_svr4 \
|
|
|
|
dependency "$S/kern/genassym.sh svr4_genassym.o" \
|
2000-06-02 09:27:48 +00:00
|
|
|
compile-with "sh $S/kern/genassym.sh svr4_genassym.o > ${.TARGET}" \
|
2000-08-22 05:01:08 +00:00
|
|
|
no-obj no-implicit-rule before-depend \
|
1999-12-08 12:13:13 +00:00
|
|
|
clean "svr4_assym.h"
|
|
|
|
#
|
The second phase of syscons reorganization.
- Split syscons source code into manageable chunks and reorganize
some of complicated functions.
- Many static variables are moved to the softc structure.
- Added a new key function, PREV. When this key is pressed, the vty
immediately before the current vty will become foreground. Analogue
to PREV, which is usually assigned to the PrntScrn key.
PR: kern/10113
Submitted by: Christian Weisgerber <naddy@mips.rhein-neckar.de>
- Modified the kernel console input function sccngetc() so that it
handles function keys properly.
- Reorganized the screen update routine.
- VT switching code is reorganized. It now should be slightly more
robust than before.
- Added the DEVICE_RESUME function so that syscons no longer hooks the
APM resume event directly.
- New kernel configuration options: SC_NO_CUTPASTE, SC_NO_FONT_LOADING,
SC_NO_HISTORY and SC_NO_SYSMOUSE.
Various parts of syscons can be omitted so that the kernel size is
reduced.
SC_PIXEL_MODE
Made the VESA 800x600 mode an option, rather than a standard part of
syscons.
SC_DISABLE_DDBKEY
Disables the `debug' key combination.
SC_ALT_MOUSE_IMAGE
Inverse the character cell at the mouse cursor position in the text
console, rather than drawing an arrow on the screen.
Submitted by: Nick Hibma (n_hibma@FreeBSD.ORG)
SC_DFLT_FONT
makeoptions "SC_DFLT_FONT=_font_name_"
Include the named font as the default font of syscons. 16-line,
14-line and 8-line font data will be compiled in. This option replaces
the existing STD8X16FONT option, which loads 16-line font data only.
- The VGA driver is split into /sys/dev/fb/vga.c and /sys/isa/vga_isa.c.
- The video driver provides a set of ioctl commands to manipulate the
frame buffer.
- New kernel configuration option: VGA_WIDTH90
Enables 90 column modes: 90x25, 90x30, 90x43, 90x50, 90x60. These
modes are mot always supported by the video card.
PR: i386/7510
Submitted by: kbyanc@freedomnet.com and alexv@sui.gda.itesm.mx.
- The header file machine/console.h is reorganized; its contents is now
split into sys/fbio.h, sys/kbio.h (a new file) and sys/consio.h
(another new file). machine/console.h is still maintained for
compatibility reasons.
- Kernel console selection/installation routines are fixed and
slightly rebumped so that it should now be possible to switch between
the interanl kernel console (sc or vt) and a remote kernel console
(sio) again, as it was in 2.x, 3.0 and 3.1.
- Screen savers and splash screen decoders
Because of the header file reorganization described above, screen
savers and splash screen decoders are slightly modified. After this
update, /sys/modules/syscons/saver.h is no longer necessary and is
removed.
1999-06-22 14:14:06 +00:00
|
|
|
font.h optional sc_dflt_font \
|
2007-10-25 14:16:07 +00:00
|
|
|
compile-with "uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x16.fnt && file2c 'static u_char dflt_font_16[16*256] = {' '};' < ${SC_DFLT_FONT}-8x16 > font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x14.fnt && file2c 'static u_char dflt_font_14[14*256] = {' '};' < ${SC_DFLT_FONT}-8x14 >> font.h && uudecode < /usr/share/syscons/fonts/${SC_DFLT_FONT}-8x8.fnt && file2c 'static u_char dflt_font_8[8*256] = {' '};' < ${SC_DFLT_FONT}-8x8 >> font.h" \
|
The second phase of syscons reorganization.
- Split syscons source code into manageable chunks and reorganize
some of complicated functions.
- Many static variables are moved to the softc structure.
- Added a new key function, PREV. When this key is pressed, the vty
immediately before the current vty will become foreground. Analogue
to PREV, which is usually assigned to the PrntScrn key.
PR: kern/10113
Submitted by: Christian Weisgerber <naddy@mips.rhein-neckar.de>
- Modified the kernel console input function sccngetc() so that it
handles function keys properly.
- Reorganized the screen update routine.
- VT switching code is reorganized. It now should be slightly more
robust than before.
- Added the DEVICE_RESUME function so that syscons no longer hooks the
APM resume event directly.
- New kernel configuration options: SC_NO_CUTPASTE, SC_NO_FONT_LOADING,
SC_NO_HISTORY and SC_NO_SYSMOUSE.
Various parts of syscons can be omitted so that the kernel size is
reduced.
SC_PIXEL_MODE
Made the VESA 800x600 mode an option, rather than a standard part of
syscons.
SC_DISABLE_DDBKEY
Disables the `debug' key combination.
SC_ALT_MOUSE_IMAGE
Inverse the character cell at the mouse cursor position in the text
console, rather than drawing an arrow on the screen.
Submitted by: Nick Hibma (n_hibma@FreeBSD.ORG)
SC_DFLT_FONT
makeoptions "SC_DFLT_FONT=_font_name_"
Include the named font as the default font of syscons. 16-line,
14-line and 8-line font data will be compiled in. This option replaces
the existing STD8X16FONT option, which loads 16-line font data only.
- The VGA driver is split into /sys/dev/fb/vga.c and /sys/isa/vga_isa.c.
- The video driver provides a set of ioctl commands to manipulate the
frame buffer.
- New kernel configuration option: VGA_WIDTH90
Enables 90 column modes: 90x25, 90x30, 90x43, 90x50, 90x60. These
modes are mot always supported by the video card.
PR: i386/7510
Submitted by: kbyanc@freedomnet.com and alexv@sui.gda.itesm.mx.
- The header file machine/console.h is reorganized; its contents is now
split into sys/fbio.h, sys/kbio.h (a new file) and sys/consio.h
(another new file). machine/console.h is still maintained for
compatibility reasons.
- Kernel console selection/installation routines are fixed and
slightly rebumped so that it should now be possible to switch between
the interanl kernel console (sc or vt) and a remote kernel console
(sio) again, as it was in 2.x, 3.0 and 3.1.
- Screen savers and splash screen decoders
Because of the header file reorganization described above, screen
savers and splash screen decoders are slightly modified. After this
update, /sys/modules/syscons/saver.h is no longer necessary and is
removed.
1999-06-22 14:14:06 +00:00
|
|
|
no-obj no-implicit-rule before-depend \
|
2000-03-23 15:42:24 +00:00
|
|
|
clean "font.h ${SC_DFLT_FONT}-8x14 ${SC_DFLT_FONT}-8x16 ${SC_DFLT_FONT}-8x8"
|
1997-07-25 11:53:30 +00:00
|
|
|
#
|
Keyboard driver update in preparation for the USB keyboard driver.
- Refined internal interface in keyboard drivers so that:
1. the side effect of device probe is kept minimal,
2. polling mode function is added,
3. and new ioctl and configuration options are added (see below).
- Added new ioctl: KDSETREPEAT
Set keyboard typematic rate. There has existed an ioctl command,
KDSETRAD, for the same purpose. However, KDSETRAD is dependent on
the AT keyboard. KDSETREPEAT provides more generic interface.
KDSETRAD will still be supported in the atkbd driver.
- Added new configuration options:
ATKBD_DFLT_KEYMAP
Specify a keymap to be used as the default, built-in keymap.
(There has been undocumented options, DKKEYMAP, UKKEYMAP, GRKEYMAP,
SWKEYMAP, RUKEYMAP, ESKEYMAP, and ISKEYMAP to set the default keymap.
These options are now gone for good. The new option is more general.)
KBD_DISABLE_KEYMAP_LOADING
Don't allow the user to change the keymap.
1999-03-10 10:36:53 +00:00
|
|
|
atkbdmap.h optional atkbd_dflt_keymap \
|
2000-08-22 05:01:08 +00:00
|
|
|
compile-with "/usr/sbin/kbdcontrol -L ${ATKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > atkbdmap.h" \
|
Keyboard driver update in preparation for the USB keyboard driver.
- Refined internal interface in keyboard drivers so that:
1. the side effect of device probe is kept minimal,
2. polling mode function is added,
3. and new ioctl and configuration options are added (see below).
- Added new ioctl: KDSETREPEAT
Set keyboard typematic rate. There has existed an ioctl command,
KDSETRAD, for the same purpose. However, KDSETRAD is dependent on
the AT keyboard. KDSETREPEAT provides more generic interface.
KDSETRAD will still be supported in the atkbd driver.
- Added new configuration options:
ATKBD_DFLT_KEYMAP
Specify a keymap to be used as the default, built-in keymap.
(There has been undocumented options, DKKEYMAP, UKKEYMAP, GRKEYMAP,
SWKEYMAP, RUKEYMAP, ESKEYMAP, and ISKEYMAP to set the default keymap.
These options are now gone for good. The new option is more general.)
KBD_DISABLE_KEYMAP_LOADING
Don't allow the user to change the keymap.
1999-03-10 10:36:53 +00:00
|
|
|
no-obj no-implicit-rule before-depend \
|
|
|
|
clean "atkbdmap.h"
|
|
|
|
#
|
|
|
|
ukbdmap.h optional ukbd_dflt_keymap \
|
2000-08-22 05:01:08 +00:00
|
|
|
compile-with "/usr/sbin/kbdcontrol -L ${UKBD_DFLT_KEYMAP} | sed -e 's/^static keymap_t.* = /static keymap_t key_map = /' -e 's/^static accentmap_t.* = /static accentmap_t accent_map = /' > ukbdmap.h" \
|
Keyboard driver update in preparation for the USB keyboard driver.
- Refined internal interface in keyboard drivers so that:
1. the side effect of device probe is kept minimal,
2. polling mode function is added,
3. and new ioctl and configuration options are added (see below).
- Added new ioctl: KDSETREPEAT
Set keyboard typematic rate. There has existed an ioctl command,
KDSETRAD, for the same purpose. However, KDSETRAD is dependent on
the AT keyboard. KDSETREPEAT provides more generic interface.
KDSETRAD will still be supported in the atkbd driver.
- Added new configuration options:
ATKBD_DFLT_KEYMAP
Specify a keymap to be used as the default, built-in keymap.
(There has been undocumented options, DKKEYMAP, UKKEYMAP, GRKEYMAP,
SWKEYMAP, RUKEYMAP, ESKEYMAP, and ISKEYMAP to set the default keymap.
These options are now gone for good. The new option is more general.)
KBD_DISABLE_KEYMAP_LOADING
Don't allow the user to change the keymap.
1999-03-10 10:36:53 +00:00
|
|
|
no-obj no-implicit-rule before-depend \
|
|
|
|
clean "ukbdmap.h"
|
|
|
|
#
|
2005-03-12 00:29:30 +00:00
|
|
|
nvenetlib.o optional nve pci \
|
|
|
|
dependency "$S/contrib/dev/nve/i386/nvenetlib.o.bz2.uu" \
|
|
|
|
compile-with "uudecode $S/contrib/dev/nve/i386/nvenetlib.o.bz2.uu ; bzip2 -df nvenetlib.o.bz2" \
|
|
|
|
no-implicit-rule
|
|
|
|
#
|
2007-10-25 14:16:07 +00:00
|
|
|
os+%DIKED-nve.h optional nve pci \
|
2005-03-12 00:29:30 +00:00
|
|
|
dependency "$S/contrib/dev/nve/os.h" \
|
|
|
|
compile-with "sed -e 's/^.*#include.*phy\.h.*$$//' $S/contrib/dev/nve/os.h > os+%DIKED-nve.h" \
|
2005-04-22 19:55:52 +00:00
|
|
|
no-implicit-rule no-obj before-depend \
|
|
|
|
clean "os+%DIKED-nve.h"
|
2005-03-12 00:29:30 +00:00
|
|
|
#
|
2004-10-24 08:53:40 +00:00
|
|
|
hptmvraid.o optional hptmv \
|
2007-10-25 14:16:07 +00:00
|
|
|
dependency "$S/dev/hptmv/i386-elf.raid.o.uu" \
|
|
|
|
compile-with "uudecode < $S/dev/hptmv/i386-elf.raid.o.uu" \
|
2004-10-24 08:53:40 +00:00
|
|
|
no-implicit-rule
|
|
|
|
#
|
2007-12-15 00:56:17 +00:00
|
|
|
hptrr_lib.o optional hptrr \
|
|
|
|
dependency "$S/dev/hptrr/i386-elf.hptrr_lib.o.uu" \
|
|
|
|
compile-with "uudecode < $S/dev/hptrr/i386-elf.hptrr_lib.o.uu" \
|
|
|
|
no-implicit-rule
|
|
|
|
#
|
2006-05-07 18:12:18 +00:00
|
|
|
compat/linprocfs/linprocfs.c optional linprocfs
|
2006-05-09 22:27:01 +00:00
|
|
|
compat/linsysfs/linsysfs.c optional linsysfs
|
Add the linux 2.6.x stuff (not used by default!):
- TLS - complete
- pid/tid mangling - complete
- thread area - complete
- futexes - complete with issues
- clone() extension - complete with some possible minor issues
- mq*/timer*/clock* stuff - complete but untested and the mq* stuff is
disabled when not build as part of the kernel with native FreeBSD mq*
support (module support for this will come later)
Tested with:
- linux-firefox - works, tested
- linux-opera - works, tested
- linux-realplay - doesnt work, issue with futexes
- linux-skype - doesnt work, issue with futexes
- linux-rt2-demo - works, tested
- linux-acroread - doesnt work, unknown reason (coredump) and sometimes
issue with futexes
- various unix utilities in linux-base-gentoo3 and linux-base-fc4:
everything tried worked
On amd64 not everything is supported like on i386, the catchup is planned for
later when the remaining bugs in the new functions are fixed.
To test this new stuff, you have to run
sysctl compat.linux.osrelease=2.6.16
to switch back use
sysctl compat.linux.osrelease=2.4.2
Don't switch while running a linux program, strange things may or may not
happen.
Sponsored by: Google SoC 2006
Submitted by: rdivacky
Some suggestions/help by: jhb, kib, manu@NetBSD.org, netchild
2006-08-15 12:54:30 +00:00
|
|
|
compat/linux/linux_emul.c optional compat_linux
|
2005-01-04 06:07:25 +00:00
|
|
|
compat/linux/linux_file.c optional compat_linux
|
Add the linux 2.6.x stuff (not used by default!):
- TLS - complete
- pid/tid mangling - complete
- thread area - complete
- futexes - complete with issues
- clone() extension - complete with some possible minor issues
- mq*/timer*/clock* stuff - complete but untested and the mq* stuff is
disabled when not build as part of the kernel with native FreeBSD mq*
support (module support for this will come later)
Tested with:
- linux-firefox - works, tested
- linux-opera - works, tested
- linux-realplay - doesnt work, issue with futexes
- linux-skype - doesnt work, issue with futexes
- linux-rt2-demo - works, tested
- linux-acroread - doesnt work, unknown reason (coredump) and sometimes
issue with futexes
- various unix utilities in linux-base-gentoo3 and linux-base-fc4:
everything tried worked
On amd64 not everything is supported like on i386, the catchup is planned for
later when the remaining bugs in the new functions are fixed.
To test this new stuff, you have to run
sysctl compat.linux.osrelease=2.6.16
to switch back use
sysctl compat.linux.osrelease=2.4.2
Don't switch while running a linux program, strange things may or may not
happen.
Sponsored by: Google SoC 2006
Submitted by: rdivacky
Some suggestions/help by: jhb, kib, manu@NetBSD.org, netchild
2006-08-15 12:54:30 +00:00
|
|
|
compat/linux/linux_futex.c optional compat_linux
|
2005-01-04 06:07:25 +00:00
|
|
|
compat/linux/linux_getcwd.c optional compat_linux
|
|
|
|
compat/linux/linux_ioctl.c optional compat_linux
|
|
|
|
compat/linux/linux_ipc.c optional compat_linux
|
|
|
|
compat/linux/linux_mib.c optional compat_linux
|
|
|
|
compat/linux/linux_misc.c optional compat_linux
|
|
|
|
compat/linux/linux_signal.c optional compat_linux
|
|
|
|
compat/linux/linux_socket.c optional compat_linux
|
|
|
|
compat/linux/linux_stats.c optional compat_linux
|
|
|
|
compat/linux/linux_sysctl.c optional compat_linux
|
Add the linux 2.6.x stuff (not used by default!):
- TLS - complete
- pid/tid mangling - complete
- thread area - complete
- futexes - complete with issues
- clone() extension - complete with some possible minor issues
- mq*/timer*/clock* stuff - complete but untested and the mq* stuff is
disabled when not build as part of the kernel with native FreeBSD mq*
support (module support for this will come later)
Tested with:
- linux-firefox - works, tested
- linux-opera - works, tested
- linux-realplay - doesnt work, issue with futexes
- linux-skype - doesnt work, issue with futexes
- linux-rt2-demo - works, tested
- linux-acroread - doesnt work, unknown reason (coredump) and sometimes
issue with futexes
- various unix utilities in linux-base-gentoo3 and linux-base-fc4:
everything tried worked
On amd64 not everything is supported like on i386, the catchup is planned for
later when the remaining bugs in the new functions are fixed.
To test this new stuff, you have to run
sysctl compat.linux.osrelease=2.6.16
to switch back use
sysctl compat.linux.osrelease=2.4.2
Don't switch while running a linux program, strange things may or may not
happen.
Sponsored by: Google SoC 2006
Submitted by: rdivacky
Some suggestions/help by: jhb, kib, manu@NetBSD.org, netchild
2006-08-15 12:54:30 +00:00
|
|
|
compat/linux/linux_time.c optional compat_linux
|
2005-01-04 06:07:25 +00:00
|
|
|
compat/linux/linux_uid16.c optional compat_linux
|
|
|
|
compat/linux/linux_util.c optional compat_linux
|
|
|
|
compat/ndis/kern_ndis.c optional ndisapi pci
|
Next step on the road to IRPs: create and use an imitation of the
Windows DRIVER_OBJECT and DEVICE_OBJECT mechanism so that we can
simulate driver stacking.
In Windows, each loaded driver image is attached to a DRIVER_OBJECT
structure. Windows uses the registry to match up a given vendor/device
ID combination with a corresponding DRIVER_OBJECT. When a driver image
is first loaded, its DriverEntry() routine is invoked, which sets up
the AddDevice() function pointer in the DRIVER_OBJECT and creates
a dispatch table (based on IRP major codes). When a Windows bus driver
detects a new device, it creates a Physical Device Object (PDO) for
it. This is a DEVICE_OBJECT structure, with semantics analagous to
that of a device_t in FreeBSD. The Windows PNP manager will invoke
the driver's AddDevice() function and pass it pointers to the DRIVER_OBJECT
and the PDO.
The AddDevice() function then creates a new DRIVER_OBJECT structure of
its own. This is known as the Functional Device Object (FDO) and
corresponds roughly to a private softc instance. The driver uses
IoAttachDeviceToDeviceStack() to add this device object to the
driver stack for this PDO. Subsequent drivers (called filter drivers
in Windows-speak) can be loaded which add themselves to the stack.
When someone issues an IRP to a device, it travel along the stack
passing through several possible filter drivers until it reaches
the functional driver (which actually knows how to talk to the hardware)
at which point it will be completed. This is how Windows achieves
driver layering.
Project Evil now simulates most of this. if_ndis now has a modevent
handler which will use MOD_LOAD and MOD_UNLOAD events to drive the
creation and destruction of DRIVER_OBJECTs. (The load event also
does the relocation/dynalinking of the image.) We don't have a registry,
so the DRIVER_OBJECTS are stored in a linked list for now. Eventually,
the list entry will contain the vendor/device ID list extracted from
the .INF file. When ndis_probe() is called and detectes a supported
device, it will create a PDO for the device instance and attach it
to the DRIVER_OBJECT just as in Windows. ndis_attach() will then call
our NdisAddDevice() handler to create the FDO. The NDIS miniport block
is now a device extension hung off the FDO, just as it is in Windows.
The miniport characteristics table is now an extension hung off the
DRIVER_OBJECT as well (the characteristics are the same for all devices
handled by a given driver, so they don't need to be per-instance.)
We also do an IoAttachDeviceToDeviceStack() to put the FDO on the
stack for the PDO. There are a couple of fake bus drivers created
for the PCI and pccard buses. Eventually, there will be one for USB,
which will actually accept USB IRP.s
Things should still work just as before, only now we do things in
the proper order and maintain the correct framework to support passing
IRPs between drivers.
Various changes:
- corrected the comments about IRQL handling in subr_hal.c to more
accurately reflect reality
- update ndiscvt to make the drv_data symbol in ndis_driver_data.h a
global so that if_ndis_pci.o and/or if_ndis_pccard.o can see it.
- Obtain the softc pointer from the miniport block by referencing
the PDO rather than a private pointer of our own (nmb_ifp is no
longer used)
- implement IoAttachDeviceToDeviceStack(), IoDetachDevice(),
IoGetAttachedDevice(), IoAllocateDriverObjectExtension(),
IoGetDriverObjectExtension(), IoCreateDevice(), IoDeleteDevice(),
IoAllocateIrp(), IoReuseIrp(), IoMakeAssociatedIrp(), IoFreeIrp(),
IoInitializeIrp()
- fix a few mistakes in the driver_object and device_object definitions
- add a new module, kern_windrv.c, to handle the driver registration
and relocation/dynalinkign duties (which don't really belong in
kern_ndis.c).
- made ndis_block and ndis_chars in the ndis_softc stucture pointers
and modified all references to it
- fixed NdisMRegisterMiniport() and NdisInitializeWrapper() so they
work correctly with the new driver_object mechanism
- changed ndis_attach() to call NdisAddDevice() instead of ndis_load_driver()
(which is now deprecated)
- used ExAllocatePoolWithTag()/ExFreePool() in lookaside list routines
instead of kludged up alloc/free routines
- added kern_windrv.c to sys/modules/ndis/Makefile and files.i386.
2005-02-08 17:23:25 +00:00
|
|
|
compat/ndis/kern_windrv.c optional ndisapi pci
|
2005-01-04 06:07:25 +00:00
|
|
|
compat/ndis/subr_hal.c optional ndisapi pci
|
|
|
|
compat/ndis/subr_ndis.c optional ndisapi pci
|
|
|
|
compat/ndis/subr_ntoskrnl.c optional ndisapi pci
|
|
|
|
compat/ndis/subr_pe.c optional ndisapi pci
|
- Correct one aspect of the driver_object/device_object/IRP framework:
when we create a PDO, the driver_object associated with it is that
of the parent driver, not the driver we're trying to attach. For
example, if we attach a PCI device, the PDO we pass to the NdisAddDevice()
function should contain a pointer to fake_pci_driver, not to the NDIS
driver itself. For PCI or PCMCIA devices this doesn't matter because
the child never needs to talk to the parent bus driver, but for USB,
the child needs to be able to send IRPs to the parent USB bus driver, and
for that to work the parent USB bus driver has to be hung off the PDO.
This involves modifying windrv_lookup() so that we can search for
bus drivers by name, if necessary. Our fake bus drivers attach themselves
as "PCI Bus," "PCCARD Bus" and "USB Bus," so we can search for them
using those names.
The individual attachment stubs now create and attach PDOs to the
parent bus drivers instead of hanging them off the NDIS driver's
object, and in if_ndis.c, we now search for the correct driver
object depending on the bus type, and use that to find the correct PDO.
With this fix, I can get my sample USB ethernet driver to deliver
an IRP to my fake parent USB bus driver's dispatch routines.
- Add stub modules for USB support: subr_usbd.c, usbd_var.h and
if_ndis_usb.c. The subr_usbd.c module is hooked up the build
but currently doesn't do very much. It provides the stub USB
parent driver object and a dispatch routine for
IRM_MJ_INTERNAL_DEVICE_CONTROL. The only exported function at
the moment is USBD_GetUSBDIVersion(). The if_ndis_usb.c stub
compiles, but is not hooked up to the build yet. I'm putting
these here so I can keep them under source code control as I
flesh them out.
2005-02-24 21:49:14 +00:00
|
|
|
compat/ndis/subr_usbd.c optional ndisapi pci
|
2005-04-11 16:23:13 +00:00
|
|
|
compat/ndis/winx32_wrap.S optional ndisapi pci
|
2005-01-04 06:07:25 +00:00
|
|
|
compat/svr4/imgact_svr4.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_fcntl.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_filio.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_ioctl.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_ipc.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_misc.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_resource.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_signal.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_socket.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_sockio.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_stat.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_stream.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_syscallnames.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_sysent.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_sysvec.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_termios.c optional compat_svr4
|
|
|
|
compat/svr4/svr4_ttold.c optional compat_svr4
|
2007-07-03 12:13:45 +00:00
|
|
|
bf_enc.o optional crypto | ipsec \
|
2005-11-27 21:41:58 +00:00
|
|
|
dependency "$S/crypto/blowfish/arch/i386/bf_enc.S $S/crypto/blowfish/arch/i386/bf_enc_586.S $S/crypto/blowfish/arch/i386/bf_enc_686.S" \
|
|
|
|
compile-with "${CC} -c -I$S/crypto/blowfish/arch/i386 ${ASM_CFLAGS} ${WERROR} ${.IMPSRC}" \
|
2002-03-05 09:19:02 +00:00
|
|
|
no-implicit-rule
|
2007-07-03 12:13:45 +00:00
|
|
|
crypto/des/arch/i386/des_enc.S optional crypto | ipsec | netsmb
|
2005-08-18 00:30:22 +00:00
|
|
|
crypto/via/padlock.c optional padlock
|
2006-07-22 16:18:47 +00:00
|
|
|
crypto/via/padlock_cipher.c optional padlock
|
|
|
|
crypto/via/padlock_hash.c optional padlock
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/advansys/adv_isa.c optional adv isa
|
2009-01-23 17:48:18 +00:00
|
|
|
dev/agp/agp_ali.c optional agp
|
|
|
|
dev/agp/agp_amd.c optional agp
|
|
|
|
dev/agp/agp_amd64.c optional agp
|
|
|
|
dev/agp/agp_ati.c optional agp
|
|
|
|
dev/agp/agp_i810.c optional agp
|
|
|
|
dev/agp/agp_intel.c optional agp
|
2007-11-12 21:51:38 +00:00
|
|
|
dev/agp/agp_nvidia.c optional agp
|
2009-01-23 17:48:18 +00:00
|
|
|
dev/agp/agp_sis.c optional agp
|
|
|
|
dev/agp/agp_via.c optional agp
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/aic/aic_isa.c optional aic isa
|
2005-03-31 20:21:43 +00:00
|
|
|
dev/arcmsr/arcmsr.c optional arcmsr pci
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/ar/if_ar.c optional ar
|
|
|
|
dev/ar/if_ar_isa.c optional ar isa
|
|
|
|
dev/ar/if_ar_pci.c optional ar pci
|
2007-11-07 20:08:15 +00:00
|
|
|
dev/asmc/asmc.c optional asmc isa
|
2005-06-10 20:56:38 +00:00
|
|
|
dev/atkbdc/atkbd.c optional atkbd atkbdc
|
|
|
|
dev/atkbdc/atkbd_atkbdc.c optional atkbd atkbdc
|
|
|
|
dev/atkbdc/atkbdc.c optional atkbdc
|
|
|
|
dev/atkbdc/atkbdc_isa.c optional atkbdc isa
|
|
|
|
dev/atkbdc/atkbdc_subr.c optional atkbdc
|
|
|
|
dev/atkbdc/psm.c optional psm atkbdc
|
2006-01-31 23:11:35 +00:00
|
|
|
dev/ce/ceddk.c optional ce
|
|
|
|
dev/ce/if_ce.c optional ce
|
|
|
|
dev/ce/tau32-ddk.c optional ce
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/cm/if_cm_isa.c optional cm isa
|
2007-08-15 19:26:03 +00:00
|
|
|
dev/coretemp/coretemp.c optional coretemp
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/cp/cpddk.c optional cp
|
|
|
|
dev/cp/if_cp.c optional cp
|
2008-08-08 16:26:53 +00:00
|
|
|
dev/cpuctl/cpuctl.c optional cpuctl
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/ctau/ctau.c optional ctau
|
|
|
|
dev/ctau/ctddk.c optional ctau
|
|
|
|
dev/ctau/if_ct.c optional ctau
|
|
|
|
dev/cx/csigma.c optional cx
|
|
|
|
dev/cx/cxddk.c optional cx
|
|
|
|
dev/cx/if_cx.c optional cx
|
2005-02-09 20:03:40 +00:00
|
|
|
dev/ed/if_ed_3c503.c optional ed isa ed_3c503
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/ed/if_ed_isa.c optional ed isa
|
2005-02-09 20:03:40 +00:00
|
|
|
dev/ed/if_ed_wd80x3.c optional ed isa
|
|
|
|
dev/ed/if_ed_hpp.c optional ed isa ed_hpp
|
|
|
|
dev/ed/if_ed_sic.c optional ed isa ed_sic
|
2005-11-27 21:41:58 +00:00
|
|
|
dev/fb/fb.c optional fb | vga
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/fb/vga.c optional vga
|
|
|
|
dev/fdc/fdc.c optional fdc
|
|
|
|
dev/fdc/fdc_acpi.c optional fdc
|
|
|
|
dev/fdc/fdc_isa.c optional fdc isa
|
|
|
|
dev/fdc/fdc_pccard.c optional fdc pccard
|
|
|
|
dev/fe/if_fe_isa.c optional fe isa
|
2008-08-09 14:52:31 +00:00
|
|
|
dev/glxsb/glxsb.c optional glxsb
|
|
|
|
dev/glxsb/glxsb_hash.c optional glxsb
|
2005-01-10 04:40:23 +00:00
|
|
|
dev/hptmv/entry.c optional hptmv
|
|
|
|
dev/hptmv/mv.c optional hptmv
|
2005-03-02 05:14:28 +00:00
|
|
|
dev/hptmv/gui_lib.c optional hptmv
|
|
|
|
dev/hptmv/hptproc.c optional hptmv
|
|
|
|
dev/hptmv/ioctl.c optional hptmv
|
2007-12-15 00:56:17 +00:00
|
|
|
dev/hptrr/hptrr_os_bsd.c optional hptrr
|
|
|
|
dev/hptrr/hptrr_osm_bsd.c optional hptrr
|
|
|
|
dev/hptrr/hptrr_config.c optional hptrr
|
2005-04-29 02:40:16 +00:00
|
|
|
dev/hwpmc/hwpmc_amd.c optional hwpmc
|
2008-11-09 17:37:54 +00:00
|
|
|
dev/hwpmc/hwpmc_intel.c optional hwpmc
|
- Add support for PMCs in Intel CPUs of Family 6, model 0xE (Core Solo
and Core Duo), models 0xF (Core2), model 0x17 (Core2Extreme) and
model 0x1C (Atom).
In these CPUs, the actual numbers, kinds and widths of PMCs present
need to queried at run time. Support for specific "architectural"
events also needs to be queried at run time.
Model 0xE CPUs support programmable PMCs, subsequent CPUs
additionally support "fixed-function" counters.
- Use event names that are close to vendor documentation, taking in
account that:
- events with identical semantics on two or more CPUs in this family
can have differing names in vendor documentation,
- identical vendor event names may map to differing events across
CPUs,
- each type of CPU supports a different subset of measurable
events.
Fixed-function and programmable counters both use the same vendor
names for events. The use of a class name prefix ("iaf-" or
"iap-" respectively) permits these to be distinguished.
- In libpmc, refactor pmc_name_of_event() into a public interface
and an internal helper function, for use by log handling code.
- Minor code tweaks: staticize a global, freshen a few comments.
Tested by: gnn
2008-11-27 09:00:47 +00:00
|
|
|
dev/hwpmc/hwpmc_core.c optional hwpmc
|
2005-04-29 02:40:16 +00:00
|
|
|
dev/hwpmc/hwpmc_pentium.c optional hwpmc
|
|
|
|
dev/hwpmc/hwpmc_piv.c optional hwpmc
|
|
|
|
dev/hwpmc/hwpmc_ppro.c optional hwpmc
|
2008-11-09 17:37:54 +00:00
|
|
|
dev/hwpmc/hwpmc_tsc.c optional hwpmc
|
2005-06-09 19:45:09 +00:00
|
|
|
dev/hwpmc/hwpmc_x86.c optional hwpmc
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/ichwd/ichwd.c optional ichwd
|
|
|
|
dev/if_ndis/if_ndis.c optional ndis
|
|
|
|
dev/if_ndis/if_ndis_pccard.c optional ndis pccard
|
2005-11-27 21:41:58 +00:00
|
|
|
dev/if_ndis/if_ndis_pci.c optional ndis cardbus | ndis pci
|
Throw the switch on the new driver generation/loading mechanism. From
here on in, if_ndis.ko will be pre-built as a module, and can be built
into a static kernel (though it's not part of GENERIC). Drivers are
created using the new ndisgen(8) script, which uses ndiscvt(8) under
the covers, along with a few other tools. The result is a driver module
that can be kldloaded into the kernel.
A driver with foo.inf and foo.sys files will be converted into
foo_sys.ko (and foo_sys.o, for those who want/need to make static
kernels). This module contains all of the necessary info from the
.INF file and the driver binary image, converted into an ELF module.
You can kldload this module (or add it to /boot/loader.conf) to have
it loaded automatically. Any required firmware files can be bundled
into the module as well (or converted/loaded separately).
Also, add a workaround for a problem in NdisMSleep(). During system
bootstrap (cold == 1), msleep() always returns 0 without actually
sleeping. The Intel 2200BG driver uses NdisMSleep() to wait for
the NIC's firmware to come to life, and fails to load if NdisMSleep()
doesn't actually delay. As a workaround, if msleep() (and hence
ndis_thsuspend()) returns 0, use a hard DELAY() to sleep instead).
This is not really the right thing to do, but we can't really do much
else. At the very least, this makes the Intel driver happy.
There are probably other drivers that fail in this way during bootstrap.
Unfortunately, the only workaround for those is to avoid pre-loading
them and kldload them once the system is running instead.
2005-04-24 20:21:22 +00:00
|
|
|
dev/if_ndis/if_ndis_usb.c optional ndis usb
|
2005-01-10 04:40:23 +00:00
|
|
|
dev/io/iodev.c optional io
|
2006-02-13 17:56:24 +00:00
|
|
|
dev/ipmi/ipmi.c optional ipmi
|
2006-09-22 22:11:29 +00:00
|
|
|
dev/ipmi/ipmi_acpi.c optional ipmi acpi
|
|
|
|
dev/ipmi/ipmi_isa.c optional ipmi isa
|
|
|
|
dev/ipmi/ipmi_kcs.c optional ipmi
|
|
|
|
dev/ipmi/ipmi_smic.c optional ipmi
|
|
|
|
dev/ipmi/ipmi_smbus.c optional ipmi smbus
|
|
|
|
dev/ipmi/ipmi_smbios.c optional ipmi
|
|
|
|
dev/ipmi/ipmi_ssif.c optional ipmi smbus
|
2006-02-13 17:56:24 +00:00
|
|
|
dev/ipmi/ipmi_pci.c optional ipmi pci
|
2008-09-09 22:37:29 +00:00
|
|
|
dev/k8temp/k8temp.c optional k8temp
|
2009-02-15 20:24:21 +00:00
|
|
|
dev/kbd/kbd.c optional atkbd | sc | ukbd | usb2_input_kbd
|
2006-05-17 21:25:23 +00:00
|
|
|
dev/le/if_le_isa.c optional le isa
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/mem/memutil.c optional mem
|
|
|
|
dev/mse/mse.c optional mse
|
|
|
|
dev/mse/mse_isa.c optional mse isa
|
2006-06-26 23:41:07 +00:00
|
|
|
dev/nfe/if_nfe.c optional nfe pci
|
2005-03-12 00:29:30 +00:00
|
|
|
dev/nve/if_nve.c optional nve pci
|
2007-10-26 03:23:54 +00:00
|
|
|
dev/nvram/nvram.c optional nvram isa
|
2005-10-28 15:58:19 +00:00
|
|
|
dev/pcf/pcf_isa.c optional pcf
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/random/nehemiah.c optional random
|
2008-09-10 18:36:58 +00:00
|
|
|
dev/sbni/if_sbni.c optional sbni
|
|
|
|
dev/sbni/if_sbni_isa.c optional sbni isa
|
|
|
|
dev/sbni/if_sbni_pci.c optional sbni pci
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/sio/sio.c optional sio
|
|
|
|
dev/sio/sio_isa.c optional sio isa
|
2006-07-29 18:38:54 +00:00
|
|
|
dev/sio/sio_pccard.c optional sio pccard
|
|
|
|
dev/sio/sio_pci.c optional sio pci
|
|
|
|
dev/sio/sio_puc.c optional sio puc
|
2005-11-11 09:57:32 +00:00
|
|
|
dev/speaker/spkr.c optional speaker
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/sr/if_sr_isa.c optional sr isa
|
|
|
|
dev/syscons/apm/apm_saver.c optional apm_saver apm
|
Replace syscons terminal renderer by a new renderer that uses libteken.
Some time ago I started working on a library called libteken, which is
terminal emulator. It does not buffer any screen contents, but only
keeps terminal state, such as cursor position, attributes, etc. It
should implement all escape sequences that are implemented by the
cons25 terminal emulator, but also a fair amount of sequences that are
present in VT100 and xterm.
A lot of random notes, which could be of interest to users/developers:
- Even though I'm leaving the terminal type set to `cons25', users can
do experiments with placing `xterm-color' in /etc/ttys. Because we
only implement a subset of features of xterm, this may cause
artifacts. We should consider extending libteken, because in my
opinion xterm is the way to go. Some missing features:
- Keypad application mode (DECKPAM)
- Character sets (SCS)
- libteken is filled with a fair amount of assertions, but unfortunately
we cannot go into the debugger anymore if we fail them. I've done
development of this library almost entirely in userspace. In
sys/dev/syscons/teken there are two applications that can be helpful
when debugging the code:
- teken_demo: a terminal emulator that can be started from a regular
xterm that emulates a terminal using libteken. This application can
be very useful to debug any rendering issues.
- teken_stress: a stress testing application that emulates random
terminal output. libteken has literally survived multiple terabytes
of random input.
- libteken also includes support for UTF-8, but unfortunately our input
layer and font renderer don't support this. If users want to
experiment with UTF-8 support, they can enable `TEKEN_UTF8' in
teken.h. If you recompile your kernel or the teken_demo application,
you can hold some nice experiments.
- I've left PC98 the way it is right now. The PC98 platform has a custom
syscons renderer, which supports some form of localised input. Maybe
we should port PC98 to libteken by the time syscons supports UTF-8?
- I've removed the `dumb' terminal emulator. It has been broken for
years. It hasn't survived the `struct proc' -> `struct thread'
conversion.
- To prevent confusion among people that want to hack on libteken:
unlike syscons, the state machines that parse the escape sequences are
machine generated. This means that if you want to add new escape
sequences, you have to add an entry to the `sequences' file. This will
cause new entries to be added to `teken_state.h'.
- Any rendering artifacts that didn't occur prior to this commit are by
accident. They should be reported to me, so I can fix them.
Discussed on: current@, hackers@
Discussed with: philip (at 25C3)
2009-01-01 13:26:53 +00:00
|
|
|
dev/syscons/scterm-teken.c optional sc
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/syscons/scvesactl.c optional sc vga vesa
|
|
|
|
dev/syscons/scvgarndr.c optional sc vga
|
|
|
|
dev/syscons/scvtb.c optional sc
|
Replace syscons terminal renderer by a new renderer that uses libteken.
Some time ago I started working on a library called libteken, which is
terminal emulator. It does not buffer any screen contents, but only
keeps terminal state, such as cursor position, attributes, etc. It
should implement all escape sequences that are implemented by the
cons25 terminal emulator, but also a fair amount of sequences that are
present in VT100 and xterm.
A lot of random notes, which could be of interest to users/developers:
- Even though I'm leaving the terminal type set to `cons25', users can
do experiments with placing `xterm-color' in /etc/ttys. Because we
only implement a subset of features of xterm, this may cause
artifacts. We should consider extending libteken, because in my
opinion xterm is the way to go. Some missing features:
- Keypad application mode (DECKPAM)
- Character sets (SCS)
- libteken is filled with a fair amount of assertions, but unfortunately
we cannot go into the debugger anymore if we fail them. I've done
development of this library almost entirely in userspace. In
sys/dev/syscons/teken there are two applications that can be helpful
when debugging the code:
- teken_demo: a terminal emulator that can be started from a regular
xterm that emulates a terminal using libteken. This application can
be very useful to debug any rendering issues.
- teken_stress: a stress testing application that emulates random
terminal output. libteken has literally survived multiple terabytes
of random input.
- libteken also includes support for UTF-8, but unfortunately our input
layer and font renderer don't support this. If users want to
experiment with UTF-8 support, they can enable `TEKEN_UTF8' in
teken.h. If you recompile your kernel or the teken_demo application,
you can hold some nice experiments.
- I've left PC98 the way it is right now. The PC98 platform has a custom
syscons renderer, which supports some form of localised input. Maybe
we should port PC98 to libteken by the time syscons supports UTF-8?
- I've removed the `dumb' terminal emulator. It has been broken for
years. It hasn't survived the `struct proc' -> `struct thread'
conversion.
- To prevent confusion among people that want to hack on libteken:
unlike syscons, the state machines that parse the escape sequences are
machine generated. This means that if you want to add new escape
sequences, you have to add an entry to the `sequences' file. This will
cause new entries to be added to `teken_state.h'.
- Any rendering artifacts that didn't occur prior to this commit are by
accident. They should be reported to me, so I can fix them.
Discussed on: current@, hackers@
Discussed with: philip (at 25C3)
2009-01-01 13:26:53 +00:00
|
|
|
dev/syscons/teken/teken.c optional sc
|
2005-01-04 06:07:25 +00:00
|
|
|
dev/uart/uart_cpu_i386.c optional uart
|
2004-06-30 14:19:28 +00:00
|
|
|
dev/acpica/acpi_if.m standard
|
2007-11-08 22:09:37 +00:00
|
|
|
dev/wpi/if_wpi.c optional wpi
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/acpica/OsdEnvironment.c optional acpi
|
|
|
|
i386/acpica/acpi_machdep.c optional acpi
|
|
|
|
i386/acpica/acpi_wakeup.c optional acpi
|
|
|
|
acpi_wakecode.h optional acpi \
|
2005-11-21 20:11:39 +00:00
|
|
|
dependency "$S/i386/acpica/acpi_wakecode.S assym.s" \
|
2001-07-20 06:07:34 +00:00
|
|
|
compile-with "${MAKE} -f $S/i386/acpica/Makefile MAKESRCPATH=$S/i386/acpica" \
|
|
|
|
no-obj no-implicit-rule before-depend \
|
|
|
|
clean "acpi_wakecode.h acpi_wakecode.o acpi_wakecode.bin"
|
|
|
|
#
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/acpica/madt.c optional acpi apic
|
|
|
|
i386/bios/apm.c optional apm
|
|
|
|
i386/bios/mca_machdep.c optional mca
|
|
|
|
i386/bios/smapi.c optional smapi
|
|
|
|
i386/bios/smapi_bios.S optional smapi
|
|
|
|
i386/bios/smbios.c optional smbios
|
|
|
|
i386/bios/vpd.c optional vpd
|
2005-02-20 20:29:04 +00:00
|
|
|
i386/cpufreq/est.c optional cpufreq
|
2005-02-23 16:43:44 +00:00
|
|
|
i386/cpufreq/p4tcc.c optional cpufreq
|
2005-03-27 21:50:30 +00:00
|
|
|
i386/cpufreq/powernow.c optional cpufreq
|
2005-04-19 16:39:23 +00:00
|
|
|
i386/cpufreq/smist.c optional cpufreq
|
2005-01-04 06:07:25 +00:00
|
|
|
#i386/i386/apic_vector.s optional apic
|
2007-10-25 14:16:07 +00:00
|
|
|
i386/i386/atomic.c standard \
|
2000-01-09 08:24:27 +00:00
|
|
|
compile-with "${CC} -c ${CFLAGS} ${DEFINED_PROF:S/^$/-fomit-frame-pointer/} ${.IMPSRC}"
|
1999-07-03 19:19:34 +00:00
|
|
|
i386/i386/autoconf.c standard
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/i386/bios.c optional native
|
|
|
|
i386/i386/bioscall.s optional native
|
2005-12-07 21:30:47 +00:00
|
|
|
i386/i386/bpf_jit_machdep.c optional bpf_jitter
|
1998-01-15 07:30:54 +00:00
|
|
|
i386/i386/busdma_machdep.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/db_disasm.c optional ddb
|
|
|
|
i386/i386/db_interface.c optional ddb
|
|
|
|
i386/i386/db_trace.c optional ddb
|
2002-05-13 02:40:21 +00:00
|
|
|
i386/i386/dump_machdep.c standard
|
2005-11-27 21:41:58 +00:00
|
|
|
i386/i386/elan-mmcr.c optional cpu_elan | cpu_soekris
|
1998-10-09 23:08:14 +00:00
|
|
|
i386/i386/elf_machdep.c standard
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/i386/exception.s optional native
|
|
|
|
i386/xen/exception.s optional xen
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/gdb_machdep.c optional gdb
|
|
|
|
i386/i386/geode.c optional cpu_geode
|
|
|
|
i386/i386/i686_mem.c optional mem
|
1996-07-08 19:44:39 +00:00
|
|
|
i386/i386/identcpu.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/in_cksum.c optional inet
|
1997-03-22 18:54:54 +00:00
|
|
|
i386/i386/initcpu.c standard
|
2003-11-03 22:46:43 +00:00
|
|
|
i386/i386/intr_machdep.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/io.c optional io
|
2005-01-10 04:40:23 +00:00
|
|
|
i386/i386/io_apic.c optional apic
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/k6_mem.c optional mem
|
2008-08-17 23:44:09 +00:00
|
|
|
i386/i386/legacy.c optional native
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/local_apic.c optional apic
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/i386/locore.s optional native no-obj
|
|
|
|
i386/xen/locore.s optional xen no-obj
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/longrun.c optional cpu_enable_longrun
|
1994-08-30 17:18:34 +00:00
|
|
|
i386/i386/machdep.c standard
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/xen/xen_machdep.c optional xen
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/mem.c optional mem
|
2006-04-21 04:28:43 +00:00
|
|
|
i386/i386/minidump_machdep.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/mp_clock.c optional smp
|
2008-09-23 03:13:33 +00:00
|
|
|
i386/i386/mp_machdep.c optional native smp
|
|
|
|
i386/xen/mp_machdep.c optional xen smp
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/mp_watchdog.c optional mp_watchdog smp
|
2008-09-23 03:13:33 +00:00
|
|
|
i386/i386/mpboot.s optional smp native
|
|
|
|
i386/i386/mptable.c optional apic native
|
|
|
|
i386/xen/mptable.c optional apic xen
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/mptable_pci.c optional apic pci
|
2006-11-13 22:23:34 +00:00
|
|
|
i386/i386/msi.c optional apic pci
|
1999-04-16 21:22:55 +00:00
|
|
|
i386/i386/nexus.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/i386/perfmon.c optional perfmon
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/i386/pmap.c optional native
|
|
|
|
i386/xen/pmap.c optional xen
|
2005-05-31 09:43:04 +00:00
|
|
|
i386/i386/ptrace_machdep.c standard
|
Break out stack(9) from ddb(4):
- Introduce per-architecture stack_machdep.c to hold stack_save(9).
- Introduce per-architecture machine/stack.h to capture any common
definitions required between db_trace.c and stack_machdep.c.
- Add new kernel option "options STACK"; we will build in stack(9) if it is
defined, or also if "options DDB" is defined to provide compatibility
with existing users of stack(9).
Add new stack_save_td(9) function, which allows the capture of a stacktrace
of another thread rather than the current thread, which the existing
stack_save(9) was limited to. It requires that the thread be neither
swapped out nor running, which is the responsibility of the consumer to
enforce.
Update stack(9) man page.
Build tested: amd64, arm, i386, ia64, powerpc, sparc64, sun4v
Runtime tested: amd64 (rwatson), arm (cognet), i386 (rwatson)
2007-12-02 20:40:35 +00:00
|
|
|
i386/i386/stack_machdep.c optional ddb | stack
|
1994-08-30 17:18:34 +00:00
|
|
|
i386/i386/support.s standard
|
|
|
|
i386/i386/swtch.s standard
|
1993-06-12 14:58:17 +00:00
|
|
|
i386/i386/sys_machdep.c standard
|
|
|
|
i386/i386/trap.c standard
|
2003-02-11 13:19:01 +00:00
|
|
|
i386/i386/tsc.c standard
|
2004-03-21 20:28:36 +00:00
|
|
|
i386/i386/uio_machdep.c standard
|
1999-06-01 18:18:39 +00:00
|
|
|
i386/i386/vm86.c standard
|
1999-06-29 16:14:20 +00:00
|
|
|
i386/i386/vm_machdep.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/ibcs2/ibcs2_errno.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_fcntl.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_ioctl.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_ipc.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_isc.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_isc_sysent.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_misc.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_msg.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_other.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_signal.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_socksys.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_stat.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_sysent.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_sysi86.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_sysvec.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_util.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_xenix.c optional ibcs2
|
|
|
|
i386/ibcs2/ibcs2_xenix_sysent.c optional ibcs2
|
|
|
|
i386/ibcs2/imgact_coff.c optional ibcs2
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/isa/atpic.c optional atpic
|
2004-05-26 07:43:41 +00:00
|
|
|
#i386/isa/atpic_vector.s standard
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/isa/clock.c optional native
|
|
|
|
i386/xen/clock.c optional xen
|
2008-08-23 21:00:40 +00:00
|
|
|
i386/isa/dpms.c optional dpms
|
2004-05-04 20:07:46 +00:00
|
|
|
i386/isa/elcr.c standard
|
2005-11-27 21:41:58 +00:00
|
|
|
i386/isa/elink.c optional ep | ie
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/isa/isa.c optional isa
|
|
|
|
i386/isa/isa_dma.c optional isa
|
2003-11-03 22:46:43 +00:00
|
|
|
i386/isa/nmi.c standard
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/isa/npx.c optional npx
|
|
|
|
i386/isa/pmtimer.c optional pmtimer
|
|
|
|
i386/isa/prof_machdep.c optional profiling-routine
|
|
|
|
i386/isa/spic.c optional spic
|
|
|
|
i386/isa/vesa.c optional vga vesa
|
|
|
|
i386/linux/imgact_linux.c optional compat_linux
|
|
|
|
i386/linux/linux_dummy.c optional compat_linux
|
2007-10-25 14:16:07 +00:00
|
|
|
i386/linux/linux_locore.s optional compat_linux \
|
1996-03-15 07:49:02 +00:00
|
|
|
dependency "linux_assym.h"
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/linux/linux_machdep.c optional compat_linux
|
|
|
|
i386/linux/linux_ptrace.c optional compat_linux
|
2007-10-25 14:16:07 +00:00
|
|
|
i386/linux/linux_support.s optional compat_linux \
|
2007-05-23 15:45:52 +00:00
|
|
|
dependency "linux_assym.h"
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/linux/linux_sysent.c optional compat_linux
|
|
|
|
i386/linux/linux_sysvec.c optional compat_linux
|
|
|
|
i386/pci/pci_bus.c optional pci
|
|
|
|
i386/pci/pci_cfgreg.c optional pci
|
2008-08-15 20:58:57 +00:00
|
|
|
i386/pci/pci_pir.c optional pci
|
2007-10-25 14:16:07 +00:00
|
|
|
i386/svr4/svr4_locore.s optional compat_svr4 \
|
2001-01-09 05:03:08 +00:00
|
|
|
dependency "svr4_assym.h" \
|
2002-08-20 00:29:16 +00:00
|
|
|
warning "COMPAT_SVR4 is broken and should be avoided"
|
2005-01-04 06:07:25 +00:00
|
|
|
i386/svr4/svr4_machdep.c optional compat_svr4
|
2000-10-09 13:41:07 +00:00
|
|
|
#
|
2008-08-15 20:58:57 +00:00
|
|
|
isa/atrtc.c optional atpic
|
2005-01-04 06:07:25 +00:00
|
|
|
isa/syscons_isa.c optional sc
|
|
|
|
isa/vga_isa.c optional vga
|
|
|
|
kern/imgact_aout.c optional compat_aout
|
|
|
|
kern/imgact_gzip.c optional gzip
|
1995-12-26 13:58:31 +00:00
|
|
|
libkern/divdi3.c standard
|
2004-05-05 11:17:26 +00:00
|
|
|
libkern/ffsl.c standard
|
|
|
|
libkern/flsl.c standard
|
2009-02-28 16:21:25 +00:00
|
|
|
libkern/memmove.c standard
|
2007-04-06 11:29:52 +00:00
|
|
|
libkern/memset.c standard
|
1995-12-26 13:58:31 +00:00
|
|
|
libkern/moddi3.c standard
|
|
|
|
libkern/qdivrem.c standard
|
2000-12-01 09:54:17 +00:00
|
|
|
libkern/ucmpdi2.c standard
|
1995-12-26 13:58:31 +00:00
|
|
|
libkern/udivdi3.c standard
|
|
|
|
libkern/umoddi3.c standard
|
2007-10-25 14:16:07 +00:00
|
|
|
i386/xbox/xbox.c optional xbox
|
|
|
|
i386/xbox/xboxfb.c optional xboxfb
|
|
|
|
dev/fb/boot_font.c optional xboxfb
|
|
|
|
i386/xbox/pic16l.s optional xbox
|