Lines Matching +full:multi +full:- +full:subsystems
47 .Bl -bullet
85 .Bl -tag -width Ds
115 Interrupt context is split into two different sets: high-level and low-level
117 Most device drivers are always going to be executing low-level interrupts.
124 When executing high-level interrupts, the thread may only execute a limited
135 Aside from the above, one must not block while in high-level interrupt context.
137 On the other hand, when a thread is not in high-level interrupt context, most of
141 if using a non-blocking allocation such as
148 Regardless of whether a thread is in high-level or low-level interrupt context,
171 .It Sy Framework-specific Contexts
193 For each of these areas, we discuss high-level concepts behind each area and
242 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
263 internally using object caches and magazines to allow high-throughput
264 allocation in a multi-CPU environment.
320 networking, STREAMS, or USB subsystems, then they are generally using
343 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
365 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
400 These functions provide access to an intrusive self-balancing binary
404 Structures can be present in multiple trees and there are built-in
407 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
418 These functions provide a standard, intrusive doubly-linked list whose
428 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
439 .Ss Name-Value Pairs
442 data structure to pass around a list of typed name-value pairs.
463 Otherwise, the two different entries would co-exist.
466 allocator and may either use sleeping or non-sleeping allocations.
478 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
537 The ID space can cover all or a subset of the 32-bit integer space and
541 non-sleeping variants because the sleeping ones are not cancellable
546 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
573 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
591 high-level interrupt context, the kernel will use a spin lock, but
613 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
641 primitive such as a mutex or reader-writer lock, then there isn't a
643 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
704 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
715 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
746 This stores a driver-specific value on the
769 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
840 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
893 and unions vary in the size and alignment requirements between 32-bit
894 and 64-bit processes.
899 In supported 32-bit and 64-bit environments these types are 4 and 8
909 For example, the alignment of a 64-bit integer like a
911 can change between a 32-bit and 64-bit data model.
937 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
968 device-specific.
974 Most PCI-based device drivers will skip calling
1024 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1057 Most high-performance devices provide first-class support for DMA
1088 addresses that are 64-bits wide and may have to be constrained to the
1089 lower 32-bits of memory.
1185 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1204 Interrupts come in different types: fixed, MSI, and MSI-X.
1207 For example, MSI and MSI-X interrupts are generally specific to PCI and
1213 MSI-X, then MSI, and finally fixed interrupts, and try to allocate
1243 It is common to have an interrupt-specific data structure passed in one
1245 generally the driver's instance-specific data structure.
1264 It's important to note that there is often device-specific interrupt
1267 interrupt controller, I/O crossbar, or the PCI MSI and MSI-X
1268 capabilities, many devices have device-specific registers that are used
1287 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1369 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1377 .Bl -tag -width Ds
1378 .It High-resolution monotonic time
1379 The kernel provides access to a high-resolution monotonic clock that is
1383 Unlike the real-time clock, this clock is not subject to adjustments by
1386 The high-resolution clock is consistent across CPUs, meaning that you
1392 The high-resolution clock is implemented using an architecture and
1393 platform-specific means.
1396 .It Real-time
1397 The real-time clock tracks time as humans perceive it.
1408 on the real-time clock.
1409 For any device timing activities, the high-resolution clock should be
1411 .It Tick-based monotonic time
1427 In general, drivers should prefer the high-resolution monotonic clock
1444 is a busy-wait, which is appropriate for some device drivers,
1445 particularly when in high-level interrupt context.
1457 There is also a STREAMs-specific version that can be used if the
1462 These are all considered one-shot events.
1468 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1499 For high-volume events, this must be considered before just dispatching
1501 Do not rely on a non-sleeping allocation in the task queue dispatch
1503 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1529 It is up to drivers and the kernel writ-large to check whether a given
1536 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1555 These device IDs are used by other subsystems like ZFS to record
1568 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1580 the kernel for different subsystems including all of networking,
1614 .Bd -literal
1615 +---------------+
1617 | Bytes 0-1100 |
1618 | b_cont ---+--> NULL
1620 +---------|-----+
1623 +---------------+ +----------------+
1625 | Bytes 0-100 | | Bytes 100-1100 |
1626 | b_cont ---+--> | b_cont ----+->NULL
1627 | b_next + | | b_next ----+->NULL
1628 +---------|-----+ +----------------+
1633 +---------------+
1635 | Bytes 0-1100 |
1636 | b_cont ---+--> NULL
1637 | b_next ---+--> NULL
1638 +---------------+
1666 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1701 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1713 from the file system from well-known locations in the operating system.
1735 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1783 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1816 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1890 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1906 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
1928 The latter call is required to get access to the USB-level
1965 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2013 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2037 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2050 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2118 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2130 .It Xr mt-streams 9F Ta Xr qassociate 9F
2140 The following functions are used when a STREAMS-based device driver is
2160 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2182 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2208 which allows multiple name-value pairs to exist within the statistic.
2229 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2253 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2298 While a kernel pseudo-device driver cannot disappear while it is open,
2303 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2334 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2350 have more usable first-class methods of getting at the data.
2351 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2366 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2377 .Ss UTF-8, UTF-16, UTF-32, and Code Set Utilities
2381 that it is operating in, though some subsystems will require that the
2384 The primary other locales that the system supports are generally UTF-8
2385 based and so the kernel provides a set of routines to deal with UTF-8
2388 required or conversation between UTF-8 and some other type is required.
2391 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2410 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2422 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"
2451 This is the exclusive-IP option that is described in
2462 .Bl -column -offset indent "net_instance_protocol_unregister" "net_instance_protocol_unregister"