#
353783 |
|
20-Oct-2019 |
kevans |
MFC r353128-r353129: fully initialize cloned devices w/ make_dev_args
r353128: kern_conf: fully initialize cloned devices with make_dev_args, too
Attempting to initialize si_drv{1,2} with mda_si_drv{1,2} does not work if you are operating on cloned devices.
clone_create must be called prior to the make_dev* family to create/return the device on the clonelist as needed. This device is later returned early in newdev(), prior to si_drv{0,1,2} initialization.
This patch simply breaks out of the loop if we've found a device and finishes init.
r353129: Remove the remnants of SI_CHEAPCLONE
SI_CHEAPCLONE was introduced in r66067 for use with cloned bpfs. It was later also used in tty, tun, tap at points. The rough timeline for being removed in each of these is as follows:
- r181690: bpf switched to use cdevpriv API by ed@ - r181905: ed@ rewrote the TTY later to be mpsafe - r204464: kib@ removes it from tun/tap, declaring it unused
I've not yet been able to dig up any other consumers in the intervening 9 years. It is no longer set on any devices in the tree and leaves an interesting situation in make_dev_sv where we're ok with the device already being set SI_NAMED.
|
#
331722 |
|
29-Mar-2018 |
eadler |
Revert r330897:
This was intended to be a non-functional change. It wasn't. The commit message was thus wrong. In addition it broke arm, and merged crypto related code.
Revert with prejudice.
This revert skips files touched in r316370 since that commit was since MFCed. This revert also skips files that require $FreeBSD$ property changes.
Thank you to those who helped me get out of this mess including but not limited to gonzo, kevans, rgrimes.
Requested by: gjb (re)
|
#
330897 |
|
14-Mar-2018 |
eadler |
Partial merge of the SPDX changes
These changes are incomplete but are making it difficult to determine what other changes can/should be merged.
No objections from: pfg
|
#
317916 |
|
07-May-2017 |
rmacklem |
MFC: r317269 Set default uid/gid to nobody/nogroup for NFSv4 mapping.
The default uid/gid for NFSv4 are set by the nfsuserd(8) daemon. However, they were 0 until the nfsuserd(8) was run. Since it is possible to use NFSv4 without running the nfsuserd(8) daemon, set them to nobody/nogroup initially. Without this patch, the values would be set by the nfsuserd(8) daemon and left changed even if the nfsuserd(8) daemon was killed. The default values of 0 meant that setting a group to "wheel" would fail even when done by root. It also adds a definition of GID_NOGROUP to sys/conf.h.
|
#
311641 |
|
07-Jan-2017 |
kib |
MFC r310925: Remove unused declaration.
|
#
302408 |
|
07-Jul-2016 |
gjb |
Copy head@r302406 to stable/11 as part of the 11.0-RELEASE cycle. Prune svn:mergeinfo from the new branch, as nothing has been merged here.
Additional commits post-branch will follow.
Approved by: re (implicit) Sponsored by: The FreeBSD Foundation |
#
298890 |
|
01-May-2016 |
kib |
Make it explicit that D_MEM cdevsw d_flag is to signify that the driver is (or behaves identically to) /dev/mem. Remove the D_MEM flag from random drivers.
Note that currently the D_MEM flag does not affect any behaviour, but this going to change in the next commit.
Noted and reviewed by: alc Sponsored by: The FreeBSD Foundation MFC after: 1 week X-Differential revision: https://reviews.freebsd.org/D6149
|
#
298076 |
|
15-Apr-2016 |
cem |
Add 4Kn kernel dump support
(And 4Kn minidump support, but only for amd64.)
Make sure all I/O to the dump device is of the native sector size. To that end, we keep a native sector sized buffer associated with dump devices (di->blockbuf) and use it to pad smaller objects as needed (e.g. kerneldumpheader).
Add dump_write_pad() as a convenience API to dump smaller objects with zero padding. (Rather than pull in NPM leftpad, we wrote our own.)
Savecore(1) has been updated to deal with these dumps. The format for 512-byte sector dumps should remain backwards compatible.
Minidumps for other architectures are left as an exercise for the reader.
PR: 194279 Submitted by: ambrisko@ Reviewed by: cem (earlier version), rpokala Tested by: rpokala (4Kn/512 except 512 fulldump), cem (512 fulldump) Relnotes: yes Sponsored by: EMC / Isilon Storage Division Differential Revision: https://reviews.freebsd.org/D5848
|
#
293827 |
|
13-Jan-2016 |
kib |
Make devfs_fpdrop() static. It was not a public KPI, and it has no reason to remain exported for some time.
Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
#
293346 |
|
07-Jan-2016 |
kib |
Provide yet another KPI for cdev creation, make_dev_s(9).
Immediate problem fixed by the new KPI is the long-standing race between device creation and assignments to cdev->si_drv1 and cdev->si_drv2, which allows the window where cdevsw methods might be called with si_drv1,2 fields not yet set. Devices typically checked for NULL and returned spurious errors to usermode, and often left some methods unchecked.
The new function interface is designed to be extensible, which should allow to add more features to make_dev_s(9) without inventing yet another name for function to create devices, while maintaining KPI and even KBI backward-compatibility.
Reviewed by: hps, jhb Sponsored by: The FreeBSD Foundation MFC after: 3 weeks Differential revision: https://reviews.freebsd.org/D4746
|
#
291653 |
|
02-Dec-2015 |
jhb |
The cdevpriv_dtr_t typedef was not able to be used in a function prototype like the various d_*_t typedefs since it declared a function pointer rather than a function. Add a new d_priv_dtor_t typedef that declares the function and can be used as a function prototype. The previous typedef wasn't useful outside of the cdevpriv implementation, so retire it.
The name d_priv_dtor_t was chosen to be more consistent with cdev methods since it is commonly used in place of d_close_t even though it is not a direct pointer in struct cdevsw.
Reviewed by: kib, imp MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D4340
|
#
287638 |
|
10-Sep-2015 |
imp |
dev_strategy and dev_strategy_csw are unused since r281825. Remove them.
Differential Revision: https://reviews.freebsd.org/D3620
|
#
286640 |
|
11-Aug-2015 |
kwm |
Instead of defining the actualy user and group id in the drmP.h files define GID_VIDEO in sys/conf.h, and use it together with UID_ROOT to define DRM_DEV_UID and DRM_DEV_GID in the drmP.h files.
So there is one place where the UID's and GID's are defined.
Submitted by: ed@ Reviewed by: ed@, dumbbell@ Differential Revision: https://reviews.freebsd.org/D3360
|
#
277897 |
|
29-Jan-2015 |
jhb |
Remove the d_thread_t compatibility shim provided in 5.0 to handle the struct thread (<= 4.x) vs struct proc (>= 5.0) argument to cdevsw routines. It is long past its expiration date.
PR: 196544 (exp-run)
|
#
277179 |
|
14-Jan-2015 |
hselasky |
Add a kernel function to delist our kernel character devices, so that the device name can be re-used right away in case we are destroying the character devices in the background.
MFC after: 4 days Reported by: dchagin@
|
#
276772 |
|
06-Jan-2015 |
markj |
Factor out duplicated code from dumpsys() on each architecture into generic code in sys/kern/kern_dump.c. Most dumpsys() implementations are nearly identical and simply redefine a number of constants and helper subroutines; a generic implementation will make it easier to implement features around kernel core dumps. This change does not alter any minidump code and should have no functional impact.
PR: 193873 Differential Revision: https://reviews.freebsd.org/D904 Submitted by: Conrad Meyer <conrad.meyer@isilon.com> Reviewed by: jhibbits (earlier version) Sponsored by: EMC / Isilon Storage Division
|
#
274366 |
|
11-Nov-2014 |
pjd |
Add missing privilege check when setting the dump device. Before that change it was possible for a regular user to setup the dump device if he had write access to the given device. In theory it is a security issue as user might get access to kernel's memory after provoking kernel crash, but in practise it is not recommended to give regular users direct access to storage devices.
Rework the code so that we do privileges check within the set_dumper() function to avoid similar problems in the future.
Discussed with: secteam
|
#
274251 |
|
07-Nov-2014 |
kib |
Add DEV_MODULE_ORDERED().
Sponsored by: The FreeBSD Foundation MFC after: 1 week
|
#
269105 |
|
25-Jul-2014 |
gavin |
Add error return to dumpsys(), and use it in doadump().
This commit does not add error returns to minidumpsys() or textdump_dumpsys(); those can also be added later.
Submitted by: Conrad Meyer (EMC / Isilon storage division)
|
#
254760 |
|
24-Aug-2013 |
ken |
Add support to physio(9) for devices that don't want I/O split and configure sa(4) to request no I/O splitting by default.
For tape devices, the user needs to be able to clearly understand what blocksize is actually being used when writing to a tape device. The previous behavior of physio(9) was that it would split up any I/O that was too large for the device, or too large to fit into MAXPHYS. This means that if, for instance, the user wrote a 1MB block to a tape device, and MAXPHYS was 128KB, the 1MB write would be split into 8 128K chunks. This would be done without informing the user.
This has suboptimal effects, especially when trying to communicate status to the user. In the event of an error writing to a tape (e.g. physical end of tape) in the middle of a 1MB block that has been split into 8 pieces, the user could have the first two 128K pieces written successfully, the third returned with an error, and the last 5 returned with 0 bytes written. If the user is using a standard write(2) system call, all he will see is the ENOSPC error. He won't have a clue how much actually got written. (With a writev(2) system call, he should be able to determine how much got written in addition to the error.)
The solution is to prevent physio(9) from splitting the I/O. The new cdev flag, SI_NOSPLIT, tells physio that the driver does not want I/O to be split beforehand.
Although the sa(4) driver now enables SI_NOSPLIT by default, that can be disabled by two loader tunables for now. It will not be configurable starting in FreeBSD 11.0. kern.cam.sa.allow_io_split allows the user to configure I/O splitting for all sa(4) driver instances. kern.cam.sa.%d.allow_io_split allows the user to configure I/O splitting for a specific sa(4) instance.
There are also now three sa(4) driver sysctl variables that let the users see some sa(4) driver values. kern.cam.sa.%d.allow_io_split shows whether I/O splitting is turned on. kern.cam.sa.%d.maxio shows the maximum I/O size allowed by kernel configuration parameters (e.g. MAXPHYS, DFLTPHYS) and the capabilities of the controller. kern.cam.sa.%d.cpi_maxio shows the maximum I/O size supported by the controller.
Note that a better long term solution would be to implement support for chaining buffers, so that that MAXPHYS is no longer a limiting factor for I/O size to tape and disk devices. At that point, the controller and the tape drive would become the limiting factors.
sys/conf.h: Add a new cdev flag, SI_NOSPLIT, that allows a driver to tell physio not to split up I/O.
sys/param.h: Bump __FreeBSD_version to 1000049 for the addition of the SI_NOSPLIT cdev flag.
kern_physio.c: If the SI_NOSPLIT flag is set on the cdev, return any I/O that is larger than si_iosize_max or MAXPHYS, has more than one segment, or would have to be split because of misalignment with EFBIG. (File too large).
In the event of an error, print a console message to give the user a clue about what happened.
scsi_sa.c: Set the SI_NOSPLIT cdev flag on the devices created for the sa(4) driver by default.
Add tunables to control whether we allow I/O splitting in physio(9).
Explain in the comments that allowing I/O splitting will be deprecated for the sa(4) driver in FreeBSD 11.0.
Add sysctl variables to display the maximum I/O size we can do (which could be further limited by read block limits) and the maximum I/O size that the controller can do.
Limit our maximum I/O size (recorded in the cdev's si_iosize_max) by MAXPHYS. This isn't strictly necessary, because physio(9) will limit it to MAXPHYS, but it will provide some clarity for the application.
Record the controller's maximum I/O size reported in the Path Inquiry CCB.
sa.4: Document the block size behavior, and explain that the option of allowing physio(9) to split the I/O will disappear in FreeBSD 11.0.
Sponsored by: Spectra Logic
|
#
254389 |
|
15-Aug-2013 |
ken |
Change the way that unmapped I/O capability is advertised.
The previous method was to set the D_UNMAPPED_IO flag in the cdevsw for the driver. The problem with this is that in many cases (e.g. sa(4)) there may be some instances of the driver that can handle unmapped I/O and some that can't. The isp(4) driver can handle unmapped I/O, but the esp(4) driver currently cannot. The cdevsw is shared among all driver instances.
So instead of setting a flag on the cdevsw, set a flag on the cdev. This allows drivers to indicate support for unmapped I/O on a per-instance basis.
sys/conf.h: Remove the D_UNMAPPED_IO cdevsw flag and replace it with an SI_UNMAPPED cdev flag.
kern_physio.c: Look at the cdev SI_UNMAPPED flag to determine whether or not a particular driver can handle unmapped I/O.
geom_dev.c: Set the SI_UNMAPPED flag for all GEOM cdevs. Since GEOM will create a temporary mapping when needed, setting SI_UNMAPPED unconditionally will work.
Remove the D_UNMAPPED_IO flag.
nvme_ns.c: Set the SI_UNMAPPED flag on cdevs created here if NVME_UNMAPPED_BIO_SUPPORT is enabled.
vfs_aio.c: In aio_qphysio(), check the SI_UNMAPPED flag on a cdev instead of the D_UNMAPPED_IO flag on the cdevsw.
sys/param.h: Bump __FreeBSD_version to 1000045 for the switch from setting the D_UNMAPPED_IO flag in the cdevsw to setting SI_UNMAPPED in the cdev.
Reviewed by: kib, jimharris MFC after: 1 week Sponsored by: Spectra Logic
|
#
248792 |
|
27-Mar-2013 |
kib |
Add dev_strategy_csw() function, which is similar to dev_strategy() but assumes that a thread reference was already obtained on the passed device. Use the function from physio(), to avoid two extra dev_mtx lock and unlock. Note that physio() is always used as the cdevsw method, or is called from a cdevsw method, and the caller already owns the reference.
dev_strategy() is left to keep KPI intact, but now it is implemented as a wrapper around dev_strategy_csw().
Do some style cleanup in physio().
Requested and reviewed by: kan (previous version) Sponsored by: The FreeBSD Foundation MFC after: 2 weeks
|
#
248712 |
|
25-Mar-2013 |
kan |
Do not pass unmapped buffers to drivers that cannot handle them
In physio, check if device can handle unmapped IO and pass an appropriately mapped buffer to the driver strategy routine. The only driver in the tree that can handle unmapped buffers is one exposed by GEOM, so mark it as such with the new flag in the driver cdevsw structure.
This fixes insta-panics on hosts, running dconschat, as /dev/fwmem is an example of the driver that makes use of physio routine, but bypasses the g_down thread, where the buffer gets mapped normally.
Discussed with: kib (earlier version)
|
#
242439 |
|
01-Nov-2012 |
alfred |
Provide a device name in the sysctl tree for programs to query the state of crashdump target devices.
This will be used to add a "-l" (ell) flag to dumpon(8) to list the currently configured dumpdev.
Reviewed by: phk
|
#
239791 |
|
28-Aug-2012 |
ed |
Remove unused SI_* flags.
The SI_DEVOPEN, SI_CONSOPEN and SI_CANDELETE flags are not used by any piece of code in the tree.
|
#
233627 |
|
28-Mar-2012 |
mckusick |
Keep track of the mount point associated with a special device to enable the collection of counts of synchronous and asynchronous reads and writes for its associated filesystem. The counts are displayed using `mount -v'.
Ensure that buffers used for paging indicate the vnode from which they are operating so that counts of paging I/O operations from the filesystem are collected.
This checkin only adds the setting of the mount point for the UFS/FFS filesystem, but it would be trivial to add the setting and clearing of the mount point at filesystem mount/unmount time for other filesystems too.
Reviewed by: kib
|
#
231379 |
|
10-Feb-2012 |
ed |
Merge si_name and __si_namebuf.
The si_name pointer always points to the __si_namebuf member inside the same object. Remove it and rename __si_namebuf to si_name.
|
#
226500 |
|
18-Oct-2011 |
ed |
Get rid of D_PSEUDO.
It seems the D_PSEUDO flag was meant to allow make_dev() to return NULL. Nowadays we have a different interface for that; make_dev_p(). There's no need to keep it there.
While there, remove an unneeded D_NEEDMINOR from the gpio driver.
Discussed with: gonzo@ (gpio)
|
#
226477 |
|
17-Oct-2011 |
ed |
Fix whitespace.
|
#
226041 |
|
05-Oct-2011 |
kib |
Export devfs inode number allocator for the kernel consumers.
Reviewed by: jhb MFC after: 2 weeks
|
#
223085 |
|
14-Jun-2011 |
gibbs |
sys/sys/conf.h: sys/kern/kern_conf.c: Add make_dev_physpath_alias(). This interface takes the parent cdev of the alias, an old alias cdev (if any) to replace with the newly created alias, and the physical path string. The alias is visiable as a symlink to the parent, with the same name as the parent, rooted at physpath in devfs.
Note: make_dev_physpath_alias() has hard coded knowledge of the Solaris style prefix convention for physical path data, "id1,". In the future, I expect the convention to change to allow "physical path quality" to be reported in the prefix. For example, a physical path based on NewBus topology would be of "lower quality" than a physical path reported by a device enclosure.
Sponsored by: Spectra Logic Corporation
|
#
222801 |
|
06-Jun-2011 |
marcel |
Fix making kernel dumps from the debugger by creating a command for it. Do not not expect a developer to call doadump(). Calling doadump does not necessarily work when it's declared static. Nor does it necessarily do what was intended in the context of text dumps. The dump command always creates a core dump.
Move printing of error messages from doadump to the dump command, now that we don't have to worry about being called from DDB.
|
#
221397 |
|
03-May-2011 |
ae |
Add make_dev_alias_p() function. It is similar to make_dev_alias(), but it may return an error like make_dev_p() does.
Reviewed by: kib (previous version) MFC after: 2 weeks
|
#
213526 |
|
07-Oct-2010 |
jh |
Check the device name validity on device registration.
A new function prep_devname() sanitizes a device name by removing leading and redundant sequential slashes. The function returns an error for names which already exist or are considered invalid.
A new flag MAKEDEV_CHECKNAME for make_dev_p(9) and make_dev_credf(9) indicates that the caller is prepared to handle an error related to the device name. An invalid name triggers a panic if the flag is not specified.
Document the MAKEDEV_CHECKNAME flag in the make_dev(9) manual page.
Idea from: kib Reviewed by: kib
|
#
210923 |
|
06-Aug-2010 |
kib |
Add new make_dev_p(9) flag MAKEDEV_ETERNAL to inform devfs that created cdev will never be destroyed. Propagate the flag to devfs vnodes as VV_ETERNVALDEV. Use the flags to avoid acquiring devmtx and taking a thread reference on such nodes.
In collaboration with: pho MFC after: 1 month
|
#
209244 |
|
17-Jun-2010 |
ed |
Remove the unit argument from the recently added make_dev_p().
New code that creates character devices shouldn't use device unit numbers, but only si_drv[12] to hold pointer to per-device data. Make this function more future proof by removing the unit number argument.
Discussed with: kib
|
#
209106 |
|
12-Jun-2010 |
kib |
Add another variation of make_dev(9), make_dev_p(9), that is allowed to fail and can return useful error code.
Requested by: jh Reviewed by: imp, jh MFC after: 3 weeks
|
#
207729 |
|
06-May-2010 |
kib |
Add MAKEDEV_NOWAIT flag to make_dev_credf(9), to create a device node in a no-sleep context. If resource allocation cannot be done without sleep, make_dev_credf() fails and returns NULL.
Reviewed by: jh MFC after: 2 weeks
|
#
201223 |
|
29-Dec-2009 |
rnoland |
Update d_mmap() to accept vm_ooffset_t and vm_memattr_t.
This replaces d_mmap() with the d_mmap2() implementation and also changes the type of offset to vm_ooffset_t.
Purge d_mmap2().
All driver modules will need to be rebuilt since D_VERSION is also bumped.
Reviewed by: jhb@ MFC after: Not in this lifetime...
|
#
198706 |
|
31-Oct-2009 |
ed |
Turn unused structure fields of cdevsw into spares.
d_uid, d_gid and d_mode are unused, because permissions are stored in cdevpriv nowadays. d_kind doesn't seem to be used at all. We no longer keep a list of cdevsw's, so d_list is also unused.
uid_t and gid_t are 32 bits, but mode_t is 16 bits, Because of alignment constraints of d_kind, we can safely turn it into three 32-bit integers. d_kind and d_list is equal in size to three pointers.
Discussed with: kib
|
#
196615 |
|
28-Aug-2009 |
jhb |
Extend the device pager to support different memory attributes on different pages in an object. - Add a new variant of d_mmap() currently called d_mmap2() which accepts an additional in/out parameter that is the memory attribute to use for the requested page. - A driver either uses d_mmap() or d_mmap2() for all requests but not both. The current implementation uses a flag in the cdevsw (D_MMAP2) to indicate that the driver provides a d_mmap2() handler instead of d_mmap(). This is done to make the change ABI compatible with existing drivers and MFC'able to 7 and 8.
Submitted by: alc MFC after: 1 month
|
#
194989 |
|
25-Jun-2009 |
jhb |
Remove the d_spare2_t typedef. The d_spare2 field was replaced by d_mmap_single(). I considered adding a new round of padding for 8.0. However, since cdevsw already maintains a version field, new versions can be handled without requiring the need for explicit padding fields.
|
#
193275 |
|
01-Jun-2009 |
jhb |
Add an extension to the character device interface that allows character device drivers to use arbitrary VM objects to satisfy individual mmap() requests. - A new d_mmap_single(cdev, &foff, objsize, &object, prot) callback is added to cdevsw. This function is called for each mmap() request. If it returns ENODEV, then the mmap() request will fall back to using the device's device pager object and d_mmap(). Otherwise, the method can return a VM object to satisfy this entire mmap() request via *object. It can also modify the starting offset into this object via *foff. This allows device drivers to use the file offset as a cookie to identify specific VM objects. - vm_mmap_vnode() has been changed to call vm_mmap_cdev() directly when mapping V_CHR vnodes. This avoids duplicating all the cdev mmap handling code and simplifies some of vm_mmap_vnode(). - D_VERSION has been bumped to D_VERSION_02. Older device drivers using D_VERSION_01 are still supported.
MFC after: 1 month
|
#
188650 |
|
15-Feb-2009 |
imp |
Make dumper_t definition conform more closely to stlye(9). This also avoid keywords in other languages that may have been present before.
Submitted by: Andriy Gapon, jkoshy@
|
#
188099 |
|
03-Feb-2009 |
ed |
Remove NUMCDEVSW, which is unused since RELENG_5.
Discussed with: kib
|
#
187830 |
|
28-Jan-2009 |
ed |
Last step of splitting up minor and unit numbers: remove minor().
Inside the kernel, the minor() function was responsible for obtaining the device minor number of a character device. Because we made device numbers dynamically allocated and independent of the unit number passed to make_dev() a long time ago, it was actually a misnomer. If you really want to obtain the device number, you should use dev2udev().
We already converted all the drivers to use dev2unit() to obtain the device unit number, which is still used by a lot of drivers. I've noticed not a single driver passes NULL to dev2unit(). Even if they would, its behaviour would make little sense. This is why I've removed the NULL check.
Ths commit removes minor(), minor2unit() and unit2minor() from the kernel. Because there was a naming collision with uminor(), we can rename umajor() and uminor() back to major() and minor(). This means that the makedev(3) manual page also applies to kernel space code now.
I suspect umajor() and uminor() isn't used that often in external code, but to make it easier for other parties to port their code, I've increased __FreeBSD_version to 800062.
|
#
185029 |
|
17-Nov-2008 |
pjd |
Update ZFS from version 6 to 13 and bring some FreeBSD-specific changes.
This bring huge amount of changes, I'll enumerate only user-visible changes:
- Delegated Administration
Allows regular users to perform ZFS operations, like file system creation, snapshot creation, etc.
- L2ARC
Level 2 cache for ZFS - allows to use additional disks for cache. Huge performance improvements mostly for random read of mostly static content.
- slog
Allow to use additional disks for ZFS Intent Log to speed up operations like fsync(2).
- vfs.zfs.super_owner
Allows regular users to perform privileged operations on files stored on ZFS file systems owned by him. Very careful with this one.
- chflags(2)
Not all the flags are supported. This still needs work.
- ZFSBoot
Support to boot off of ZFS pool. Not finished, AFAIK.
Submitted by: dfr
- Snapshot properties
- New failure modes
Before if write requested failed, system paniced. Now one can select from one of three failure modes: - panic - panic on write error - wait - wait for disk to reappear - continue - serve read requests if possible, block write requests
- Refquota, refreservation properties
Just quota and reservation properties, but don't count space consumed by children file systems, clones and snapshots.
- Sparse volumes
ZVOLs that don't reserve space in the pool.
- External attributes
Compatible with extattr(2).
- NFSv4-ACLs
Not sure about the status, might not be complete yet.
Submitted by: trasz
- Creation-time properties
- Regression tests for zpool(8) command.
Obtained from: OpenSolaris
|
#
183516 |
|
01-Oct-2008 |
ed |
Remove function prototypes of nonexistent TTY functions.
It turns out I overlooked some function prototypes that were actually TTY related, but were stored in <sys/conf.h> to implement the D_TTY flag. Remove these prototypes now that they don't exist anymore.
|
#
183382 |
|
26-Sep-2008 |
ed |
Rename the `minor' argument of make_dev(9) to `unit'.
To prevent any further confusion about device minor and unit numbers, we'd better just refer to device unit numbers. Many people still think the numbers we show inside devfs have any relation to the numbers passed to make_dev(9), which is not the case.
Discussed with: kib
|
#
181905 |
|
20-Aug-2008 |
ed |
Integrate the new MPSAFE TTY layer to the FreeBSD operating system.
The last half year I've been working on a replacement TTY layer for the FreeBSD kernel. The new TTY layer was designed to improve the following:
- Improved driver model:
The old TTY layer has a driver model that is not abstract enough to make it friendly to use. A good example is the output path, where the device drivers directly access the output buffers. This means that an in-kernel PPP implementation must always convert network buffers into TTY buffers.
If a PPP implementation would be built on top of the new TTY layer (still needs a hooks layer, though), it would allow the PPP implementation to directly hand the data to the TTY driver.
- Improved hotplugging:
With the old TTY layer, it isn't entirely safe to destroy TTY's from the system. This implementation has a two-step destructing design, where the driver first abandons the TTY. After all threads have left the TTY, the TTY layer calls a routine in the driver, which can be used to free resources (unit numbers, etc).
The pts(4) driver also implements this feature, which means posix_openpt() will now return PTY's that are created on the fly.
- Improved performance:
One of the major improvements is the per-TTY mutex, which is expected to improve scalability when compared to the old Giant locking. Another change is the unbuffered copying to userspace, which is both used on TTY device nodes and PTY masters.
Upgrading should be quite straightforward. Unlike previous versions, existing kernel configuration files do not need to be changed, except when they reference device drivers that are listed in UPDATING.
Obtained from: //depot/projects/mpsafetty/... Approved by: philip (ex-mentor) Discussed: on the lists, at BSDCan, at the DevSummit Sponsored by: Snow B.V., the Netherlands dcons(4) fixed by: kan
|
#
179828 |
|
16-Jun-2008 |
kib |
Struct cdev is always the member of the struct cdev_priv. When devfs needed to promote cdev to cdev_priv, the si_priv pointer was followed.
Use member2struct() to calculate address of the wrapping cdev_priv. Rename si_priv to __si_reserved.
Tested by: pho Reviewed by: ed MFC after: 2 weeks
|
#
179757 |
|
12-Jun-2008 |
ed |
Turn dev2unit(), minor(), unit2minor() and minor2unit() into macro's.
Now that we got rid of the minor-to-unit conversion and the constraints on device minor numbers, we can convert the functions that operate on minor and unit numbers to simple macro's. The unit2minor() and minor2unit() macro's are now no-ops.
The ZFS code als defined a macro named `minor'. Change the ZFS code to use umajor() and uminor() here, as it is the correct approach to do this. Also add $FreeBSD$ to keep SVN happy.
Approved by: philip (mentor), pjd
|
#
179726 |
|
11-Jun-2008 |
ed |
Don't enforce unique device minor number policy anymore.
Except for the case where we use the cloner library (clone_create() and friends), there is no reason to enforce a unique device minor number policy. There are various drivers in the source tree that allocate unr pools and such to provide minor numbers, without using them themselves.
Because we still need to support unique device minor numbers for the cloner library, introduce a new flag called D_NEEDMINOR. All cdevsw's that are used in combination with the cloner library should be marked with this flag to make the cloning work.
This means drivers can now freely use si_drv0 to store their own flags and state, making it effectively the same as si_drv1 and si_drv2. We still keep the minor() and dev2unit() routines around to make drivers happy.
The NTFS code also used the minor number in its hash table. We should not do this anymore. If the si_drv0 field would be changed, it would no longer end up in the same list.
Approved by: philip (mentor)
|
#
179413 |
|
29-May-2008 |
ed |
Remove the distinction between device minor and unit numbers.
Even though we got rid of device major numbers some time ago, device drivers still need to provide unique device minor numbers to make_dev(). These numbers are only used inside the kernel. They are not related to device major and minor numbers which are visible in devfs. These are actually based on the inode number of the device.
It would eventually be nice to remove minor numbers entirely, but we don't want to be too agressive here.
Because the 8-15 bits of the device number field (si_drv0) are still reserved for the major number, there is no 1:1 mapping of the device minor and unit numbers. Because this is now unused, remove the restrictions on these numbers.
The MAXMAJOR definition was actually used for two purposes. It was used to convert both the userspace and kernelspace device numbers to their major/minor pair, which is why it is now named UMINORMASK.
minor2unit() and unit2minor() have now become useless. Both minor() and dev2unit() now serve the same purpose. We should eventually remove some of them, at least turning them into macro's. If devfs would become completely minor number unaware, we could consider using si_drv0 directly, just like si_drv1 and si_drv2.
Approved by: philip (mentor)
|
#
179209 |
|
22-May-2008 |
ed |
Add a new group definition to sys/conf.h: GID_TTY.
Our current TTY layer uses a set-uid application called ptchown to change ownership of a PTY slave device. The new TTY layer implements this functionality through a new ioctl().
By accident I discovered Darwin's TTY layer also uses this approach. Because of this, they also have a GID_TTY.
Approved by: philip (mentor)
|
#
179175 |
|
21-May-2008 |
kib |
Implement the per-open file data for the cdev.
The patch does not change the cdevsw KBI. Management of the data is provided by the functions int devfs_set_cdevpriv(void *priv, cdevpriv_dtr_t dtr); int devfs_get_cdevpriv(void **datap); void devfs_clear_cdevpriv(void); All of the functions are supposed to be called from the cdevsw method contexts.
- devfs_set_cdevpriv assigns the priv as private data for the file descriptor which is used to initiate currently performed driver operation. dtr is the function that will be called when either the last refernce to the file goes away, the device is destroyed or devfs_clear_cdevpriv is called. - devfs_get_cdevpriv is the obvious accessor. - devfs_clear_cdevpriv allows to clear the private data for the still open file.
Implementation keeps the driver-supplied pointers in the struct cdev_privdata, that is referenced both from the struct file and struct cdev, and cannot outlive any of the referee.
Man pages will be provided after the KPI stabilizes.
Reviewed by: jhb Useful suggestions from: jeff, antoine Debugging help and tested by: pho MFC after: 1 month
|
#
177301 |
|
17-Mar-2008 |
kib |
Fix two races in the handling of the d_gianttrick for the D_NEEDGIANT drivers.
In the giant_XXX wrappers for the device methods of the D_NEEDGIANT drivers, do not dereference the cdev->si_devsw. It is racing with the destroy_devl() clearing of the si_devsw. Instead, use the dev_refthread() and return ENXIO for the destroyed device. [1]
The check for the D_INIT in the prep_cdevsw() was not synchronized with the call of the fini_cdevsw() in destroy_devl(), that under rapid device creation/destruction may result in the use of uninitialized cdevsw [2]. Change the protocol for the prep_cdevsw(), requiring it to be called under dev_mtx, where the check for D_INIT is done.
Do not free the memory allocated for the gianttrick cdevsw while holding the dev_mtx, put it into the free list to be freed later. Reuse the d_gianttrick pointer to keep the size and layout of the struct cdevsw (requested by phk). Free the memory in the dev_unlock_and_free(), and do all the free after the dev_mtx is dropped (suggested by jhb).
Reported by: bsdimp + many [1], pho [2] Reviewed by: phk, jhb Tested by: pho MFC after: 1 week
|
#
176304 |
|
15-Feb-2008 |
scottl |
Teach the dump and minidump code to respect the maxioszie attribute of the disk; the hard-coded assumption of 64K doesn't work in all cases.
|
#
175768 |
|
28-Jan-2008 |
ru |
Add a wrapper function that bound checks writes to the dump device.
|
#
171181 |
|
03-Jul-2007 |
kib |
Since rev. 1.199 of sys/kern/kern_conf.c, the thread that calls destroy_dev() from d_close() cdev method would self-deadlock. devfs_close() bump device thread reference counter, and destroy_dev() sleeps, waiting for si_threadcount to reach zero for cdev without d_purge method.
destroy_dev_sched() could be used instead from d_close(), to schedule execution of destroy_dev() in another context. The destroy_dev_sched_drain() function can be used to drain the scheduled calls to destroy_dev_sched(). Similarly, drain_dev_clone_events() drains the events clone to make sure no lingering devices are left after dev_clone event handler deregistered.
make_dev_credf(MAKEDEV_REF) function should be used from dev_clone event handlers instead of make_dev()/make_dev_cred() to ensure that created device has reference counter bumped before cdev mutex is dropped inside make_dev().
Reviewed by: tegge (early versions), njl (programming interface) Debugging help and testing by: Peter Holm Approved by: re (kensmith)
|
#
170152 |
|
31-May-2007 |
kib |
Revert UF_OPENING workaround for CURRENT. Change the VOP_OPEN(), vn_open() vnode operation and d_fdopen() cdev operation argument from being file descriptor index into the pointer to struct file.
Proposed and reviewed by: jhb Reviewed by: daichi (unionfs) Approved by: re (kensmith)
|
#
166438 |
|
02-Feb-2007 |
bms |
Use int instead of u_int for the 'extra' argument to the clone_create() KPI. This fixes a signedness bug in unit number comparisons.
Submitted by: imp, Landon Fuller PR: kern/105228 MFC after: 2 weeks
|
#
163529 |
|
20-Oct-2006 |
kib |
Fix the race between devfs_fp_check and devfs_reclaim. Derefence the vnode' v_rdev and increment the dev threadcount , as well as clear it (in devfs_reclaim) under the dev_lock().
Reviewed by: tegge Approved by: pjd (mentor)
|
#
158499 |
|
12-May-2006 |
jmg |
drop D_MEMDISK, not used in the tree...
|
#
150342 |
|
19-Sep-2005 |
phk |
Rewamp DEVFS internals pretty severely [1].
Give DEVFS a proper inode called struct cdev_priv. It is important to keep in mind that this "inode" is shared between all DEVFS mountpoints, therefore it is protected by the global device mutex.
Link the cdev_priv's into a list, protected by the global device mutex. Keep track of each cdev_priv's state with a flag bit and of references from mountpoints with a dedicated usecount.
Reap the benefits of much improved kernel memory allocator and the generally better defined device driver APIs to get rid of the tables of pointers + serial numbers, their overflow tables, the atomics to muck about in them and all the trouble that resulted in.
This makes RAM the only limit on how many devices we can have.
The cdev_priv is actually a super struct containing the normal cdev as the "public" part, and therefore allocation and freeing has moved to devfs_devs.c from kern_conf.c.
The overall responsibility is (to be) split such that kern/kern_conf.c is the stuff that deals with drivers and struct cdev and fs/devfs handles filesystems and struct cdev_priv and their private liason exposed only in devfs_int.h.
Move the inode number from cdev to cdev_priv and allocate inode numbers properly with unr. Local dirents in the mountpoints (directories, symlinks) allocate inodes from the same pool to guarantee against overlaps.
Various other fields are going to migrate from cdev to cdev_priv in the future in order to hide them. A few fields may migrate from devfs_dirent to cdev_priv as well.
Protect the DEVFS mountpoint with an sx lock instead of lockmgr, this lock also protects the directory tree of the mountpoint.
Give each mountpoint a unique integer index, allocated with unr. Use it into an array of devfs_dirent pointers in each cdev_priv. Initially the array points to a single element also inside cdev_priv, but as more devfs instances are mounted, the array is extended with malloc(9) as necessary when the filesystem populates its directory tree.
Retire the cdev alias lists, the cdev_priv now know about all the relevant devfs_dirents (and their vnodes) and devfs_revoke() will pick them up from there. We still spelunk into other mountpoints and fondle their data without 100% good locking. It may make better sense to vector the revoke event into the tty code and there do a destroy_dev/make_dev on the tty's devices, but that's for further study.
Lots of shuffling of stuff and churn of bits for no good reason[2].
XXX: There is still nothing preventing the dev_clone EVENTHANDLER from being invoked at the same time in two devfs mountpoints. It is not obvious what the best course of action is here.
XXX: comment out an if statement that lost its body, until I can find out what should go there so it doesn't do damage in the meantime.
XXX: Leave in a few extra malloc types and KASSERTS to help track down any remaining issues.
Much testing provided by: Kris Much confusion caused by (races in): md(4)
[1] You are not supposed to understand anything past this point.
[2] This line should simplify life for the peanut gallery.
|
#
150148 |
|
15-Sep-2005 |
phk |
Retire unused dev_named() function.
|
#
149177 |
|
17-Aug-2005 |
phk |
Handle device drivers with D_NEEDGIANT in a way which does not penalize the 'good' drivers: Allocate a shadow cdevsw and populate it with wrapper functions which grab Giant
|
#
149144 |
|
16-Aug-2005 |
phk |
Create a new internal .h file to communicate very private stuff from kern_conf.c to devfs.
For now just two prototypes, more to come.
|
#
148868 |
|
08-Aug-2005 |
rwatson |
Merge the dev_clone and dev_clone_cred event handlers into a single event handler, dev_clone, which accepts a credential argument. Implementors of the event can ignore it if they're not interested, and most do. This avoids having multiple event handler types and fall-back/precedence logic in devfs.
This changes the kernel API for /dev cloning, and may affect third party packages containg cloning kernel modules.
Requested by: phk MFC after: 3 days
|
#
147982 |
|
14-Jul-2005 |
rwatson |
When devfs cloning takes place, provide access to the credential of the process that caused the clone event to take place for the device driver creating the device. This allows cloned device drivers to adapt the device node based on security aspects of the process, such as the uid, gid, and MAC label.
- Add a cred reference to struct cdev, so that when a device node is instantiated as a vnode, the cloning credential can be exposed to MAC.
- Add make_dev_cred(), a version of make_dev() that additionally accepts the credential to stick in the struct cdev. Implement it and make_dev() in terms of a back-end make_dev_credv().
- Add a new event handler, dev_clone_cred, which can be registered to receive the credential instead of dev_clone, if desired.
- Modify the MAC entry point mac_create_devfs_device() to accept an optional credential pointer (may be NULL), so that MAC policies can inspect and act on the label or other elements of the credential when initializing the skeleton device protections.
- Modify tty_pty.c to register clone_dev_cred and invoke make_dev_cred(), so that the pty clone credential is exposed to the MAC Framework.
While currently primarily focussed on MAC policies, this change is also a prerequisite for changes to allow ptys to be instantiated with the UID of the process looking up the pty. This requires further changes to the pty driver -- in particular, to immediately recycle pty nodes on last close so that the credential-related state can be recreated on next lookup.
Submitted by: Andrew Reisse <andrew.reisse@sparta.com> Obtained from: TrustedBSD Project Sponsored by: SPAWAR, SPARTA MFC after: 1 week MFC note: Merge to 6.x, but not 5.x for ABI reasons
|
#
144385 |
|
31-Mar-2005 |
phk |
cdev (still) needs per instance uid/gid/mode
Add unlocked version of dev_ref()
Clean up various stuff in sys/conf.h
|
#
144384 |
|
31-Mar-2005 |
phk |
Rename dev_ref() to dev_refl()
|
#
144281 |
|
29-Mar-2005 |
phk |
Remove the global cdev hash and use the cdevsw list instead.
Don't remove the now unused element from cdev yet, wait until we have a better reason to bump the version.
|
#
143799 |
|
18-Mar-2005 |
phk |
makebdev() is long gone.
|
#
143748 |
|
17-Mar-2005 |
phk |
Kill MAJOR_AUTO
|
#
143746 |
|
17-Mar-2005 |
phk |
Prepare for the final onslaught on devices:
Move uid/gid/mode from cdev to cdevsw.
Add kind field to use for devd(8) later.
Bump both D_VERSION and __FreeBSD_version
|
#
143638 |
|
15-Mar-2005 |
phk |
Polish.
|
#
143631 |
|
15-Mar-2005 |
phk |
Rename cdev->si_udev to cdev->si_drv0 to reflect the new nature of the field.
|
#
143628 |
|
15-Mar-2005 |
phk |
Clean up forward struct decls.
|
#
143622 |
|
15-Mar-2005 |
phk |
Move devtoname() prototype to systm.h to reduce #include pollution, it is (or should be) used in many printf() calls.
|
#
143282 |
|
08-Mar-2005 |
phk |
Fix signedness of minor2unit().
|
#
142242 |
|
22-Feb-2005 |
phk |
Reap more benefits from DEVFS:
List devfs_dirents rather than vnodes off their shared struct cdev, this saves a pointer field in the vnode at the expense of a field in the devfs_dirent. There are often 100 times more vnodes so this is bargain. In addition it makes it harder for people to try to do stypid things like "finding the vnode from cdev".
Since DEVFS handles all VCHR nodes now, we can do the vnode related cleanup in devfs_reclaim() instead of in dev_rel() and vgonel(). Similarly, we can do the struct cdev related cleanup in dev_rel() instead of devfs_reclaim().
rename idestroy_dev() to destroy_devl() for consistency.
Add LIST_ENTRY de_alias to struct devfs_dirent. Remove v_specnext from struct vnode. Change si_hlist to si_alist in struct cdev. String new devfs vnodes' devfs_dirent on si_alist when we create them and take them off in devfs_reclaim().
Fix devfs_revoke() accordingly. Also don't clear fields devfs_reclaim() will clear when called from vgone();
Let devfs_reclaim() call dev_rel() instead of vgonel().
Move the usecount tracking from dev_rel() to devfs_reclaim(), and let dev_rel() take a struct cdev argument instead of vnode.
Destroy SI_CHEAPCLONE devices in dev_rel() (instead of devfs_reclaim()) when they are no longer used. (This should maybe happen in devfs_close() instead.)
|
#
140963 |
|
29-Jan-2005 |
phk |
Add MAXMINOR #define, we should have had this long time ago.
Add minor2unit() in addition to dev2unit() and unit2minor().
If it wasn't such a hazzle we should redefine minor numbers in the kernel without the gap for the major number, but it's not worth the bother (yet).
|
#
137484 |
|
09-Nov-2004 |
phk |
Make getdiskbyname() static to vfs_mount.c.
Eliminate use of vn_todev() while here.
|
#
137051 |
|
29-Oct-2004 |
phk |
Remove si_mountpoint and si_bsize_phys from cdev.
|
#
137029 |
|
29-Oct-2004 |
phk |
Give dev_strategy() an explict cdev argument in preparation for removing buf->b-dev.
Put a bio between the buf passed to dev_strategy() and the device driver strategy routine in order to not clobber fields in the buf.
Assert copyright on vfs_bio.c and update copyright message to canonical text. There is no legal difference between John Dysons two-clause abbreviated BSD license and the canonical text.
|
#
136964 |
|
26-Oct-2004 |
phk |
Remove unused si_bsize_best field from struct cdev.
|
#
136963 |
|
26-Oct-2004 |
phk |
Degeneralize the per cdev copyonwrite callback. The only possible value is ffs_copyonwrite() and the only place it can be called from is FFS which would never want to call another filesystems copyonwrite method, should one exist, so there is no reason why anything generic should know about this.
|
#
136947 |
|
25-Oct-2004 |
phk |
Get rid of the magic "stash" of cdev structures, we no longer call make_dev() before malloc works.
|
#
136940 |
|
25-Oct-2004 |
phk |
Retire si_stripesize and si_stripeoffset they will not be needed in cdev in the future.
|
#
136402 |
|
11-Oct-2004 |
peter |
Belatedly catch up with the dev_t/cdev changes from a few months back. Extract the struct cdev pointer and the tty device from inside rather than incorrectly casting the 'struct cdev *' pointer to a 'dev_t' int. Not that this was particularly important since it was only used for reading vmcore files.
|
#
136014 |
|
01-Oct-2004 |
phk |
Fix a LOR relating to freeing cdevs.
|
#
135843 |
|
27-Sep-2004 |
phk |
Add cdevsw->d_purge() support.
This device method shall wake up any threads sleeping in the device driver and make the depart the drivers code for good.
|
#
135726 |
|
24-Sep-2004 |
phk |
Remove the cdevsw() function which is now unused.
|
#
135717 |
|
24-Sep-2004 |
phk |
Remove SI_ISDISK, I found a better solution.
|
#
135704 |
|
24-Sep-2004 |
phk |
Introduce dev_re[lf]thread() functions.
dev_refthread() will return the cdevsw pointer or NULL. If the return value is non-NULL a threadcount is held which much be released with dev_relthread(). If the returned cdevsw is NULL no threadcount is held on the device.
|
#
135617 |
|
23-Sep-2004 |
phk |
Eliminate DEV_STRATEGY() macro: call dev_strategy() directly.
Make dev_strategy() handle errors and departing devices properly.
|
#
135600 |
|
23-Sep-2004 |
phk |
Do not refcount the cdevsw, but rather maintain a cdev->si_threadcount of the number of threads which are inside whatever is behind the cdevsw for this particular cdev.
Make the device mutex visible through dev_lock() and dev_unlock(). We may want finer granularity later.
Replace spechash_mtx use with dev_lock()/dev_unlock().
|
#
135368 |
|
17-Sep-2004 |
phk |
Add various stuff to struct tty and surounding areas in preparation for getting stuff from P4::phk_tty into -current.
|
#
135138 |
|
13-Sep-2004 |
phk |
Create struct snapdata which contains the snapshot fields from cdev and the previously malloc'ed snapshot lock.
Malloc struct snapdata instead of just the lock.
Replace snapshot fields in cdev with pointer to snapdata (saves 16 bytes).
While here, give the private readblock() function a vnode argument in preparation for moving UFS to access GEOM directly.
|
#
135070 |
|
11-Sep-2004 |
phk |
Add a threadcount field which we will need later for device removal cleanup. Adding it now and MT5'ing will preserve binary compatibility if this code is later MFC'ed.
MT5 candidate.
|
#
135047 |
|
10-Sep-2004 |
phk |
Add two spare elements for planned but not yet implemented stuff related to device driver unloading. Adding these two now and MT5'ing them will allow us to preserve binary compatibility on RELENG_5 when these facilities are MFC'ed.
MT5 Candiate.
|
#
131998 |
|
11-Jul-2004 |
phk |
Remove the last bits of SPECHASH.
|
#
130640 |
|
17-Jun-2004 |
phk |
Second half of the dev_t cleanup.
The big lines are: NODEV -> NULL NOUDEV -> NODEV udev_t -> dev_t udev2dev() -> findcdev()
Various minor adjustments including handling of userland access to kernel space struct cdev etc.
|
#
130585 |
|
16-Jun-2004 |
phk |
Do the dreaded s/dev_t/struct cdev */ Bump __FreeBSD_version accordingly.
|
#
130075 |
|
04-Jun-2004 |
phk |
Move the line discipline related stuff out of <sys/conf.h> and into <sys/linedisc.h> (repocopied).
Temporarily use a nested include from <sys/tty.h> to get <sys/linedisc.h> into relevant source files.
Introduce a set of inline functions named ttyld_...() to invoke linedisc methods instead of groping around in the linesw array.
|
#
129943 |
|
01-Jun-2004 |
phk |
Introduce a ttyioctl() cdevsw default function.
|
#
129938 |
|
01-Jun-2004 |
phk |
shift the four cdevsw functions for ttys to sys/conf.h and prototype them with the correct typedef.
|
#
127976 |
|
07-Apr-2004 |
imp |
Remove advertising clause from University of California Regent's license, per letter dated July 22, 1999.
Approved by: core
|
#
126845 |
|
11-Mar-2004 |
phk |
Add clone_setup() function rather than rely on lazy initialization.
Requested by: rwatson
|
#
126082 |
|
21-Feb-2004 |
phk |
Device megapatch 6/6:
This is what we came here for: Hang dev_t's from their cdevsw, refcount cdevsw and dev_t and generally keep track of things a lot better than we used to:
Hold a cdevsw reference around all entrances into the device driver, this will be necessary to safely determine when we can unload driver code.
Hold a dev_t reference while the device is open.
KASSERT that we do not enter the driver on a non-referenced dev_t.
Remove old D_NAG code, anonymous dev_t's are not a problem now.
When destroy_dev() is called on a referenced dev_t, move it to dead_cdevsw's list. When the refcount drops, free it.
Check that cdevsw->d_version is correct. If not, set all methods to the dead_*() methods to prevent entrance into driver. Print warning on console to this effect. The device driver may still explode if it is also incompatible with newbus, but in that case we probably didn't get this far in the first place.
|
#
126080 |
|
21-Feb-2004 |
phk |
Device megapatch 4/6:
Introduce d_version field in struct cdevsw, this must always be initialized to D_VERSION.
Flip sense of D_NOGIANT flag to D_NEEDGIANT, this involves removing four D_NOGIANT flags and adding 145 D_NEEDGIANT flags.
|
#
126077 |
|
21-Feb-2004 |
phk |
Device megapatch 2/6:
This commit adds a couple of functions for pseudodrivers to use for implementing cloning in a manner we will be able to lock down (shortly).
Basically what happens is that pseudo drivers get a way to ask for "give me the dev_t with this unit number" or alternatively "give me a dev_t with the lowest guaranteed free unit number" (there is unfortunately a lot of non-POLA in the exact numeric value of this number, just live with it for now)
Managing the unit number space this way removes the need to use rman(9) to do so in the drivers this greatly simplifies the code in the drivers because even using rman(9) they still needed to manage their dev_t's anyway.
I have taken the if_tun, if_tap, snp and nmdm drivers through the mill, partly because they (ab)used makedev(), but mostly because together they represent three different problems for device-cloning:
if_tun and snp is the plain case: just give me a device.
if_tap has two kinds of devices, with a flag for device type.
nmdm has paired devices (ala pty) can you can clone either of them.
|
#
121188 |
|
18-Oct-2003 |
phk |
The size and contents of the DEV_STRATEGY() macro has progressed to the point where it being a macro is no longer sensible, and it will only be more so in days to come.
BIO_STRATEGY() is now only used from DEV_STRATEGY() and should not be used directly anymore.
Put the contents of both in the new function dev_strategy() and make DEV_STRATEGY() call that function.
In addition, this allows us to make the rather magic bufdonebio() helper function static.
This alse saves hunderedandsome bytes of code in a typical kernel.
|
#
121121 |
|
15-Oct-2003 |
phk |
Introduce a new optional memberfunction for cdevsw, fdopen() which passes the fdidx from VOP_OPEN down.
This is for all I know the final API for this functionality, but the locking semantics for messing with the filedescriptor from the device driver are not settled at this time.
|
#
120560 |
|
28-Sep-2003 |
phk |
Retire revoke_and_destroy_dev() with extreme prejudice.
|
#
120528 |
|
27-Sep-2003 |
phk |
Add an explanation why MAJOR_AUTO should not be specified explicitly.
|
#
120514 |
|
27-Sep-2003 |
phk |
Introduce no_poll() default method for device drivers. Have it do exactly the same as vop_nopoll() for consistency and put a comment in the two pointing at each other.
Retire seltrue() in favour of no_poll().
Create private default functions in kern_conf.c instead of public ones.
Change default strategy to return the bio with ENODEV instead of doing nothing which would lead the bio stranded.
Retire public nullopen() and nullclose() as well as the entire band of public no{read,write,ioctl,mmap,kqfilter,strategy,poll,dump} funtions, they are the default actions now.
Move the final two trivial functions from subr_xxx.c to kern_conf.c and retire the now empty subr_xxx.c
|
#
120508 |
|
27-Sep-2003 |
phk |
noopen() and noclose() is now no longer used.
|
#
120507 |
|
27-Sep-2003 |
phk |
nopsize is no longer used.
|
#
112569 |
|
24-Mar-2003 |
jake |
- Add vm_paddr_t, a physical address type. This is required for systems where physical addresses larger than virtual addresses, such as i386s with PAE. - Use this to represent physical addresses in the MI vm system and in the i386 pmap code. This also changes the paddr parameter to d_mmap_t. - Fix printf formats to handle physical addresses >4G in the i386 memory detection code, and due to kvtop returning vm_paddr_t instead of u_long.
Note that this is a name change only; vm_paddr_t is still the same as vm_offset_t on all currently supported platforms.
Sponsored by: DARPA, Network Associates Laboratories Discussed with: re, phk (cdevsw change)
|
#
112036 |
|
09-Mar-2003 |
phk |
Define MAJOR_AUTO as zero, which means that leaving out an initialization of d_maj means "allocate major number automatically".
Keep the definition of MAJOR_AUTO to make life easier for cross-branch source maintainers.
|
#
111822 |
|
03-Mar-2003 |
phk |
Rearrange the members of struct cdevsw to be absolutely sure to catch any initializations which are not done right.
|
#
111821 |
|
03-Mar-2003 |
phk |
Make nokqfilter() return the correct return value.
Ditch the D_KQFILTER flag which was used to prevent calling NULL pointers.
|
#
111736 |
|
02-Mar-2003 |
phk |
NO_GEOM cleanup:
Remove (actually: Obscurely rename) cdevsw->d_psize() to prevent future use.
|
#
111730 |
|
02-Mar-2003 |
phk |
NODEVFS cleanup:
Replace devfs_{create,destroy} hooks with direct function calls.
|
#
111668 |
|
28-Feb-2003 |
phk |
NO_GEOM cleanup:
Retire the "dev_t" centric version of the disk mini-layer. Remove now unneeded linkage field in dev_t and struct disk.
|
#
111622 |
|
27-Feb-2003 |
phk |
Add support for allocating a device driver major number on demand.
To do this, initialize the d_maj member of the cdevsw to MAJOR_AUTO. When the cdevsw is first passed to make_dev() a free major number will be assigned.
Until we have a bit more experience with this a printf will announce this fact.
Major numbers are not reclaimed, so loading/unloading the same device driver which uses MAJOR_AUTO will eventually deplete the pool of free major numbers and the system will panic when it can not allocate one. Still undecided who to invonvenience with the solution to this.
|
#
111600 |
|
27-Feb-2003 |
phk |
NODEVFS cleanup:
Remove cdevsw_add() and cdevsw_remove(), they served us well for a long time. Bump __FreeBSD_version to 500104 to mark this.
|
#
111462 |
|
25-Feb-2003 |
mux |
Cleanup of the d_mmap_t interface.
- Get rid of the useless atop() / pmap_phys_address() detour. The device mmap handlers must now give back the physical address without atop()'ing it. - Don't borrow the physical address of the mapping in the returned int. Now we properly pass a vm_offset_t * and expect it to be filled by the mmap handler when the mapping was successful. The mmap handler must now return 0 when successful, any other value is considered as an error. Previously, returning -1 was the only way to fail. This change thus accidentally fixes some devices which were bogusly returning errno constants which would have been considered as addresses by the device pager. - Garbage collect the poorly named pmap_phys_address() now that it's no longer used. - Convert all the d_mmap_t consumers to the new API.
I'm still not sure wheter we need a __FreeBSD_version bump for this, since and we didn't guarantee API/ABI stability until 5.1-RELEASE.
Discussed with: alc, phk, jake Reviewed by: peter Compile-tested on: LINT (i386), GENERIC (alpha and sparc64) Runtime-tested on: i386
|
#
111220 |
|
21-Feb-2003 |
phk |
NO_GEOM cleanup:
Retire the "d_dump_t" and use the "dumper_t" type instead.
Dumper_t takes a void * as first arg which is more general than the dev_t taken by d_dump_t. (Remember: we could have net-dumpers if somebody wrote us one!)
Define the convention for GEOM controlled disk devices to be that the first argument to the dumper function is the struct disk pointer.
Change device drivers accordingly.
|
#
110710 |
|
11-Feb-2003 |
phk |
Better names for struct disk elements: d_maxsize, d_stripeoffset and d_stripesisze;
Introduce si_stripesize and si_stripeoffset in struct cdev so we can make the visible to clustering code.
Add stripesize and stripeoffset to providers.
DTRT with stripesize and stripeoffset in various places in GEOM.
|
#
110701 |
|
11-Feb-2003 |
phk |
Retire D_CANFREE flag.
|
#
110689 |
|
11-Feb-2003 |
phk |
Introduce SI_CANDELETE flag on dev_t.
|
#
110317 |
|
04-Feb-2003 |
phk |
Pave the road to removing the fixed size limit on device nodes:
Change the si_name of dev_t's to be a char * and put a private buffer for holding the name at then end of the struct.
Initialize si_name to point to the private buffer.
Put a KASSERT in geom_disk to prevent overrun on the fake dev_t we still have to generate for the disk_drivers.
|
#
109652 |
|
21-Jan-2003 |
peter |
Remove OBE prototype for iszerodev() - it was replaced by the D_MMAP_ANON device switch flag.
|
#
109526 |
|
19-Jan-2003 |
phk |
Originally when DEVFS was added, a global variable "devfs_present" was used to control code which were conditional on DEVFS' precense since this avoided the need for large-scale source pollution with #include "opt_geom.h"
Now that we approach making DEVFS standard, replace these tests with an #ifdef to facilitate mechanical removal once DEVFS becomes non-optional.
No functional change by this commit.
|
#
108602 |
|
03-Jan-2003 |
phk |
Make struct swblock kernel only, to make vm/swap_pager.h userland includable. Move struct swdevt from sys/conf.h to the more appropriate vm/swap_pager.h. Adjust #include use in libkvm and pstat(8) to match.
|
#
108586 |
|
03-Jan-2003 |
phk |
Remove unused second argument from DEV_STRATEGY().
|
#
108584 |
|
03-Jan-2003 |
phk |
Remove unused second argument from BIO_STRATEGY()
|
#
107913 |
|
15-Dec-2002 |
dillon |
This is David Schultz's swapoff code which I am finally able to commit. This should be considered highly experimental for the moment.
Submitted by: David Schultz <dschultz@uclink.Berkeley.EDU> MFC after: 3 weeks
|
#
107848 |
|
13-Dec-2002 |
mckusick |
Only the most recent snapshot contains the complete list of blocks that were copied in all of the earlier snapshots, thus its precomputed list must be used in the copyonwrite test. Using incomplete lists may lead to deadlock. Also do not include the blocks used for the indirect pointers in the indirect pointers as this may lead to inconsistent snapshots.
Sponsored by: DARPA & NAI Labs. Approved by: re
|
#
105894 |
|
24-Oct-2002 |
phk |
Fix the spechash lock order reversal by keeping an updated sum of v_usecount in the dev_t which vcount() can return without locking any vnodes.
Seen by: jhb
|
#
104048 |
|
27-Sep-2002 |
phk |
Add a D_NOGIANT flag which can be set in a struct cdevsw to indicate that a particular device driver is not Giant-challenged.
SPECFS will DROP_GIANT() ... PICKUP_GIANT() around calls to the driver in question.
Notice that the interrupt path is not affected by this!
This does _NOT_ work for drivers accessed through cdevsw->d_strategy() ie drivers for disk(-like), some tapes, maybe others.
|
#
104043 |
|
27-Sep-2002 |
phk |
Rename struct specinfo to the more appropriate struct cdev.
Agreed on: jake, rwatson, jhb
|
#
95196 |
|
21-Apr-2002 |
markm |
Used protected names (_foo) for parameter names. This helps clean up a boatload of lint warnings.
|
#
95035 |
|
19-Apr-2002 |
phk |
Add a SI_DUMPDEV flag for devices.
Sponsored by: DARPA & NAI Labs.
|
#
93496 |
|
31-Mar-2002 |
phk |
Here follows the new kernel dumping infrastructure.
Caveats:
The new savecore program is not complete in the sense that it emulates enough of the old savecores features to do the job, but implements none of the options yet.
I would appreciate if a userland hacker could help me out getting savecore to do what we want it to do from a users point of view, compression, email-notification, space reservation etc etc. (send me email if you are interested).
Currently, savecore will scan all devices marked as "swap" or "dump" in /etc/fstab _or_ any devices specified on the command-line.
All architectures but i386 lack an implementation of dumpsys(), but looking at the i386 version it should be trivial for anybody familiar with the platform(s) to provide this function.
Documentation is quite sparse at this time, more to come.
Details:
ATA and SCSI drivers should work as the dump formatting code has been removed. The IDA, TWE and AAC have not yet been converted.
Dumpon now opens the device and uses ioctl(DIOCGKERNELDUMP) to set the device as dumpdev. To implement the "off" argument, /dev/null is used as the device.
Savecore will fail if handed any options since they are not (yet) implemented. All devices marked "dump" or "swap" in /etc/fstab will be scanned and dumps found will be saved to diskfiles named from the MD5 hash of the header record. The header record is dumped in readable format in the .info file. The kernel is not saved. Only complete dumps will be saved.
All maintainer rights for this code are disclaimed: feel free to improve and extend.
Sponsored by: DARPA, NAI Labs
|
#
93451 |
|
30-Mar-2002 |
phk |
Move the "dumping" variable from systm.h to conf.h.
|
#
93008 |
|
23-Mar-2002 |
bde |
Fixed some style bugs in the removal of __P(()). The main ones were not removing tabs before "__P((", and not outdenting continuation lines to preserve non-KNF lining up of code with parentheses. Switch to KNF formatting and/or rewrap the whole prototype in some cases.
|
#
92719 |
|
19-Mar-2002 |
alfred |
Remove __P
|
#
91998 |
|
10-Mar-2002 |
phk |
Make the proposed name arg to dev_stdclone() const.
|
#
90736 |
|
16-Feb-2002 |
green |
Add revoke_and_destroy_dev(), to be used by devices which decide when they choose to destroy themselves without regard to whether or not they are open.
|
#
86893 |
|
25-Nov-2001 |
dd |
DEVFS has resurfaced.
|
#
86263 |
|
11-Nov-2001 |
imp |
It turns out my reasons for using a few d_thread_t's were bogus. Revert them back to struct thread *.
Submitteed by: bde
|
#
86254 |
|
11-Nov-2001 |
imp |
add note about why I used d_thread_t in the prototypes.
|
#
85373 |
|
23-Oct-2001 |
jlemon |
Implement multiple low-level console support.
|
#
85076 |
|
17-Oct-2001 |
jlemon |
Add dev_named(dev, name), which is similar in spirit to devtoname(). This function returns success if the device is known by either 'name' or any of its aliases.
|
#
84324 |
|
01-Oct-2001 |
imp |
Add d_thread_t. This is a typedef for struct thread in -current and will be one for struct proc in stable. those drivers needing to have cross version portability should use d_thread_t instead of inventing their own means. Non-drivers, and drivers that either only run on -current or must look under the covers of the struct proc/thread should must not use this.
As noted in arch@, this minorly violates style(9), but the sys/conf.h devsw already violates this and all I'm doing is extending the violation to ease the burdon on device driver writers. It was judged that this minor violation, which doesn't impact userland or those people not using it, was preferable to the alternatives (eg #define proc thread). C does not allow a way to rename or alias structs easily, so we fall back to using a typedef.
Bump FreeBSD_version to reflect this change (porters guide to be done in a separate commit).
|
#
83366 |
|
12-Sep-2001 |
julian |
KSE Milestone 2 Note ALL MODULES MUST BE RECOMPILED make the kernel aware that there are smaller units of scheduling than the process. (but only allow one thread per process at this time). This is functionally equivalent to teh previousl -current except that there is a thread associated with each process.
Sorry john! (your next MFC will be a doosie!)
Reviewed by: peter@freebsd.org, dillon@freebsd.org
X-MFC after: ha ha ha ha
|
#
81068 |
|
02-Aug-2001 |
imp |
Make the fmt arguments to make_dev and make_dev_alias const char *.
Approved on IRC as long as it didn't cause a large number of warnings by: phk
MFC After: 700 hours
|
#
77735 |
|
04-Jun-2001 |
dd |
Unstaticize l_nullioctl; it is needed elsewhere (like in tty_snoop.c).
Suggested by: bde
|
#
77384 |
|
29-May-2001 |
phk |
Remove unused d_parms_t typedef
Spotted by: grog
|
#
77215 |
|
26-May-2001 |
phk |
Create a general facility for making dev_t's depend on another dev_t. The dev_depends(dev_t, dev_t) function is for tying them to each other.
When destroy_dev() is called on a dev_t, all dev_t's depending on it will also be destroyed (depth first order).
Rewrite the make_dev_alias() to use this dependency facility.
kern/subr_disk.c: Make the disk mini-layer use dependencies to make sure all relevant dev_t's are removed when the disk disappears.
Make the disk mini-layer precreate some magic sub devices which the disk/slice/label code expects to be there.
kern/subr_disklabel.c: Remove some now unneeded variables.
kern/subr_diskmbr.c: Remove some ancient, commented out code.
kern/subr_diskslice.c: Minor cleanup. Use name from dev_t instead of dsname()
|
#
77123 |
|
24-May-2001 |
phk |
Restrict even further what parts of <sys/conf.h> can be seen from userland.
|
#
76166 |
|
01-May-2001 |
markm |
Undo part of the tangle of having sys/lock.h and sys/mutex.h included in other "system" header files.
Also help the deprecation of lockmgr.h by making it a sub-include of sys/lock.h and removing sys/lockmgr.h form kernel .c files.
Sort sys/*.h includes where possible in affected files.
OK'ed by: bde (with reservations)
|
#
74810 |
|
26-Mar-2001 |
phk |
Send the remains (such as I have located) of "block major numbers" to the bit-bucket.
|
#
73942 |
|
07-Mar-2001 |
mckusick |
Fixes to track snapshot copy-on-write checking in the specinfo structure rather than assuming that the device vnode would reside in the FFS filesystem (which is obviously a broken assumption with the device filesystem).
|
#
72949 |
|
23-Feb-2001 |
rwatson |
Introduce per-swap area accounting in the VM system, and export this information via the vm.nswapdev sysctl (number of swap areas) and vm.swapdevX nodes (where X is the device), which contain the MIBs dev, blocks, used, and flags. These changes are required to allow top and other userland swap-monitoring utilities to run without setgid kmem.
Submitted by: Thomas Moestl <tmoestl@gmx.net> Reviewed by: freebsd-audit
|
#
72521 |
|
15-Feb-2001 |
jlemon |
Extend kqueue down to the device layer.
Backwards compatible approach suggested by: peter
|
#
68063 |
|
31-Oct-2000 |
phk |
Deprecate devsw->d_bmaj entirely.
This removes support for booting current kernels with very old bootblocks.
Device driver writers: Please remove initializations for the d_bmaj field in your cdevsw{}.
|
#
66886 |
|
09-Oct-2000 |
eivind |
Blow away the v_specmountpoint define, replacing it with what it was defined as (rdev->si_mountpoint)
|
#
66067 |
|
19-Sep-2000 |
phk |
Rename lminor() to dev2unit(). This function gives a linear unit number which hides the 'hole' in the minor bits.
Introduce unit2minor() to do the reverse operation.
Fix some some make_dev() calls which didn't use UID_* or GID_* macros.
Kill the v_hashchain alias macro, it hides the real relationship.
Introduce experimental SI_CHEAPCLONE flag set it on cloned bpfs.
|
#
65954 |
|
16-Sep-2000 |
phk |
Move SPECNAMELEN from <sys/conf.h> to <sys/param.h>
|
#
65746 |
|
11-Sep-2000 |
phk |
Prevent multiple make_dev() calls on the same dev_t and similar bogosities. A couple of new warnings may be emitted during boot if drivers DTWT.
Tested by: George Cox <gjvc@gjvc.com>
|
#
65374 |
|
02-Sep-2000 |
phk |
Avoid the modules madness I inadvertently introduced by making the cloning infrastructure standard in kern_conf. Modules are now the same with or without devfs support.
If you need to detect if devfs is present, in modules or elsewhere, check the integer variable "devfs_present".
This happily removes an ugly hack from kern/vfs_conf.c.
This forces a rename of the eventhandler and the standard clone helper function.
Include <sys/eventhandler.h> in <sys/conf.h>: it's a helper #include like <sys/queue.h>
Remove all #includes of opt_devfs.h they no longer matter.
|
#
65051 |
|
24-Aug-2000 |
phk |
Fix panic when removing open device (found by bp@) Implement subdirs. Build the full "devicename" for cloning functions. Fix panic when deleted device goes away. Collaps devfs_dir and devfs_dirent structures. Add proper cloning to the /dev/fd* "device-"driver. Fix a bug in make_dev_alias() handling which made aliases appear multiple times. Use devfs_clone to implement getdiskbyname() Make specfs maintain the stat(2) timestamps per dev_t
|
#
64880 |
|
20-Aug-2000 |
phk |
Remove all traces of Julians DEVFS (incl from kern/subr_diskslice.c)
Remove old DEVFS support fields from dev_t.
Make uid, gid & mode members of dev_t and set them in make_dev().
Use correct uid, gid & mode in make_dev in disk minilayer.
Add support for registering alias names for a dev_t using the new function make_dev_alias(). These will show up as symlinks in DEVFS.
Use makedev() rather than make_dev() for MFSs magic devices to prevent DEVFS from noticing this abuse.
Add a field for DEVFS inode number in dev_t.
Add new DEVFS in fs/devfs.
Add devfs cloning to: disk minilayer (ie: ad(4), sd(4), cd(4) etc etc) md(4), tun(4), bpf(4), fd(4)
If DEVFS add -d flag to /sbin/inits args to make it mount devfs.
Add commented out DEVFS to GENERIC
|
#
62472 |
|
03-Jul-2000 |
phk |
Pull the rug under block mode devices. they return ENXIO on open(2) now.
|
#
62066 |
|
25-Jun-2000 |
markm |
Add extra flag needed by nulldev/mmap.
Thanks to: Jeroen van Gelderen Reviewed by: dfr
|
#
60938 |
|
26-May-2000 |
jake |
Back out the previous change to the queue(3) interface. It was not discussed and should probably not happen.
Requested by: msmith and others
|
#
60833 |
|
23-May-2000 |
jake |
Change the way that the queue(3) structures are declared; don't assume that the type argument to *_HEAD and *_ENTRY is a struct.
Suggested by: phk Reviewed by: phk Approved by: mdodd
|
#
60281 |
|
09-May-2000 |
phk |
Change the "bdev-whiner" to whine when open is attempted and extend the deadline a month.
|
#
59840 |
|
01-May-2000 |
phk |
Give struct bio it's own call back mechanism.
|
#
59623 |
|
25-Apr-2000 |
phk |
Clone the {b|bio}_offset field, and make sure it is always initialized in struct bio. Eventually, bio_offset will probably obsolete the bio_blkno and bio_pblkno fields.
Remove the special hack in atapi-cd.c to determine of bio_offset was valid.
|
#
59249 |
|
15-Apr-2000 |
phk |
Complete the bio/buf divorce for all code below devfs::strategy
Exceptions: Vinum untouched. This means that it cannot be compiled. Greg Lehey is on the case.
CCD not converted yet, casts to struct buf (still safe)
atapi-cd casts to struct buf to examine B_PHYS
|
#
58389 |
|
20-Mar-2000 |
green |
Split the logic of static int setrootbyname(char *name); out into dev_t getdiskbyname(char *name);
This makes it easy to create a new DDB command, which is the big reason for the change. You can now do the following in DDB:
Example rc.conf entry: dumpdev="/dev/ad0s1b" # Device name to crashdump to (if enabled).
db> show disk/ad0s1b dev_t = 0xc0b7ea00 db> p *dumpdev c0b7ea00
|
#
58365 |
|
20-Mar-2000 |
phk |
diff, patch and cvs didn't like these three last time around, try again.
|
#
58345 |
|
20-Mar-2000 |
phk |
Remove B_READ, B_WRITE and B_FREEBUF and replace them with a new field in struct buf: b_iocmd. The b_iocmd is enforced to have exactly one bit set.
B_WRITE was bogusly defined as zero giving rise to obvious coding mistakes.
Also eliminate the redundant struct buf flag B_CALL, it can just as efficiently be done by comparing b_iodone to NULL.
Should you get a panic or drop into the debugger, complaining about "b_iocmd", don't continue. It is likely to write on your disk where it should have been reading.
This change is a step in the direction towards a stackable BIO capability.
A lot of this patch were machine generated (Thanks to style(9) compliance!)
Vinum users: Greg has not had time to test this yet, be careful.
|
#
57025 |
|
07-Feb-2000 |
sos |
Do refcounting of open devices (more) correctly.
count_dev funtion by phk.
|
#
55205 |
|
29-Dec-1999 |
peter |
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.
|
#
53896 |
|
29-Nov-1999 |
phk |
Remove the now unused chrtoblk() function.
|
#
53722 |
|
26-Nov-1999 |
phk |
Retire MFS_ROOT and MFS_ROOT_SIZE options from the MFS implementation.
Add MD_ROOT and MD_ROOT_SIZE options to the md driver.
Make the md driver handle MFS_ROOT and MFS_ROOT_SIZE options for compatibility.
Add md driver to GENERIC, PCCARD and LINT.
This is a cleanup which removes the need for some of the worse hacks in MFS: We really want to have a rootvnode but MFS on a preloaded image doesn't really have one. md is a true device, so it is less trouble.
This has been tested with make release, and if people remember to add the "md" pseudo-device to their kernels, PicoBSD should be just fine as well. If people have no other use for MFS, it can be removed from the kernel.
|
#
53006 |
|
08-Nov-1999 |
peter |
Zap devsw_module_handler().
|
#
53000 |
|
08-Nov-1999 |
phk |
Rename remove_dev() to destroy_dev().
Nagged about by: msmith
|
#
52992 |
|
08-Nov-1999 |
peter |
Don't indirect via devsw_module_handler() for DEV_MODULE() routines, have the supplied (if any) function and argument called directly.
|
#
52967 |
|
07-Nov-1999 |
phk |
Remove the iskmemdev() function. Make it the responsibility of the mem.c drivers to enforce the securelevel checks.
|
#
52965 |
|
07-Nov-1999 |
phk |
Remove the devsw magic from DEV_MODULE()
|
#
51929 |
|
04-Oct-1999 |
phk |
Warn once per driver about dev_t's not registered with make_dev().
|
#
51808 |
|
30-Sep-1999 |
phk |
Remove the D_NOCLUSTER[RW] options which were added because vn had problems. Now that Matt has fixed vn, this can go. The vn driver should have used d_maxio (now si_iosize_max) anyway.
|
#
51663 |
|
25-Sep-1999 |
phk |
For some reason patch didn't remove these three lines first time around.
|
#
51658 |
|
25-Sep-1999 |
phk |
Remove five now unused fields from struct cdevsw. They should never have been there in the first place. A GENERIC kernel shrinks almost 1k.
Add a slightly different safetybelt under nostop for tty drivers.
Add some missing FreeBSD tags
|
#
51654 |
|
25-Sep-1999 |
phk |
This patch clears the way for removing a number of tty related fields in struct cdevsw:
d_stop moved to struct tty. d_reset already unused. d_devtotty linkage now provided by dev_t->si_tty.
These fields will be removed from struct cdevsw together with d_params and d_maxio Real Soon Now.
The changes in this patch consist of:
initialize dev->si_tty in *_open() initialize tty->t_stop remove devtotty functions rename ttpoll to ttypoll a few adjustments to these changes in the generic code a bump of __FreeBSD_version add a couple of FreeBSD tags
|
#
51558 |
|
22-Sep-1999 |
phk |
Kill the cdevsw->d_maxio field.
d_maxio is replaced by the dev->si_iosize_max field which the driver should be set in all calls to cdevsw->d_open if it has a better idea than the system wide default.
The field is a generic dev_t field (ie: not disk specific) so that tapes and other devices can use physio as well.
|
#
51479 |
|
20-Sep-1999 |
phk |
Step one of replacing devsw->d_maxio with si_bsize_max.
Rename dev->si_bsize_max to si_iosize_max and set it in spec_open if the device didn't.
Set vp->v_maxio from dev->si_bsize_max in spec_open rather than in ufs_bmap.c
|
#
51225 |
|
13-Sep-1999 |
bde |
Const'ify devtoname() and d_name. This exposes some errors (2 non-benign).
Handle negative minor numbers properly in devtoname().
|
#
51211 |
|
12-Sep-1999 |
green |
Correction: mem.c devices are "D_MEM" (and D_MEM is added.)
Taken issue with by: phk
|
#
50830 |
|
03-Sep-1999 |
julian |
Revert a bunch of contraversial changes by PHK. After a quick think and discussion among various people some form of some of these changes will probably be recommitted.
The reversion requested was requested by dg while discussions proceed. PHK has indicated that he can live with this, and it has been agreed that some form of some of these changes may return shortly after further discussion.
|
#
50652 |
|
30-Aug-1999 |
phk |
s/si_tty_tty/si_tty/g
|
#
50623 |
|
30-Aug-1999 |
phk |
Make bdev userland access work like cdev userland access unless the highly non-recommended option ALLOW_BDEV_ACCESS is used.
(bdev access is evil because you don't get write errors reported.)
Kill si_bsize_best before it kills Matt :-)
Use the specfs routines rather having cloned copies in devfs.
|
#
50565 |
|
29-Aug-1999 |
phk |
Add micro "disk" layer which should enable us to pull all the slice/label stuff out of the device drivers.
|
#
50549 |
|
29-Aug-1999 |
phk |
Add dev_t freeing code. Controlled by sysctl debug.free_devt, default is off.
|
#
50477 |
|
27-Aug-1999 |
peter |
$Id$ -> $FreeBSD$
|
#
50405 |
|
26-Aug-1999 |
phk |
Simplify the handling of VCHR and VBLK vnodes using the new dev_t:
Make the alias list a SLIST.
Drop the "fast recycling" optimization of vnodes (including the returning of a prexisting but stale vnode from checkalias). It doesn't buy us anything now that we don't hardlimit vnodes anymore.
Rename checkalias2() and checkalias() to addalias() and addaliasu() - which takes dev_t and udev_t arg respectively.
Make the revoke syscalls use vcount() instead of VALIASED.
Remove VALIASED flag, we don't need it now and it is faster to traverse the much shorter lists than to maintain the flag.
vfs_mountedon() can check the dev_t directly, all the vnodes point to the same one.
Print the devicename in specfs/vprint().
Remove a couple of stale LFS vnode flags.
Remove unimplemented/unused LK_DRAINED;
|
#
50376 |
|
25-Aug-1999 |
julian |
Make a place to store the devfs hook for the block device, as the same specinfo is used to identify both raw and block version sof a device.
|
#
50254 |
|
23-Aug-1999 |
phk |
Convert DEVFS hooks in (most) drivers to make_dev().
Diskslice/label code not yet handled.
Vinum, i4b, alpha, pc98 not dealt with (left to respective Maintainers)
Add the correct hook for devfs to kern_conf.c
The net result of this excercise is that a lot less files depends on DEVFS, and devtoname() gets more sensible output in many cases.
A few drivers had minor additional cleanups performed relating to cdevsw registration.
A few drivers don't register a cdevsw{} anymore, but only use make_dev().
|
#
50092 |
|
20-Aug-1999 |
julian |
First small steps at merging DEVFS and PHK's Dev_t stuff.
|
#
49982 |
|
17-Aug-1999 |
billf |
Welcome devtoname(), to most likely be used when printing information about a dev_t.
printf("%x", dev) now becomes printf("%s", devtoname(dev)) because printing actual information about the device is much more useful then printing a pointer to an address that would never help the developer debug.
Submitted by: phk, bde
|
#
49826 |
|
15-Aug-1999 |
phk |
Introduce lminor(dev_t dev), which returns a linear minor number, ie: hides the fact that the major number is stuck in the middle.
|
#
49771 |
|
14-Aug-1999 |
phk |
Spring cleaning around strategy and disklabels/slices:
Introduce BUF_STRATEGY(struct buf *, int flag) macro, and use it throughout. please see comment in sys/conf.h about the flag argument.
Remove strategy argument from all the diskslice/label/bad144 implementations, it should be found from the dev_t.
Remove bogus and unused strategy1 routines.
Remove open/close arguments from dssize(). Pick them up from dev_t.
Remove unused and unfinished setgeom support from diskslice/label/bad144 code.
|
#
49695 |
|
13-Aug-1999 |
phk |
Add support for device drivers which want to track all open/close operations. This allows a device driver better insight into what is going on that the current:
proc1: open /dev/foo R/O devsw->open( R/O, proc1 ) proc2: open /dev/foo R/W devsw->open( R/W, proc2 ) proc2: close /* nothing, but device is really only R/O open */ proc1: close devsw->close( R/O, proc1 )
|
#
49679 |
|
13-Aug-1999 |
phk |
The bdevsw() and cdevsw() are now identical, so kill the former.
|
#
49678 |
|
13-Aug-1999 |
phk |
s/v_specinfo/v_rdev/
|
#
49577 |
|
09-Aug-1999 |
jdp |
Include <sys/queue.h> since this header now depends on it.
|
#
49535 |
|
08-Aug-1999 |
phk |
Decommision miscfs/specfs/specdev.h. Most of it goes into <sys/conf.h>, a few lines into <sys/vnode.h>.
Add a few fields to struct specinfo, paving the way for the fun part.
|
#
48936 |
|
20-Jul-1999 |
phk |
Now a dev_t is a pointer to struct specinfo which is shared by all specdev vnodes referencing this device.
Details: cdevsw->d_parms has been removed, the specinfo is available now (== dev_t) and the driver should modify it directly when applicable, and the only driver doing so, does so: vn.c. I am not sure the logic in checking for "<" was right before, and it looks even less so now.
An intial pool of 50 struct specinfo are depleted during early boot, after that malloc had better work. It is likely that fewer than 50 would do.
Hashing is done from udev_t to dev_t with a prime number remainder hash, experiments show no better hash available for decent cost (MD5 is only marginally better) The prime number used should not be close to a power of two, we use 83 for now.
Add new checkalias2() to get around the loss of info from dev2udev() in bdevvp();
The aliased vnodes are hung on a list straight of the dev_t, and speclisth[SPECSZ] is unused. The sharing of struct specinfo means that the v_specnext moves into the vnode which grows by 4 bytes.
Don't use a VBLK dev_t which doesn't make sense in MFS, now we hang a dummy cdevsw on B/Cmaj 253 so that things look sane.
Storage overhead from all of this is O(50k).
Bump __FreeBSD_version to 400009
The next step will add the stuff needed so device-drivers can start to hang things from struct specinfo
|
#
48866 |
|
17-Jul-1999 |
phk |
Add a field to struct swdevt to avoid a bogus udev2dev() call.
|
#
48652 |
|
07-Jul-1999 |
msmith |
Reinstate the previous fix for the broken export of a dev_t in sw_dev, convert back to a dev_t when the value is actually used.
|
#
48651 |
|
07-Jul-1999 |
green |
Back out previous commit. It was wrong, and caused panics.
|
#
48647 |
|
06-Jul-1999 |
msmith |
swdevt should contain a udev_t not a devt. This resulted in bogus swap device name reporting.
Submitted by: Bill Swingle <unfurl@freebsd.org>
|
#
48567 |
|
04-Jul-1999 |
phk |
fix DEV_MODULE, I overlooked this one in my last commit
|
#
48557 |
|
04-Jul-1999 |
phk |
Remove cmaj and bmaj args from DEV_DRIVER_MODULE.
|
#
48211 |
|
25-Jun-1999 |
grog |
Add function cdevsw_remove, the opposite of cdevsw_add: remove an entry in cdevsw (and bdevsw if appropriate).
Reviewed-by: phk
|
#
47680 |
|
01-Jun-1999 |
phk |
Introduce the makebdev() function, it does the same as the makedev() function for now, but that will change.
|
#
47640 |
|
31-May-1999 |
phk |
Simplify cdevsw registration.
The cdevsw_add() function now finds the major number(s) in the struct cdevsw passed to it. cdevsw_add_generic() is no longer needed, cdevsw_add() does the same thing.
cdevsw_add() will print an message if the d_maj field looks bogus.
Remove nblkdev and nchrdev variables. Most places they were used bogusly. Instead check a dev_t for validity by seeing if devsw() or bdevsw() returns NULL.
Move bdevsw() and devsw() functions to kern/kern_conf.c
Bump __FreeBSD_version to 400006
This commit removes: 72 bogus makedev() calls 26 bogus SYSINIT functions
if_xe.c bogusly accessed cdevsw[], author/maintainer please fix.
I4b and vinum not changed. Patches emailed to authors. LINT probably broken until they catch up.
|
#
47625 |
|
30-May-1999 |
phk |
This commit should be a extensive NO-OP:
Reformat and initialize correctly all "struct cdevsw".
Initialize the d_maj and d_bmaj fields.
The d_reset field was not removed, although it is never used.
I used a program to do most of this, so all the files now use the same consistent format. Please keep it that way.
Vinum and i4b not modified, patches emailed to respective authors.
|
#
47086 |
|
12-May-1999 |
peter |
dev is a pointer, printf it as such
|
#
47028 |
|
11-May-1999 |
phk |
Divorce "dev_t" from the "major|minor" bitmap, which is now called udev_t in the kernel but still called dev_t in userland.
Provide functions to manipulate both types: major() umajor() minor() uminor() makedev() umakedev() dev2udev() udev2dev()
For now they're functions, they will become in-line functions after one of the next two steps in this process.
Return major/minor/makedev to macro-hood for userland.
Register a name in cdevsw[] for the "filedescriptor" driver.
In the kernel the udev_t appears in places where we have the major/minor number combination, (ie: a potential device: we may not have the driver nor the device), like in inodes, vattr, cdevsw registration and so on, whereas the dev_t appears where we carry around a reference to a actual device.
In the future the cdevsw and the aliased-from vnode will be hung directly from the dev_t, along with up to two softc pointers for the device driver and a few houskeeping bits. This will essentially replace the current "alias" check code (same buck, bigger bang).
A little stunt has been provided to try to catch places where the wrong type is being used (dev_t vs udev_t), if you see something not working, #undef DEVT_FASCIST in kern/kern_conf.c and see if it makes a difference. If it does, please try to track it down (many hands make light work) or at least try to reproduce it as simply as possible, and describe how to do that.
Without DEVT_FASCIST I belive this patch is a no-op.
Stylistic/posixoid comments about the userland view of the <sys/*.h> files welcome now, from userland they now contain the end result.
Next planned step: make all dev_t's refer to the same devsw[] which means convert BLK's to CHR's at the perimeter of the vnodes and other places where they enter the game (bootdev, mknod, sysctl).
|
#
46792 |
|
09-May-1999 |
phk |
Unconfuse DEV_MODULE() and DEV_DRIVER_MODULE() about the difference between a major number for a dev_t.
|
#
46776 |
|
09-May-1999 |
phk |
Don't confuse dev_t and major numbers in DEV_MODULE()
|
#
46676 |
|
08-May-1999 |
phk |
I got tired of seeing all the cdevsw[major(foo)] all over the place.
Made a new (inline) function devsw(dev_t dev) and substituted it.
Changed to the BDEV variant to this format as well: bdevsw(dev_t dev)
DEVFS will eventually benefit from this change too.
|
#
46635 |
|
07-May-1999 |
phk |
Continue where Julian left off in July 1998:
Virtualize bdevsw[] from cdevsw. bdevsw() is now an (inline) function.
Join CDEV_MODULE and BDEV_MODULE to DEV_MODULE (please pay attention to the order of the cmaj/bmaj arguments!)
Join CDEV_DRIVER_MODULE and BDEV_DRIVER_MODULE to DEV_DRIVER_MODULE (ditto!)
(Next step will be to convert all bdev dev_t's to cdev dev_t's before they get to do any damage^H^H^H^H^H^Hwork in the kernel.)
|
#
44247 |
|
25-Feb-1999 |
dillon |
Reviewed by: Julian Elischer <julian@whistle.com>
Add d_parms() to {c,b}devsw[]. If non-NULL this function points to a device routine that will properly fill in the specinfo structure. vfs_subr.c's checkalias() supplies appropriate defaults. This change should be fully backwards compatible with existing devices.
|
#
42984 |
|
21-Jan-1999 |
peter |
Typo: s/mdev/bdev/, added in rev 1.47 (must fix in RELENG_3 too)
|
#
41153 |
|
14-Nov-1998 |
wollman |
My changes to the new device interface:
- Interface wth the new resource manager. - Allow for multiple drivers implementing a single devclass. - Remove ordering dependencies between header files. - Style cleanup. - Add DEVICE_SUSPEND and DEVICE_RESUME methods. - Move to a single-phase interrupt setup scheme.
Kernel builds on the Alpha are brken until Doug gets a chance to incorporate these changes on that side.
Agreed to in principle by: dfr
|
#
41066 |
|
10-Nov-1998 |
dfr |
Allow the use of NODEV in CDEV_MODULE and BDEV_MODULE to make the system auto-allocate the major number. Not terribly useful without DEVFS.
|
#
41004 |
|
08-Nov-1998 |
dfr |
* Fix a couple of places in the device pager where an address was truncated to 32 bits. * Change the calling convention of the device mmap entry point to pass a vm_offset_t instead of an int for the offset allowing devices with a larger memory map than (1<<32) to be supported on the alpha (/dev/mem is one such).
These changes are required to allow the X server to mmap the various I/O regions used for device port and memory access on the alpha.
|
#
38862 |
|
05-Sep-1998 |
phk |
Add a new vnode op, VOP_FREEBLKS(), which filesystems can use to inform device drivers about sectors no longer in use.
Device-drivers receive the call through d_strategy, if they have D_CANFREE in d_flags.
This allows flash based devices to erase the sectors and avoid pointlessly carrying them around in compactions.
Reviewed by: Kirk Mckusick, bde Sponsored by: M-Systems (www.m-sys.com)
|
#
38449 |
|
20-Aug-1998 |
bde |
Moved `nx' functions to the one place where they are used (su.c). They shouldn't be used there either. They should have gone away about 3 years ago when the statically initialized devswitches went away, but su.c unfortunately still frobs the cdevswitch in the old way.
|
#
37389 |
|
04-Jul-1998 |
julian |
There is no such thing any more as "struct bdevsw".
There is only cdevsw (which should be renamed in a later edit to deventry or something). cdevsw contains the union of what were in both bdevsw an cdevsw entries. The bdevsw[] table stiff exists and is a second pointer to the cdevsw entry of the device. it's major is in d_bmaj rather than d_maj. some cleanup still to happen (e.g. dsopen now gets two pointers to the same cdevsw struct instead of one to a bdevsw and one to a cdevsw).
rawread()/rawwrite() went away as part of this though it's not strictly the same patch, just that it involves all the same lines in the drivers.
cdroms no longer have write() entries (they did have rawwrite (?)). tapes no longer have support for bdev operations.
Reviewed by: Eivind Eklund and Mike Smith Changes suggested by eivind.
|
#
37153 |
|
25-Jun-1998 |
phk |
Remove bdevsw_add(), change the only two users to use bdevsw_add_generic(). Extend cdevsw to be superset of bdevsw. Remove non-functional bdev lkm support. Teach wcd what the open() args mean.
|
#
37034 |
|
17-Jun-1998 |
bde |
Don't declare isa device structs or isa interrupt handlers in <sys/conf>, and don't depend on them being declared there. This will cause lots of warnings for a few minutes until config is updated. Interrupt handlers should never have been configured by config, and the machine generated declarations get in the way of changing the arg type from int to void *.
|
#
36735 |
|
07-Jun-1998 |
dfr |
This commit fixes various 64bit portability problems required for FreeBSD/alpha. The most significant item is to change the command argument to ioctl functions from int to u_long. This change brings us inline with various other BSD versions. Driver writers may like to use (__FreeBSD_version == 300003) to detect this change.
The prototype FreeBSD/alpha machdep will follow in a couple of days time.
|
#
33322 |
|
13-Feb-1998 |
phk |
Implement the spirit but not the letter of Terrys hot-char patch.
The differences Terrys patch and this patch are: * Remove a lot of un-needed comments. * Don't put l_hotchar at the front of stuct linesw, there is no need to. * Use the #defines for the hotchar in the SLIP and PPP line disciplines
|
#
32724 |
|
24-Jan-1998 |
dyson |
Add better support for larger I/O clusters, including larger physical I/O. The support is not mature yet, and some of the underlying implementation needs help. However, support does exist for IDE devices now.
|
#
31352 |
|
22-Nov-1997 |
bde |
Staticized.
|
#
29888 |
|
27-Sep-1997 |
kato |
Clustered read and write are switched at mount-option level.
1. Clustered I/O is switched by the MNT_NOCLUSTERR and MNT_NOCLUSTERW bits of the mnt_flag. The sysctl variables, vfs.foo.doclusterread and vfs.foo.doclusterwrite are deleted. Only mount option can control clustered I/O from userland. 2. When foofs_mount mounts block device, foofs_mount checks D_CLUSTERR and D_CLUSTERW bits of the d_flags member in the block device switch table. If D_NOCLUSTERR / D_NOCLUSTERW are set, MNT_NOCLUSTERR / MNT_NOCLUSTERW bits will be set. In this case, MNT_NOCLUSTERR and MNT_NOCLUSTERW cannot be cleared from userland. 3. Vnode driver disables both clustered read and write. 4. Union filesystem disables clutered write.
Reviewed by: bde
|
#
29350 |
|
14-Sep-1997 |
peter |
Update interfaces for poll()
|
#
22975 |
|
22-Feb-1997 |
peter |
Back out part 1 of the MCFH that changed $Id$ to $FreeBSD$. We are not ready for it yet.
|
#
22521 |
|
10-Feb-1997 |
dyson |
This is the kernel Lite/2 commit. There are some requisite userland changes, so don't expect to be able to run the kernel as-is (very well) without the appropriate Lite/2 userland changes.
The system boots and can mount UFS filesystems.
Untested: ext2fs, msdosfs, NFS Known problems: Incorrect Berkeley ID strings in some files. Mount_std mounts will not work until the getfsent library routine is changed.
Reviewed by: various people Submitted by: Jeffery Hsu <hsu@freebsd.org>
|
#
21673 |
|
14-Jan-1997 |
jkh |
Make the long-awaited change from $Id$ to $FreeBSD$
This will make a number of things easier in the future, as well as (finally!) avoiding the Id-smashing problem which has plagued developers for so long.
Boy, I'm glad we're not using sup anymore. This update would have been insane otherwise.
|
#
17264 |
|
23-Jul-1996 |
phk |
Make a "DWIM" function for adding [bc]devsw entries for bdev drivers.
Saves about 280 butes of source per driver, 56 bytes in object size and another 56 bytes moves from data to bss.
No functional change intended nor expected.
GENERIC should be about one k smaller now :-)
|
#
14490 |
|
11-Mar-1996 |
hsu |
Merge in Lite2: stylistic changes to function prototypes add comments Did not accept change of second argument of ioctl prototype from int to u_long. Did not merge in changes to fields in bdevsw and cdevsw. Reviewed by: davidg & bde
|
#
12840 |
|
14-Dec-1995 |
bde |
Removed my devsw access functions [un]register_cdev() and getmajorbyname() which were a better (sigh) temporary interface to the going-away devswitches.
Note that SYSINIT()s to initialize the devswitches would be fatal in syscons.c and pcvt_drv.c (and are bogus elsewhere) because they get called independently of whether the device is attached; thus devices that share a major clobber each other's devswitch entries until the last one wins.
conf.c: Removed stale #includes and comments.
|
#
12813 |
|
13-Dec-1995 |
julian |
devsw tables are now arrays of POINTERS to struct [cb]devsw seems to work hre just fine though I can't check every file that changed due to limmited h/w, however I've checked enught to be petty happy withe hte code..
WARNING... struct lkm[mumble] has changed so it might be an idea to recompile any lkm related programs
|
#
12731 |
|
10-Dec-1995 |
bde |
Removed new alias d_size_t for d_psize_t.
Removed old aliases d_rdwr_t and d_ttycv_t for d_read_t/d_write_t and d_devtotty_t.
Sorted declarations of switch functions into switch order.
Removed duplicated comments and declarations of nonexistent switch functions.
|
#
12725 |
|
10-Dec-1995 |
phk |
Last commit this round: Staticize. we are now down to about 1146 symbols being global, of which I estimate that about 100 are validly so.
|
#
12675 |
|
08-Dec-1995 |
julian |
Pass 3 of the great devsw changes most devsw referenced functions are now static, as they are in the same file as their devsw structure. I've also added DEVFS support for nearly every device in the system, however many of the devices have 'incorrect' names under DEVFS because I couldn't quickly work out the correct naming conventions. (but devfs won't be coming on line for a month or so anyhow so that doesn't matter)
If you "OWN" a device which would normally have an entry in /dev then search for the devfs_add_devsw() entries and munge to make them right.. check out similar devices to see what I might have done in them in you can't see what's going on.. for a laugh compare conf.c conf.h defore and after... :) I have not doen DEVFS entries for any DISKSLICE devices yet as that will be a much more complicated job.. (pass 5 :)
pass 4 will be to make the devsw tables of type (cdevsw * ) rather than (cdevsw) seems to work here.. complaints to the usual places.. :)
|
#
12638 |
|
05-Dec-1995 |
bde |
Moved prototypes for rawread(), rawrite() and setconf() to a better place.
Restored order.
|
#
12521 |
|
29-Nov-1995 |
julian |
If you're going to mechanically replicate something in 50 files it's best to not have a (compiles cleanly) typo in it! (sigh)
|
#
12118 |
|
05-Nov-1995 |
bde |
Replaced bogus macros for dummy devswitch entries by functions. These functions went away:
enosys (hasn't been used for some time) enxio enodev enoioctl (was used only once, actually for a vop)
if_tun.c: Continued cleaning up...
conf.h: Probably fixed the type of d_reset_t. It is hard to tell the correct type because there are no non-dummy device reset functions.
Removed last vestige of ambiguous sleep message strings.
|
#
12109 |
|
05-Nov-1995 |
bde |
Replaced bogus macros for entry points to unconfigured line disciplines by functions.
tty_conf.c: Cleaned up formatting of tables.
Removed another ARGSUSED for consistency.
conf.h: Introduced typedefs for line discipline functions.
Backed out most of previous revision (it is done elsewhere).
|
#
12098 |
|
05-Nov-1995 |
peter |
Workaround for conflicting kernel prototypes in user mode breaking make world
I've moved the #include <machine/conf.h> inside the #ifdef KERNEL becuause things like modload #include <sys/conf.h> for the cdevsw definitions but dont need the conflicting prototype for fdopen in stdio.h and machine/conf.h.
Bruce may have a better fix for this, but for now I need a make world..
|
#
12071 |
|
04-Nov-1995 |
bde |
Moved prototypes for devswitch functions from conf.c and driver sources to <machine/conf.h>. conf.h was mechanically generated by `grep ^d_ conf.c >conf.h'. This accounts for part of its ugliness. The prototypes should be moved back to the driver sources when the functions are staticalized.
|
#
11161 |
|
04-Oct-1995 |
julian |
add the file kern_conf.c so it can be compiled in when needed for testing.. (for cdevsw_add and bdevsw_add)
make the lkm code use the new generic devsw add routines (if so required) define these routines in conf.h so we can use them
|
#
10666 |
|
10-Sep-1995 |
bde |
Make pcvt and syscons live in the same kernel. If both are enabled, then the first one in the config has priority. They can be switched using userconfig().
i386/i386/conf.c: Initialize the shared syscons/pcvt cdevsw entry to `nx'.
Add cdevsw registration functions.
Use devsw functions of the correct type if they exist.
i386/i386/cons.c: Add renamed syscons entry points to constab.
i386/i386/cons.h: Declare the renamed syscons entry points.
i386/i386/machdep.c: Repeat console initialization after userconfig() in case the current console has become wrong. This depends on cn functions not wiring down anything important.
sys/conf.h: Declare new functions.
i386/isa/isa.[ch]: Add a function to decide which display driver has priority. Should be done better.
i386/isa/syscons.c: Rename pccn* -> sccn*.
Initialize CRTC start address in case the previous driver has moved it.
i386/isa/syscons.c, i386/isa/pcvt/* Initialize the bogusly shared variable Crtat dynamically in case the stored value was changed by the previous driver.
Initialize cdevsw table from a template.
Don't grab the console if another display driver has priority.
i386/isa/syscons.h, i386/isa/pcvt/pcvt_hdr.h: Don't externally declare now-static cdevsw functions.
i386/isa/pcvt/pcvt_hdr.h: Set the sensitive hardware flag so that pcvt doesn't always have lower priority than syscons. This also fixes the "stupid" detection of the display after filling the display with text.
i386/isa/pcvt/pcvt_out.c: Don't be confused the off-screen cursor offset 0xffff set by syscons.
kern/subr_xxx.c: Add enough nxio/nodev/null devsw functions of the correct type for syscons and pcvt.
|
#
10636 |
|
08-Sep-1995 |
bde |
d_stop functions always returned void. Fix the declaration of d_stop_t to match.
|
#
8876 |
|
30-May-1995 |
rgrimes |
Remove trailing whitespace.
|
#
8504 |
|
14-May-1995 |
dg |
Changed swap partition handling/allocation so that it doesn't require specific partitions be mentioned in the kernel config file ("swap on foo" is now obsolete).
From Poul-Henning:
The visible effect is this:
As default, unless options "NSWAPDEV=23" is in your config, you will have four swap-devices. You can swapon(2) any block device you feel like, it doesn't have to be in the kernel config.
There is a performance/resource win available by getting the NSWAPDEV right (but only if you have just one swap-device ??), but using that as default would be too restrictive.
The invisible effect is that:
Swap-handling disappears from the $arch part of the kernel. It gets a lot simpler (-145 lines) and cleaner.
Reviewed by: John Dyson, David Greenman Submitted by: Poul-Henning Kamp, with minor changes by me.
|
#
8481 |
|
12-May-1995 |
wollman |
The death of `options NODUMP'. Now the dump area can be dynamically configured (and unconfigured) on the fly. A sysctl(3) MIB variable is provided to inspect and modify the dump device setting.
|
#
8016 |
|
23-Apr-1995 |
bde |
Declare d_dump_t and d_mmap_t completely. Nothing depends on the incomplete declarations here any more. Some things depend on incomplete declarations elsewhere. The `offset' arg to d_mmap_t is bogus (it is `int' but should be `vm_offset_t') but it is what the driver mmap functions actually accept, although they are passed a `vm_offset_t'.
Function declararions in headers should always be complete to avoid warnings from `gcc -Wstrict-prototypes' for compiling modules that don't even use the offending declarations.
|
#
7218 |
|
21-Mar-1995 |
dufault |
Set it so you can add and remove line disciplines without replicating code for looking for open slots in table (and you could hide the table if you wanted to).
|
#
7090 |
|
16-Mar-1995 |
bde |
Add and move declarations to fix all of the warnings from `gcc -Wimplicit' (except in netccitt, netiso and netns) and most of the warnings from `gcc -Wnested-externs'. Fix all the bugs found. There were no serious ones.
|
#
6712 |
|
25-Feb-1995 |
pst |
(a) remove the pointer to each driver's tty structure array from cdevsw (b) add a function callback vector to tty drivers that will return a pointer to a valid tty structure based upon a dev_t (c) make syscons structures the same size whether or not APM is enabled so utilities don't crash if NAPM changes (and make the damn kernel compile!) (d) rewrite /dev/snp ioctl interface so that it is device driver and i386 independant
|
#
6276 |
|
09-Feb-1995 |
dg |
Clean up after Jordan's commit: add d_read_t and d_write_t types for compatibility with the screwy conf.c macros.
|
#
5796 |
|
23-Jan-1995 |
phk |
Moved the typedefs of d_<foo>_t into sys/sys/conf.h and used them in the definition of struct [cb]devsw. Guess Bruce never got around to complete this (?)
Poul-Henning
|
#
5051 |
|
11-Dec-1994 |
bde |
Declare d_strategy_t here and use it to declare strategy functions. Sort prototypes. Uniformize idempotency ifdef.
|
#
4987 |
|
04-Dec-1994 |
jkh |
chrtoblk() returns dev_t, not int.
|
#
3438 |
|
08-Oct-1994 |
phk |
Added prototypes here and there. Moved pfctlinput into socket.h.
|
#
2165 |
|
21-Aug-1994 |
paul |
Made them all idempotent. Reviewed by: Submitted by:
|
#
1817 |
|
02-Aug-1994 |
dg |
Added $Id$
|
#
1542 |
|
24-May-1994 |
rgrimes |
This commit was generated by cvs2svn to compensate for changes in r1541, which included commits to RCS files with non-trunk default branches.
|
#
1541 |
|
24-May-1994 |
rgrimes |
BSD 4.4 Lite Kernel Sources
|