Home | History | Annotate | Download | only in dev
History log of /src/sys/arch/mac68k/dev/grf_compat.c
RevisionDateAuthorComments
 1.29  10-Nov-2019  chs in many device attach paths, allocate memory with M_WAITOK instead of M_NOWAIT
and remove code to handle failures that can no longer happen.
 1.28  20-Aug-2015  christos branches: 1.28.18;
include "ioconf.h" to get the 'void <driver>attach(int count);' prototype.
 1.27  14-Dec-2014  chs add a new "fo_mmap" fileops method to allow use of arbitrary uvm_objects for
mappings of file objects. move vnode-specific details of mmap()ing a vnode
from uvm_mmap() to the new vnode-specific vn_mmap(). add new uvm_mmap_dev()
and uvm_mmap_anon() convenience functions for mapping character devices
and anonymous memory, and replace all other calls to uvm_mmap() with those.
use the new fileop in drm2 so that libdrm can use mmap() to map things
like on other platforms (instead of the ioctl that we have used so far).
 1.26  25-Jul-2014  dholland branches: 1.26.2; 1.26.4;
Add d_discard to all struct cdevsw instances I could find.

All have been set to "nodiscard"; some should get a real implementation.
 1.25  16-Mar-2014  dholland branches: 1.25.2;
Change (mostly mechanically) every cdevsw/bdevsw I can find to use
designated initializers.

I have not built every extant kernel so I have probably broken at
least one build; however I've also found and fixed some wrong
cdevsw/bdevsw entries so even if so I think we come out ahead.
 1.24  30-Jan-2014  martin Add missing cast (to make it compilable)
 1.23  26-Jan-2014  christos kill VM_DEFAULT_ADDRESS use
 1.22  06-Jun-2010  mrg branches: 1.22.8; 1.22.18; 1.22.22;
defflag GRF_COMPAT.
 1.21  25-Jan-2008  dogcow branches: 1.21.10; 1.21.30; 1.21.32;
fallout from v_specinfo removal
 1.20  05-Mar-2007  he branches: 1.20.20; 1.20.26;
Cast to char* before doing pointer arithmetic.
 1.19  04-Mar-2007  christos Kill caddr_t; there will be some MI fallout, but it will be fixed shortly.
 1.18  24-Jan-2007  hubertf branches: 1.18.2;
Remove duplicate #includes, patch contributed in private mail
by Slava Semushin <slava.semushin@gmail.com>.

To verify that no nasty side effects of duplicate includes (or their
removal) have an effect here, I've compiled an i386/ALL kernel with
and without the patch, and the only difference in the resulting .o
files was in shifted line numbers in some assert() calls.
The comparison of the .o files was based on the output of "objdump -D".

Thanks to martin@ for the input on testing.
 1.17  09-Mar-2006  he branches: 1.17.10;
Remove now-unused local variable.
 1.16  08-Mar-2006  scottr Cleaner check for offset to grf_mmap
 1.15  11-Dec-2005  christos branches: 1.15.4; 1.15.6; 1.15.8; 1.15.10;
merge ktrace-lwp.
 1.14  15-Jan-2005  chs branches: 1.14.10;
de-__P, remove register, ansify, b* -> mem*.
 1.13  15-Jul-2003  lukem branches: 1.13.6;
__KERNEL_RCSID()
 1.12  24-Feb-2003  atatat branches: 1.12.2;
Cast VM_DEFAULT_ADDRESS() to a caddr_t.
 1.11  20-Feb-2003  atatat Introduce "top down" memory management for mmap()ed allocations. This
means that the dynamic linker gets mapped in at the top of available
user virtual memory (typically just below the stack), shared libraries
get mapped downwards from that point, and calls to mmap() that don't
specify a preferred address will get mapped in below those.

This means that the heap and the mmap()ed allocations will grow
towards each other, allowing one or the other to grow larger than
before. Previously, the heap was limited to MAXDSIZ by the placement
of the dynamic linker (and the process's rlimits) and the space
available to mmap was hobbled by this reservation.

This is currently only enabled via an *option* for the i386 platform
(though other platforms are expected to follow). Add "options
USE_TOPDOWN_VM" to your kernel config file, rerun config, and rebuild
your kernel to take advantage of this.

Note that the pmap_prefer() interface has not yet been modified to
play nicely with this, so those platforms require a bit more work
(most notably the sparc) before they can use this new memory
arrangement.

This change also introduces a VM_DEFAULT_ADDRESS() macro that picks
the appropriate default address based on the size of the allocation or
the size of the process's text segment accordingly. Several drivers
and the SYSV SHM address assignment were changed to use this instead
of each one picking their own "default".
 1.10  23-Oct-2002  jdolecek merge kqueue branch into -current

kqueue provides a stateful and efficient event notification framework
currently supported events include socket, file, directory, fifo,
pipe, tty and device changes, and monitoring of processes and signals

kqueue is supported by all writable filesystems in NetBSD tree
(with exception of Coda) and all device drivers supporting poll(2)

based on work done by Jonathan Lemon for FreeBSD
initial NetBSD port done by Luke Mewburn and Jason Thorpe
 1.9  10-Oct-2002  jdolecek replace the somewhat strange poll routine with standard nopoll() (a.k.a
seltrue())
 1.8  06-Sep-2002  gehenna Merge the gehenna-devsw branch into the trunk.

This merge changes the device switch tables from static array to
dynamically generated by config(8).

- All device switches is defined as a constant structure in device drivers.

- The new grammer ``device-major'' is introduced to ``files''.

device-major <prefix> char <num> [block <num>] [<rules>]

- All device major numbers must be listed up in port dependent majors.<arch>
by using this grammer.

- Added the new naming convention.
The name of the device switch must be <prefix>_[bc]devsw for auto-generation
of device switch tables.

- The backward compatibility of loading block/character device
switch by LKM framework is broken. This is necessary to convert
from block/character device major to device name in runtime and vice versa.

- The restriction to assign device major by LKM is completely removed.
We don't need to reserve LKM entries for dynamic loading of device switch.

- In compile time, device major numbers list is packed into the kernel and
the LKM framework will refer it to assign device major number dynamically.
 1.7  30-Apr-2001  wiz branches: 1.7.2; 1.7.4; 1.7.8; 1.7.16;
Remove unused variable. Reported by Thilo Manske in port-mac68k/12794.
 1.6  15-Mar-2001  chs eliminate the KERN_* error codes in favor of the traditional E* codes.
the mapping is:

KERN_SUCCESS 0
KERN_INVALID_ADDRESS EFAULT
KERN_PROTECTION_FAILURE EACCES
KERN_NO_SPACE ENOMEM
KERN_INVALID_ARGUMENT EINVAL
KERN_FAILURE various, mostly turn into KASSERTs
KERN_RESOURCE_SHORTAGE ENOMEM
KERN_NOT_RECEIVER <unused>
KERN_NO_ACCESS <unused>
KERN_PAGES_LOCKED <unused>
 1.5  29-Jun-2000  mrg branches: 1.5.2; 1.5.4;
remove include of <vm/vm.h>. <vm/vm.h> -> <uvm/uvm_extern.h>
 1.4  26-Jun-2000  simonb Change the kernel mmap interface so that the offset to map is an
"off_t" and the return value is a "paddr_t" to allow mappings
at offsets past 2^31 bytes. Somewhat inspired by FreeBSD, which
only changed the offset to a "vm_offset_t".

Includes updates for the i386, pc532 and sh3 mmmmap from Jason Thorpe.
 1.3  08-Jun-2000  scottr branches: 1.3.2;
Make this compile with GRF_COMPAT. Problem pointed out by Hauke Fath.
 1.2  14-Feb-2000  scottr branches: 1.2.2;
Merge wscons work onto the main development branch.
 1.1  15-Nov-1999  scottr branches: 1.1.2;
file grf_compat.c was initially added on branch scottr-mac68k-wscons.
 1.1.2.5  20-Nov-1999  scottr Clear the screen on close to emulate the behavior of legacy
grf devices.
 1.1.2.4  18-Nov-1999  scottr Revert 1.1.2.2; further testing shows that the problem lies elsewhere.
 1.1.2.3  18-Nov-1999  scottr Improved emulation of grf devices:

- sync return value for unsupported ioctls with legacy grf driver
- returning (-1) from grfioctl() is hardly appropriate; return EINVAL
when we are given an unknown ioctl (duh)
- don't add the displayable region offset in grfmmap(); apps handlj
this themselves
 1.1.2.2  17-Nov-1999  scottr Avoid MAP_FIXED in grfmap(); it doesn't buy us anything
with the apps that use it, and can cause some systems (e.g. the IIci)
to behave erratically.
 1.1.2.1  15-Nov-1999  scottr Implement a more straightforward approach to grf emulation.
 1.2.2.1  22-Jun-2000  minoura Sync w/ netbsd-1-5-base.
 1.3.2.1  30-Jun-2000  simonb Pull up mmap paddr_t/off_t changes from trunk.
 1.5.4.2  21-Jun-2001  nathanw Catch up to -current.
 1.5.4.1  09-Apr-2001  nathanw Catch up with -current.
 1.5.2.3  27-Mar-2001  bouyer Sync with HEAD.
 1.5.2.2  20-Nov-2000  bouyer Update thorpej_scsipi to -current as of a month ago
A i386 GENERIC kernel compiles without the siop, ahc and bha drivers
(will be updated later). i386 IDE/ATAPI and ncr work, as well as
sparc/esp_sbus. alpha should work as well (untested yet).
siop, ahc and bha will be updated once I've updated the branch to current
-current, as well as machine-dependant code.
 1.5.2.1  29-Jun-2000  bouyer file grf_compat.c was added on branch thorpej_scsipi on 2000-11-20 20:12:16 +0000
 1.7.16.1  17-May-2002  gehenna Add device switch.
 1.7.8.4  11-Nov-2002  nathanw Catch up to -current
 1.7.8.3  18-Oct-2002  nathanw Catch up to -current.
 1.7.8.2  17-Sep-2002  nathanw Catch up to -current.
 1.7.8.1  30-Apr-2001  nathanw file grf_compat.c was added on branch nathanw_sa on 2002-09-17 21:15:24 +0000
 1.7.4.1  10-Oct-2001  fvdl Convert all remaining devices.
 1.7.2.3  10-Oct-2002  jdolecek use nokqfilter (or seltrue_kqfilter()) for drivers which provide poll
routine very similar to seltrue(); the poll routines would be cleaned
up on trunk
 1.7.2.2  10-Oct-2002  jdolecek sync kqueue with -current; this includes merge of gehenna-devsw branch,
merge of i386 MP branch, and part of autoconf rototil work
 1.7.2.1  18-Jun-2002  jdolecek provide dummy grfkqfilter()
 1.12.2.5  25-Jan-2005  skrll Adapt to branch.
 1.12.2.4  17-Jan-2005  skrll Sync with HEAD.
 1.12.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.12.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.12.2.1  03-Aug-2004  skrll Sync with HEAD
 1.13.6.2  09-Mar-2006  snj Revert previous change, which was accidentally committed to the wrong branch.
 1.13.6.1  08-Mar-2006  scottr Cleaner check for offset to grf_mmap
 1.14.10.4  04-Feb-2008  yamt sync with head.
 1.14.10.3  03-Sep-2007  yamt sync with head.
 1.14.10.2  26-Feb-2007  yamt sync with head.
 1.14.10.1  21-Jun-2006  yamt sync with head.
 1.15.10.1  19-Apr-2006  elad sync with head - hopefully this will work
 1.15.8.1  13-Mar-2006  yamt sync with head.
 1.15.6.1  22-Apr-2006  simonb Sync with head.
 1.15.4.1  09-Sep-2006  rpaulo sync with head
 1.17.10.1  01-Feb-2007  ad Sync with head.
 1.18.2.1  12-Mar-2007  rmind Sync with HEAD.
 1.20.26.1  18-Feb-2008  mjf Sync with HEAD.
 1.20.20.1  23-Mar-2008  matt sync with HEAD
 1.21.32.1  03-Jul-2010  rmind sync with head
 1.21.30.1  17-Aug-2010  uebayasi Sync with HEAD.
 1.21.10.1  11-Aug-2010  yamt sync with head.
 1.22.22.1  18-May-2014  rmind sync with head
 1.22.18.2  03-Dec-2017  jdolecek update from HEAD
 1.22.18.1  20-Aug-2014  tls Rebase to HEAD as of a few days ago.
 1.22.8.1  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.25.2.1  10-Aug-2014  tls Rebase.
 1.26.4.2  22-Sep-2015  skrll Sync with HEAD
 1.26.4.1  06-Apr-2015  skrll Sync with HEAD
 1.26.2.1  31-Dec-2014  snj Pull up following revision(s) (requested by chs in ticket #363):
common/lib/libprop/prop_kern.c: revision 1.18
sys/arch/mac68k/dev/grf_compat.c: revision 1.27
sys/arch/x68k/dev/grf.c: revision 1.45
sys/external/bsd/drm/dist/bsd-core/drm_bufs.c: revision 1.12
sys/external/bsd/drm2/drm/drm_drv.c: revision 1.12
sys/external/bsd/drm2/drm/drm_vm.c: revision 1.6
sys/external/bsd/drm2/include/linux/mm.h: revision 1.4
sys/kern/vfs_vnops.c: revision 1.192 via patch
sys/rump/librump/rumpkern/vm.c: revision 1.160
sys/sys/file.h: revision 1.78 via patch
sys/uvm/uvm_device.c: revision 1.64
sys/uvm/uvm_device.h: revision 1.13
sys/uvm/uvm_extern.h: revision 1.192
sys/uvm/uvm_mmap.c: revision 1.150 via patch
add a new "fo_mmap" fileops method to allow use of arbitrary uvm_objects for
mappings of file objects. move vnode-specific details of mmap()ing a vnode
from uvm_mmap() to the new vnode-specific vn_mmap(). add new uvm_mmap_dev()
and uvm_mmap_anon() convenience functions for mapping character devices
and anonymous memory, and replace all other calls to uvm_mmap() with those.
use the new fileop in drm2 so that libdrm can use mmap() to map things
like on other platforms (instead of the ioctl that we have used so far).
 1.28.18.1  13-Apr-2020  martin Mostly merge changes from HEAD upto 20200411

RSS XML Feed