When powersave mode is enabled, the TSC stops counting while the CPU is halted
in idle() waiting for an interrupt. This means we can't use the TSC for
interval time in microtime(9), and thus it is disabled here.
It still makes a perfectly good cycle counter for program profiling, so long
as you remember you're counting cycles, and not time. Further, if you don't
mind not using powersave mode, the TSC works just fine, so this should really
be optional. XXX
- Add a @{var} syntax in addition to @var. This allows for patterns like
@{ostype}-@{osrelease}-@{machine_arch}.
- Add a @emul variable that expands to the process's emulation name
(e.g. "netbsd", "netbsd32", "linux", etc.)
microtime_func = cc_microtime;
to a point after the CPU-specific setup routine is called because some of them
"turn off" the TSC because it's broken on those platforms, or not suitable
for use as an interval timer.
One such platform is the Cyrix/NSC Geode processor; when powersave mode is
enabled, the "hlt" instruction stops the TSC too. It continues to be perfectly
reasonable for program profiling as a cycle counter in this mode, but it is
unsuitable for interval time keeping (time doesn't stop just because you're
asleep or napping), and, for now, we don't have a separate flag to make this
distinction - we just test for the presence of TSC to enable cc_microtime().
returns EINVAL, indicating that DMA cannot be done for this transfer.
Fall back to PIO in this case.
- Add a geodeide_dma_init() routine that checks to make sure that transfers
start on a 16 byte boundary, returning EINVAL if not. Works around a chip
bug that causes a hard system hang.
Problem reported and patch tested by Erik Fair.
count on the node that is passed in, because it belongs to the
driver. Also, do not increase the reference count on the refined
node, because ieee80211_refine_node_for_beacon's caller (ieee80211_input)
will never decrease the reference count.
As a general rule, reference counts are used for driver code to
assert ownership of ieee80211_nodes that are shared by the driver
and net80211 layer.