summaryrefslogtreecommitdiffstats
path: root/sys/amd64/isa/ithread.c
Commit message (Collapse)AuthorAgeFilesLines
* Cleanup some leftover lint from the old interrupt system.peter2000-12-041-26/+2
| | | | | | | | Also, while here, run up to 32 interrupt sources on APIC systems. Normalize INTREN/INTRDIS so they are the same on both UP and SMP systems rather than sometimes a macro, and sometimes a function. Reviewed by: jhb, jakeb
* Assert that Giant is not owned during the main loop of ithd_loop().jhb2000-11-151-0/+1
|
* - Overhaul the software interrupt code to use interrupt threads for eachjhb2000-10-251-7/+7
| | | | | | | | | | | | | | | | | | | type of software interrupt. Roughly, what used to be a bit in spending now maps to a swi thread. Each thread can have multiple handlers, just like a hardware interrupt thread. - Instead of using a bitmask of pending interrupts, we schedule the specific software interrupt thread to run, so spending, NSWI, and the shandlers array are no longer needed. We can now have an arbitrary number of software interrupt threads. When you register a software interrupt thread via sinthand_add(), you get back a struct intrhand that you pass to sched_swi() when you wish to schedule your swi thread to run. - Convert the name of 'struct intrec' to 'struct intrhand' as it is a bit more intuitive. Also, prefix all the members of struct intrhand with 'ih_'. - Make swi_net() a MI function since there is now no point in it being MD. Submitted by: cp
* Actually harvest interrupt threads when the last handler is removed from ajhb2000-10-201-2/+15
| | | | thread.
* - Heavyweight interrupt threads on the alpha for device I/O interrupts.jhb2000-10-051-158/+8
| | | | | | | | | | | - Make softinterrupts (SWI's) almost completely MI, and divorce them completely from the x86 hardware interrupt code. - The ihandlers array is now gone. Instead, there is a MI shandlers array that just contains SWI handlers. - Most of the former machine/ipl.h files have moved to a new sys/ipl.h. - Stub out all the spl*() functions on all architectures. Submitted by: dfr
* - Add a new process flag P_NOLOAD that marks a process that should bejhb2000-09-151-0/+1
| | | | | ignored during load average calcuations. - Set this flag for the idle processes and the softinterrupt process.
* Check to see if we actually have an interrupt descriptor and an interruptjhb2000-09-151-0/+21
| | | | | | | | thread for each interrupt that comes in. If we don't, log the event and return immediately for a hardware interrupt. For a softinterrupt, panic instead. Submitted by: ben
* - Remove the inthand2_t type and use the equivalent driver_intr_t type fromjhb2000-09-131-8/+8
| | | | | | | | | | | | | newbus for referencing device interrupt handlers. - Move the 'struct intrec' type which describes interrupt sources into sys/interrupt.h instead of making it just be a x86 structure. - Don't create 'ithd' and 'intrec' typedefs, instead, just use 'struct ithd' and 'struct intrec' - Move the code to translate new-bus interrupt flags into an interrupt thread priority out of the x86 nexus code and into a MI ithread_priority() function in sys/kern/kern_intr.c. - Remove now-uneeded x86-specific headers from sys/dev/ata/ata-all.c and sys/pci/pci_compat.c.
* Don't panic for delivery of a multiplexed SWI. Most SWI handlersbde2000-09-121-1/+4
| | | | | | | | | | | | don't take an arg, but swi_generic() is special in order to avoid one whole conditional branch in the old SWI dispatch code. The new SWI dispatch code passed it a garbage arg. Bypass swi_generic() and call swi_dispatcher() directly, like the corresponding alpha code has always done. The panic was rare because because it only occurred if more than one of the {sio,cy,rc} drivers was configured and one was active, and the cy driver doesn't even compile.
* Major update to the way synchronization is done in the kernel. Highlightsjasone2000-09-071-0/+353
include: * Mutual exclusion is used instead of spl*(). See mutex(9). (Note: The alpha port is still in transition and currently uses both.) * Per-CPU idle processes. * Interrupts are run in their own separate kernel threads and can be preempted (i386 only). Partially contributed by: BSDi (BSD/OS) Submissions by (at least): cp, dfr, dillon, grog, jake, jhb, sheldonh
OpenPOWER on IntegriCloud