<?xml version="1.0" encoding="ANSI_X3.4-1968" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968" /><title>sysfs_schedule_callback</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="index.html" title="Linux Filesystems API" /><link rel="up" href="ch03.html" title="Chapter 3. The Filesystem for Exporting Kernel Objects" /><link rel="prev" href="re149.html" title="sysfs_remove_file_from_group" /><link rel="next" href="re151.html" title="sysfs_create_link" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span>sysfs_schedule_callback</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="re149.html">Prev</a> </td><th width="60%" align="center">Chapter 3. The Filesystem for Exporting Kernel Objects</th><td width="20%" align="right"> <a accesskey="n" href="re151.html">Next</a></td></tr></table><hr /></div><div class="refentry" title="sysfs_schedule_callback"><a id="API-sysfs-schedule-callback"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>sysfs_schedule_callback — helper to schedule a callback for a kobject </p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">int <b class="fsfunc">sysfs_schedule_callback </b>(</code></td><td>struct kobject * <var class="pdparam">kobj</var>, </td></tr><tr><td> </td><td>void (*<var class="pdparam">func</var>) <code>(</code>void *<code>)</code>, </td></tr><tr><td> </td><td>void * <var class="pdparam">data</var>, </td></tr><tr><td> </td><td>struct module * <var class="pdparam">owner</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Arguments"><a id="id3120082"></a><h2>Arguments</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>kobj</code></em></span></dt><dd><p> object we're acting for. </p></dd><dt><span class="term"><em class="parameter"><code>func</code></em></span></dt><dd><p> callback function to invoke later. </p></dd><dt><span class="term"><em class="parameter"><code>data</code></em></span></dt><dd><p> argument to pass to <em class="parameter"><code>func</code></em>. </p></dd><dt><span class="term"><em class="parameter"><code>owner</code></em></span></dt><dd><p> module owning the callback code </p></dd></dl></div></div><div class="refsect1" title="Description"><a id="id3120166"></a><h2>Description</h2><p> sysfs attribute methods must not unregister themselves or their parent kobject (which would amount to the same thing). Attempts to do so will deadlock, since unregistration is mutually exclusive with driver callbacks. </p><p> Instead methods can call this routine, which will attempt to allocate and schedule a workqueue request to call back <em class="parameter"><code>func</code></em> with <em class="parameter"><code>data</code></em> as its argument in the workqueue's process context. <em class="parameter"><code>kobj</code></em> will be pinned until <em class="parameter"><code>func</code></em> returns. </p><p> Returns 0 if the request was submitted, -ENOMEM if storage could not be allocated, -ENODEV if a reference to <em class="parameter"><code>owner</code></em> isn't available, -EAGAIN if a callback has already been scheduled for <em class="parameter"><code>kobj</code></em>. </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="re149.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="re151.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span>sysfs_remove_file_from_group</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span>sysfs_create_link</span></td></tr></table></div></body></html>