linux/drivers/macintosh/windfarm_core.c
<<
>>
v2.6.20.2 v2.6.32.49S valuonclick6.20.2tosdivete.c">toearch(eCis)liajax+*e="v2.6.20.2" > v2.6.20.2tosh/wind2e.c">todivst" onsuheadingbott mon="divete.c"="divete.c" c">todivsidpan valu_results"st" onsun valu_results"cinete.c">tosdivet odivsidpaconten.">t odivsidpafile_conten.s"n

">t1os+sd="post" onsucommen.">/*rch" met<_c atic/gfx/right.png" alt=">>#L2e=idpaL2e=t" onsubinee=namspaL2e>">t2os+sd="post" onsucommen."> * W alt="& PowerMac thermal control. C;&grch" met<_c atic/gfx/right.png" alt=">>#L3e=idpaL3e=t" onsubinee=namspaL3e>">t3os+sd="post" onsucommen."> *rch" met<_c atic/gfx/right.png" alt=">>#L4e=idpaL4e=t" onsubinee=namspaL4e>">t4os+sd="post" onsucommen."> * (c) C;pyr_sea 2005 Benjamin Herrenschmidt, IBM C;&p.rch" met<_c atic/gfx/right.png" alt=">>#L5e=idpaL5e=t" onsubinee=namspaL5e>">t5os+sd="post" onsucommen."> * <benh@kernel.crashing.orgactirch" met<_c atic/gfx/right.png" alt=">>#L6e=idpaL6e=t" onsubinee=namspaL6e>">t6os+sd="post" onsucommen."> *rch" met<_c atic/gfx/right.png" alt=">>#L7e=idpaL7e=t" onsubinee=namspaL7e>">t7os+sd="post" onsucommen."> * Rux+ased under the term of the GNU GPL ">t8os+sd="post" onsucommen."> *rch" met<_c atic/gfx/right.png" alt=">>#L9e=idpaL9e=t" onsubinee=namspaL9e>">t9os+sd="post" onsucommen."> * T v2 t;&g t;de tracks the list of sensors & controls, registerrch" met<_c atic/gfx/right.png" alt=">>#L10e=idpaL10e=t" onsubinee=namspaL10e>">.9 * clien.s, and holds the kernel thread used h/w control.rch" met<_c atic/gfx/right.png" alt=">>#L11e=idpaL11e=t" onsubinee=namspaL11e>">11os+sd="post" onsucommen."> *rch" met<_c atic/gfx/right.png" alt=">>#L12e=idpaL12e=t" onsubinee=namspaL12e>">12os+sd="post" onsucommen."> * TODO:rch" met<_c atic/gfx/right.png" alt=">>#L13e=idpaL13e=t" onsubinee=namspaL13e>">13os+sd="post" onsucommen."> *rch" met<_c atic/gfx/right.png" alt=">>#L14e=idpaL14e=t" onsubinee=namspaL14e>">14os+sd="post" onsucommen."> * Add some inh/wia aboouesensor/controle=fis and data h/wia torch" met<_c atic/gfx/right.png" alt=">>#L15e=idpaL15e=t" onsubinee=namspaL15e>">15os+sd="post" onsucommen."> * sensors/controls, and have the sysfs attribute stuff be movedrch" met<_c atic/gfx/right.png" alt=">>#L16e=idpaL16e=t" onsubinee=namspaL16e>">16os+sd="post" onsucommen."> * generically here instead of hard t;ded in the platearchspecificrch" met<_c atic/gfx/right.png" alt=">>#L17e=idpaL17e=t" onsubinee=namspaL17e>">17os+sd="post" onsucommen."> * atic/g as it us currentlyrch" met<_c atic/gfx/right.png" alt=">>#L18e=idpaL18e=t" onsubinee=namspaL18e>">18os+sd="post" onsucommen."> *rch" met<_c atic/gfx/right.png" alt=">>#L19e=idpaL19e=t" onsubinee=namspaL19e>">19os+sd="post" onsucommen."> * T v2 howec/g requires solving some annoying lifetime issues withrch" met<_c atic/gfx/right.png" alt=">>#L20e=idpaL20e=t" onsubinee=namspaL20e>">29 * sysfs whichoptesn'ueseem to have lifetime rules h/w struct attribute,rch" met<_c atic/gfx/right.png" alt=">>#L21e=idpaL21e=t" onsubinee=namspaL21e>">21os+sd="post" onsucommen."> * I may have to create full features kobjects h/w ec/gyesensor/controlrch" met<_c atic/gfx/right.png" alt=">>#L22e=idpaL22e=t" onsubinee=namspaL22e>">22os+sd="post" onsucommen."> * instead whichov2 a bit of posoverkill imhorch" met<_c atic/gfx/right.png" alt=">>#L23e=idpaL23e=t" onsubinee=namspaL23e>">23os+sd="post" onsucommen."> */rch" met<_c atic/gfx/right.png" alt=">>#L24e=idpaL24e=t" onsubinee=namspaL24e>">24os+st<_c atic/gfx/right.png" alt=">>#L25e=idpaL25e=t" onsubinee=namspaL25e>">25os+s#include <<_c includemg src/=fiss.he=t" onsuf ">g src/=fiss.hos+sactit<_c atic/gfx/right.png" alt=">>#L26e=idpaL26e=t" onsubinee=namspaL26e>">26os+s#include <<_c includemg src/errno.he=t" onsuf ">g src/errno.hos+sactit<_c atic/gfx/right.png" alt=">>#L27e=idpaL27e=t" onsubinee=namspaL27e>">27os+s#include <<_c includemg src/kernel.he=t" onsuf ">g src/kernel.hos+sactit<_c atic/gfx/right.png" alt=">>#L28e=idpaL28e=t" onsubinee=namspaL28e>">28os+s#include <<_c includemg src/slab.he=t" onsuf ">g src/slab.hos+sactit<_c atic/gfx/right.png" alt=">>#L29e=idpaL29e=t" onsubinee=namspaL29e>">29os+s#include <<_c includemg src/init.he=t" onsuf ">g src/init.hos+sactit<_c atic/gfx/right.png" alt=">>#L30e=idpaL30e=t" onsubinee=namspaL30e>">30os+s#include <<_c includemg src/spinlock.he=t" onsuf ">g src/spinlock.hos+sactit<_c atic/gfx/right.png" alt=">>#L31e=idpaL31e=t" onsubinee=namspaL31e>">31os+s#include <<_c includemg src/kthread.he=t" onsuf ">g src/kthread.hos+sactit<_c atic/gfx/right.png" alt=">>#L32e=idpaL32e=t" onsubinee=namspaL32e>">32os+s#include <<_c includemg src/jiffiss.he=t" onsuf ">g src/jiffiss.hos+sactit<_c atic/gfx/right.png" alt=">>#L33e=idpaL33e=t" onsubinee=namspaL33e>">33os+s#include <<_c includemg src/reboot.he=t" onsuf ">g src/reboot.hos+sactit<_c atic/gfx/right.png" alt=">>#L34e=idpaL34e=t" onsubinee=namspaL34e>">34os+s#include <<_c includemg src/device.he=t" onsuf ">g src/device.hos+sactit<_c atic/gfx/right.png" alt=">>#L35e=idpaL35e=t" onsubinee=namspaL35e>">35os+s#include <<_c includemg src/platearc_device.he=t" onsuf ">g src/platearc_device.hos+sactit<_c atic/gfx/right.png" alt=">>#L36e=idpaL36e=t" onsubinee=namspaL36e>">36os+s#include <<_c includemg src/mutex.he=t" onsuf ">g src/mutex.hos+sactit<_c atic/gfx/right.png" alt=">>#L37e=idpaL37e=t" onsubinee=namspaL37e>">37os+s#include <<_c includemg src/f ezer.he=t" onsuf ">g src/f ezer.hos+sactit<_c atic/gfx/right.png" alt=">>#L38e=idpaL38e=t" onsubinee=namspaL38e>">38os+st<_c atic/gfx/right.png" alt=">>#L39e=idpaL39e=t" onsubinee=namspaL39e>">39os+s#include <<_c +ambig=includemasm-alpha/prom.h|includemasm-arm/prom.h|includemasm-avr32/prom.h|includemasm-blackfin/prom.h|includemasm-cris/prom.h|includemasm-frv/prom.h|includemasm-generic/prom.h|includemasm-h8300/prom.h|includemasm-i386/prom.h|includemasm-ia64/prom.h|includemasm-m32r/prom.h|includemasm-m68k/prom.h|includemasm-m68knommu/prom.h|includemasm-mips/prom.h|includemasm-mips64/prom.h|includemasm-parisc/prom.h|includemasm-powerpc/prom.h|includemasm-ppc/prom.h|includemasm-s390/prom.h|includemasm-pngprom.h|includemasm-pn64/prom.h|includemasm-h" rc/prom.h|includemasm-s" rc64/prom.h|includemasm-um/prom.h|includemasm-v850/prom.h|includemasm-x86/prom.h|includemasm-x86_64/prom.h|includemasm-xtensa/prom.he=t" onsufal.">asm/prom.hos+sactit<_c atic/gfx/right.png" alt=">>#L40e=idpaL40e=t" onsubinee=namspaL40e>">40os+st<_c atic/gfx/right.png" alt=">>#L41e=idpaL41e=t" onsubinee=namspaL41e>">41os+s#include "<_c atic/gfx/right.png" alt="&.he=t" onsuf ">" alt="&.hos+saquot;t<_c atic/gfx/right.png" alt=">>#L42e=idpaL42e=t" onsubinee=namspaL42e>">42os+st<_c atic/gfx/right.png" alt=">>#L43e=idpaL43e=t" onsubinee=namspaL43e>">43os+s#definerm_c +t;de=VERSION"st" onsun ">VERSIONos+s d="post" onsustring"saquot;0.2"">44os+st<_c atic/gfx/right.png" alt=">>#L45e=idpaL45e=t" onsubinee=namspaL45e>">45os+s#undefrm_c +t;de=DEBUG"st" onsun ">DEBUGos+st<_c atic/gfx/right.png" alt=">>#L46e=idpaL46e=t" onsubinee=namspaL46e>">46os+st<_c atic/gfx/right.png" alt=">>#L47e=idpaL47e=t" onsubinee=namspaL47e>">47os+s#ifdefrm_c +t;de=DEBUG"st" onsun ">DEBUGos+st<_c atic/gfx/right.png" alt=">>#L48e=idpaL48e=t" onsubinee=namspaL48e>">48os+s#definerm_c +t;de=DBG"st" onsun ">DBGos+s(m_c +t;de=args"st" onsun ">argsos+s...)c">to_c +t;de=printk"st" onsun ">printkos+s(m_c +t;de=args"st" onsun ">argsos+s)t<_c atic/gfx/right.png" alt=">>#L49e=idpaL49e=t" onsubinee=namspaL49e>">49os+s#elset<_c atic/gfx/right.png" alt=">>#L50e=idpaL50e=t" onsubinee=namspaL50e>">50os+s#definerm_c +t;de=DBG"st" onsun ">DBGos+s(m_c +t;de=args"st" onsun ">argsos+s...)c">tdo { } while(0)t<_c atic/gfx/right.png" alt=">>#L51e=idpaL51e=t" onsubinee=namspaL51e>">51os+s#endift<_c atic/gfx/right.png" alt=">>#L52e=idpaL52e=t" onsubinee=namspaL52e>">52os+st<_c atic/gfx/right.png" alt=">>#L53e=idpaL53e=t" onsubinee=namspaL53e>">53os+sn clasrm_c +t;de=LIST_HEAD"st" onsun ">LIST_HEADos+s(m_c +t;de=wf_controls"st" onsun ">wf_controlsos+s);t<_c atic/gfx/right.png" alt=">>#L54e=idpaL54e=t" onsubinee=namspaL54e>">54os+sn clasrm_c +t;de=LIST_HEAD"st" onsun ">LIST_HEADos+s(m_c +t;de=wf_sensors"st" onsun ">wf_sensorsos+s);t<_c atic/gfx/right.png" alt=">>#L55e=idpaL55e=t" onsubinee=namspaL55e>">55os+sn clasrm_c +t;de=DEFINE_MUTEX"st" onsun ">DEFINE_MUTEXos+s(m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L56e=idpaL56e=t" onsubinee=namspaL56e>">56os+sn clasrm_c +t;de=BLOCKING_NOTIFIER_HEAD"st" onsun ">BLOCKING_NOTIFIER_HEADos+s(m_c +t;de=wf_clien._list"st" onsun ">wf_clien._listos+s);t<_c atic/gfx/right.png" alt=">>#L57e=idpaL57e=t" onsubinee=namspaL57e>">57os+sn clasrghtrm_c +t;de=wf_clien._count"st" onsun ">wf_clien._countos+s;t<_c atic/gfx/right.png" alt=">>#L58e=idpaL58e=t" onsubinee=namspaL58e>">58os+sn clasrunsigned intrm_c +t;de=wf_overtemp"st" onsun ">wf_overtempos+s;t<_c atic/gfx/right.png" alt=">>#L59e=idpaL59e=t" onsubinee=namspaL59e>">59os+sn clasrunsigned intrm_c +t;de=wf_overtemp_counter"st" onsun ">wf_overtemp_counteros+s;t<_c atic/gfx/right.png" alt=">>#L60e=idpaL60e=t" onsubinee=namspaL60e>">60os+sn ruct m_c +t;de=task_n ruct"st" onsun ">task_n ructos+s *m_c +t;de=wf_thread"st" onsun ">wf_threados+s;t<_c atic/gfx/right.png" alt=">>#L61e=idpaL61e=t" onsubinee=namspaL61e>">61os+st<_c atic/gfx/right.png" alt=">>#L62e=idpaL62e=t" onsubinee=namspaL62e>">62os+sn clasrn ruct m_c +t;de=platearc_device"st" onsun ">platearc_deviceos+s d_c +t;de=wf_platearc_device"st" onsun ">wf_platearc_deviceos+s = {t<_c atic/gfx/right.png" alt=">>#L63e=idpaL63e=t" onsubinee=namspaL63e>">63os+s .d_c +t;de=nams"st" onsun ">namsos+s = d="post" onsustring"saquot;" alt="&"">64os+s};t<_c atic/gfx/right.png" alt=">>#L65e=idpaL65e=t" onsubinee=namspaL65e>">65os+st<_c atic/gfx/right.png" alt=">>#L66e=idpaL66e=t" onsubinee=namspaL66e>">66os+sd="post" onsucommen.">/*rch" met<_c atic/gfx/right.png" alt=">>#L67e=idpaL67e=t" onsubinee=namspaL67e>">67os+sd="post" onsucommen."> * Utilities & lask threadosh" met<_c atic/gfx/right.png" alt=">>#L68e=idpaL68e=t" onsubinee=namspaL68e>">68os+sd="post" onsucommen."> */rch" met<_c atic/gfx/right.png" alt=">>#L69e=idpaL69e=t" onsubinee=namspaL69e>">69os+st<_c atic/gfx/right.png" alt=">>#L70e=idpaL70e=t" onsubinee=namspaL70e>">70os+sn clasrm_c +t;de=inbinee=t" onsun ">inbineos+s void d_c +t;de=wf_notify"st" onsun ">wf_notifyos+s(intrm_c +t;de=event"st" onsun ">eventos+s, void *m_c +t;de=param"st" onsun ">paramos+s)t<_c atic/gfx/right.png" alt=">>#L71e=idpaL71e=t" onsubinee=namspaL71e>">71os+s{t<_c atic/gfx/right.png" alt=">>#L72e=idpaL72e=t" onsubinee=namspaL72e>">72os+s m_c +t;de=blocking_notifier_call_chain"st" onsun ">blocking_notifier_call_chainos+s(&m_c +t;de=wf_clien._list"st" onsun ">wf_clien._listos+s,rm_c +t;de=event"st" onsun ">eventos+s, m_c +t;de=param"st" onsun ">paramos+s);t<_c atic/gfx/right.png" alt=">>#L73e=idpaL73e=t" onsubinee=namspaL73e>">73os+s}t<_c atic/gfx/right.png" alt=">>#L74e=idpaL74e=t" onsubinee=namspaL74e>">74os+st<_c atic/gfx/right.png" alt=">>#L75e=idpaL75e=t" onsubinee=namspaL75e>">75os+sghtrm_c +t;de=wf_critical_overtemp"st" onsun ">wf_critical_overtempos+s(void)t<_c atic/gfx/right.png" alt=">>#L76e=idpaL76e=t" onsubinee=namspaL76e>">76os+s{t<_c atic/gfx/right.png" alt=">>#L77e=idpaL77e=t" onsubinee=namspaL77e>">77os+s n clasrchar * m_c +t;de=critical_overtemp_path"st" onsun ">critical_overtemp_pathos+s = d="post" onsustring"saquot;/sbin/critical_overtemp"">78os+s char *m_c +t;de=argv"st" onsun ">argvos+s[] = { m_c +t;de=critical_overtemp_path"st" onsun ">critical_overtemp_pathos+s, m_c +t;de=NULL"st" onsun ">NULLos+s };t<_c atic/gfx/right.png" alt=">>#L79e=idpaL79e=t" onsubinee=namspaL79e>">79os+s n clasrchar *m_c +t;de=envp"st" onsun ">envpos+s[] = { m="post" onsustring"saquot;HOME=/"">80os+s m="post" onsustring"saquot;TERM=g src"">81os+s m="post" onsustring"saquot;PATH=/sbin:/usr/sbin:/bin:/usr/bin"">82os+s m_c +t;de=NULL"st" onsun ">NULLos+s };t<_c atic/gfx/right.png" alt=">>#L83e=idpaL83e=t" onsubinee=namspaL83e>">83os+st<_c atic/gfx/right.png" alt=">>#L84e=idpaL84e=t" onsubinee=namspaL84e>">84os+s 20.2call_userm;dehelperos+s(m_c +t;de=critical_overtemp_path"st" onsun ">critical_overtemp_pathos+s,t<_c atic/gfx/right.png" alt=">>#L85e=idpaL85e=t" onsubinee=namspaL85e>">85os+s m_c +t;de=argv"st" onsun ">argvos+s,rm_c +t;de=envp"st" onsun ">envpos+s,rm_c +t;de=UMH_WAIT_EXEC"st" onsun ">UMH_WAIT_EXECos+s);t<_c atic/gfx/right.png" alt=">>#L86e=idpaL86e=t" onsubinee=namspaL86e>">86os+s}t<_c atic/gfx/right.png" alt=">>#L87e=idpaL87e=t" onsubinee=namspaL87e>">87os+sd_c +t;de=EXPORT_SYMBOL_GPL"st" onsun ">EXPORT_SYMBOL_GPLos+s(m_c +t;de=wf_critical_overtemp"st" onsun ">wf_critical_overtempos+s);t<_c atic/gfx/right.png" alt=">>#L88e=idpaL88e=t" onsubinee=namspaL88e>">88os+st<_c atic/gfx/right.png" alt=">>#L89e=idpaL89e=t" onsubinee=namspaL89e>">89os+sn clasrghtrm_c +t;de=wf_thread_func"st" onsun ">wf_thread_funcos+s(void *m_c +t;de=data"st" onsun ">dataos+s)t<_c atic/gfx/right.png" alt=">>#L90e=idpaL90e=t" onsubinee=namspaL90e>">90os+s{t<_c atic/gfx/right.png" alt=">>#L91e=idpaL91e=t" onsubinee=namspaL91e>">91os+s unsigned longrm_c +t;de=next" t" onsun ">nextos+s,rm_c +t;de=delay"st" onsun ">delayos+s;t<_c atic/gfx/right.png" alt=">>#L92e=idpaL92e=t" onsubinee=namspaL92e>">92os+st<_c atic/gfx/right.png" alt=">>#L93e=idpaL93e=t" onsubinee=namspaL93e>">93os+s m_c +t;de=next" t" onsun ">nextos+s = d_c +t;de=jiffiss" t" onsun ">jiffissos+s;t<_c atic/gfx/right.png" alt=">>#L94e=idpaL94e=t" onsubinee=namspaL94e>">94os+st<_c atic/gfx/right.png" alt=">>#L95e=idpaL95e=t" onsubinee=namspaL95e>">95os+s m_c +t;de=DBG"st" onsun ">DBGos+s(m="post" onsustring"saquot;"f: thread n crted\n"">96os+st<_c atic/gfx/right.png" alt=">>#L97e=idpaL97e=t" onsubinee=namspaL97e>">97os+s m_c +t;de=set_f ezablee=t" onsun ">set_f ezableos+s();t<_c atic/gfx/right.png" alt=">>#L98e=idpaL98e=t" onsubinee=namspaL98e>">98os+s while (!m_c +t;de=kthread_should_stop"st" onsun ">kthread_should_stopos+s()) {t<_c atic/gfx/right.png" alt=">>#L99e=idpaL99e=t" onsubinee=namspaL99e>">99os+s m_c +t;de=try_to_f ezee=t" onsun ">try_to_f ezeos+s();t<_c atic/gfx/right.png" alt=">>#L100e=idpaL100e=t" onsubinee=namspaL100e>"100os+st<_c atic/gfx/right.png" alt=">>#L101e=idpaL101e=t" onsubinee=namspaL101e>"101os+s if (m_c +t;de=time_after_eqe=t" onsun ">time_after_eqos+s(m_c +t;de=jiffiss" t" onsun ">jiffissos+s,rm_c +t;de=next" t" onsun ">nextos+s)) {t<_c atic/gfx/right.png" alt=">>#L102e=idpaL102e=t" onsubinee=namspaL102e>"102os+s d_c +t;de=wf_notify"st" onsun ">wf_notifyos+s(d_c +t;de=WF_EVENT_TICK"st" onsun ">WF_EVENT_TICKos+s, m_c +t;de=NULL"st" onsun ">NULLos+s);t<_c atic/gfx/right.png" alt=">>#L103e=idpaL103e=t" onsubinee=namspaL103e>"103os+s if (m_c +t;de=wf_overtemp"st" onsun ">wf_overtempos+s) {t<_c atic/gfx/right.png" alt=">>#L104e=idpaL104e=t" onsubinee=namspaL104e>"104os+s d_c +t;de=wf_overtemp_counter"st" onsun ">wf_overtemp_counteros+s++;t<_c atic/gfx/right.png" alt=">>#L105e=idpaL105e=t" onsubinee=namspaL105e>"105os+s d="post" onsucommen.">/*"10 seconds overtemp, notify userland */rch" met<_c atic/gfx/right.png" alt=">>#L106e=idpaL106e=t" onsubinee=namspaL106e>"106os+s if (m_c +t;de=wf_overtemp_counter"st" onsun ">wf_overtemp_counteros+s acti"10)t<_c atic/gfx/right.png" alt=">>#L107e=idpaL107e=t" onsubinee=namspaL107e>"107os+s d_c +t;de=wf_critical_overtemp"st" onsun ">wf_critical_overtempos+s();t<_c atic/gfx/right.png" alt=">>#L108e=idpaL108e=t" onsubinee=namspaL108e>"108os+s d="post" onsucommen.">/*"30 seconds, shutdown */rch" met<_c atic/gfx/right.png" alt=">>#L109e=idpaL109e=t" onsubinee=namspaL109e>"109os+s if (m_c +t;de=wf_overtemp_counter"st" onsun ">wf_overtemp_counteros+s acti"30) {t<_c atic/gfx/right.png" alt=">>#L110e=idpaL110e=t" onsubinee=namspaL110e>"110os+s d_c +t;de=printk"st" onsun ">printkos+s(m_c +t;de=KERN_ERR"st" onsun ">KERN_ERRos+s d="post" onsustring"saquot;" alt="&: Overtemp ""111os+s d="post" onsustring"saquot;h/w m;&g thpos30""112os+s d="post" onsustring"saquot; seconds, shutting down\n""113os+s d_c +t;de=/rihine_power_off"st" onsun ">/rihine_power_offos+s();t<_c atic/gfx/right.png" alt=">>#L114e=idpaL114e=t" onsubinee=namspaL114e>"114os+s }t<_c atic/gfx/right.png" alt=">>#L115e=idpaL115e=t" onsubinee=namspaL115e>"115os+s }t<_c atic/gfx/right.png" alt=">>#L116e=idpaL116e=t" onsubinee=namspaL116e>"116os+s m_c +t;de=next" t" onsun ">nextos+s += d_c +t;de=HZ" t" onsun ">HZos+s;t<_c atic/gfx/right.png" alt=">>#L117e=idpaL117e=t" onsubinee=namspaL117e>"117os+s }t<_c atic/gfx/right.png" alt=">>#L118e=idpaL118e=t" onsubinee=namspaL118e>"118os+st<_c atic/gfx/right.png" alt=">>#L119e=idpaL119e=t" onsubinee=namspaL119e>"119os+s m_c +t;de=delay"st" onsun ">delayos+s = d_c +t;de=next" t" onsun ">nextos+s - d_c +t;de=jiffiss" t" onsun ">jiffissos+s;t<_c atic/gfx/right.png" alt=">>#L120e=idpaL120e=t" onsubinee=namspaL120e>"120os+s if (m_c +t;de=delay"st" onsun ">delayos+s <= d_c +t;de=HZ" t" onsun ">HZos+s)t<_c atic/gfx/right.png" alt=">>#L121e=idpaL121e=t" onsubinee=namspaL121e>"121os+s m_c +t;de=schedule_timeout_interruptiblee=t" onsun ">schedule_timeout_interruptibleos+s(m_c +t;de=delay"st" onsun ">delayos+s);t<_c atic/gfx/right.png" alt=">>#L122e=idpaL122e=t" onsubinee=namspaL122e>"122os+s }t<_c atic/gfx/right.png" alt=">>#L123e=idpaL123e=t" onsubinee=namspaL123e>"123os+st<_c atic/gfx/right.png" alt=">>#L124e=idpaL124e=t" onsubinee=namspaL124e>"124os+s m_c +t;de=DBG"st" onsun ">DBGos+s(m="post" onsustring"saquot;"f: thread n opped\n""125os+st<_c atic/gfx/right.png" alt=">>#L126e=idpaL126e=t" onsubinee=namspaL126e>"126os+s 20.2"127os+s}t<_c atic/gfx/right.png" alt=">>#L128e=idpaL128e=t" onsubinee=namspaL128e>"128os+st<_c atic/gfx/right.png" alt=">>#L129e=idpaL129e=t" onsubinee=namspaL129e>"129os+sn clasrvoid d_c +t;de=wf_n crt_thread"st" onsun ">wf_n crt_threados+s(void)t<_c atic/gfx/right.png" alt=">>#L130e=idpaL130e=t" onsubinee=namspaL130e>"130os+s{t<_c atic/gfx/right.png" alt=">>#L131e=idpaL131e=t" onsubinee=namspaL131e>"131os+s m_c +t;de=wf_thread"st" onsun ">wf_threados+s = d_c +t;de=kthread_run"st" onsun ">kthread_runos+s(m_c +t;de=wf_thread_func"st" onsun ">wf_thread_funcos+s, m_c +t;de=NULL"st" onsun ">NULLos+s, d="post" onsustring"saquot;k" alt="&""132os+s if (m_c +t;de=IS_ERR"st" onsun ">IS_ERRos+s(m_c +t;de=wf_thread"st" onsun ">wf_threados+s)) {t<_c atic/gfx/right.png" alt=">>#L133e=idpaL133e=t" onsubinee=namspaL133e>"133os+s d_c +t;de=printk"st" onsun ">printkos+s(m_c +t;de=KERN_ERR"st" onsun ">KERN_ERRos+s d="post" onsustring"saquot;" alt="&: failed to create thread,err %ld\n""134os+s m_c +t;de=PTR_ERR"st" onsun ">PTR_ERRos+s(m_c +t;de=wf_thread"st" onsun ">wf_threados+s));t<_c atic/gfx/right.png" alt=">>#L135e=idpaL135e=t" onsubinee=namspaL135e>"135os+s m_c +t;de=wf_thread"st" onsun ">wf_threados+s = d_c +t;de=NULL"st" onsun ">NULLos+s;t<_c atic/gfx/right.png" alt=">>#L136e=idpaL136e=t" onsubinee=namspaL136e>"136os+s }t<_c atic/gfx/right.png" alt=">>#L137e=idpaL137e=t" onsubinee=namspaL137e>"137os+s}t<_c atic/gfx/right.png" alt=">>#L138e=idpaL138e=t" onsubinee=namspaL138e>"138os+st<_c atic/gfx/right.png" alt=">>#L139e=idpaL139e=t" onsubinee=namspaL139e>"139os+st<_c atic/gfx/right.png" alt=">>#L140e=idpaL140e=t" onsubinee=namspaL140e>"140os+sn clasrvoid d_c +t;de=wf_n op_thread"st" onsun ">wf_n op_threados+s(void)t<_c atic/gfx/right.png" alt=">>#L141e=idpaL141e=t" onsubinee=namspaL141e>"141os+s{t<_c atic/gfx/right.png" alt=">>#L142e=idpaL142e=t" onsubinee=namspaL142e>"142os+s if (m_c +t;de=wf_thread"st" onsun ">wf_threados+s)t<_c atic/gfx/right.png" alt=">>#L143e=idpaL143e=t" onsubinee=namspaL143e>"143os+s d_c +t;de=kthread_stop"st" onsun ">kthread_stopos+s(m_c +t;de=wf_thread"st" onsun ">wf_threados+s);t<_c atic/gfx/right.png" alt=">>#L144e=idpaL144e=t" onsubinee=namspaL144e>"144os+s m_c +t;de=wf_thread"st" onsun ">wf_threados+s = d_c +t;de=NULL"st" onsun ">NULLos+s;t<_c atic/gfx/right.png" alt=">>#L145e=idpaL145e=t" onsubinee=namspaL145e>"145os+s}t<_c atic/gfx/right.png" alt=">>#L146e=idpaL146e=t" onsubinee=namspaL146e>"146os+st<_c atic/gfx/right.png" alt=">>#L147e=idpaL147e=t" onsubinee=namspaL147e>"147os+sd="post" onsucommen.">/*rch" met<_c atic/gfx/right.png" alt=">>#L148e=idpaL148e=t" onsubinee=namspaL148e>"148os+sd="post" onsucommen."> * Controlsosh" met<_c atic/gfx/right.png" alt=">>#L149e=idpaL149e=t" onsubinee=namspaL149e>"149os+sd="post" onsucommen."> */rch" met<_c atic/gfx/right.png" alt=">>#L150e=idpaL150e=t" onsubinee=namspaL150e>"150os+st<_c atic/gfx/right.png" alt=">>#L151e=idpaL151e=t" onsubinee=namspaL151e>"151os+sn clasrvoid d_c +t;de=wf_control_rux+ase"st" onsun ">wf_control_rux+aseos+s(n ruct m_c +t;de=k "st" onsun ">k os+s *m_c +t;de=k "st" onsun ">k os+s)t<_c atic/gfx/right.png" alt=">>#L152e=idpaL152e=t" onsubinee=namspaL152e>"152os+s{t<_c atic/gfx/right.png" alt=">>#L153e=idpaL153e=t" onsubinee=namspaL153e>"153os+s n ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s *m_c +t;de=ct"st" onsun ">ctos+s = d_c +t;de=container_of"st" onsun ">container_ofos+s(m_c +t;de=k "st" onsun ">k os+s, n ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s, m_c +t;de= "st" onsun "> os+s);t<_c atic/gfx/right.png" alt=">>#L154e=idpaL154e=t" onsubinee=namspaL154e>"154os+st<_c atic/gfx/right.png" alt=">>#L155e=idpaL155e=t" onsubinee=namspaL155e>"155os+s m_c +t;de=DBG"st" onsun ">DBGos+s(m="post" onsustring"saquot;"f: Dux+ting controle%s\n"ctos+s-actir_c +t;de=nams"st" onsun ">namsos+s);t<_c atic/gfx/right.png" alt=">>#L156e=idpaL156e=t" onsubinee=namspaL156e>"156os+st<_c atic/gfx/right.png" alt=">>#L157e=idpaL157e=t" onsubinee=namspaL157e>"157os+s if (m_c +t;de=ct"st" onsun ">ctos+s-actir_c +t;de=ops" t" onsun ">opsos+s && m_c +t;de=ct"st" onsun ">ctos+s-actir_c +t;de=ops" t" onsun ">opsos+s-actir_c +t;de=rux+ase"st" onsun ">rux+aseos+s)t<_c atic/gfx/right.png" alt=">>#L158e=idpaL158e=t" onsubinee=namspaL158e>"158os+s m_c +t;de=ct"st" onsun ">ctos+s-actir_c +t;de=ops" t" onsun ">opsos+s-actir_c +t;de=rux+ase"st" onsun ">rux+aseos+s(m_c +t;de=ct"st" onsun ">ctos+s);t<_c atic/gfx/right.png" alt=">>#L159e=idpaL159e=t" onsubinee=namspaL159e>"159os+s elset<_c atic/gfx/right.png" alt=">>#L160e=idpaL160e=t" onsubinee=namspaL160e>"160os+s m_c +t;de=kf e"st" onsun ">kf eos+s(m_c +t;de=ct"st" onsun ">ctos+s);t<_c atic/gfx/right.png" alt=">>#L161e=idpaL161e=t" onsubinee=namspaL161e>"161os+s}t<_c atic/gfx/right.png" alt=">>#L162e=idpaL162e=t" onsubinee=namspaL162e>"162os+st<_c atic/gfx/right.png" alt=">>#L163e=idpaL163e=t" onsubinee=namspaL163e>"163os+sn clasrm_c +t;de=ssize_t"st" onsun ">ssize_tos+s d_c +t;de=wf_nhow_control"st" onsun ">wf_nhow_controlos+s(n ruct m_c +t;de=device"st" onsun ">deviceos+s *m_c +t;de=dev"st" onsun ">devos+s,t<_c atic/gfx/right.png" alt=">>#L164e=idpaL164e=t" onsubinee=namspaL164e>"164os+s n ruct m_c +t;de=device_attribute"st" onsun ">device_attributeos+s *m_c +t;de=attr"st" onsun ">attros+s, char *m_c +t;de=bu "st" onsun ">bu os+s)t<_c atic/gfx/right.png" alt=">>#L165e=idpaL165e=t" onsubinee=namspaL165e>"165os+s{t<_c atic/gfx/right.png" alt=">>#L166e=idpaL166e=t" onsubinee=namspaL166e>"166os+s n ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s *m_c +t;de=ctrl"st" onsun ">ctrlos+s = d_c +t;de=container_of"st" onsun ">container_ofos+s(m_c +t;de=attr"st" onsun ">attros+s, n ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s, m_c +t;de=attr"st" onsun ">attros+s);t<_c atic/gfx/right.png" alt=">>#L167e=idpaL167e=t" onsubinee=namspaL167e>"167os+s const char *m_c +t;de==fisstr"st" onsun ">=fisstros+s;t<_c atic/gfx/right.png" alt=">>#L168e=idpaL168e=t" onsubinee=namspaL168e>"168os+s m_c +t;de=s32e=t" onsun ">s32os+s m_c +t;de=val"st" onsun ">valos+s = 0;t<_c atic/gfx/right.png" alt=">>#L169e=idpaL169e=t" onsubinee=namspaL169e>"169os+s intrm_c +t;de=err"st" onsun ">erros+s;t<_c atic/gfx/right.png" alt=">>#L170e=idpaL170e=t" onsubinee=namspaL170e>"170os+st<_c atic/gfx/right.png" alt=">>#L171e=idpaL171e=t" onsubinee=namspaL171e>"171os+s m_c +t;de=err"st" onsun ">erros+s = d_c +t;de=ctrl"st" onsun ">ctrlos+s-actir_c +t;de=ops" t" onsun ">opsos+s-actir_c +t;de=get_ get_ ctrlos+s, &m_c +t;de=val"st" onsun ">valos+s);t<_c atic/gfx/right.png" alt=">>#L172e=idpaL172e=t" onsubinee=namspaL172e>"172os+s if (m_c +t;de=err"st" onsun ">erros+s < 0) {t<_c atic/gfx/right.png" alt=">>#L173e=idpaL173e=t" onsubinee=namspaL173e>"173os+s if (m_c +t;de=err"st" onsun ">erros+s == -m_c +t;de=EFAULT"st" onsun ">EFAULTos+s)t<_c atic/gfx/right.png" alt=">>#L174e=idpaL174e=t" onsubinee=namspaL174e>"174os+s 20.2sprintfos+s(m_c +t;de=bu "st" onsun ">bu os+s, d="post" onsustring"saquot;<HW FAULTacti\n""175os+s 20.2erros+s;t<_c atic/gfx/right.png" alt=">>#L176e=idpaL176e=t" onsubinee=namspaL176e>"176os+s }t<_c atic/gfx/right.png" alt=">>#L177e=idpaL177e=t" onsubinee=namspaL177e>"177os+s nwitch(m_c +t;de=ctrl"st" onsun ">ctrlos+s-actir_c +t;de==fis"st" onsun ">=fisos+s) {t<_c atic/gfx/right.png" alt=">>#L178e=idpaL178e=t" onsubinee=namspaL178e>"178os+s caseom_c +t;de=WF_CONTROL_RPM_FAN"st" onsun ">WF_CONTROL_RPM_FANos+s:t<_c atic/gfx/right.png" alt=">>#L179e=idpaL179e=t" onsubinee=namspaL179e>"179os+s m_c +t;de=tfisstr"st" onsun ">=fisstros+s = d="post" onsustring"saquot; RPM""180os+s break;t<_c atic/gfx/right.png" alt=">>#L181e=idpaL181e=t" onsubinee=namspaL181e>"181os+s caseom_c +t;de=WF_CONTROL_PWM_FAN"st" onsun ">WF_CONTROL_PWM_FANos+s:t<_c atic/gfx/right.png" alt=">>#L182e=idpaL182e=t" onsubinee=namspaL182e>"182os+s m_c +t;de=tfisstr"st" onsun ">=fisstros+s = d="post" onsustring"saquot; %""183os+s break;t<_c atic/gfx/right.png" alt=">>#L184e=idpaL184e=t" onsubinee=namspaL184e>"184os+s default:t<_c atic/gfx/right.png" alt=">>#L185e=idpaL185e=t" onsubinee=namspaL185e>"185os+s m_c +t;de=tfisstr"st" onsun ">=fisstros+s = d="post" onsustring"saquot;""186os+s }t<_c atic/gfx/right.png" alt=">>#L187e=idpaL187e=t" onsubinee=namspaL187e>"187os+s 20.2sprintfos+s(m_c +t;de=bu "st" onsun ">bu os+s, d="post" onsustring"saquot;%d%s\n"valos+s, d_c +t;de=tfisstr"st" onsun ">=fisstros+s);t<_c atic/gfx/right.png" alt=">>#L188e=idpaL188e=t" onsubinee=namspaL188e>"188os+s}t<_c atic/gfx/right.png" alt=">>#L189e=idpaL189e=t" onsubinee=namspaL189e>"189os+st<_c atic/gfx/right.png" alt=">>#L190e=idpaL190e=t" onsubinee=namspaL190e>"199/* T v2 v2 really only h/w debugging... */rch" met<_c atic/gfx/right.png" alt=">>#L191e=idpaL191e=t" onsubinee=namspaL191e>"191os+sn clasrm_c +t;de=ssize_t"st" onsun ">ssize_tos+s d_c +t;de=wf_nt;&g_control"st" onsun ">wf_nt;&g_controlos+s(n ruct m_c +t;de=device"st" onsun ">deviceos+s *m_c +t;de=dev"st" onsun ">devos+s,t<_c atic/gfx/right.png" alt=">>#L192e=idpaL192e=t" onsubinee=namspaL192e>"192os+s n ruct m_c +t;de=device_attribute"st" onsun ">device_attributeos+s *m_c +t;de=attr"st" onsun ">attros+s,t<_c atic/gfx/right.png" alt=">>#L193e=idpaL193e=t" onsubinee=namspaL193e>"193os+s const char *m_c +t;de=bu "st" onsun ">bu os+s, d_c +t;de=size_t"st" onsun ">size_tos+s d_c +t;de=count"st" onsun ">countos+s)t<_c atic/gfx/right.png" alt=">>#L194e=idpaL194e=t" onsubinee=namspaL194e>"194os+s{t<_c atic/gfx/right.png" alt=">>#L195e=idpaL195e=t" onsubinee=namspaL195e>"195os+s n ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s *m_c +t;de=ctrl"st" onsun ">ctrlos+s = d_c +t;de=container_of"st" onsun ">container_ofos+s(m_c +t;de=attr"st" onsun ">attros+s, n ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s, m_c +t;de=attr"st" onsun ">attros+s);t<_c atic/gfx/right.png" alt=">>#L196e=idpaL196e=t" onsubinee=namspaL196e>"196os+s intrm_c +t;de=val"st" onsun ">valos+s;t<_c atic/gfx/right.png" alt=">>#L197e=idpaL197e=t" onsubinee=namspaL197e>"197os+s intrm_c +t;de=err"st" onsun ">erros+s;t<_c atic/gfx/right.png" alt=">>#L198e=idpaL198e=t" onsubinee=namspaL198e>"198os+s char *m_c +t;de=endp"st" onsun ">endpos+s;t<_c atic/gfx/right.png" alt=">>#L199e=idpaL199e=t" onsubinee=namspaL199e>"199os+st<_c atic/gfx/right.png" alt=">>#L200e=idpaL200e=t" onsubinee=namspaL200e>"200os+s m_c +t;de=val"st" onsun ">valos+s = d_c +t;de=simple_n rtoul"st" onsun ">simple_n rtoulos+s(m_c +t;de=bu "st" onsun ">bu os+s, &m_c +t;de=endp"st" onsun ">endpos+s, 0);t<_c atic/gfx/right.png" alt=">>#L201e=idpaL201e=t" onsubinee=namspaL201e>"201os+s while (m_c +t;de=endp"st" onsun ">endpos+s < m_c +t;de=bu "st" onsun ">bu os+s + d_c +t;de=count"st" onsun ">countos+s && (*m_c +t;de=endp"st" onsun ">endpos+s == d="post" onsustring"sa#39; a#39;rch" me || *m_c +t;de=endp"st" onsun ">endpos+s == d="post" onsustring"sa#39;\na#39;rch" me))t<_c atic/gfx/right.png" alt=">>#L202e=idpaL202e=t" onsubinee=namspaL202e>"202os+s ++m_c +t;de=endp"st" onsun ">endpos+s;t<_c atic/gfx/right.png" alt=">>#L203e=idpaL203e=t" onsubinee=namspaL203e>"203os+s if (m_c +t;de=endp"st" onsun ">endpos+s - d_c +t;de=bu "st" onsun ">bu os+s < m_c +t;de=count"st" onsun ">countos+s)t<_c atic/gfx/right.png" alt=">>#L204e=idpaL204e=t" onsubinee=namspaL204e>"204os+s 20.2EINVALos+s;t<_c atic/gfx/right.png" alt=">>#L205e=idpaL205e=t" onsubinee=namspaL205e>"205os+s m_c +t;de=err"st" onsun ">erros+s = d_c +t;de=ctrl"st" onsun ">ctrlos+s-actir_c +t;de=ops" t" onsun ">opsos+s-actir_c +t;de=set_ set_ ctrlos+s, m_c +t;de=val"st" onsun ">valos+s);t<_c atic/gfx/right.png" alt=">>#L206e=idpaL206e=t" onsubinee=namspaL206e>"206os+s if (m_c +t;de=err"st" onsun ">erros+s < 0)t<_c atic/gfx/right.png" alt=">>#L207e=idpaL207e=t" onsubinee=namspaL207e>"207os+s 20.2erros+s;t<_c atic/gfx/right.png" alt=">>#L208e=idpaL208e=t" onsubinee=namspaL208e>"208os+s 20.2countos+s;t<_c atic/gfx/right.png" alt=">>#L209e=idpaL209e=t" onsubinee=namspaL209e>"209os+s}t<_c atic/gfx/right.png" alt=">>#L210e=idpaL210e=t" onsubinee=namspaL210e>"210os+st<_c atic/gfx/right.png" alt=">>#L211e=idpaL211e=t" onsubinee=namspaL211e>"211os+sintrm_c +t;de=wf_register_control"st" onsun ">wf_register_controlos+s(n ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s *m_c +t;de=new_ct"st" onsun ">new_ctos+s)t<_c atic/gfx/right.png" alt=">>#L212e=idpaL212e=t" onsubinee=namspaL212e>"212os+s{t<_c atic/gfx/right.png" alt=">>#L213e=idpaL213e=t" onsubinee=namspaL213e>"213os+s n ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s *m_c +t;de=ct"st" onsun ">ctos+s;t<_c atic/gfx/right.png" alt=">>#L214e=idpaL214e=t" onsubinee=namspaL214e>"214os+st<_c atic/gfx/right.png" alt=">>#L215e=idpaL215e=t" onsubinee=namspaL215e>"215os+s m_c +t;de=mutex_lock"st" onsun ">mutex_lockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L216e=idpaL216e=t" onsubinee=namspaL216e>"216os+s m_c +t;de=list_for_each_entry"st" onsun ">list_for_each_entryos+s(m_c +t;de=ct"st" onsun ">ctos+s, &m_c +t;de=wf_controls"st" onsun ">wf_controlsos+s, m_c +t;de=bink"st" onsun ">binkos+s) {t<_c atic/gfx/right.png" alt=">>#L217e=idpaL217e=t" onsubinee=namspaL217e>"217os+s if (!m_c +t;de=n rcmp"st" onsun ">n rcmpos+s(m_c +t;de=ct"st" onsun ">ctos+s-actir_c +t;de=nams"st" onsun ">namsos+s,rm_c +t;de=new_ct"st" onsun ">new_ctos+s-actir_c +t;de=nams"st" onsun ">namsos+s)) {t<_c atic/gfx/right.png" alt=">>#L218e=idpaL218e=t" onsubinee=namspaL218e>"218os+s r_c +t;de=printk"st" onsun ">printkos+s(m_c +t;de=KERN_WARNING"st" onsun ">KERN_WARNINGos+s d="post" onsustring"saquot;" alt="&: trying to register""219os+s r="post" onsustring"saquot; duplicate controle%s\n"ctos+s-actir_c +t;de=nams"st" onsun ">namsos+s);t<_c atic/gfx/right.png" alt=">>#L220e=idpaL220e=t" onsubinee=namspaL220e>"220os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L221e=idpaL221e=t" onsubinee=namspaL221e>"221os+s 20.2EEXISTos+s;t<_c atic/gfx/right.png" alt=">>#L222e=idpaL222e=t" onsubinee=namspaL222e>"222os+s }t<_c atic/gfx/right.png" alt=">>#L223e=idpaL223e=t" onsubinee=namspaL223e>"223os+s }t<_c atic/gfx/right.png" alt=">>#L224e=idpaL224e=t" onsubinee=namspaL224e>"224os+s m_c +t;de=k _init"st" onsun ">k _initos+s(&m_c +t;de=new_ct"st" onsun ">new_ctos+s-actir_c +t;de= "st" onsun ">r os+s);t<_c atic/gfx/right.png" alt=">>#L225e=idpaL225e=t" onsubinee=namspaL225e>"225os+s m_c +t;de=list_add"st" onsun ">list_addos+s(&m_c +t;de=new_ct"st" onsun ">new_ctos+s-actir_c +t;de=bink"st" onsun ">binkos+s, &m_c +t;de=wf_controls"st" onsun ">wf_controlsos+s);t<_c atic/gfx/right.png" alt=">>#L226e=idpaL226e=t" onsubinee=namspaL226e>"226os+st<_c atic/gfx/right.png" alt=">>#L227e=idpaL227e=t" onsubinee=namspaL227e>"227os+s m_c +t;de=sysfs_attr_init"st" onsun ">sysfs_attr_initos+s(&m_c +t;de=new_ct"st" onsun ">new_ctos+s-actir_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=attr"st" onsun ">attros+s);t<_c atic/gfx/right.png" alt=">>#L228e=idpaL228e=t" onsubinee=namspaL228e>"228os+s m_c +t;de=new_ct"st" onsun ">new_ctos+s-actir_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=nams"st" onsun ">namsos+s = d_c +t;de=new_ct"st" onsun ">new_ctos+s-actir_c +t;de=nams"st" onsun ">namsos+s;t<_c atic/gfx/right.png" alt=">>#L229e=idpaL229e=t" onsubinee=namspaL229e>"229os+s m_c +t;de=new_ct"st" onsun ">new_ctos+s-actir_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=m;de"st" onsun ">m;deos+s = 0644;t<_c atic/gfx/right.png" alt=">>#L230e=idpaL230e=t" onsubinee=namspaL230e>"230os+s m_c +t;de=new_ct"st" onsun ">new_ctos+s-actir_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=nhow"st" onsun ">showos+s = d_c +t;de=wf_nhow_control"st" onsun ">wf_nhow_controlos+s;t<_c atic/gfx/right.png" alt=">>#L231e=idpaL231e=t" onsubinee=namspaL231e>"231os+s m_c +t;de=new_ct"st" onsun ">new_ctos+s-actir_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=nt;&g"st" onsun ">n ;&gos+s = d_c +t;de=wf_nt;&g_control"st" onsun ">wf_nt;&g_controlos+s;t<_c atic/gfx/right.png" alt=">>#L232e=idpaL232e=t" onsubinee=namspaL232e>"232os+s if (m_c +t;de=device_create_filee=t" onsun ">device_create_fileos+s(&m_c +t;de=wf_platearc_device"st" onsun ">wf_platearc_deviceos+s.d_c +t;de=dev"st" onsun ">devos+s, &m_c +t;de=new_ct"st" onsun ">new_ctos+s-actir_c +t;de=attr"st" onsun ">attros+s))t<_c atic/gfx/right.png" alt=">>#L233e=idpaL233e=t" onsubinee=namspaL233e>"233os+s d_c +t;de=printk"st" onsun ">printkos+s(m_c +t;de=KERN_WARNING"st" onsun ">KERN_WARNINGos+s d="post" onsustring"saquot;" alt="&: device_create_file failed""234os+s r="post" onsustring"saquot; h/w %s\n"new_ctos+s-actir_c +t;de=nams"st" onsun ">namsos+s);t<_c atic/gfx/right.png" alt=">>#L235e=idpaL235e=t" onsubinee=namspaL235e>"235os+s m="post" onsucommen.">/* the subsystem still does useful work without the file */rch" met<_c atic/gfx/right.png" alt=">>#L236e=idpaL236e=t" onsubinee=namspaL236e>"236os+st<_c atic/gfx/right.png" alt=">>#L237e=idpaL237e=t" onsubinee=namspaL237e>"237os+s m_c +t;de=DBG"st" onsun ">DBGos+s(m="post" onsustring"saquot;"f: Registered controle%s\n"new_ctos+s-actir_c +t;de=nams"st" onsun ">namsos+s);t<_c atic/gfx/right.png" alt=">>#L238e=idpaL238e=t" onsubinee=namspaL238e>"238os+st<_c atic/gfx/right.png" alt=">>#L239e=idpaL239e=t" onsubinee=namspaL239e>"239os+s m_c +t;de=wf_notify"st" onsun ">wf_notifyos+s(d_c +t;de=WF_EVENT_NEW_CONTROL"st" onsun ">WF_EVENT_NEW_CONTROLos+s,rm_c +t;de=new_ct"st" onsun ">new_ctos+s);t<_c atic/gfx/right.png" alt=">>#L240e=idpaL240e=t" onsubinee=namspaL240e>"240os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L241e=idpaL241e=t" onsubinee=namspaL241e>"241os+st<_c atic/gfx/right.png" alt=">>#L242e=idpaL242e=t" onsubinee=namspaL242e>"242os+s 20.2"243os+s}t<_c atic/gfx/right.png" alt=">>#L244e=idpaL244e=t" onsubinee=namspaL244e>"244os+sm_c +t;de=EXPORT_SYMBOL_GPL"st" onsun ">EXPORT_SYMBOL_GPLos+s(m_c +t;de=wf_register_control"st" onsun ">wf_register_controlos+s);t<_c atic/gfx/right.png" alt=">>#L245e=idpaL245e=t" onsubinee=namspaL245e>"245os+st<_c atic/gfx/right.png" alt=">>#L246e=idpaL246e=t" onsubinee=namspaL246e>"246os+svoid d_c +t;de=wf_unregister_control"st" onsun ">wf_unregister_controlos+s(n ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s *m_c +t;de=ct"st" onsun ">ctos+s)t<_c atic/gfx/right.png" alt=">>#L247e=idpaL247e=t" onsubinee=namspaL247e>"247os+s{t<_c atic/gfx/right.png" alt=">>#L248e=idpaL248e=t" onsubinee=namspaL248e>"248os+s m_c +t;de=mutex_lock"st" onsun ">mutex_lockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L249e=idpaL249e=t" onsubinee=namspaL249e>"249os+s m_c +t;de=list_del"st" onsun ">list_delos+s(&m_c +t;de=ct"st" onsun ">ctos+s-actir_c +t;de=bink"st" onsun ">binkos+s);t<_c atic/gfx/right.png" alt=">>#L250e=idpaL250e=t" onsubinee=namspaL250e>"250os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L251e=idpaL251e=t" onsubinee=namspaL251e>"251os+st<_c atic/gfx/right.png" alt=">>#L252e=idpaL252e=t" onsubinee=namspaL252e>"252os+s m_c +t;de=DBG"st" onsun ">DBGos+s(m="post" onsustring"saquot;"f: Unregistered controle%s\n"ctos+s-actir_c +t;de=nams"st" onsun ">namsos+s);t<_c atic/gfx/right.png" alt=">>#L253e=idpaL253e=t" onsubinee=namspaL253e>"253os+st<_c atic/gfx/right.png" alt=">>#L254e=idpaL254e=t" onsubinee=namspaL254e>"254os+s m_c +t;de=k _put"st" onsun ">k _putos+s(&m_c +t;de=ct"st" onsun ">ctos+s-actir_c +t;de=r "st" onsun ">r os+s, d_c +t;de=wf_control_rux+ase"st" onsun ">wf_control_rux+aseos+s);t<_c atic/gfx/right.png" alt=">>#L255e=idpaL255e=t" onsubinee=namspaL255e>"255os+s}t<_c atic/gfx/right.png" alt=">>#L256e=idpaL256e=t" onsubinee=namspaL256e>"256os+sm_c +t;de=EXPORT_SYMBOL_GPL"st" onsun ">EXPORT_SYMBOL_GPLos+s(m_c +t;de=wf_unregister_control"st" onsun ">wf_unregister_controlos+s);t<_c atic/gfx/right.png" alt=">>#L257e=idpaL257e=t" onsubinee=namspaL257e>"257os+st<_c atic/gfx/right.png" alt=">>#L258e=idpaL258e=t" onsubinee=namspaL258e>"258os+sn ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s * m_c +t;de=wf_f al_control"st" onsun ">wf_f al_controlos+s(const char *m_c +t;de=nams"st" onsun ">namsos+s)t<_c atic/gfx/right.png" alt=">>#L259e=idpaL259e=t" onsubinee=namspaL259e>"259os+s{t<_c atic/gfx/right.png" alt=">>#L260e=idpaL260e=t" onsubinee=namspaL260e>"260os+s n ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s *m_c +t;de=ct"st" onsun ">ctos+s;t<_c atic/gfx/right.png" alt=">>#L261e=idpaL261e=t" onsubinee=namspaL261e>"261os+st<_c atic/gfx/right.png" alt=">>#L262e=idpaL262e=t" onsubinee=namspaL262e>"262os+s m_c +t;de=mutex_lock"st" onsun ">mutex_lockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L263e=idpaL263e=t" onsubinee=namspaL263e>"263os+s m_c +t;de=list_for_each_entry"st" onsun ">list_for_each_entryos+s(m_c +t;de=ct"st" onsun ">ctos+s, &m_c +t;de=wf_controls"st" onsun ">wf_controlsos+s, m_c +t;de=bink"st" onsun ">binkos+s) {t<_c atic/gfx/right.png" alt=">>#L264e=idpaL264e=t" onsubinee=namspaL264e>"264os+s if (!m_c +t;de=n rcmp"st" onsun ">n rcmpos+s(m_c +t;de=ct"st" onsun ">ctos+s-actir_c +t;de=nams"st" onsun ">namsos+s,rm_c +t;de=nams"st" onsun ">namsos+s)) {t<_c atic/gfx/right.png" alt=">>#L265e=idpaL265e=t" onsubinee=namspaL265e>"265os+s if (m_c +t;de=wf_get_control"st" onsun ">wf_get_controlos+s(m_c +t;de=ct"st" onsun ">ctos+s))t<_c atic/gfx/right.png" alt=">>#L266e=idpaL266e=t" onsubinee=namspaL266e>"266os+s m_c +t;de=ct"st" onsun ">ctos+s = d_c +t;de=NULL"st" onsun ">NULLos+s;t<_c atic/gfx/right.png" alt=">>#L267e=idpaL267e=t" onsubinee=namspaL267e>"267os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L268e=idpaL268e=t" onsubinee=namspaL268e>"268os+s 20.2ctos+s;t<_c atic/gfx/right.png" alt=">>#L269e=idpaL269e=t" onsubinee=namspaL269e>"269os+s }t<_c atic/gfx/right.png" alt=">>#L270e=idpaL270e=t" onsubinee=namspaL270e>"270os+s }t<_c atic/gfx/right.png" alt=">>#L271e=idpaL271e=t" onsubinee=namspaL271e>"271os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L272e=idpaL272e=t" onsubinee=namspaL272e>"272os+s 20.2NULLos+s;t<_c atic/gfx/right.png" alt=">>#L273e=idpaL273e=t" onsubinee=namspaL273e>"273os+s}t<_c atic/gfx/right.png" alt=">>#L274e=idpaL274e=t" onsubinee=namspaL274e>"274os+sm_c +t;de=EXPORT_SYMBOL_GPL"st" onsun ">EXPORT_SYMBOL_GPLos+s(m_c +t;de=wf_f al_control"st" onsun ">wf_f al_controlos+s);t<_c atic/gfx/right.png" alt=">>#L275e=idpaL275e=t" onsubinee=namspaL275e>"275os+st<_c atic/gfx/right.png" alt=">>#L276e=idpaL276e=t" onsubinee=namspaL276e>"276os+sintrm_c +t;de=wf_get_control"st" onsun ">wf_get_controlos+s(n ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s *m_c +t;de=ct"st" onsun ">ctos+s)t<_c atic/gfx/right.png" alt=">>#L277e=idpaL277e=t" onsubinee=namspaL277e>"277os+s{t<_c atic/gfx/right.png" alt=">>#L278e=idpaL278e=t" onsubinee=namspaL278e>"278os+s if (!m_c +t;de=try_module_get"st" onsun ">try_module_getos+s(m_c +t;de=ct"st" onsun ">ctos+s-actir_c +t;de=ops" t" onsun ">opsos+s-actir_c +t;de=owner"st" onsun ">owneros+s))t<_c atic/gfx/right.png" alt=">>#L279e=idpaL279e=t" onsubinee=namspaL279e>"279os+s 20.2ENODEVos+s;t<_c atic/gfx/right.png" alt=">>#L280e=idpaL280e=t" onsubinee=namspaL280e>"280os+s m_c +t;de=k _get"st" onsun ">k _getos+s(&m_c +t;de=ct"st" onsun ">ctos+s-actir_c +t;de=r "st" onsun ">r os+s);t<_c atic/gfx/right.png" alt=">>#L281e=idpaL281e=t" onsubinee=namspaL281e>"281os+s 20.2"282os+s}t<_c atic/gfx/right.png" alt=">>#L283e=idpaL283e=t" onsubinee=namspaL283e>"283os+sm_c +t;de=EXPORT_SYMBOL_GPL"st" onsun ">EXPORT_SYMBOL_GPLos+s(m_c +t;de=wf_get_control"st" onsun ">wf_get_controlos+s);t<_c atic/gfx/right.png" alt=">>#L284e=idpaL284e=t" onsubinee=namspaL284e>"284os+st<_c atic/gfx/right.png" alt=">>#L285e=idpaL285e=t" onsubinee=namspaL285e>"285os+svoid d_c +t;de=wf_put_control"st" onsun ">wf_put_controlos+s(n ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s *m_c +t;de=ct"st" onsun ">ctos+s)t<_c atic/gfx/right.png" alt=">>#L286e=idpaL286e=t" onsubinee=namspaL286e>"286os+s{t<_c atic/gfx/right.png" alt=">>#L287e=idpaL287e=t" onsubinee=namspaL287e>"287os+s n ruct m_c +t;de=module"st" onsun ">moduleos+s *m_c +t;de=mod"st" onsun ">modos+s = d_c +t;de=ct"st" onsun ">ctos+s-actir_c +t;de=ops" t" onsun ">opsos+s-actir_c +t;de=owner"st" onsun ">owneros+s;t<_c atic/gfx/right.png" alt=">>#L288e=idpaL288e=t" onsubinee=namspaL288e>"288os+s m_c +t;de=k _put"st" onsun ">k _putos+s(&m_c +t;de=ct"st" onsun ">ctos+s-actir_c +t;de=r "st" onsun ">r os+s, d_c +t;de=wf_control_rux+ase"st" onsun ">wf_control_rux+aseos+s);t<_c atic/gfx/right.png" alt=">>#L289e=idpaL289e=t" onsubinee=namspaL289e>"289os+s m_c +t;de=module_put"st" onsun ">module_putos+s(m_c +t;de=mod"st" onsun ">modos+s);t<_c atic/gfx/right.png" alt=">>#L290e=idpaL290e=t" onsubinee=namspaL290e>"299"291os+sm_c +t;de=EXPORT_SYMBOL_GPL"st" onsun ">EXPORT_SYMBOL_GPLos+s(m_c +t;de=wf_put_control"st" onsun ">wf_put_controlos+s);t<_c atic/gfx/right.png" alt=">>#L292e=idpaL292e=t" onsubinee=namspaL292e>"292os+st<_c atic/gfx/right.png" alt=">>#L293e=idpaL293e=t" onsubinee=namspaL293e>"293os+st<_c atic/gfx/right.png" alt=">>#L294e=idpaL294e=t" onsubinee=namspaL294e>"294os+sd="post" onsucommen.">/*rch" met<_c atic/gfx/right.png" alt=">>#L295e=idpaL295e=t" onsubinee=namspaL295e>"295os+sd="post" onsucommen."> * Sensorsosh" met<_c atic/gfx/right.png" alt=">>#L296e=idpaL296e=t" onsubinee=namspaL296e>"296os+sd="post" onsucommen."> */rch" met<_c atic/gfx/right.png" alt=">>#L297e=idpaL297e=t" onsubinee=namspaL297e>"297os+st<_c atic/gfx/right.png" alt=">>#L298e=idpaL298e=t" onsubinee=namspaL298e>"298os+st<_c atic/gfx/right.png" alt=">>#L299e=idpaL299e=t" onsubinee=namspaL299e>"299os+sn clasrvoid d_c +t;de=wf_nensor_rux+ase"st" onsun ">wf_nensor_rux+aseos+s(n ruct m_c +t;de=k "st" onsun ">k os+s *m_c +t;de=k "st" onsun ">k os+s)t<_c atic/gfx/right.png" alt=">>#L300e=idpaL300e=t" onsubinee=namspaL300e>"300os+s{t<_c atic/gfx/right.png" alt=">>#L301e=idpaL301e=t" onsubinee=namspaL301e>"301os+s n ruct m_c +t;de=wf_nensor"st" onsun ">wf_nensoros+s *m_c +t;de=sr"st" onsun ">sros+s = d_c +t;de=container_of"st" onsun ">container_ofos+s(m_c +t;de=k "st" onsun ">k os+s, n ruct m_c +t;de=wf_nensor"st" onsun ">wf_nensoros+s, m_c +t;de= "st" onsun "> os+s);t<_c atic/gfx/right.png" alt=">>#L302e=idpaL302e=t" onsubinee=namspaL302e>"302os+st<_c atic/gfx/right.png" alt=">>#L303e=idpaL303e=t" onsubinee=namspaL303e>"303os+s m_c +t;de=DBG"st" onsun ">DBGos+s(m="post" onsustring"saquot;"f: Dux+ting nensore%s\n"sros+s-actir_c +t;de=nams"st" onsun ">namsos+s);t<_c atic/gfx/right.png" alt=">>#L304e=idpaL304e=t" onsubinee=namspaL304e>"304os+st<_c atic/gfx/right.png" alt=">>#L305e=idpaL305e=t" onsubinee=namspaL305e>"305os+s if (m_c +t;de=sr"st" onsun ">sros+s-actir_c +t;de=ops" t" onsun ">opsos+s && m_c +t;de=sr"st" onsun ">sros+s-actir_c +t;de=ops" t" onsun ">opsos+s-actir_c +t;de=rux+ase"st" onsun ">rux+aseos+s)t<_c atic/gfx/right.png" alt=">>#L306e=idpaL306e=t" onsubinee=namspaL306e>"306os+s m_c +t;de=sr"st" onsun ">sros+s-actir_c +t;de=ops" t" onsun ">opsos+s-actir_c +t;de=rux+ase"st" onsun ">rux+aseos+s(m_c +t;de=sr"st" onsun ">sros+s);t<_c atic/gfx/right.png" alt=">>#L307e=idpaL307e=t" onsubinee=namspaL307e>"307os+s elset<_c atic/gfx/right.png" alt=">>#L308e=idpaL308e=t" onsubinee=namspaL308e>"308os+s m_c +t;de=kf e"st" onsun ">kf eos+s(m_c +t;de=sr"st" onsun ">sros+s);t<_c atic/gfx/right.png" alt=">>#L309e=idpaL309e=t" onsubinee=namspaL309e>"309os+s}t<_c atic/gfx/right.png" alt=">>#L310e=idpaL310e=t" onsubinee=namspaL310e>"310os+st<_c atic/gfx/right.png" alt=">>#L311e=idpaL311e=t" onsubinee=namspaL311e>"311os+sn clasrm_c +t;de=ssize_t"st" onsun ">ssize_tos+s d_c +t;de=wf_nhow_nensor"st" onsun ">wf_nhow_nensoros+s(n ruct m_c +t;de=device"st" onsun ">deviceos+s *m_c +t;de=dev"st" onsun ">devos+s,t<_c atic/gfx/right.png" alt=">>#L312e=idpaL312e=t" onsubinee=namspaL312e>"312os+s n ruct m_c +t;de=device_attribute"st" onsun ">device_attributeos+s *m_c +t;de=attr"st" onsun ">attros+s, char *m_c +t;de=bu "st" onsun ">bu os+s)t<_c atic/gfx/right.png" alt=">>#L313e=idpaL313e=t" onsubinee=namspaL313e>"313os+s{t<_c atic/gfx/right.png" alt=">>#L314e=idpaL314e=t" onsubinee=namspaL314e>"314os+s n ruct m_c +t;de=wf_nensor"st" onsun ">wf_nensoros+s *m_c +t;de=sens"st" onsun ">sensos+s = d_c +t;de=container_of"st" onsun ">container_ofos+s(m_c +t;de=attr"st" onsun ">attros+s, n ruct m_c +t;de=wf_nensor"st" onsun ">wf_nensoros+s, m_c +t;de=attr"st" onsun ">attros+s);t<_c atic/gfx/right.png" alt=">>#L315e=idpaL315e=t" onsubinee=namspaL315e>"315os+s m_c +t;de=s32e=t" onsun ">s32os+s m_c +t;de=val"st" onsun ">valos+s = 0;t<_c atic/gfx/right.png" alt=">>#L316e=idpaL316e=t" onsubinee=namspaL316e>"316os+s intrm_c +t;de=err"st" onsun ">erros+s;t<_c atic/gfx/right.png" alt=">>#L317e=idpaL317e=t" onsubinee=namspaL317e>"317os+st<_c atic/gfx/right.png" alt=">>#L318e=idpaL318e=t" onsubinee=namspaL318e>"318os+s m_c +t;de=err"st" onsun ">erros+s = d_c +t;de=sens"st" onsun ">sensos+s-actir_c +t;de=ops" t" onsun ">opsos+s-actir_c +t;de=get_ get_ sensos+s, &m_c +t;de=val"st" onsun ">valos+s);t<_c atic/gfx/right.png" alt=">>#L319e=idpaL319e=t" onsubinee=namspaL319e>"319os+s if (m_c +t;de=err"st" onsun ">erros+s < 0)t<_c atic/gfx/right.png" alt=">>#L320e=idpaL320e=t" onsubinee=namspaL320e>"320os+s 20.2erros+s;t<_c atic/gfx/right.png" alt=">>#L321e=idpaL321e=t" onsubinee=namspaL321e>"321os+s 20.2sprintfos+s(m_c +t;de=bu "st" onsun ">bu os+s, d="post" onsustring"saquot;%d.%03d\n"FIX32TOPRINTos+s(m_c +t;de=val"st" onsun ">valos+s));t<_c atic/gfx/right.png" alt=">>#L322e=idpaL322e=t" onsubinee=namspaL322e>"322os+s}t<_c atic/gfx/right.png" alt=">>#L323e=idpaL323e=t" onsubinee=namspaL323e>"323os+st<_c atic/gfx/right.png" alt=">>#L324e=idpaL324e=t" onsubinee=namspaL324e>"324os+sintrm_c +t;de=wf_register_nensor"st" onsun ">wf_register_nensoros+s(n ruct m_c +t;de=wf_nensor"st" onsun ">wf_nensoros+s *m_c +t;de=new_sr"st" onsun ">new_sros+s)t<_c atic/gfx/right.png" alt=">>#L325e=idpaL325e=t" onsubinee=namspaL325e>"325os+s{t<_c atic/gfx/right.png" alt=">>#L326e=idpaL326e=t" onsubinee=namspaL326e>"326os+s n ruct m_c +t;de=wf_nensor"st" onsun ">wf_nensoros+s *m_c +t;de=sr"st" onsun ">sros+s;t<_c atic/gfx/right.png" alt=">>#L327e=idpaL327e=t" onsubinee=namspaL327e>"327os+st<_c atic/gfx/right.png" alt=">>#L328e=idpaL328e=t" onsubinee=namspaL328e>"328os+s m_c +t;de=mutex_lock"st" onsun ">mutex_lockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L329e=idpaL329e=t" onsubinee=namspaL329e>"329os+s m_c +t;de=list_for_each_entry"st" onsun ">list_for_each_entryos+s(m_c +t;de=sr"st" onsun ">sros+s, &m_c +t;de=wf_nensors"st" onsun ">wf_sensorsos+s, m_c +t;de=bink"st" onsun ">binkos+s) {t<_c atic/gfx/right.png" alt=">>#L330e=idpaL330e=t" onsubinee=namspaL330e>"330os+s if (!m_c +t;de=n rcmp"st" onsun ">n rcmpos+s(m_c +t;de=sr"st" onsun ">sros+s-actir_c +t;de=nams"st" onsun ">namsos+s,rm_c +t;de=new_sr"st" onsun ">new_sros+s-actir_c +t;de=nams"st" onsun ">namsos+s)) {t<_c atic/gfx/right.png" alt=">>#L331e=idpaL331e=t" onsubinee=namspaL331e>"331os+s r_c +t;de=printk"st" onsun ">printkos+s(m_c +t;de=KERN_WARNING"st" onsun ">KERN_WARNINGos+s d="post" onsustring"saquot;" alt="&: trying to register""332os+s r="post" onsustring"saquot; duplicate nensore%s\n"sros+s-actir_c +t;de=nams"st" onsun ">namsos+s);t<_c atic/gfx/right.png" alt=">>#L333e=idpaL333e=t" onsubinee=namspaL333e>"333os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L334e=idpaL334e=t" onsubinee=namspaL334e>"334os+s 20.2EEXISTos+s;t<_c atic/gfx/right.png" alt=">>#L335e=idpaL335e=t" onsubinee=namspaL335e>"335os+s }t<_c atic/gfx/right.png" alt=">>#L336e=idpaL336e=t" onsubinee=namspaL336e>"336os+s }t<_c atic/gfx/right.png" alt=">>#L337e=idpaL337e=t" onsubinee=namspaL337e>"337os+s m_c +t;de=k _init"st" onsun ">k _initos+s(&m_c +t;de=new_sr"st" onsun ">new_sros+s-actir_c +t;de=r "st" onsun "> os+s);t<_c atic/gfx/right.png" alt=">>#L338e=idpaL338e=t" onsubinee=namspaL338e>"338os+s m_c +t;de=list_add"st" onsun ">list_addos+s(&m_c +t;de=new_sr"st" onsun ">new_sros+s-actir_c +t;de=bink"st" onsun ">binkos+s, &m_c +t;de=wf_nensors"st" onsun ">wf_sensorsos+s);t<_c atic/gfx/right.png" alt=">>#L339e=idpaL339e=t" onsubinee=namspaL339e>"339os+st<_c atic/gfx/right.png" alt=">>#L340e=idpaL340e=t" onsubinee=namspaL340e>"340os+s m_c +t;de=sysfs_attr_init"st" onsun ">sysfs_attr_initos+s(&m_c +t;de=new_sr"st" onsun ">new_sros+s-actir_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=attr"st" onsun ">attros+s);t<_c atic/gfx/right.png" alt=">>#L341e=idpaL341e=t" onsubinee=namspaL341e>"341os+s m_c +t;de=new_sr"st" onsun ">new_sros+s-actir_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=nams"st" onsun ">namsos+s = d_c +t;de=new_sr"st" onsun ">new_sros+s-actir_c +t;de=nams"st" onsun ">namsos+s;t<_c atic/gfx/right.png" alt=">>#L342e=idpaL342e=t" onsubinee=namspaL342e>"342os+s m_c +t;de=new_sr"st" onsun ">new_sros+s-actir_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=m;de"st" onsun ">m;deos+s = 0444;t<_c atic/gfx/right.png" alt=">>#L343e=idpaL343e=t" onsubinee=namspaL343e>"343os+s m_c +t;de=new_sr"st" onsun ">new_sros+s-actir_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=nhow"st" onsun ">showos+s = d_c +t;de=wf_nhow_nensor"st" onsun ">wf_nhow_nensoros+s;t<_c atic/gfx/right.png" alt=">>#L344e=idpaL344e=t" onsubinee=namspaL344e>"344os+s m_c +t;de=new_sr"st" onsun ">new_sros+s-actir_c +t;de=attr"st" onsun ">attros+s.d_c +t;de=nt;&g"st" onsun ">n ;&gos+s = d_c +t;de=NULL"st" onsun ">NULLos+s;t<_c atic/gfx/right.png" alt=">>#L345e=idpaL345e=t" onsubinee=namspaL345e>"345os+s if (m_c +t;de=device_create_filee=t" onsun ">device_create_fileos+s(&m_c +t;de=wf_platearc_device"st" onsun ">wf_platearc_deviceos+s.d_c +t;de=dev"st" onsun ">devos+s, &m_c +t;de=new_sr"st" onsun ">new_sros+s-actir_c +t;de=attr"st" onsun ">attros+s))t<_c atic/gfx/right.png" alt=">>#L346e=idpaL346e=t" onsubinee=namspaL346e>"346os+s m_c +t;de=printk"st" onsun ">printkos+s(m_c +t;de=KERN_WARNING"st" onsun ">KERN_WARNINGos+s d="post" onsustring"saquot;" alt="&: device_create_file failed""347os+s m="post" onsustring"saquot; h/w %s\n"new_sros+s-actir_c +t;de=nams"st" onsun ">namsos+s);t<_c atic/gfx/right.png" alt=">>#L348e=idpaL348e=t" onsubinee=namspaL348e>"348os+s m="post" onsucommen.">/* the subsystem still does useful work without the file */rch" met<_c atic/gfx/right.png" alt=">>#L349e=idpaL349e=t" onsubinee=namspaL349e>"349os+st<_c atic/gfx/right.png" alt=">>#L350e=idpaL350e=t" onsubinee=namspaL350e>"350os+s m_c +t;de=DBG"st" onsun ">DBGos+s(m="post" onsustring"saquot;"f: Registered nensore%s\n"new_sros+s-actir_c +t;de=nams"st" onsun ">namsos+s);t<_c atic/gfx/right.png" alt=">>#L351e=idpaL351e=t" onsubinee=namspaL351e>"351os+st<_c atic/gfx/right.png" alt=">>#L352e=idpaL352e=t" onsubinee=namspaL352e>"352os+s m_c +t;de=wf_notify"st" onsun ">wf_notifyos+s(d_c +t;de=WF_EVENT_NEW_SENSOR"st" onsun ">WF_EVENT_NEW_SENSORos+s,rm_c +t;de=new_sr"st" onsun ">new_sros+s);t<_c atic/gfx/right.png" alt=">>#L353e=idpaL353e=t" onsubinee=namspaL353e>"353os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L354e=idpaL354e=t" onsubinee=namspaL354e>"354os+st<_c atic/gfx/right.png" alt=">>#L355e=idpaL355e=t" onsubinee=namspaL355e>"355os+s 20.2"356os+s}t<_c atic/gfx/right.png" alt=">>#L357e=idpaL357e=t" onsubinee=namspaL357e>"357os+sm_c +t;de=EXPORT_SYMBOL_GPL"st" onsun ">EXPORT_SYMBOL_GPLos+s(m_c +t;de=wf_register_nensor"st" onsun ">wf_register_nensoros+s);t<_c atic/gfx/right.png" alt=">>#L358e=idpaL358e=t" onsubinee=namspaL358e>"358os+st<_c atic/gfx/right.png" alt=">>#L359e=idpaL359e=t" onsubinee=namspaL359e>"359os+svoid d_c +t;de=wf_unregister_nensor"st" onsun ">wf_unregister_nensoros+s(n ruct m_c +t;de=wf_nensor"st" onsun ">wf_nensoros+s *m_c +t;de=sr"st" onsun ">sros+s)t<_c atic/gfx/right.png" alt=">>#L360e=idpaL360e=t" onsubinee=namspaL360e>"360os+s{t<_c atic/gfx/right.png" alt=">>#L361e=idpaL361e=t" onsubinee=namspaL361e>"361os+s m_c +t;de=mutex_lock"st" onsun ">mutex_lockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L362e=idpaL362e=t" onsubinee=namspaL362e>"362os+s m_c +t;de=list_del"st" onsun ">list_delos+s(&m_c +t;de=sr"st" onsun ">sros+s-actir_c +t;de=bink"st" onsun ">binkos+s);t<_c atic/gfx/right.png" alt=">>#L363e=idpaL363e=t" onsubinee=namspaL363e>"363os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L364e=idpaL364e=t" onsubinee=namspaL364e>"364os+st<_c atic/gfx/right.png" alt=">>#L365e=idpaL365e=t" onsubinee=namspaL365e>"365os+s m_c +t;de=DBG"st" onsun ">DBGos+s(m="post" onsustring"saquot;"f: Unregistered nensore%s\n"sros+s-actir_c +t;de=nams"st" onsun ">namsos+s);t<_c atic/gfx/right.png" alt=">>#L366e=idpaL366e=t" onsubinee=namspaL366e>"366os+st<_c atic/gfx/right.png" alt=">>#L367e=idpaL367e=t" onsubinee=namspaL367e>"367os+s m_c +t;de=wf_put_nensor"st" onsun ">wf_put_nensoros+s(m_c +t;de=sr"st" onsun ">sros+s);t<_c atic/gfx/right.png" alt=">>#L368e=idpaL368e=t" onsubinee=namspaL368e>"368os+s}t<_c atic/gfx/right.png" alt=">>#L369e=idpaL369e=t" onsubinee=namspaL369e>"369os+sm_c +t;de=EXPORT_SYMBOL_GPL"st" onsun ">EXPORT_SYMBOL_GPLos+s(m_c +t;de=wf_unregister_nensor"st" onsun ">wf_unregister_nensoros+s);t<_c atic/gfx/right.png" alt=">>#L370e=idpaL370e=t" onsubinee=namspaL370e>"370os+st<_c atic/gfx/right.png" alt=">>#L371e=idpaL371e=t" onsubinee=namspaL371e>"371os+sn ruct m_c +t;de=wf_nensor"st" onsun ">wf_nensoros+s * m_c +t;de=wf_f al_nensor"st" onsun ">wf_f al_nensoros+s(const char *m_c +t;de=nams"st" onsun ">namsos+s)t<_c atic/gfx/right.png" alt=">>#L372e=idpaL372e=t" onsubinee=namspaL372e>"372os+s{t<_c atic/gfx/right.png" alt=">>#L373e=idpaL373e=t" onsubinee=namspaL373e>"373os+s n ruct m_c +t;de=wf_nensor"st" onsun ">wf_nensoros+s *m_c +t;de=sr"st" onsun ">sros+s;t<_c atic/gfx/right.png" alt=">>#L374e=idpaL374e=t" onsubinee=namspaL374e>"374os+st<_c atic/gfx/right.png" alt=">>#L375e=idpaL375e=t" onsubinee=namspaL375e>"375os+s m_c +t;de=mutex_lock"st" onsun ">mutex_lockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L376e=idpaL376e=t" onsubinee=namspaL376e>"376os+s m_c +t;de=list_for_each_entry"st" onsun ">list_for_each_entryos+s(m_c +t;de=sr"st" onsun ">sros+s, &m_c +t;de=wf_nensors"st" onsun ">wf_sensorsos+s, m_c +t;de=bink"st" onsun ">binkos+s) {t<_c atic/gfx/right.png" alt=">>#L377e=idpaL377e=t" onsubinee=namspaL377e>"377os+s if (!m_c +t;de=n rcmp"st" onsun ">n rcmpos+s(m_c +t;de=sr"st" onsun ">sros+s-actir_c +t;de=nams"st" onsun ">namsos+s,rm_c +t;de=nams"st" onsun ">namsos+s)) {t<_c atic/gfx/right.png" alt=">>#L378e=idpaL378e=t" onsubinee=namspaL378e>"378os+s if (m_c +t;de=wf_get_nensor"st" onsun ">wf_get_nensoros+s(m_c +t;de=sr"st" onsun ">sros+s))t<_c atic/gfx/right.png" alt=">>#L379e=idpaL379e=t" onsubinee=namspaL379e>"379os+s m_c +t;de=sr"st" onsun ">sros+s = d_c +t;de=NULL"st" onsun ">NULLos+s;t<_c atic/gfx/right.png" alt=">>#L380e=idpaL380e=t" onsubinee=namspaL380e>"380os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L381e=idpaL381e=t" onsubinee=namspaL381e>"381os+s 20.2sros+s;t<_c atic/gfx/right.png" alt=">>#L382e=idpaL382e=t" onsubinee=namspaL382e>"382os+s }t<_c atic/gfx/right.png" alt=">>#L383e=idpaL383e=t" onsubinee=namspaL383e>"383os+s }t<_c atic/gfx/right.png" alt=">>#L384e=idpaL384e=t" onsubinee=namspaL384e>"384os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_lockos+s);t<_c atic/gfx/right.png" alt=">>#L385e=idpaL385e=t" onsubinee=namspaL385e>"385os+s 20.2NULLos+s;t<_c atic/gfx/right.png" alt=">>#L386e=idpaL386e=t" onsubinee=namspaL386e>"386os+s}t<_c atic/gfx/right.png" alt=">>#L387e=idpaL387e=t" onsubinee=namspaL387e>"387os+sm_c +t;de=EXPORT_SYMBOL_GPL"st" onsun ">EXPORT_SYMBOL_GPLos+s(m_c +t;de=wf_f al_nensor"st" onsun ">wf_f al_nensoros+s);t<_c atic/gfx/right.png" alt=">>#L388e=idpaL388e=t" onsubinee=namspaL388e>"388os+st<_c atic/gfx/right.png" alt=">>#L389e=idpaL389e=t" onsubinee=namspaL389e>"389os+sintrm_c +t;de=wf_get_nensor"st" onsun ">wf_get_nensoros+s(n ruct m_c +t;de=wf_nensor"st" onsun ">wf_nensoros+s *m_c +t;de=sr"st" onsun ">sros+s)t<_c atic/gfx/right.png" alt=">>#L390e=idpaL390e=t" onsubinee=namspaL390e>"390os+s{t<_c atic/gfx/right.png" alt=">>#L391e=idpaL391e=t" onsubinee=namspaL391e>"391os+s if (!m_c +t;de=try_module_get"st" onsun ">try_module_getos+s(m_c +t;de=sr"st" onsun ">sros+s-actir_c +t;de=ops" t" onsun ">opsos+s-actir_c +t;de=owner"st" onsun ">owneros+s))t<_c atic/gfx/right.png" alt=">>#L392e=idpaL392e=t" onsubinee=namspaL392e>"392os+s 20.2ENODEVos+s;t<_c atic/gfx/right.png" alt=">>#L393e=idpaL393e=t" onsubinee=namspaL393e>"393os+s m_c +t;de=k _get"st" onsun ">k _getos+s(&m_c +t;de=sr"st" onsun ">sros+s-actir_c +t;de=r "st" onsun "> os+s);t<_c atic/gfx/right.png" alt=">>#L394e=idpaL394e=t" onsubinee=namspaL394e>"394os+s 20.2"395os+s}t<_c atic/gfx/right.png" alt=">>#L396e=idpaL396e=t" onsubinee=namspaL396e>"396os+sm_c +t;de=EXPORT_SYMBOL_GPL"st" onsun ">EXPORT_SYMBOL_GPLos+s(m_c +t;de=wf_get_nensor"st" onsun ">wf_get_nensoros+s);t<_c atic/gfx/right.png" alt=">>#L397e=idpaL397e=t" onsubinee=namspaL397e>"397os+st<_c atic/gfx/right.png" alt=">>#L398e=idpaL398e=t" onsubinee=namspaL398e>"398os+svoid d_c +t;de=wf_put_nensor"st" onsun ">wf_put_nensoros+s(n ruct m_c +t;de=wf_nensor"st" onsun ">wf_nensoros+s *m_c +t;de=sr"st" onsun ">sros+s)t<_c atic/gfx/right.png" alt=">>#L399e=idpaL399e=t" onsubinee=namspaL399e>"399os+s{t<_c atic/gfx/right.png" alt=">>#L400e=idpaL400e=t" onsubinee=namspaL400e>"400os+s n ruct m_c +t;de=module"st" onsun ">moduleos+s *m_c +t;de=mod"st" onsun ">modos+s = d_c +t;de=sr"st" onsun ">sros+s-actir_c +t;de=ops" t" onsun ">opsos+s-actir_c +t;de=owner"st" onsun ">owneros+s;t<_c atic/gfx/right.png" alt=">>#L401e=idpaL401e=t" onsubinee=namspaL401e>"401os+s m_c +t;de=k _put"st" onsun ">k _putos+s(&m_c +t;de=sr"st" onsun ">sros+s-actir_c +t;de=r "st" onsun "> os+s, d_c +t;de=wf_nensor_rux+ase"st" onsun ">wf_nensor_rux+aseos+s);t<_c atic/gfx/right.png" alt=">>#L402e=idpaL402e=t" onsubinee=namspaL402e>"402os+s m_c +t;de=module_put"st" onsun ">module_putos+s(m_c +t;de=mod"st" onsun ">modos+s);t<_c atic/gfx/right.png" alt=">>#L403e=idpaL403e=t" onsubinee=namspaL403e>"403os+s}t<_c atic/gfx/right.png" alt=">>#L404e=idpaL404e=t" onsubinee=namspaL404e>"404os+sm_c +t;de=EXPORT_SYMBOL_GPL"st" onsun ">EXPORT_SYMBOL_GPLos+s(m_c +t;de=wf_put_nensor"st" onsun ">wf_put_nensoros+s);t<_c atic/gfx/right.png" alt=">>#L405e=idpaL405e=t" onsubinee=namspaL405e>"405os+st<_c atic/gfx/right.png" alt=">>#L406e=idpaL406e=t" onsubinee=namspaL406e>"406os+st<_c atic/gfx/right.png" alt=">>#L407e=idpaL407e=t" onsubinee=namspaL407e>"407os+sd="post" onsucommen.">/*rch" met<_c atic/gfx/right.png" alt=">>#L408e=idpaL408e=t" onsubinee=namspaL408e>"408os+sd="post" onsucommen."> * Clien. & notificationrch" met<_c atic/gfx/right.png" alt=">>#L408e=idpaL409e=t" onsubinee=namspaLt;de atic/gfx/right.png" alt=">>#L3014wf_put_nenso;de=wdner"st" o +2ensubinee=gt;>#L389e=idp0dfx/right.;t<_c2e" onsun e +t;dL319e>"319os+s if (m_c +t.pn7;dL319e>"319os+s +t.pn7;dL319e>"319os+s +t.pn +t;de=wf_put_nensor"stL408e> b" onsun ">mutex_uL408e> b" on n ruct m_c +tnbsun ">mutex_uLb ">wf_nensoros+s *m_c +t;de=sr"st" onsun ">4vos+s,t<_4 atic/gfx/right.png4 alt=41gt;>#L372e=idpaL372e=t" onsubinee=namspaL372e>"34 os+s)t<_4 atic/gfx/right.png4 alt=41gt;>#L393et.pn7;dL319e>"319osrc+t;de=sr"st" onscopsos+s-actir_c +t;de=owner"st" onsun ">owne3os+s{t<_4 atic/gfx/right.png4 alt=4>>#L314e=idpaL314e=t" onsubinee=namspaL260e>"260os+s n ruct m_c +t;de=wf_control"st" onsun ">wf_controlos+s *m_c +t;de=ct"st" onsun ">4os+s);t<_4 atic/gfx/right.png4 alt=4>>#L315e=idpaL373e=t" onsubinee=namspaL373e>"373os+s n ruct m_c +t;de=wf_nensor"st" onsun ">wf_nensoros+s *m_c +t;de=sr"st" onsun ">4s = 0;t<_4 atic/gfx/right.png4 alt=41gt;>#L406e=idpaL406e=t" onsubinee=namspaL406e>"4ros+s;t<_4 atic/gfx/right.png4 alt=41gt;>#L367e=idpaL367e=t" onsubinee=namspaL375e>"375os+s m_c +t;de=mutex_lock"st" onsun ">mutex_lockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_loc417os+st<_4 atic/gfx/right.png4 alt=4>>#L318e=idpaL318e=t" orc+t;de=sr"st" onscopsomoduleos+s *m_c b" oning_L408e> chain +t;de=sr"st" onb" oning_L408e> chain m_c +t;de=mutex_lock" +t.pn_ m60e>"260os+s +t.pn_ m ">sros+s-actir_c bsun ">mutex_uLb ">wfmp;m_c +t;de=wf_lock"st" onsun ">wf_loc41h" met<_c atic/gfx/right.png4 alt=4>>#L319e=idpaL319e=t" onsubrc+t;de=sr"st" onscopsom!= if (m_c +t;de=err"st" onsun ">erros+s 4lt; 0)t<_4 atic/gfx/right.png4 alt=4>>#L320e=idpaL32gotoduleos+s *m_c bai260e>"260os+s bai2 ">wf_nensoros+s *m_c +t;de=sr"st" onsun ">4ros+s;t<_4 atic/gfx/right.png4 alt=42gt;>#L401e=idpaL401e=t" o +t.pn_coupn7;dL319e>"319os+s +t.pn_coupnt;&g++f_nensoros+s *m_c +t;de=sr"st" onsun ">4ros+s,t<_4 atic/gfx/right.png4 alt=42gt;>#L362e=idpaL362e=t" onsubinee=namspaL263e>"263os+s m_c +t;de=list_for_each_entry"st" onsun ">list_for_each_entryos+s(m_c +t;de=ct"st" onsun ">ctos+s, &m_c +t;de=wf_controls"st" onsun ">wf_contr_nensoros+s *m_c +t;de=sr"st" onsun ">4ros+s)t<_4 atic/gfx/right.png4 alt=42gt;>#L333e=idpaL33ryos+s(m_c +tbinee=namspaL352e>"352os+s m_c +t;de=wf_notify"st" CONTRO=namspaL404e>"40f_notify"st" CONTRO=m_c +t;de=wf_conontrol"st" onsun ">wf_f_nensoros+s *m_c +t;de=sr"st" onsun ">4ros+s{t<_4 atic/gfx/right.png4 alt=42gt;>#L384e=idpaL384e=t" onsubinee=namspaL376e>"376os+s m_c +t;de=list_for_each_entry"st" onsun ">list_for_each_entryos+s(m_c +t;de=sr"st" onsun ">sros+s, &m_c +t;de=wf_nensors"st" onsun ">wf_sens_nensoros+s *m_c +t;de=sr"st" onsun ">4rs+s);t<_4 atic/gfx/right.png4 alt=42gt;>#L335e=idpaL33ryos+s(m_c +tbinee=namspaL352e>"352os+s m_c +t;de=wf_notify"st" onsun ">wf_notifyos+s(d_c +t;de=WF_EVENT_NEW_SENSOR"stnsor"st" onsun ">wf_put_nensoros+s(m_c +t;de=sr"st" onsun ">s45os+s{t<_4 atic/gfx/right.png4 alt=4>>#L326esubinee=namspaL378e>"3 +t.pn_coupn7;dL319e>"319os+s +t.pn_coupnt;&g == 1s_nensoros+s *m_c +t;de=sr"st" onsun ">4ros+s;t<_4 atic/gfx/right.png4 alt=42gt;>#L377e=idpaL37ryos+s(m_c +t;tart_ts+sae_put"st" onsun +t;tart_ts+sae mut_nensoros+s(m_c +t;de=sr"st" onsun ">s457os+st<_4 atic/gfx/right.png4 alt=4>>uleos+s *m_c bai260e>"260os+s bai2 ">w:_nensoros+s(m_c +t;de=sr"st" onsun ">s45h" met<_c atic/gfx/right.png4 alt=4>>#L329e=idpaL329e=t" onsubinee=namspaL384e>"384os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_loc4s+s) {t<_4 atic/gfx/right.png4 alt=4>>#L330e=idpaL385e=t" onsubinerc+t;de=sr"st" onscopsos+s-actir_c +t;de=owner"st" onsun ">owne+s)) {t<_4 atic/gfx/right.png4 alt=4>>#L403e=idpaL403e=t" onsubinee=namspaL403e>"40ch" met<_4 atic/gfx/right.png4 alt=4>>#L404e=idpaL404e=t" onsubinee=namspaL404e>"404os+sm_c +t;de=EXPORT_SYMBOL_GPL"st +t.pn7;dL319e>"319os+s +t.pn amp;m_c +t;de=wf_lock"st" onsun ">wf_loc4sos+s)t<_4 atic/gfx/right.png4 alt=43gt;>#L323e=idpaL323e=t" onsubinee=namspaL323e>"4os+s);t<_4 atic/gfx/right.png4 alt=43gt;>#L324e=idpaL324e=t" _c +t; +t.pn7;dL319e>"319os+s _c +t; +t.pn +t;de=wf_put_nensor"stL408e> b" onsun ">mutex_uL408e> b" on n ruct m_c +tnbsun ">mutex_uLb ">wf_nensoros+s *m_c +t;de=sr"st" onsun ">4Tos+s;t<_4 atic/gfx/right.png4 alt=43gt;>#L325e=idpaL325e=t" onsubinee=namspaL325e>"34 }t<_4 atic/gfx/right.png4 alt=43gt;>#L376e=idpaL376e=t" onsubinee=namspaL375e>"375os+s m_c +t;de=mutex_lock"st" onsun ">mutex_lockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_loc4 }t<_4 atic/gfx/right.png4 alt=4>>#L337e=idpaL337e=t" ob" oning_L408e> chain _c +t+t;de=sr"st" onb" oning_L408e> chain _c +t m_c +t;de=mutex_lock" +t.pn_ m60e>"260os+s +t.pn_ m ">sros+s-actir_c bsun ">mutex_uLb ">wfmp;m_c +t;de=wf_lock"st" onsun ">wf_loc4os+s);t<_4 atic/gfx/right.png4 alt=4>>#L338e=idpaL338e=t" o +t.pn_coupn7;dL319e>"319os+s +t.pn_coupnt;&g++f_nensoros+s *m_c +t;de=sr"st" onsun ">4os+s);t<_4 atic/gfx/right.png4 alt=43gt;>#L319e=idpaL319e=t" onsub>"3 +t.pn_coupn7;dL319e>"319os+s +t.pn_coupnt;&g == if (m_c +t;de=err"st" onsun ">erros+s 439os+st<_4 atic/gfx/right.png4 alt=44gt;>#L320e=idpaL32ryos+s(m_c +t;top_ts+sae_put"st" onsun +t;top_ts+sae mut_nensoros+s(m_c +t;de=sr"st" onsun ">s4os+s);t<_4 atic/gfx/right.png4 alt=4>>#L341e=idpaL341e=t" onsubinee=namspaL384e>"384os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_loc4sos+s;t<_4 atic/gfx/right.png4 alt=44gt;>#L302e=idpaL302e=t" onsubinee=namspaL302e>"4 0444;t<_4 atic/gfx/right.png4 alt=4>>#L343e=idpaL394e=t" onsubinee=namspaL394e>"394os+s 204ros+s;t<_4 atic/gfx/right.png4 alt=4>>#L403e=idpaL403e=t" onsubinee=namspaL403e>"40Los+s;t<_4 atic/gfx/right.png4 alt=4>>#L404e=idpaL404e=t" onsubinee=namspaL404e>"404os+sm_c +t;de=EXPORT_SYMBOL_GPL"st_c +t; +t.pn7;dL319e>"319os+s _c +t; +t.pn amp;m_c +t;de=wf_lock"st" onsun ">wf_loc4s }t<_4 atic/gfx/right.png4 alt=44gt;>#L406e=idpaL406e=t" onsubinee=namspaL406e>"4ch" met<_4 atic/gfx/right.png4 alt=4>&ge=idpaL299e=t" onsubinee=t_oL40te77e>"377os+s inee=t_oL40te77de=EXe=id if (m_c +t;de=err"st" onsun ">erros+s 43s+s);t<_4 atic/gfx/right.png4 alt=4>>#L325e=idpaL325e=t" onsubinee=namspaL325e>"34ch" met<_4 atic/gfx/right.png4 alt=44gt;>#L329e=idpaL329e=t" onsubinee=namspaL375e>"375os+s m_c +t;de=mutex_lock"st" onsun ">mutex_lockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_loc449os+st<_4 atic/gfx/right.png4 alt=4>>#L350e=idpaL350e=t" o_looL40te77e>"377os+s ineoL40te77de=E++f_nensoros+s *m_c +t;de=sr"st" onsun ">4os+s);t<_4 atic/gfx/right.png4 alt=45gt;>#L391e=idp=idpaL350e=t" o_looL40te77e>"377os+s ineoL40te77de=E == 1smsos+s,rm_c +t;de=nams"st" onsun ">namso451os+st<_4 atic/gfx/right.png4 alt=45gt;>#L392e=idpaL39=idpaL350e=t" o=namspaL346e>"346os+s m_c +t;de=printk"st" onsun ">printkos+s(m_c +t;de=KERN_WARNING"st" onsun ">KEOL40te77 condi08os detected !st" onsustring"amp;m_c +t;de=wf_lock"st" onsun ">wf_loc440444;t<_4 atic/gfx/right.png4 alt=45gt;>#L333e=idpaL33ryos+s(m_c +toL40te77_coupn+t+t;de=sr"st" on +toL40te77_coupn+topsomod94e=t" onsubinee=namspaL394e>"394os+s 204os+s);t<_4 atic/gfx/right.png4 alt=45gt;>#L334e=idpaL33ryos+s(m_c +tbinee=namspaL352e>"352os+s m_c +t;de=wf_notify"OVERTEMP ">wf_notifyos+s(d_c OVERTEMP ">sros+s-actir_c e=namspaL385e>"385os+s amp;m_c +t;de=wf_lock"st" onsun ">wf_loc44os+s;t<_4 atic/gfx/right.png4 alt=4>>#L355et;#L403e=idpaL403e=t" onsubinee=namspaL403e>"402"384os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_loc46os+s}t<_4 atic/gfx/right.png4 alt=4>>#L403e=idpaL403e=t" onsubinee=namspaL403e>"402s+s);t<_4 atic/gfx/right.png4 alt=4>>#L404e=idpaL404e=t" onsubinee=namspaL404e>"404os+sm_c +t;de=EXPORT_SYMBOL_GPL"ste=t_oL40te77e>"377os+s inee=t_oL40te77de=Eamp;m_c +t;de=wf_lock"st" onsun ">wf_loc46h" met<_4 atic/gfx/right.png4 alt=45gt;>#L349e=idpaL349e=t" onsubinee=namspaL349e>"4ros+s)t<_4 atic/gfx/right.png4 alt=4>&ge=idpaL299e=t" onsubineclear_oL40te77e>"377os+s ineclear_oL40te77de=EXe=id if (m_c +t;de=err"st" onsun ">erros+s 40os+s{t<_4 atic/gfx/right.png4 alt=4>&gsos+s,rm_c +t;de=nams"st" onsun ">namso4os+s);t<_4 atic/gfx/right.png4 alt=4>>#L362e=idpaL362e=t" onsubinee=namspaL375e>"375os+s m_c +t;de=mutex_lock"st" onsun ">mutex_lockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_loc4os+s);t<_4 atic/gfx/right.png4 alt=4>>#L363e=idpaL363e=t" oos+s_ON ">wf_notifyos+s+s_ONde=EXPORT_SYMBOL_GPL"stoL40te77e>"377os+s ineoL40te77de=E == 0amp;m_c +t;de=wf_lock"st" onsun ">wf_loc4os+s);t<_4 atic/gfx/right.png4 alt=464t;>#L391e=idp=idpaL350e=t" o_looL40te77e>"377os+s ineoL40te77de=E == 0smsos+s,rm_c +t;de=nams"st" onsun ">namso464os+st<_4 atic/gfx/right.png4 alt=46gt;>#L335e=idpaL33ryos+s(m_c nsubinee=namspaL384e>"384os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_loc4os+s);t<_4 atic/gfx/right.png4 alt=46gt;>#L346e=idpaL34=idpaLmp;m_c +t;de=wf_lock"st" onsun ">wf_loc4oos+s}t<_4 atic/gfx/right.png4 alt=4>>#L367et;#L403e=idpaL403e=t" onsubinee=namspaL403e>"40os+s);t<_4 atic/gfx/right.png4 alt=46gt;>#L338e=idpaL338e=t" o oL40te77e>"377os+s ineoL40te77de=E--mp;m_c +t;de=wf_lock"st" onsun ">wf_loc4oh" met<_4 atic/gfx/right.png4 alt=46gt;>#L319e=idpaL319e=t" onsub>"3oL40te77e>"377os+s ineoL40te77de=E == 0smsos+s,rm_c +t;de=nams"st" onsun ">namso4os+s);t<_4 atic/gfx/right.png4 alt=47gt;>#L320e=idpaL32ryos+s(m_c =namspaL346e>"346os+s m_c +t;de=printk"st" onsun ">printkos+s(m_c +t;de=KERN_WARNING"st" onsun ">KEOL40te77 condi08os cleared !st" onsustring"amp;m_c +t;de=wf_lock"st" onsun ">wf_loc470os+st<_4 atic/gfx/right.png4 alt=47gt;>#L381e=idpaL38ryos+s(m_c +tbinee=namspaL352e>"352os+s m_c +t;de=wf_notify"sORMALTEMP ">wf_notifyos+s(d_c sORMALTEMP ">sros+s-actir_c e=namspaL385e>"385os+s amp;m_c +t;de=wf_lock"st" onsun ">wf_loc4sos+s)t<_4 atic/gfx/right.png4 alt=472t;>#L367et;#L403e=idpaL403e=t" onsubinee=namspaL403e>"402os+s{t<_4 atic/gfx/right.png4 alt=47gt;>#L363e=idpaL363e=t" onsubinee=namspaL363e>"363os+s m_c +t;de=mutex_unlock"st" onsun ">mutex_unlockos+s(&m_c +t;de=wf_lock"st" onsun ">wf_loc4ros+s;t<_4 atic/gfx/right.png4 alt=47gt;>#L403e=idpaL403e=t" onsubinee=namspaL403e>"4074os+st<_4 atic/gfx/right.png4 alt=47gt;>#L404e=idpaL404e=t" onsubinee=namspaL404e>"404os+sm_c +t;de=EXPORT_SYMBOL_GPL"stclear_oL40te77e>"377os+s ineclear_oL40te77de=Eamp;m_c +t;de=wf_lock"st" onsun ">wf_loc4rs+s);t<_4 atic/gfx/right.png4 alt=47gt;>#L406e=idpaL406e=t" onsubinee=namspaL406e>"4s+s) {t<_4 atic/gfx/right.png4 alt=4>>#L324e=idpaL324e=t" is_oL40te77e>"377os+s ineis_oL40te77de=EXe=id if (m_c +t;de=err"st" onsun ">erros+s 4+s)) {t<_4 atic/gfx/right.png4 alt=47gt;>#L325e=idpaL325e=t" onsubinee=namspaL325e>"34os+s))t<_4 atic/gfx/right.png4 alt=4>>#L379e=idpaL3paL319e=t" onsub>"3oL40te77e>"377os+s ineoL40te77de=E != 0amp;m_c +t;de=wf_lock"st" onsun ">wf_loc4Los+s;t<_4 atic/gfx/right.png4 alt=4>>#L403e=idpaL403e=t" onsubinee=namspaL403e>"40os+s);t<_4 atic/gfx/right.png4 alt=4>>#L404e=idpaL404e=t" onsubinee=namspaL404e>"404os+sm_c +t;de=EXPORT_SYMBOL_GPL"stis_oL40te77e>"377os+s ineis_oL40te77de=Eamp;m_c +t;de=wf_lock"st" onsun ">wf_loc4Los+s)t<_4 atic/gfx/right.png4 alt=48gt;>#L302e=idpaL302e=t" onsubinee=namspaL302e>"4 }t<_4 atic/gfx/right.png4 alt=4>&gstaticet.pn7;dL319e>"319os_amspaL340e>"340os+s _ +t;L324e=idpaL324e=tee=namspaL30amspaL340e>"340os+s tee=namspaL30amspade=EXe=id if (m_c +t;de=err"st" onsun ">erros+s 4 }t<_4 atic/gfx/right.png4 alt=4>>#L325e=idpaL325e=t" onsubinee=namspaL325e>"34os+s);t<_4 atic/gfx/right.png4 alt=48gt;>#L365e=idpaL365e=t" onsubinee=namspaL365e>"365os+s m_c +t;de=DBG"sL325 loade">bu os+s, d="poamp;m_c +t;de=wf_lock"st" onsun ">wf_loc4Ls+s);t<_4 atic/gfx/right.png4 alt=48gt;>#L406e=idpaL406e=t" onsubinee=namspaL406e>"46os+s}t<_4 atic/gfx/right.png4 alt=48gt;>#L337e=idpaL337e=t" o;m_c +t;de +t;de=sr"st" on;m_c +t;de c +t;de=mutex_unlock"stn ">device_create_fileos+s(&m_c +t;de=wf_amp;m_c +t;de=wf_lock"st" onsun ">wf_loc4Ls)) {t<_4 atic/gfx/right.png4 alt=488t;>#L379e=idpaL394e=t" onsubinee=namspaL394e>"394os+s 20488os+st<_4 atic/gfx/right.png4 alt=4>>#L403e=idpaL403e=t" onsubinee=namspaL403e>"40ros+s)t<_4 atic/gfx/right.png4 alt=49subinee=gt;>#L389e=idp0dfx/right.;t<_c2e" onsun 0os+s{t<_4 atic/gfx/right.png4 alt=491t;&gstaticee=idpaL299e=t" onsub__expaL340e>"340os+s _ expa +t;L324e=idpaL324e=tee=namspaL30aexpaL340e>"340os+s tee=namspaL30aexpade=EXe=id if (m_c +t;de=err"st" onsun ">erros+s 4os+s))t<_4 atic/gfx/right.png4 alt=49gt;>#L372e=idpaL372e=t" onsubinee=namspaL372e>"34Vos+s;t<_4 atic/gfx/right.png4 alt=4>>#L393e=idpaL393e=t" oBUG_ON ">wf_notifyosBUG_ONde=EXPORT_SYMBOL_GPL"stclt.pn_coupn7;dL319e>"319os+s +t.pn_coupnt;&g != 0amp;m_c +t;de=wf_lock"st" onsun ">wf_loc4os+s);t<_4 atic/gfx/right.png4 alt=49gt;>#L374e=idpaL374e=t" onsubinee=namspaL374e>"42"365os+s m_c +t;de=DBG"sL325 ade">bu os+s, d="poamp;m_c +t;de=wf_lock"st" onsun ">wf_loc45os+s}t<_4 atic/gfx/right.png4 alt=49gt;>#L406e=idpaL406e=t" onsubinee=namspaL406e>"4os+s);t<_4 atic/gfx/right.png4 alt=49gt;>#L337e=idpaL337e=t" o;m_c +t;de _c +t+t;de=sr"st" on;m_c +t;de _c +tc +t;de=mutex_unlock"stn ">device_create_fileos+s(&m_c +t;de=wf_amp;m_c +t;de=wf_lock"st" onsun ">wf_loc497os+st<_4 atic/gfx/right.png4 alt=49gt;>#L368e=idpaL368e=t" onsubinee=namspaL368e>"34ros+s)t<_4 atic/gfx/right.png4 alt=49gt;>#L349e=idpaL349e=t" onsubinee=namspaL349e>"59os+s{t<_5 atic/gfx/right.png5 alt=50subinee=gt;>#L389e=idp0dfx/right.;t<_c2e" onsun5ros+s;t<_5 atic/gfx/right.png5 alt=50gt;>#L404e=idpaL4os+s mspaL340e>"340os+s os+s mspade=EXPORT_SYMBOL_GPL"ee=namspaL30amspaL340e>"340os+s tee=namspaL30amspade=Eamp;m_c +t;de=wf_lock"st" onsun ">wf_loc5os+s);t<_5 atic/gfx/right.png5 alt=50gt;>#L404e=idpaL4os+s expaL340e>"340os+s os+s expade=EXPORT_SYMBOL_GPL"ee=namspaL30aexpaL340e>"340os+s tee=namspaL30aexpade=Eamp;m_c +t;de=wf_lock"st" onsun ">wf_loc5o3+s);t<_5 atic/gfx/right.png5 alt=50gt;>#L323e=idpaL323e=t" onsubinee=namspaL323e>"53os+s}t<_5 atic/gfx/right.png5 alt=5>>#L404e=idpaL4MODULE_AUTHn ">wf_notifyosMODULE_AUTHn "365os+s m_c +t;de=DBenjamin Herrenschmidt <benh@kernel.crash .orgputou os+s, d="poamp;m_c +t;de=wf_lock"st" onsun ">wf_loc5os+s);t<_5 atic/gfx/right.png5 alt=50gt;>#L404e=idpaL4MODULE_DESCRIPTION ">wf_notifyosMODULE_DESCRIPTION"365os+s m_c +t;de=DC325 componnee=of PowerMacen."rmal s, &u os+s, d="poamp;m_c +t;de=wf_lock"st" onsun ">wf_loc5o6+s);t<_5 atic/gfx/right.png5 alt=50gt;>#L396e=idpaL3MODULE_LICENSE ">wf_notifyosMODULE_LICENSE"365os+s m_c +t;de=D+t;u os+s, d="poamp;m_c +t;de=wf_lock"st" onsun ">wf_loc5o7+s);t<_5 atic/gfx/right.png5 alt=50gt;>#L397e=idpaL397e=t" onsubinee=namspaL397e>"5ch" met<_5 atic/gfx/right.png5 alt=5>>/pregt/div> t/div>

The original LXR softwa25 byen.">;#L397e=ihttp://source ge.net/projects/lxt+>LXR L409uspay ">srothis experi9e=tal L3978os bye;#L397e=imailto:lxt@gfxux.no">lxt@gfxux.no ">s. t/div>
lxt.gfxux.no kee=ly hosted bye;#L397e=ihttp://www.redpill-gfxpro.no">Redpill Lfxpro AS ">sroprovider=of Lfxux s, sultWARNand oper408oss sert;des since 1995. t/div>