Commit Graph

242 Commits

Author SHA1 Message Date
pgoyette
aae23aaf98 Constify the args to sysmon_envsys_foreach_sensor()'s callback function. 2010-03-27 13:34:16 +00:00
pgoyette
5dbc4fad52 Fix the locking protocol in sysmon_envsys_foreach_sensor(), and add an
additional argument to control whether or not the sensors are refreshed
before invoking the callback routine.
2010-03-27 13:23:18 +00:00
pgoyette
6c1f2c419a Make this work the way the preceeding comment blocks says it works, and
break out of the while{ } when the callback returns false, not when it
returns true!
2010-03-26 21:06:25 +00:00
pgoyette
1de3adb5f4 Add a routine to iterate over all the sensors on the system. This will
be needed to update acpiapm_get_powstat() which is currently slightly
broken due to recent rearrangement of acpi_bat(4)'s sensors.  (This
approach is in lieu of exporting proplists between kernel entities, and
avoids exposing some internal sysmon_envsys details.)
2010-03-26 20:31:06 +00:00
pgoyette
e235f1e850 Export the sensor device's class. 2010-03-26 12:36:59 +00:00
njoly
3e46e29198 Fix ENVSYS_DEBUG build. 2010-03-24 19:15:00 +00:00
pgoyette
7e351badfc In sysmon_envsys_sensor_event(), permit delivery of all events for the
sensor if no event type is specified.
2010-03-24 13:11:41 +00:00
pgoyette
f8d161b1f5 Do the initial refresh before creating the event monitors, in case the
event monitors require some of the data loaded by the refresh.  For
example, the initial refresh might load sensor limits and max_value in
addition to the cur_value.
2010-03-24 12:15:54 +00:00
pgoyette
bc480daf7a Additional info in DPRINTF to help debugging efforts 2010-03-23 16:52:02 +00:00
pgoyette
3a92a7609d Modify previous commit. The routine to deliver events is intended to be
exported to device drivers, so rename it and move the declaration to
<dev/sysmon/sysmonvar.h>
2010-03-19 02:19:13 +00:00
pgoyette
4e3cadf247 Separate event delivery from polling and limit evaluation in
sme_events_worker().

Provide a wrapper that can be called from sensor drivers' interrupt
routines to find and deliver a specific event.

XXX Actually updating sensor drivers (and their parent devices) to
XXX have interrupts is a future enhancement.  This is simply an
XXX enabler.
2010-03-19 01:16:44 +00:00
pgoyette
d5f3dc8bdd Retire the 'monitor' member of the envsys_data_t. It was only used in
one place, and functioned as a logical OR of the ENVSYS_FMON* flag bits.
2010-03-14 18:03:15 +00:00
jruoho
77c099394c Fix comment typos (mangement, managmenet). 2010-03-11 13:51:01 +00:00
pgoyette
06d81b8ad2 Move definitions of internal data structures and flag bits to avoid
exposing them to user-land.
2010-02-28 20:04:04 +00:00
pgoyette
f2b6b76565 If we're going to valdate things, at least do it correctly. 2010-02-18 12:30:53 +00:00
pgoyette
8844275b30 For symmetry, allow warning and critical upper-limits for capacity
sensors.
2010-02-15 22:32:04 +00:00
pgoyette
de08bb89f2 Replace large amount of replicated code with a macro to improve readability. 2010-02-14 23:30:52 +00:00
pgoyette
9150436462 Remove the flags member of the limits structure. Its value was only
meaningful for a few limited function calls;  all persitent storage
of limit-present flags is maintained in the edata->upropset member.
2010-02-14 23:06:01 +00:00
pgoyette
f84d320712 Correct one more instance of checking flags in the wrong place. 2010-02-14 16:22:09 +00:00
pgoyette
7bd93168ee When checking current sensor value vs limits, check the correct set of
flags to determine which limits are present.
2010-02-13 19:34:14 +00:00
jruoho
7ed7fa0c2a Fix a typo in one DPRINTF (s/edata->des/edata->desc/). 2010-02-05 19:22:25 +00:00
pgoyette
1fe73d6688 One more callback of sme_refresh() routine needs to check first that
there is a routine to be called!
2010-02-05 17:44:27 +00:00
pgoyette
4c60416219 If the AC adapter is flagged with SME_DISABLE_REFRESH, don't try to call
its refresh() callback.  Just assume that its value has been properly
updated by other means.
2010-02-04 18:06:53 +00:00
martin
2a2c96609a Fix an outdated comment, noticed by Paul Goyette. 2010-01-31 22:53:56 +00:00
martin
889f82dd49 Add a convenience function to find the maximum value currently reported
by a set (selected via a passed callback predicate) of sensors.
This provides an easy way to query the current temperature of a thermal
zone, for example, from within the kernel - assuming the caller knows
the topology.
2010-01-31 21:36:38 +00:00
pooka
fdca8d1743 print newline after timer expiry message 2010-01-31 02:54:56 +00:00
pooka
f510198e1c Make swwdog use no-needs-count. As the manpage says, there can be only one. 2010-01-30 21:55:28 +00:00
pgoyette
aaabf34dde Validate limit-based monitoring in one place, so we can apply the
constraints to both driver-requested and user-requested monitoring.

While here, clean up some of the debugging DPRINTFs.
2010-01-30 02:46:52 +00:00
pgoyette
af4bab2a6f Move the limits out of the event structure and into the main sensor.
Use the limits_flags only for calls to the {get,set}_limits() callbacks
and merge the results into upropset, rather than trying to maintain both
values (error prone).
2010-01-26 14:22:00 +00:00
pgoyette
299ee01345 If no limits are exceeded, make sure we set state to SVALID 2010-01-18 21:48:15 +00:00
pgoyette
4e1c0f753c Flags for existence of limit values need to be propagated to the
event data.  Otherwise, they're not processed.

XXX This needs to be rethought.  While fixing it this way makes things
XXX "work", we really shouldn't need to replicate these flags.  The
XXX limits and their flags should be kept as part of the sensor data,
XXX and not part of the event-monitor data.  I'll work on this in the
XXX near future.
2010-01-02 19:02:39 +00:00
pgoyette
801c007d68 Don't infer a sensor driver's ability to handle limit checking itself. 2010-01-01 15:41:25 +00:00
pgoyette
160a805c1d Check for value exceeding crit-max limit before checking against warn-max
limit.  Otherwise we'll never notice if we exceed crit-max (assuming that
crit-max is at least as large as warn-max).
2009-12-23 18:31:00 +00:00
jakllsch
d50bb58a85 Fix POWER_IOC_GET_TYPE.
The longest string in use with this seems to have been "acpi",
so size_t covered that, but on 32-bit ports omited the NUL.
2009-11-06 18:28:10 +00:00
pgoyette
d36ea2afc5 Document usage of PROP_DRIVER_LIMITS flag and set it correctly.
Use flag bits to determine validity of limit values, rather than
assuming that invalid/not-present values are set to zero.
2009-07-10 15:27:33 +00:00
pgoyette
0fab9769e4 Remove some code (bracketed by #ifdef NOTYET / #endif) that should not
have been committed in the first place.
2009-07-10 13:09:09 +00:00
pgoyette
e17701cfef Remove driver name from debug message. Not all drivers have set this
early enough, and we can easily figure out the driver name from some
subsequent debug messages.
2009-07-08 17:54:27 +00:00
pgoyette
c7ba8d5428 Initialize lims.sel_flags before using it. Prevents spurious limit
events being created for devices that don't provide internal limits.

Thanks to Mattias for finding this.
2009-07-08 17:28:53 +00:00
pgoyette
e65558aef1 Clean up a couple of debug statements that got missed previously. 2009-07-08 13:34:11 +00:00
pgoyette
45f4717820 Ooops - {get,set}_limits() need to be sensor-specific. Pass an extra
argument to them to identify the individual sensor being processed.
2009-06-14 19:43:12 +00:00
pgoyette
c235777756 Add capability to send sensor limit values to the driver so they can
be programmed into device registers.  This way we can let the hardware
help us out instead of having to always compare the value against each
limit.  (Driver updates for some sensors to take advantage of this
capability will be forthcoming.)
2009-06-13 16:08:25 +00:00
pgoyette
260b6fd907 Correct typo in last so we can #undef the correct macro. 2009-06-08 13:06:33 +00:00
pgoyette
f7ad703892 General clean-up and some restructuring of event handling. This is a
precursor to letting sensor drivers actually exchange limits/thresholds
with user-land.
2009-06-08 00:55:35 +00:00
pgoyette
677e91afbc Don't allocate the private list-threading structure unless we're going
to use it.  Otherwise we end up leaking little bits of memory for each
sensor that is not monitored at time of initial registration.
2009-06-03 11:43:15 +00:00
pgoyette
5a84f3060e Since we no longer have individual events for each sensor value limit,
we don't need individual flag bits.  Clean up extra bit definitions.
Bump kernel version - welcome to 5.99.13
2009-06-01 20:08:44 +00:00
dyoung
3afac3e189 Fix spelling: mak -> make. 2009-04-07 21:49:36 +00:00
pgoyette
438c6057be Fix typo in previous, and wrap a panic with #ifdef DIAGNOSTIC 2008-11-11 19:03:06 +00:00
pgoyette
0ba7ea9569 Initialize event's "previous sent state" based on the event monitor type,
regardless of sensor type.  Fixes spurious "device: normal state on
'sensor-name' messages (reported by ad@) which interfere with sysinst.
2008-11-11 16:55:01 +00:00
pgoyette
287fe7d56d Fix cut&paste error in prev 2008-11-04 22:16:15 +00:00
pgoyette
3880525312 Restore previous behavior concerning CRITICAL events. Send an event
whenever state enters or exits CRITICAL, or whenever value of sensor
changes while the state is CRITICAL.
2008-11-04 22:06:10 +00:00