aboutsummaryrefslogtreecommitdiff
path: root/sys/sys/eventhandler.h
Commit message (Collapse)AuthorAgeFilesLines
* Use an event handler to notify the SCTP about IP address changesMichael Tuexen2019-10-131-0/+5
| | | | | | | | | | | | | instead of calling an SCTP specific function from the IP code. This is a requirement of supporting SCTP as a kernel loadable module. This patch was developed by markj@, I tweaked a bit the SCTP related code. Submitted by: markj@ MFC after: 3 days Notes: svn path=/head/; revision=353480
* Extract eventfilter declarations to sys/_eventfilter.hConrad Meyer2019-05-201-24/+1
| | | | | | | | | | | | | | | | | | | | | | | | This allows replacing "sys/eventfilter.h" includes with "sys/_eventfilter.h" in other header files (e.g., sys/{bus,conf,cpu}.h) and reduces header pollution substantially. EVENTHANDLER_DECLARE and EVENTHANDLER_LIST_DECLAREs were moved out of .c files into appropriate headers (e.g., sys/proc.h, powernv/opal.h). As a side effect of reduced header pollution, many .c files and headers no longer contain needed definitions. The remainder of the patch addresses adding appropriate includes to fix those files. LOCK_DEBUG and LOCK_FILE_LINE_ARG are moved to sys/_lock.h, as required by sys/mutex.h since r326106 (but silently protected by header pollution prior to this change). No functional change (intended). Of course, any out of tree modules that relied on header pollution for sys/eventhandler.h, sys/lock.h, or sys/mutex.h inclusion need to be fixed. __FreeBSD_version has been bumped. Notes: svn path=/head/; revision=347984
* sys/sys: further adoption of SPDX licensing ID tags.Pedro F. Giffuni2017-11-271-0/+2
| | | | | | | | | | | | | | | Mainly focus on files that use BSD 2-Clause license, however the tool I was using misidentified many licenses so this was mostly a manual - error prone - task. The Software Package Data Exchange (SPDX) group provides a specification to make it easier for automated tools to detect and summarize well known opensource licenses. We are gradually adopting the specification, noting that the tags are considered only advisory and do not, in any way, superceed or replace the license texts. Notes: svn path=/head/; revision=326256
* Introduce EVENTHANDLER_LIST and some users.Matt Joras2017-11-091-8/+37
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This introduces a facility to EVENTHANDLER(9) for explicitly defining a reference to an event handler list. This is useful since previously all invokers of events had to do a locked traversal of the global list of event handler lists in order to find the appropriate event handler list. By keeping a pointer to the appropriate list an invoker can avoid this traversal completely. The pointer is initialized with SYSINIT(9) during the eventhandler stage. Users registering interest in events do not need to know if the event is backed by such a list, since the list is added to the global list of lists. As with lists that are not pre-defined it is safe to register for the events before the list has been created. This converts the process_* and thread_* events to using the new facility, as these are events whose locked traversals end up showing up significantly in ports build workflows (and presumably other workflows with many short lived threads/procs). It may be advantageous to convert other events to using the new facility. The el_flags field is now unused, but leave it be so that this revision can be MFC'd. Reviewed by: bdrewery, markj, mjg Approved by: rstone (mentor) In collaboration with: ian MFC after: 4 weeks Sponsored by: Dell EMC Isilon Differential Revision: https://reviews.freebsd.org/D12814 Notes: svn path=/head/; revision=325621
* Add eventhandler notifications for newbus device attach/detach.Ian Lepore2017-10-081-0/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | The detach case is slightly complicated by the fact that some in-kernel consumers may want to know before a device detaches (so they can release related resources, stop using the device, etc), but the detach can fail. So there are pre- and post-detach notifications for those consumers who need to handle all cases. A couple salient comments from the review, they amount to some helpful documentation about these events, but there's currently no good place for such documentation... Note that in the current newbus locking model, DETACH_BEGIN and DETACH_COMPLETE/FAILED sequence of event handler invocation might interweave with other attach/detach events arbitrarily. The handlers should be prepared for such situations. Also should note that detach may be called after the parent bus knows the hardware has left the building. In-kernel consumers have to be prepared to cope with this race. Differential Revision: https://reviews.freebsd.org/D12557 Notes: svn path=/head/; revision=324415
* Restore the ability to deregister an eventhandler from within the callback.Ian Lepore2017-10-081-1/+10
| | | | | | | | | | | | | | | | | | | | When the EVENTHANDLER(9) subsystem was created, it was a documented feature that an eventhandler callback function could safely deregister itself. In r200652 that feature was inadvertantly broken by adding drain-wait logic to eventhandler_deregister(), so that it would be safe to unload a module upon return from deregistering its event handlers. There are now 145 callers of EVENTHANDLER_DEREGISTER(), and it's likely many of them are depending on the drain-wait logic that has been in place for 8 years. So instead of creating a separate eventhandler_drain() and adding it to some or all of those 145 call sites, this creates a separate eventhandler_drain_nowait() function for the specific purpose of deregistering a callback from within the running callback. Differential Revision: https://reviews.freebsd.org/D12561 Notes: svn path=/head/; revision=324413
* ifnet: move the new ifnet_event EVENTHANDLER_DECLARE to net/if_var.hDexuan Cui2017-01-281-7/+0
| | | | | | | | | | | | | | Thank glebius for pointing this out: "The network stuff shall not be added to sys/eventhandler.h" Reviewed by: David_A_Bright_DELL.com, sephe, glebius Approved by: sephe (mentor) MFC after: 2 weeks Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D9345 Notes: svn path=/head/; revision=312916
* ifnet: introduce event handlers for ifup/ifdown eventsDexuan Cui2017-01-241-0/+7
| | | | | | | | | | | | | | | | | | | | Hyper-V's NIC SR-IOV implementation needs a Hyper-V synthetic NIC and a VF NIC to work together, mainly to support seamless live migration. When the VF device becomes UP (or DOWN), the synthetic NIC driver needs to switch the data path from the synthetic NIC to the VF (or the opposite). So the synthetic NIC driver needs to know when a VF device is becoming UP or DOWN and hence the patch is made. Reviewed by: sephe Approved by: sephe (mentor) MFC after: 2 weeks Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D8963 Notes: svn path=/head/; revision=312687
* Add a page queue for holding dirty anonymous unswappable pages.Mark Johnston2017-01-031-0/+7
| | | | | | | | | | | | | | | | On systems without a configured swap device, an attempt to launder pages from a swap object will always fail and result in the page being reactivated. This means that the page daemon will continuously scan pages that can never be evicted. With this change, anonymous pages are instead moved to PQ_UNSWAPPABLE after a failed laundering attempt when no swap devices are configured. PQ_UNSWAPPABLE is not scanned unless a swap device is configured, so unreferenced unswappable pages are excluded from the page daemon's workload. Reviewed by: alc Notes: svn path=/head/; revision=311147
* cam/ata: Allow drivers to veto ATA disk attachment.Sepherosa Ziehau2016-09-281-0/+7
| | | | | | | | | | | | | | This eventhandler is mainly used by VMs, e.g. Hyper-V, whose disk controllers share the disks with the simulated ATA controllers. Submitted by: Hongjiang Zhang <honzhan microsoft com> Discussed with: mav MFC after: 1 week Sponsored by: Microsoft Differential Revision: https://reviews.freebsd.org/D7693 Notes: svn path=/head/; revision=306396
* hook userland threads suspend + resume into acpi suspend codeAndriy Gapon2015-01-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Also, split power_suspend into power_suspend and power_suspend_early. power_suspend_early is called before the userland is frozen. power_suspend is called after the userland is frozen. Currently only VT switching is hooked to power_suspend_early. This is needed because switching away from X server requires its cooperation, so obviously X server must not be frozen when that happens. Freezing userland during ACPI suspend is useful because not all drivers correctly handle suspension concurrent with other activity. This is especially applicable to drivers ported from other operating systems that suspend all software activity between placing drivers and hardware into suspended state. In particular drm2/radeon (radeonkms) depends on the described procedure. The driver does not have any internal synchronization between suspension activities and processing of userland requests. Many thanks to kib for the code that allows to freeze and thaw all userland threads. Note that ideally we also need to park / inhibit (non-special) kernel threads as well to ensure that they do not call into drivers. MFC after: 17 days Notes: svn path=/head/; revision=277796
* Whitespace fix.John Baldwin2014-02-281-1/+0
| | | | Notes: svn path=/head/; revision=262618
* Merge VT(9) project (a.k.a. newcons).Aleksandr Rybalko2013-12-051-0/+8
| | | | | | | | | | Reviewed by: nwhitehorn MFC_to_10_after: re approval Sponsored by: The FreeBSD Foundation Notes: svn path=/head/; revision=259016
* Style: s/SYS_EVENTHANDLER_H/_SYS_EVENTHANDLER_H_/gGleb Smirnoff2013-10-281-3/+3
| | | | | | | Submitted by: bde Notes: svn path=/head/; revision=257271
* Instead of putting ifnet declaration into eventhandler.h, moveGleb Smirnoff2013-10-281-13/+0
| | | | | | | | | | | | bpf(4) and vlan(4) related event declarations to bpf.h and if_vlan_var.h. To avoid dependency on eventhandler.h, protect these declarations with ifdef SYS_EVENTHANDLER_H. Sponsored by: Netflix Sponsored by: Nginx, Inc. Notes: svn path=/head/; revision=257242
* Rename the kld_unload event handler to kld_unload_try, and add a newMark Johnston2013-08-241-1/+3
| | | | | | | | | | | | | | | | | kld_unload event handler which gets invoked after a linker file has been successfully unloaded. The kld_unload and kld_load event handlers are now invoked with the shared linker lock held, while kld_unload_try is invoked with the lock exclusively held. Convert hwpmc(4) to use these event handlers instead of having kern_kldload() and kern_kldunload() invoke hwpmc(4) hooks whenever files are loaded or unloaded. This has no functional effect, but simplifes the linker code somewhat. Reviewed by: jhb Notes: svn path=/head/; revision=254813
* Use kld_{load,unload} instead of mod_{load,unload} for the linker file loadMark Johnston2013-08-141-5/+5
| | | | | | | | | | and unload event handlers added in r254266. Reported by: jhb X-MFC with: r254266 Notes: svn path=/head/; revision=254309
* Add event handlers for module load and unload events. The load handlers areMark Johnston2013-08-131-0/+7
| | | | | | | | | | | | called after the module has been loaded, and the unload handlers are called before the module is unloaded. Moreover, the module unload handlers may return an error to prevent the unload from proceeding. Reviewed by: avg MFC after: 2 weeks Notes: svn path=/head/; revision=254266
* Add vfs_mounted and vfs_unmounted events so that components can be informedMarcel Moolenaar2013-07-101-1/+11
| | | | | | | | | | | | | | | | | | | | about mount and unmount events. This is used by Juniper to implement a more optimal implementation of NetBSD's veriexec. This change differs from r253224 in the following way: o The vfs_mounted handler is called before mountcheckdirs() and with newdp locked. vp is unlocked. o The event handlers are declared in <sys/eventhandler.h> and not in <sys/mount.h>. The <sys/mount.h> header is used in user land code that pretends to be kernel code and as such creates a very convoluted environment. It's hard to untangle. Submitted by: stevek@juniper.net Discussed with: pjd@ Obtained from: Juniper Networks, Inc. Notes: svn path=/head/; revision=253158
* Base the mbuf related limits on the available physical memory orAndre Oppermann2012-11-271-0/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | kernel memory, whichever is lower. The overall mbuf related memory limit must be set so that mbufs (and clusters of various sizes) can't exhaust physical RAM or KVM. The limit is set to half of the physical RAM or KVM (whichever is lower) as the baseline. In any normal scenario we want to leave at least half of the physmem/kvm for other kernel functions and userspace to prevent it from swapping too easily. Via a tunable kern.maxmbufmem the limit can be upped to at most 3/4 of physmem/kvm. At the same time divorce maxfiles from maxusers and set maxfiles to physpages / 8 with a floor based on maxusers. This way busy servers can make use of the significantly increased mbuf limits with a much larger number of open sockets. Tidy up ordering in init_param2() and check up on some users of those values calculated here. Out of the overall mbuf memory limit 2K clusters and 4K (page size) clusters to get 1/4 each because these are the most heavily used mbuf sizes. 2K clusters are used for MTU 1500 ethernet inbound packets. 4K clusters are used whenever possible for sends on sockets and thus outbound packets. The larger cluster sizes of 9K and 16K are limited to 1/6 of the overall mbuf memory limit. When jumbo MTU's are used these large clusters will end up only on the inbound path. They are not used on outbound, there it's still 4K. Yes, that will stay that way because otherwise we run into lots of complications in the stack. And it really isn't a problem, so don't make a scene. Normal mbufs (256B) weren't limited at all previously. This was problematic as there are certain places in the kernel that on allocation failure of clusters try to piece together their packet from smaller mbufs. The mbuf limit is the number of all other mbuf sizes together plus some more to allow for standalone mbufs (ACK for example) and to send off a copy of a cluster. Unfortunately there isn't a way to set an overall limit for all mbuf memory together as UMA doesn't support such a limiting. NB: Every cluster also has an mbuf associated with it. Two examples on the revised mbuf sizing limits: 1GB KVM: 512MB limit for mbufs 419,430 mbufs 65,536 2K mbuf clusters 32,768 4K mbuf clusters 9,709 9K mbuf clusters 5,461 16K mbuf clusters 16GB RAM: 8GB limit for mbufs 33,554,432 mbufs 1,048,576 2K mbuf clusters 524,288 4K mbuf clusters 155,344 9K mbuf clusters 87,381 16K mbuf clusters These defaults should be sufficient for even the most demanding network loads. MFC after: 1 month Notes: svn path=/head/; revision=243631
* Add event handlers for (ACPI) suspend/resume events. Suspend event handlersJung-uk Kim2011-04-141-0/+5
| | | | | | | | are invoked right before device drivers go into sleep state and resume event handlers are invoked right after all device drivers are waken up. Notes: svn path=/head/; revision=220647
* Extend struct sysvec with new method sv_schedtail, which is used for anDmitry Chagin2011-03-081-2/+0
| | | | | | | | | | | | | | | | | | explicit process at fork trampoline path instead of eventhadler(schedtail) invocation for each child process. Remove eventhandler(schedtail) code and change linux ABI to use newly added sysvec method. While here replace explicit comparing of module sysentvec structure with the newly created process sysentvec to detect the linux ABI. Discussed with: kib MFC after: 2 Week Notes: svn path=/head/; revision=219405
* I added vfs_lowvnodes event, but it was only used for a short while and nowPawel Jakub Dawidek2010-05-111-4/+0
| | | | | | | | | it is totally unused. Remove it. MFC after: 3 days Notes: svn path=/head/; revision=207937
* Split eventhandler_register() into an internal part and a wrapper functionBjoern A. Zeeb2010-03-191-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | that provides the allocated and setup eventhandler entry. Add a new wrapper for VIMAGE that allocates extra space to hold the callback function and argument in addition to an extra wrapper function. While the wrapper function goes as normal callback function the argument points to the extra space allocated holding the original func and arg that the wrapper function can then call. Provide an iterator function for the virtual network stack (vnet) that will call the callback function for each network stack. Provide a new set of macros for VNET that in the non-VIMAGE case will just call eventhandler_register() while in the VIMAGE case it will use vimage_eventhandler_register() passing in the extra iterator function but will only register once rather than per-vnet. We need a special macro in case we are interested in the tag returned as we must check for curvnet and can neither simply assign the return value, nor not change it in the non-vnet0 case without that. Sponsored by: ISPsystem Discussed with: jhb Reviewed by: zec (earlier version), jhb MFC after: 1 month Notes: svn path=/head/; revision=205345
* Merge projects/enhanced_coredumps (r204346) into HEAD:Alfred Perlstein2010-03-021-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Enhanced process coredump routines. This brings in the following features: 1) Limit number of cores per process via the %I coredump formatter. Example: if corefilename is set to %N.%I.core AND num_cores = 3, then if a process "rpd" cores, then the corefile will be named "rpd.0.core", however if it cores again, then the kernel will generate "rpd.1.core" until we hit the limit of "num_cores". this is useful to get several corefiles, but also prevent filling the machine with corefiles. 2) Encode machine hostname in core dump name via %H. 3) Compress coredumps, useful for embedded platforms with limited space. A sysctl kern.compress_user_cores is made available if turned on. To enable compressed coredumps, the following config options need to be set: options COMPRESS_USER_CORES device zlib # brings in the zlib requirements. device gzio # brings in the kernel vnode gzip output module. 4) Eventhandlers are fired to indicate coredumps in progress. 5) The imgact sv_coredump routine has grown a flag to pass in more state, currently this is used only for passing a flag down to compress the coredump or not. Note that the gzio facility can be used for generic output of gzip'd streams via vnodes. Obtained from: Juniper Networks Reviewed by: kan Notes: svn path=/head/; revision=204552
* rev bpf attach/detach event api to include the dltSam Leffler2009-05-251-1/+2
| | | | Notes: svn path=/head/; revision=192763
* add bpf_track eventhandler for monitoring bpf taps attached/detachedSam Leffler2009-05-181-0/+5
| | | | | | | Reviewed by: csjp Notes: svn path=/head/; revision=192313
* Add an event handler to the vlan driver so the NIC driverJack F Vogel2008-07-141-0/+7
| | | | | | | | | becomes aware of it, and gets the VLAN ID. This will allow the easy use of VLAN hardware filtering by adapters that support it. Notes: svn path=/head/; revision=180510
* o add a mountroot event handler that fires when / is mounted; this informationSam Leffler2008-04-081-0/+4
| | | | | | | | | | was lost when root started being mounted by init o remove SI_SUB_MOUNT_ROOT since it's no longer meaningful MFC after: 2 weeks Notes: svn path=/head/; revision=178016
* Revert previous change - it appears that the limit I was hitting was aMaxim Sobolev2008-03-191-1/+0
| | | | | | | | | | | | maxsockets limit, not maxfiles limit. The question remains why those limits are handled differently (with error code for maxfiles but with sleep for maxsokets), but those would be addressed in a separate commit if necessary. Requested by: rwhatson, jeff Notes: svn path=/head/; revision=177380
* In keeping with style(9)'s recommendations on macros, use a ';'Robert Watson2008-03-161-1/+1
| | | | | | | | | | | | after each SYSINIT() macro invocation. This makes a number of lightweight C parsers much happier with the FreeBSD kernel source, including cflow's prcc and lxr. MFC after: 1 month Discussed with: imp, rink Notes: svn path=/head/; revision=177253
* Properly set size of the file_zone to match kern.maxfiles parameter.Maxim Sobolev2008-03-161-0/+1
| | | | | | | | | | | Otherwise the parameter is no-op, since zone by default limits number of descriptors to some 12K entries. Attempt to allocate more ends up sleeping on zonelimit. MFC after: 2 weeks Notes: svn path=/head/; revision=177232
* - Adds event handlers for process_ctor,process_dtor, process_init,Randall Stewart2007-11-151-1/+18
| | | | | | | | | process_fini, thread_ctor, thread_dtor, thread_init, thread_fini. This will allow us to extend dynamically areas in proc/thread for dtrace ;-) Reviewed by: rwatson Notes: svn path=/head/; revision=173631
* When we are running low on vnodes, there is currently no way to ask otherPawel Jakub Dawidek2007-04-131-0/+4
| | | | | | | | subsystems to release some vnodes. Implement backpressure based on vfs_lowvnodes event (similar to vm_lowmem for memory). Notes: svn path=/head/; revision=168682
* Add an interface for drivers to be notified of changes to CPU frequency.Nate Lawson2007-03-261-0/+11
| | | | | | | | | | | | | | | | | | | | | cpufreq_pre_change is called before the change, giving each driver a chance to revoke the change. cpufreq_post_change provides the results of the change (success or failure). cpufreq_levels_changed gives the unit number of the cpufreq device whose number of available levels has changed. Hook in all the drivers I could find that needed it. * TSC: update TSC frequency value. When the available levels change, take the highest possible level and notify the timecounter set_cputicker() of that freq. This gets rid of the "calcru: runtime went backwards" messages. * identcpu: updates the sysctl hw.clockrate value * Profiling: if profiling is active when the clock changes, let the user know the results may be inaccurate. Reviewed by: bde, phk MFC after: 1 month Notes: svn path=/head/; revision=167905
* - Change process_exec function handlers prototype to include structAlexander Leidinger2006-08-151-1/+5
| | | | | | | | | | | | | | | | image_params arg. - Change struct image_params to include struct sysentvec pointer and initialize it. - Change all consumers of process_exit/process_exec eventhandlers to new prototypes (includes splitting up into distinct exec/exit functions). - Add eventhandler to userret. Sponsored by: Google SoC 2006 Submitted by: rdivacky Parts suggested by: jhb (on hackers@) Notes: svn path=/head/; revision=161302
* Allow for nmbclusters and maxsockets to be increased via sysctl.Paul Saab2006-04-211-0/+3
| | | | | | | | An eventhandler is used to update all the various zones that depend on these values. Notes: svn path=/head/; revision=157927
* Use 'const char *' for a few prototypes.Joseph Koshy2004-12-061-2/+2
| | | | | | | Reviewed by: ru Notes: svn path=/head/; revision=138439
* Make the process_exit eventhandler run without Giant. Add Giant hooksPeter Wemm2004-03-141-2/+2
| | | | | | | | | in the two consumers that need it.. processes using AIO and netncp. Update docs. Say that process_exec is called with Giant, but not to depend on it. All our consumers can handle it without Giant. Notes: svn path=/head/; revision=126941
* Move the process_fork event out from under Giant. This one is easy,Peter Wemm2004-03-141-1/+5
| | | | | | | since there are no consumers in the tree. Document this. Notes: svn path=/head/; revision=126940
* Move the "fast" but unused eventhandlers to pasture. They're in thePoul-Henning Kamp2004-03-011-52/+0
| | | | | | | | | CVS repo should we ever need them. Objected to by: Notes: svn path=/head/; revision=126466
* Oops, SHUTDOWN_PRI_LAST should be EVENTHANDLER_PRI_LAST, notJohn Baldwin2003-03-241-1/+1
| | | | | | | | | | EVENTHANDLER_PRI_FIRST. Oddly enough, this didn't seem to break the boxes I tested these changes on. Reported by: jesper Notes: svn path=/head/; revision=112565
* Replace the at_fork, at_exec, and at_exit functions with the slightly moreJohn Baldwin2003-03-241-0/+11
| | | | | | | | | | | | flexible process_fork, process_exec, and process_exit eventhandlers. This reduces code duplication and also means that I don't have to go duplicate the eventhandler locking three more times for each of at_fork, at_exec, and at_exit. Reviewed by: phk, jake, almost complete silence on arch@ Notes: svn path=/head/; revision=112564
* Define some generic eventhandler priorities for use with eventhandlers andJohn Baldwin2003-03-241-6/+11
| | | | | | | | redefine the existing priority macros for specific eventhandlers in terms of the generic priorities. Notes: svn path=/head/; revision=112563
* Rework the eventhandler locking for hopefully the last time. The schemeJohn Baldwin2003-03-111-43/+62
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | used popped into my head during my morning commute a few weeks ago, but it is also very similar (though a bit simpler) to a patch that mini@ developed a while ago. Basically, each eventhandler list has a mutex and a run count. During an eventhandler invocation, the mutex is held while we traverse the list but is dropped while we execute actual handlers. Also, a runcount counter is incremented at the start of an invocation and decremented at the end of an invocation. Adding to the list is not a big deal since the reference of a thread currently executing the handlers remains valid across an add operation. Whether or not new handlers are executed by threads currently executing the handlers for a given list is indeterminate however. The harder case is when a handler is removed from the list. If the runcount is zero, the handler is simply removed from the list directly. If the runcount is not zero, then another thread is currently executing the handlers of this list, so the priority of this handler is set to a magic value (currently -1) to mark it as dead. Dead handlers are not executed during an invocation. If the runcount is zero after it is decremented at the end of an invocation, then a new eventhandler_prune_list() function is called to remove dead handlers from the list. Additional minor notes: - All the common parts of EVENTHANDLER_INVOKE() and EVENTHANDLER_FAST_INVOKE() have been merged into a common _EVENTHANDLER_INVOKE() macro to reduce duplication and ease maintenance. - KTR logging for eventhandlers is now available via the KTR_EVH mask. - The global eventhander_mutex is no longer recursive. Tested by: scottl (SMP i386) Notes: svn path=/head/; revision=112111
* - Add an event that is triggered when the system is low on memory. This isJeff Roberson2002-11-211-0/+4
| | | | | | | | | | | | intended to be used by significant memory consumers so that they may drain some of their caches. Inspired by: phk Approved by: re Tested on: x86, alpha Notes: svn path=/head/; revision=107136
* Convert macros with variadic arguments from GNU format to ISO 9X.Mark Murray2002-07-151-4/+4
| | | | Notes: svn path=/head/; revision=100111
* The previous ANSIfication did not take into account upgrade-buildsMark Murray2002-05-241-4/+4
| | | | | | | | uing an earlier, non-compliant compiler. Revert to the compatible form. Notes: svn path=/head/; revision=97235
* ANSIfy variable-argument macros.Mark Murray2002-05-231-4/+4
| | | | Notes: svn path=/head/; revision=97180
* Whitespace only; fix indentation.Mark Murray2002-05-231-3/+3
| | | | Notes: svn path=/head/; revision=97164