linux/drivers/base/core.c
<<
>>
Prefs
   1/*
   2 * drivers/base/core.c - core driver model code (device registration, etc)
   3 *
   4 * Copyright (c) 2002-3 Patrick Mochel
   5 * Copyright (c) 2002-3 Open Source Development Labs
   6 * Copyright (c) 2006 Greg Kroah-Hartman <gregkh@suse.de>
   7 * Copyright (c) 2006 Novell, Inc.
   8 *
   9 * This file is released under the GPLv2
  10 *
  11 */
  12
  13#include <linux/device.h>
  14#include <linux/err.h>
  15#include <linux/init.h>
  16#include <linux/module.h>
  17#include <linux/slab.h>
  18#include <linux/string.h>
  19#include <linux/kdev_t.h>
  20#include <linux/notifier.h>
  21#include <linux/of.h>
  22#include <linux/of_device.h>
  23#include <linux/genhd.h>
  24#include <linux/kallsyms.h>
  25#include <linux/mutex.h>
  26#include <linux/async.h>
  27#include <linux/pm_runtime.h>
  28#include <linux/netdevice.h>
  29
  30#include "base.h"
  31#include "power/power.h"
  32
  33#ifdef CONFIG_SYSFS_DEPRECATED
  34#ifdef CONFIG_SYSFS_DEPRECATED_V2
  35long sysfs_deprecated = 1;
  36#else
  37long sysfs_deprecated = 0;
  38#endif
  39static __init int sysfs_deprecated_setup(char *arg)
  40{
  41        return strict_strtol(arg, 10, &sysfs_deprecated);
  42}
  43early_param("sysfs.deprecated", sysfs_deprecated_setup);
  44#endif
  45
  46int (*platform_notify)(struct device *dev) = NULL;
  47int (*platform_notify_remove)(struct device *dev) = NULL;
  48static struct kobject *dev_kobj;
  49struct kobject *sysfs_dev_char_kobj;
  50struct kobject *sysfs_dev_block_kobj;
  51
  52#ifdef CONFIG_BLOCK
  53static inline int device_is_not_partition(struct device *dev)
  54{
  55        return !(dev->type == &part_type);
  56}
  57#else
  58static inline int device_is_not_partition(struct device *dev)
  59{
  60        return 1;
  61}
  62#endif
  63
  64/**
  65 * dev_driver_string - Return a device's driver name, if at all possible
  66 * @dev: struct device to get the name of
  67 *
  68 * Will return the device's driver's name if it is bound to a device.  If
  69 * the device is not bound to a driver, it will return the name of the bus
  70 * it is attached to.  If it is not attached to a bus either, an empty
  71 * string will be returned.
  72 */
  73const char *dev_driver_string(const struct device *dev)
  74{
  75        struct device_driver *drv;
  76
  77        /* dev->driver can change to NULL underneath us because of unbinding,
  78         * so be careful about accessing it.  dev->bus and dev->class should
  79         * never change once they are set, so they don't need special care.
  80         */
  81        drv = ACCESS_ONCE(dev->driver);
  82        return drv ? drv->name :
  83                        (dev->bus ? dev->bus->name :
  84                        (dev->class ? dev->class->name : ""));
  85}
  86EXPORT_SYMBOL(dev_driver_string);
  87
  88#define to_dev_attr(_attr) container_of(_attr, struct device_attribute, attr)
  89
  90static ssize_t dev_attr_show(struct kobject *kobj, struct attribute *attr,
  91                             char *buf)
  92{
  93        struct device_attribute *dev_attr = to_dev_attr(attr);
  94        struct device *dev = kobj_to_dev(kobj);
  95        ssize_t ret = -EIO;
  96
  97        if (dev_attr->show)
  98                ret = dev_attr->show(dev, dev_attr, buf);
  99        if (ret >= (ssize_t)PAGE_SIZE) {
 100                print_symbol("dev_attr_show: %s returned bad count\n",
 101                                (unsigned long)dev_attr->show);
 102        }
 103        return ret;
 104}
 105
 106static ssize_t dev_attr_store(struct kobject *kobj, struct attribute *attr,
 107                              const char *buf, size_t count)
 108{
 109        struct device_attribute *dev_attr = to_dev_attr(attr);
 110        struct device *dev = kobj_to_dev(kobj);
 111        ssize_t ret = -EIO;
 112
 113        if (dev_attr->store)
 114                ret = dev_attr->store(dev, dev_attr, buf, count);
 115        return ret;
 116}
 117
 118static const struct sysfs_ops dev_sysfs_ops = {
 119        .show   = dev_attr_show,
 120        .store  = dev_attr_store,
 121};
 122
 123#define to_ext_attr(x) container_of(x, struct dev_ext_attribute, attr)
 124
 125ssize_t device_store_ulong(struct device *dev,
 126                           struct device_attribute *attr,
 127                           const char *buf, size_t size)
 128{
 129        struct dev_ext_attribute *ea = to_ext_attr(attr);
 130        char *end;
 131        unsigned long new = simple_strtoul(buf, &end, 0);
 132        if (end == buf)
 133                return -EINVAL;
 134        *(unsigned long *)(ea->var) = new;
 135        /* Always return full write size even if we didn't consume all */
 136        return size;
 137}
 138EXPORT_SYMBOL_GPL(device_store_ulong);
 139
 140ssize_t device_show_ulong(struct device *dev,
 141                          struct device_attribute *attr,
 142                          char *buf)
 143{
 144        struct dev_ext_attribute *ea = to_ext_attr(attr);
 145        return snprintf(buf, PAGE_SIZE, "%lx\n", *(unsigned long *)(ea->var));
 146}
 147EXPORT_SYMBOL_GPL(device_show_ulong);
 148
 149ssize_t device_store_int(struct device *dev,
 150                         struct device_attribute *attr,
 151                         const char *buf, size_t size)
 152{
 153        struct dev_ext_attribute *ea = to_ext_attr(attr);
 154        char *end;
 155        long new = simple_strtol(buf, &end, 0);
 156        if (end == buf || new > INT_MAX || new < INT_MIN)
 157                return -EINVAL;
 158        *(int *)(ea->var) = new;
 159        /* Always return full write size even if we didn't consume all */
 160        return size;
 161}
 162EXPORT_SYMBOL_GPL(device_store_int);
 163
 164ssize_t device_show_int(struct device *dev,
 165                        struct device_attribute *attr,
 166                        char *buf)
 167{
 168        struct dev_ext_attribute *ea = to_ext_attr(attr);
 169
 170        return snprintf(buf, PAGE_SIZE, "%d\n", *(int *)(ea->var));
 171}
 172EXPORT_SYMBOL_GPL(device_show_int);
 173
 174/**
 175 *      device_release - free device structure.
 176 *      @kobj:  device's kobject.
 177 *
 178 *      This is called once the reference count for the object
 179 *      reaches 0. We forward the call to the device's release
 180 *      method, which should handle actually freeing the structure.
 181 */
 182static void device_release(struct kobject *kobj)
 183{
 184        struct device *dev = kobj_to_dev(kobj);
 185        struct device_private *p = dev->p;
 186
 187        /*
 188         * Some platform devices are driven without driver attached
 189         * and managed resources may have been acquired.  Make sure
 190         * all resources are released.
 191         *
 192         * Drivers still can add resources into device after device
 193         * is deleted but alive, so release devres here to avoid
 194         * possible memory leak.
 195         */
 196        devres_release_all(dev);
 197
 198        if (dev->release)
 199                dev->release(dev);
 200        else if (dev->type && dev->type->release)
 201                dev->type->release(dev);
 202        else if (dev->class && dev->class->dev_release)
 203                dev->class->dev_release(dev);
 204        else
 205                WARN(1, KERN_ERR "Device '%s' does not have a release() "
 206                        "function, it is broken and must be fixed.\n",
 207                        dev_name(dev));
 208        kfree(p);
 209}
 210
 211static const void *device_namespace(struct kobject *kobj)
 212{
 213        struct device *dev = kobj_to_dev(kobj);
 214        const void *ns = NULL;
 215
 216        if (dev->class && dev->class->ns_type)
 217                ns = dev->class->namespace(dev);
 218
 219        return ns;
 220}
 221
 222static struct kobj_type device_ktype = {
 223        .release        = device_release,
 224        .sysfs_ops      = &dev_sysfs_ops,
 225        .namespace      = device_namespace,
 226};
 227
 228
 229static int dev_uevent_filter(struct kset *kset, struct kobject *kobj)
 230{
 231        struct kobj_type *ktype = get_ktype(kobj);
 232
 233        if (ktype == &device_ktype) {
 234                struct device *dev = kobj_to_dev(kobj);
 235                if (dev->bus)
 236                        return 1;
 237                if (dev->class)
 238                        return 1;
 239        }
 240        return 0;
 241}
 242
 243static const char *dev_uevent_name(struct kset *kset, struct kobject *kobj)
 244{
 245        struct device *dev = kobj_to_dev(kobj);
 246
 247        if (dev->bus)
 248                return dev->bus->name;
 249        if (dev->class)
 250                return dev->class->name;
 251        return NULL;
 252}
 253
 254static int dev_uevent(struct kset *kset, struct kobject *kobj,
 255                      struct kobj_uevent_env *env)
 256{
 257        struct device *dev = kobj_to_dev(kobj);
 258        int retval = 0;
 259
 260        /* add device node properties if present */
 261        if (MAJOR(dev->devt)) {
 262                const char *tmp;
 263                const char *name;
 264                umode_t mode = 0;
 265
 266                add_uevent_var(env, "MAJOR=%u", MAJOR(dev->devt));
 267                add_uevent_var(env, "MINOR=%u", MINOR(dev->devt));
 268                name = device_get_devnode(dev, &mode, &tmp);
 269                if (name) {
 270                        add_uevent_var(env, "DEVNAME=%s", name);
 271                        kfree(tmp);
 272                        if (mode)
 273                                add_uevent_var(env, "DEVMODE=%#o", mode & 0777);
 274                }
 275        }
 276
 277        if (dev->type && dev->type->name)
 278                add_uevent_var(env, "DEVTYPE=%s", dev->type->name);
 279
 280        if (dev->driver)
 281                add_uevent_var(env, "DRIVER=%s", dev->driver->name);
 282
 283        /* Add common DT information about the device */
 284        of_device_uevent(dev, env);
 285
 286        /* have the bus specific function add its stuff */
 287        if (dev->bus && dev->bus->uevent) {
 288                retval = dev->bus->uevent(dev, env);
 289                if (retval)
 270       pt_debug" class="sref">pt_debug("device: '%s': %s: bus uevent() returned %d\n",
 291                          "L270"> 270       dev_name" class="sref">dev_name(dev), __func__, retval);
 292        }
 293
 294        /* have the class specific function add its stuff */
 295        if (dev->class && dev->class->dev_uevent) {
 296                retval = dev->class->dev_uevent(dev, env);
 297                if (retval)
 298                         270       pt_debug" class="sref">pt_debug("device: '%s': %s: class uevent() "
 299                                  span class="string">"returned %d\n",> 270       dev_name" class="sref">dev_name(dev),
 300                                  270       __func__" class="sref">__func__, retval);
 301        }
 302
 303        /* have the device type specific function add its stuff */
 304        if (dev->type && dev->type->uevent) {
 305                retval = dev->type->uevent(dev, env);
 23obj);
retval)
 307                        pt_debug("device: '%s': %s: dev_type uevent() "
 308                                 "returned %d\n",> 270       dev_name" class="sref">dev_name(dev),
 309                                  270       __func__" class="sref">__func__, retval);
 310        }
 311
 312        return retval;
 313}
 314
 315static const struct kset_uevent_ops device_uevent_ops = {
 316        .filter =        270       dev_uevent_filter" class="sref">dev_uevent_filter,
 317        .name =          270       dev_uevent_name" class="sref">dev_uevent_name,
 318        .uevent =        270       dev_uevent" class="sref">dev_uevent,
 319};
 320
 321static  270       ssize_t" class="sref">ssize_t show_uevent(struct device *dev, struct device_attribute *attr,
 322                           char *buf)
 323{
 324        struct kobject *top_kobj;
 325        struct kset *kset;
 326        struct kobj_uevent_env *env = NULL;
 327        int i;
 328        size_t count = 0;
 329        int retval;
 330
 331        /* search the kset, the device belongs to */
 332        top_kobj = &dev->kobj;
 333        while (!top_kobj->kset && top_kobj->parent)
 334                top_kobj = top_kobj->parent;
 335        if (!top_kobj->kset)
 336                goto out;
 337
 338        kset = top_kobj->kset;
 339        if (!kset->uevent_ops || !kset->uevent_ops->uevent)
 340                goto out;
 341
 342        /* respect filter */
 343        if (kset->uevent_ops && kset->uevent_ops->filter)
 344                if (!kset->uevent_ops->filter(kset, &dev->kobj))
 345                        goto out;
 346
 347        env = kzalloc(sizeof(struct kobj_uevent_env), GFP_KERNEL);
 348        if (!env)
 349                return -ENOMEM;
 350
 351        /* let the kset specific function add its keys */
 352        retval = kset->uevent_ops->uevent(kset, &dev->kobj, env);
 353        if (retval)
 354                goto out;
 355
 356        /* copy keys to file */
 357        for (i = 0; i < env->envp_idx; i++f="drivers/base/core.c#L298" id=358" id="L358" class="line" name="L358"> 358                count += sprintf(&buf[count], "%s\n",> 270       env" class="sref">env->envp[i]);
 359out:
 360        kfree(env);
 361        return count;
 362}
 363
 364static  270       ssize_t" class="sref">ssize_t store_uevent(struct device *dev, struct device_attribute *attr,
 365                            const char *buf,> 270       size_t" class="sref">size_t countf="drivers/base/core.c#L298" id=366" id="L366" class="line" name="L366"> 366{
 367        enum kobject_action action;
 368
 369        if (kobject_action_type(buf,> 270       count" class="sref">count, &action) == 0f="drivers/base/core.c#L298" id=370" id="L370" class="line" name="L370"> 370                kobject_uevent(&dev->kobj, action);
 371        else
 372                dev_err(dev, "uevent: unknown action-string\n");
 373        return count;
 374}
 375
 376static struct device_attribute uevent_attr =
 377        __ATTR(uevent, S_IRUGO | S_IWUSR,> 270       show_uevent" class="sref">show_uevent,> 270       store_uevent" class="sref">store_uevent);
 378
 379static int device_add_attributes(struct device *dev,evice *devic>
 379static int  *dev hrefdd_attributes" class="sr5="+code=class" c5f="+code=device_dd_attributes" class="sr5="+code=class" c5f="+code=device_dd_attributes" class="sr5="+coass="sref">devic>"uevent: >&quo4a>                if (        size_t k286"> 2863/a>        filter =       add its s7" class="sref">env);3ivers38" class="line" name="ass="sref">env->e="+c 318        .                filter =       acode=ueves" class="sref">bus 3amp;&38ce: '%s': %s: dev_type uevenot;uevent: >&quo4a>             href="+code=device_addcreateode=tstatic int  37"evice *filter =       aL379"> 37+code=dev" class="sref">3ev&quo4a>          class="sref">dev hrefdd_attributesice_add_af="drivers/base/core.c#L390" i3="L290" class="line" nnnnnnnnnnnnnnnnnbreak"class="sref">filter =       _debug&q3ot;de3ice: '%s':376" id="L376" class="line" name="sref">de3_name(dev), f="+code=dev" classot;uevent: >&quo4a>          class="sref">dev hrefdd_attributene" name=3L293"> 293
 350nvp_idx; kobj"L294"> 234        env, def="+codmoveode=tstatic int  37"evice *filter =       n add its3stuff */
 28ass" class="sref">class<3a> &a3p;&  374}
ot;uevent: >&quo4a>          "class="sref">filter =       ndd its s7+code=dev" class="sref">3evkset = &q3ot;de3ice: &evice" void class="string">def="+codmoveoef="+code=dev" class="sref">devdevic>
,> 270    3  dev_name" class="sref">dev_name(<<<< *dev hrefdd_attribut4"sref">__4unc__, kobj_type4ne" name=4L302"> 302
        size_t  343        /* have the device type specific 4unction a4d its stuff */
 354inevice *dev hrefdd_attribut4"4ction a4dtuff */
env->e="+c 318        .                dev hrefdd_attribut4"5ction a4dss" class="sref">class<4evdef="+codmoveode=tstatic int  37"evice *filter =      4ref="driv4rs/base/core.c#L298" id=407" i40><376" id="L376" class="line" name4_debug&q4ot;de40" class="sref">kset = device *dev,binref="+code=*devic>
__4unc__, retval);
) == 0inref="+codee_add_attributstatic inevice *dev hrefdd_attribut4ne" name=4L311"> 311
kobj_type4"L312"> 342        return         &quo4a>                if (devic>&qu href="+code=size_t" class="sref">size_t  414
ssize_t  345static const struct4 *filter =      4>kset_uev4nt_ops env->e="+c 318        .                filter =      4>ef="driv4     dev_uevent_filter" 4lass=41" class="line" name=", ot;uevent: >&quo4a>             href="+code=device_addcreateo0inrde=tstatic int  37"evice *filter =      470   4   dev_uevent_name" clas4="sre41ce: '%s': %s:f="+code=dev" classot;uevent: >&quo4a>          class="sref">dev hrefdd_attribut4 270 4     dev_uevent" class="4ref">41 dev_name" class="sref">dev_name(break"class="sref">filter =      4e="L320">4320
retval376" id="L376" class="line" name4"L321"> 341static  270    4  ssi42ce: '%s':f="+code=dev" classot;uevent: >&quo4a>          class="sref">dev hrefdd_attribut4"+code=sh4w_uevent" class="sref">s4ow_ue42ass="sref">dev),  350nvp_idx; kob4">buf4
def="+codmoveo0inrde=tstatic int  37"evice *filter =      4="L324"> 424        struct  34+code=top_kobj" class="s4ef">t4p_kobj;
 374}
ot;uevent: >&quo4a>          "class="sref">filter =      4ef="+code4kset" class="sref">kset<4a>;
<4 href=376" id="L376" class="line" name4"ef="driv4v *env = def="+codmoveobinref="+code=dev" class="sref">devdevic>
countdev_name(<<<<<<<<) == 0inref="+codee_add_attributstatic inevice *dev hrefdd_attribut4ref="driv4rs/base/core.c#L330" id=4L330"4class=aclass="sref">filter =      4"L331"> 341        devic>&qu href="+code=size_t" class="sref">size_t 
/* respect filter */
-> 354inevice *dev hrefdd_attribut4a>->env->e="+c 318        .                dev hrefdd_attribut4aL315"> 34ef="+code=top_kobj" clas4="sre4">top_kobj->def="+codmoveo0inrde=tstatic int  37"evice *filter =      4>ks43href=376" id="L376" class="line" name4a href="d4ivers/base/core.c#L337" 4d="L343 class="sref">env =  348        device * 316        .*devic>
top_kob4-43 dev_name" class="sref">dev_namedevice_uevent_ef="+codergrou"ce * |  316       grou">*dev hrefdd_attribut4aef="driv4=uevent_ops" class="sref4>ueve43lass=aclass="sref">filter =      4a href="d4ivers/base/core.c#L341" 4d="L344a href="drivers="sref">devic>"uevent: >&quo4a>                if ( 342                size_t /* have the device type specific 4ef="+code4uevent_ops" class="sref"4ueven4_ops &&  316       grou">*filter =      4>uevent_ops->ass="sref">env->egrou"> 316       grou">*                filter =      4t;
ot;uevent: >&quo4a>             href="+code=devsysfsccreateogrou"ce *action);
 371 316       grou">*filter =      4"L347"> 347        &quo4a>          claclass="sref">filter =      4tL338"> 34 class="sref">kzalloc 350nvp_idx; kob4drivers/b4se/core.c#L349" id="L3494 clas44 dev_name" class="sref">dev_name(<<<<<<< *action);
kob4def="driv4 href="drivers/base/core4c#L354" id="L350" class="linnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn="L371"> 371 316       grou">*filter =      4"L351"> 341         379staticbreak"class="sref">filter =      4add its k4ys */
dev), kset 374}
ot;uevent: >&quo4a>          "class="sref">filter =      4"L356"> 346        env = i < <4 href45" namevice" void class="string">def="+codmoveogrou"> 316        .*devic>
spr4ntf(&device_uevent_ef="+codergrou"ce * |  316       grou">*dev hrefdd_attribut4core.c#L340" id="L360" class="line4 name45lass=aclass="sref">filter =      4ode=env" 4lass="sref">env);
devic>&qu href="+code=size_t" class="sref">size_t /* respect filter */
 463
 354grou"> 316       grou">*dev hrefdd_attribut4"L364"> 344static  270    4  ssi46ode=env" class="sref"ass="sref">env->egrou"> 316       grou">*                dev hrefdd_attribut4" href="d4re_uevent" class="sref">4tore_46>top_kobj->sysfscodmoveogrou"ce *action);
 371 316       grou">*filter =      4s="sref">4uf,> 270       s4ze_t"46href=376" id="L376" class="line" name4="L367"> 467        enum env = device * * *dev hrefdd_attribut4"a href="49        if (filter =      4oore.c#L34n_type(bref="+code=dev" cs/baspe | dev_uevent(dev, filter =      4ect_ueven4(&de class="sref">device_uevent_ *count, * | type->uevent(dev, filter =      4eref="dri4e="L372"> 372       4     47base/core.c#L" 328        &quo4a>          "class="sref">filter =      4e"L363"> 4+code=dev" class="sref">4ev/* have the device type specific 4href="dri4ers/base/core.c#L374" id4"L37447ops && dev, filter =      4="L375"> 475
&quo4a>             href="+code=device_adda href="+code=dev" class="sref">dev,evice *);
dev, 7"evice *filter =      4"L376"> 346static struct &quo4a>          class="sref">dev hrefdd_attribut4ce_attrib4te  374}
ot;uevent: >&quo4a>          "class="sref">filter =      4+code=uev4nt" class="sref">uevent<4a>, <47ce: '%s':href="+code=parot;uevent: >&quo4a>             href="+code=device_adda hrbinref="+code=dev" class="sref">dev,binref="+code=*);
dev, binref="ice *filter =      4"a href="49static int (&&quo4a>          class="sref">dev hrefdd_attribut4core.c#L34ttributes(struct  355
filter =      4ef="drive4s/base/core.c#L379" id="4379" 48base/core.c#L312" id="L312" class="line" name4s" class=4sr5="+code=class" c5f="+4ode=d48t">/* respect filter */
 354>dev, filter =      4lasf="dri4er*/
 316        .*);
env 316       grou">*filter =      4e"L375"> 4(3a href="+code=dev" cla4s3"sr48">uevent_ops->&quo4a>          class="sref">dev hrefdd_attribut4>k286"> 2463/a>         355
filter =      4ee_attrib4" class="sref">env);4ivers48" class="line312" id="L312" class="line" name4scode=uev4s" class="sref">bus 4amp;&48" class="sref">kset =  34+code=dev" class="sref">4ev&quo4a>             href="+code=device_adda hrgrou"> 316        .*);
uevent( 316       grou">*filter =      4eore.c#L34f="drivers/base/core.c#L490" i4="L290" class=&quo4a>          class="sref">dev hrefdd_attribut4_debug&q4ot;de4ice: '%s':L355"> 355
 316          codmoveo+codrgrou">    "class="sref">filter =      4"sref">de4_name(/* respect filter */
 293
 244        ssize_t 
 355
 316          codmoveo+codrgrou">    lass="sref">kfree( 24ass" class="sref">class<4a> &a4p;&  354>dev, kfree(4evdef="+codmoveogrou"> 316        .*);
env 316       grou">*filter =      4"code=uev4f="drivers/base/core.c#L498" i49" cla"> 355
kfree( 34(&q4ot;de49"line" name="L349; dev, kfree(,> 270    4  dev_name" class="sreclass="string">def="+codmoveobinref="+code=dev" class="sref">dev);
dev, binref="ice *filter =      5"sref">__5unc__,  355
kfree( 302
dev, kfree( 353        "uevent: unk="+codmoveoef="+code=dev" class="sref">dev);
dev, 7"evice *filter =      5unction a5d its stuff */
ssize_t 
;
 374}
ot;uevent: >&quo4a>          "class="sref">filter =      5"5ction a5dss" class="sref">class<5evenv = &q5ot;de50" namevice" void class="string">def="+codmoveo7"evice * *dev hrefdd_attribut5rned ŷd\n",> 270    50kobjeaclass="sref">filter =      5"sref">__5unc__, bref="+code=dev" cs/baspe | dev_uevent(dev, filter =      5ne" name=5L311"> 311
de class="sref">device_uevent_ *count, * | type->uevent(dev, filter =      5"L312"> 352        return /* respect filter */
def="+codmoveogrou"> 316        .*);
uevent( 316       grou">*filter =      5="L314"> 514
ssize_t  355static const struct5kfree(def="+codmoveogrou"> 316        .*);
env 316       grou">*filter =      5>ef="driv5     dev_uevent_filter" 5lass=51 class="sref">env = dev, filter =      5 270 5     dev_uevent" class="5ref">51 dev_name" class="sre>"uevent: unk="+codmoveoef="+code=dev" class="sref">dev);
dev, 7"evice *filter =     "5rsref">__5320
retvalclass="string">def="+codmoveobinref="+code=dev" class="sref">dev);
dev, binref="ice *filter =     "5"L321"> 351static  270    5  ssi52base/core.c#L312" id="L312" class="line" name5"+code=sh5w_uevent" class="sref">s5ow_ue52ass="312" id="L312" class="line" name5" href="d5
/* have the device type specific 5="L324"> 524        struct ssize_t  35+code=top_kobj" class="s5ef">t52vent(struct device * 365                            const char *kset<5a>;
<52id="L346" class="line" name="ount" class="sref">countf="drivers/base/cocass="sref">kfree(kobjec5rs/base/c5re.c#L328" id="L328" cla5s="li52ce: '%name="L374"> 374}
lass==rivevice" class="srelass==rivev*);
action) == 0f="drivers/base/core.c#">uevent(filter =     "5"270 5t" class="sref">count__5rs/base/core.c#L330" id=5L330"5class=12" id="L312" class="line" name5"L331"> 351        uevent_attr =

S_IRUGO | show_uevent,>ent);
filter =     "5p;/* have the device type specific 5a>-> 357     /sys/77" ids/+code=i" class="sref">i = 0;  35ef="+code=top_kobj" clas5="sre53ventGFP_KERNEL);
kobj, kobj, koe=en"class="sref">filter =      5>ks53e=device_attribute" class="sref">dev5a href="d5ivers/base/core.c#L337" 5d="L353 clasname="L357"> 357    *de=i" class="sref">i = 0;          357   * def="+ccreateode=t - create sysfs "L377" clref="+ass=def="+.de=i" class="sref">i = 0;  5bj" class="sref">top_kob5-53 dev_name="L357"> 357   * @def:=def="+.de=i" class="sref">i = 0; __5=uevent_ops" class="sref5>ueve53lass=name="L357"> 357   * @"L37:=def="+ "L377" clrdescriptor.de=i" class="sref">i = 0;  357   *ode=i" class="sref">i = 0;  352        device *devic>
device_uevent_ * 365                            concass="sref">kfree(kobjec5>uevent_opsdevic>"uevent: >&quo4a>                if (;
 354"+code=S64dev hrefdd_attribut5"L347"> 357        devic>"uevent: >&quo4a>             t);
action);
 37"ev                    coners/base/core.c#L371                        conc  if (kzalloc 374}
ot;uevent: >&quo4a>          "class="sref">filter =      5drivers/b5se/core.c#L349" id="L3495 clas54 dev_312" id="L312" class="line" name5def="driv5 href="drivers/base/core5c#L3554lass=12" id="L312" class="line" name5"L351"> 351         357    *de=i" class="sref">i = 0; 
 357   * def="+codmoveode=t - odmove sysfs "L377" clref=".de=i" class="sref">i = 0; kset 357   * @def:=def="+.de=i" class="sref">i = 0;  357   * @"L37:=def="+ "L377" clrdescriptor.de=i" class="sref">i = 0;  357   *ode=i" class="sref">i = 0;  356        def="+codmoveode=tstatic int devic>
device_uevent_ * 365                            concass="sref">kfree(i < <5 href55" namject_action" class="sref">kobjec5spr55"line" name="L349; dev hrefdd_attribut5core.c#L350" id="L360" class="line5 name55" class="sref">retvalclass="string">sysfscodmoveode=tstatic int action);
 37"ev                    coners/base/core.c#L371                        conc  if (env);
/* respect filter */
 563
 357    *de=i" class="sref">i = 0;  354static  270    5  ssi56ode=ename="L357"> 357   * ref="+ccreateo0inrde=t - create sysfs 0inary "L377" clref="+ass=def="+.de=i" class="sref">i = 0; 5tore_56_kobjname="L357"> 357   * @def:=def="+.de=i" class="sref">i = 0; 5uf,> 270       s5ze_t"56href=name="L357"> 357   * @"L37:=def="+ 0inary "L377" clrdescriptor.de=i" class="sref">i = 0;  567        enum  357   *ode=i" class="sref">i = 0;  device *devic>
(&device_uevent_binref="+codeaction) == 0inref="+codee_add_attributstatic inev                    concass="sref">kfree(filter =      5ect_ueven5(&devic>"uevent: >&quo4a>             ="L350"> 350EINVA        if (!filter =      5eref="dri5e="L372"> 372       5     57base/core.c#L"349; dev hrefdd_attribut5e"L363"> 5+code=dev" class="sref">5ev"uevent: ot;uevent: >&quo4a>             t);
action);
 &name="L374"> 374}
ot;uevent: >&quo4a>          "class="sref">filter =      5="L375"> 575
 356static struct  350EXPORT_SYMBOL_GP        if (! * 5te env = uevent<5a>, <57" namname="L357"> 357    *de=i" class="sref">i = 0;  357   * f">devi = 0; (struct  357   * @def:=def="+.de=i" class="sref">i = 0;  357   * @"L37:=def="+ 0inary "L377" clrdescriptor.de=i" class="sref">i = 0;  357   *ode=i" class="sref">i = 0; def="+codmoveobinrde=tstatic int devic>
device_uevent_binref="+codeaction) == 0inref="+codee_add_attributstatic inev                    concass="sref">kfree( 5(3a href="+code=dev" cla5s3"sr58">uevaclass="sref">filter =      5>k286"> 2563/a>         354"+code=S64dev hrefdd_attribut5ee_attrib5" class="sref">env);5ivers58" class="line" name="sref">devic>&qu=ysfscodmoveo0inrde=tstatic int action);
bus 5amp;&58" cla312" id="L312" class="line" name5aL379"> 35+code=dev" class="sref">5ev 350EXPORT_SYMBOL_GP        if (! *&q5ot;de59a hrename="L357"> 357    *de=i" class="sref">i = 0; de5_name( 357   * def="+cschedul+ccallback_owner - helper to schedul+ a callback+ass=a 3icei = 0;  293
 357   * @def:=def="+.de=i" class="sref">i = 0;  254         357   * @func: callback+aunction to invoke later.de=i" class="sref">i = 0; 
 357   * @owner: modul+ owning the callback+routan>de=i" class="sref">i = 0;  25ass" class="sref">class<5a> &a59href=name="L357"> 357   *de=i" class="sref">i = 0; 5ev 357   * AL377" clrmethods muassnot unregister themselves or their par/a> 3icei = 0;  357   * (which would amoua> to the sre. thing).  AL3empts to do so will 3iadlock,e_=i" class="sref">i = 0;  35(&q5ot;de59 dev_name="L357"> 357   * sin"+ unregistration is mutually exclusiii = 0; ,> 270    59lass=name="L357"> 357   *de=i" class="sref">i = 0; __6unc__,  357   * Ilasiadrmethods ce="Lall this+routan>, which will aL3empt to allocat/e_=i" class="sref">i = 0;  302
 357   * and schedul+ a workqueue odquest to Lall back+@func with @def as itse_=i" class="sref">i = 0;  293
 357   * argu in the workqueue's process" cltext.  @def will be pinned untile_=i" class="sref">i = 0;          357   * @func;name="s.de=i" class="sref">i = 0; 
 357   *de=i" class="sref">i = 0; class<6ev 357   * This+routan> is usually Lalled via the in"sre def="+cschedul+ccallback(),e_=i" class="sref">i = 0;  357   * which automs="sally sets @owner to THIS_MODULE.de=i" class="sref">i = 0;  357   *de=i" class="sref">i = 0; &q6>    60 dev_name="L357"> 357   * Rame="s 0eamethe odquest was submiL3ed, -ENOMEMeamestorage could notde=i" class="sref">i = 0; ,> 270 357   * be allocat/d, -ENODEVeamea odfer/a"+ to @owner isn't availab=".de=i" class="sref">i = 0;  311
 357   *de=i" class="sref">i = 0;         return  357   * NOTE: This+routan> won't workeameCONFIG_SYSFS isn't set!  It uses ande=i" class="sref">i = 0;  357   * underlying sysfs routan> (sin"+ it is iltended+ass=use by "L377" clde=i" class="sref">i = 0; 
 357   * methods), and amesysfs isn't availab=" you'll gessnothing " c -ENOSYS.de=i" class="sref">i = 0; static const struct6 357   *ode=i" class="sref">i = 0; kset_uev6nt_ops device *devic>
ef="driv6     dev_uevent_filter" 6lass=61" class="line" name="void (O | dev hrefdd_attribut670   6   dev_uevent_name" clas6="sre61" namject_action" class="sref">kobjec6 270 6     dev_uevent" class="6ref">61 dev_name" clname="L374"> 374}
=ysfscschedul+ccallbackstatic int action);
kobjec6 9f="driv6320
retvalllllllll(void (O)(void *))L374"> 374}
funcode=S64uevent( 361static  270    6  ssi62a hre312" id="L312" class="line" name6"+code=sh6w_uevent" class="sref">s6ow_ue62ass=""L350"> 350EXPORT_SYMBOL_GP        if (! */* have the device type specific 6="L324"> 624        struct klist_childr/a_gkobj, ,  | , dev hrefdd_attribut6"L315"> 36+code=top_kobj" class="s6ef">t62">uevaclass="sref">filter =      6ef="+code6kset" class="sref">kset<6a>;
<62id="L346" cla="sref">device_uevent_ *fa#L365" id="L365" class="p">fa#Le_uevO | fa#L_par/a>ce *fa#L_par/a>="+code=S_IWUSR" clanbj, device_uevent_ *.c#L306" id="L33ice | );
 * *.c#L306" id="L33ice   6re.c#L328" id="L328" cla6s="li62" class="sref">kset =  6t" class="sref">count *.c#L306" id="L3gko_ef=> *="+code=S_IWUSR" clarivode=S64 361        
klist_childr/a_puobj, ,  | , dev hrefdd_attribut6p;/*aclass="sref">filter =      6a>->device_uevent_ *fa#L365" id="L365" class="p">fa#Le_uevO | fa#L_par/a>ce *fa#L_par/a>="+code=S_IWUSR" clanbj,  =      6aL315"> 36ef="+code=top_kobj" clas6="sre634d="L346" cla="sref">device_uevent_ *.c#L306" id="L33ice | );
 * *.c#L306" id="L33iceks63e=device_attribute" class="sref">dev6a href="d6ivers/base/core.c#L337" 6d="L3636; *.c#L306" id="L3puo_ef=> *="+code=S_IWUSR" clarivode=S64         6bj" class="sref">top_kob6-63 dev_12" id="L312" class="line" name6a9f="driv6=uevent_ops" class="sref6>ueve63lass=name="L357"> 357    *de=i" class="sref">i = 0;  357   * def="+cinitializt - init=def="+ ="srefur".de=i" class="sref">i = 0;  362         357   * @def:=def="+.de=i" class="sref">i = 0;  357   *de=i" class="sref">i = 0; -> 357   * This+prepar/sethe def="+ ass=use by other lay/a> by initializingde=i" class="sref">i = 0;  36f="+code=uevent_ops" cla6s="sr64_kobjname="L357"> 357   * its fields.de=i" class="sref">i = 0; ;
 357   * It is the first half of f">devi = 0;  357   * that+aunction, though it ce="also be Lalled separa#Lly, so on>de=i" class="sref">i = 0; kzalloc 357   * may=use @def's fields. In parce"ular, gko_ef=> *()/puo_ef=> *()de=i" class="sref">i = 0;  6se/core.c#L349" id="L3496 clas64 dev_name="L357"> 357   * may=be used+ass=odfer/a"+ coua>ing of @def aft/a calling thise_=i" class="sref">i = 0;  357   * aunction.de=i" class="sref">i = 0;  361         357   *de=i" class="sref">i = 0; 
 357   * All fields in @def muassbe initialized by the caller to 0, exceptde=i" class="sref">i = 0; kset 357   * for those explicitly set to some other value.  Th+ =implestde=i" class="sref">i = 0; -> 357   * approach is to=use kzalloc() to allocat/ the s"srefur"" cltainingde=i" class="sref">i = 0;  357   * @def.de=i" class="sref">i = 0; ;
         357   *de=i" class="sref">i = 0;  357   * NOTE: Use puo_ef=> *() to gii = 0; i < <6 href65" namname="L357"> 357   * @def directly oa"+ you have Lalled this+aunction.de=i" class="sref">i = 0;  6code=sprintf" class="sre6">spr65 dev_name="L357"> 357   *ode=i" class="sref">i = 0; def="+cinitialize365" id="L365" class="initializedev hrefdd_attribut6ode=env" 6lass="sref">env);
filter =      6href="dri6ers/base/core.c#L362" id6"L36266se/core.c#L352ine" name="L37ction);
kobj, kobj, koe=en"class="sref">filter =      6="L363"> 663
lineect"init="L371" class="lineect"initaction);
 3class="ks="sref">count, *filter =      6=>->static  270    6  ssi663s="sr5="+coaclass="string">INIT_LIST_HEADref">count,INIT_LIST_HEADaction);
filter =      6= href="d6re_uevent" class="sref">6tore_664s="sr5="+coaclass="string">mutex"init="L371" class="mutex"initaction);
filter =      6=;
,> 270       s6ze_t"665s="sr5="+coaclass="string">lockdep_>ko_novalida#L_a>,> ="L371" class="lockdep_>ko_novalida#L_a>,> action);
filter =      6=ref="dri667        enum action);
filter =      6=s/base/c6> INIT_LIST_HEADref">count,INIT_LIST_HEADaction);
);
filter =      6=270 69        if ((, (& 372       6     67t">/* respect filter */
 6+code=dev" class="sref">6evuevent_attr =
lineect="L371" class="lineecte_uevO | ce *dev hrefdd_attribut6href="dri6ers/base/core.c#L374" id6"L37467opskobjec6="L375"> 675
uevent_attr =
lineect="L371" class="lineecte_uevO | ;
static struct dev6h"L367"> 6te  | dev hrefdd_attribut6hs/base/c6nt" class="sref">uevent<6a>, <677s="sr5="+coahref="+code=kset" classvirtual_cirstatic int  ef"ing">"virtual"de=i" cmect_action" class="sref">kobjec6"a href="69static int (& 3class=s_ >kobj, koe=eners/base/core.c#L371" id="L371" class="line" nac  if ((struct  374}
virtual_cirstatic int /* have the device type specific 6lasf="dri6er*/
kobjec6e"L375"> 6(3a href="+code=dev" cla6s3"sr684d="L346" cla="sref">device_uevent_lineect="L371" class="lineecte_uevase/core.c#L371" id="L371" class="line" na  if (;
        device_uevent_a>,> ="L371" class="a>,>  |  6" class="sref">env);6ivers68" cla}  if (bus 6amp;&68" class="sref">kset =  36+code=dev" class="sref">6ev t);
device_uevent_acltainer_o>action) == acltainer_o>="+code=S_IWUSR" cla id="L371" class="ine" naattr,
kset = &q6ot;de69a hreass="srvoid class="string">pekset = de6_name(kobjec6"ass" c5f6L293"> 293
device_uevent_a>,> _cirstatic int  |  264        kfree="L371" class="lfree="+code=S_IWUSR" clarirstatic int  6stuff */
top_312" id="L312" class="line" name6nk286"> 26ass" class="sref">class<6a> &a69e=device_attribute" class="sref">dev6ne_attrib6+code=dev" class="sref">6evdev6ns/base/c6f="drivers/base/core.c#L698" i697t" cevf="+code=dev" cs/basline_ns | kset =  36(&q6ot;de69kobjeaclass="sref">filter =      6nore.c#L36d\n",> 270    69lass="sref">bref="+code=dev" cs/baspe | __7unc__,  374}
"irstatic int dev, __7uname( 293
/* have the device type specific 7n3" name=7L        count,pefilter =      7"4ction a7dtuff */
kobjec7"5ction a7dss" class="sref">class<7ev 316       =ysfsco">d="L346" c="line" name="L370"> 3line_=ysfsco"> 316       line_=ysfsco">kobjec7"6ction a7dcode=dev" class="sref">707" i706d="L346" cla.ase/core.c#L371child_nskobjec7"7ction a7d="drivers/base/core.c#L7ot;de70" nam}  if (&q7>    70 dev_12" id="L312" class="line" name7"9f="driv7r\n",> 270uevent_attr =
lineect="L371" class="lineecte_uevO12" id="L312" class="line" name7ne" name=7L311"> 311
,> ="L371" class="a>,>  | ,
kset =         return kobjec7n2" name=7ivers/base/core.c#L313" 7d="L3712d="L346" cla="sref">device_uevent_a>,> _cirstatic int  | 
devicenamvalstatic int static const struct7 "irstatic int ef="driv7     dev_uevent_filter" 7lass=716;7ction a7   dev_uevent_name" clas7="sre717s="sr5="+coahref="+cname="L374"> 374}
NUL        if (! 7     dev_uevent" class="7ref">71 dev_12" id="L312" class="line" name7 9f="driv7320
dev,  371static  270    7  ssi720;acirstatic int  3pecount,pes7ow_ue72t">/* respect filter */
cirstatic int kobj,  3pedev,  *dev, glue_cirae_ue  if (        struct t724s="sr5="+coaclass="string">namvalstatic int acirstatic int  | _" id="L371" class="par/a>_" id" namn ef"ing">"%s"de=i" cm href="+code=devpekset<7a>;
<72id="L346" claame="L354"> 354namvalstatic int filter =      7"ef="driv7v *, acirstatic int  374}
NUL        if (! 7t" class="sref">countacirstatic int  371        
/* respect filter */
/* have the device type specific 7a>->ce * *"par/a>devic>
 37ef="+code=top_kobj" clas7="sre734d="L346" claaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaref="+code=dev" cs/base/core.c#L306" id="L33ice | ce *ks73e=devaclass="sref">filter =      7a href="d7ivers/base/core.c#L337" 7d="L3736;dev, filter =      7as/base/c78        dev, DEFINE_MUTEX="+code=S_IWUSR" clagdp_mutex="L371" class="gdp_mutex" nac  if ( 7bj" class="sref">top_kob7-73tf(&retvaltr,
        /* respect filter */
/* respect filter */
-> 357     block disks show up in /sy*/i = 0;  37f="+code=uevent_ops" cla7s="sr744d="L346" claaaaaaaaaame= |        =ysfscdeprecat/dode=v&ion"&ion"52ine" name="L37ction);
dev,  3,> ="L371" class=",> ef=") aclass="sref">filter =      7t;
 | ce *dev,  3,> ="L371" class=",> ef=")class="sref">filter =      7t href="d77        apar/a>ce *kzalloca,> ="L371" class=",> ef=".ase/core.c#L371"ce *       =ub=ys" na.ase/core.c#L371" id="L371" class="line" na  if ( 7se/core.c#L349" id="L3497 clas74tf(& 371        
 357    de=i" class="sref">i = 0; kset 357                   * If we have no par/a>, we lii = 0; -> 357                   * C357"-"+c ids with a no="L357"-"+c id as par/a>, lii = 0;  37ivers/base/core.c#L355" 7d="L375_kobjname="L357"> 357                   * in a "glue" directory to prev/a> #L35ame"+ collisiona.de=i" class="sref">i = 0; ;
         357                   *ode=i" class="sref">i = 0; filter =      7as/base/c7lass="sref">i < <7 href757s="sr5="+coahref="+c         | _" id="L371" class="par/a>_" id" nav  href="+code=devvirtual_class="par/a>ce * 7code=sprintf" class="sre7">spr75tf(& | ce *dev,  | );
dev, filter =      7aef="driv70" id="L360" class="line7 name75" class="sref">retvalllllllllname="Ltion" class="sref">apar/a>ce *env);
(& | _" id="L371" class="par/a>_" id" nav  tion" class="sref">apar/a>ce *
/* have the device type specific 7=>->static  270    7  ssi76ode=env" class="sref"nse/core.c#L371mutex"lockon);
agdp_mutex="L371" class="gdp_mutex" nac  if (7tore_76_kobj if (;
,> 270       s7ze_t"765d="L346" claaaaaaaaaname="L357"> 357     find ous=L357"-"irectory at the par/a> and rdfer/a"+ it *ode=i" class="sref">i = 0;         enum        =pin_lockaction);
dev,  *dev, glue_cirae_ue.ase/core.c#L371list_lock 316       list_lock" nac  if ( ry 316       list_for_each_/a>ry 3claon);
dev,  *dev, glue_cirae_ue.ase/core.c#L371list 316       list" namn | ry 316       /a>ryfilter =      7=270 79        if ((& | ce *filter =      7oore.c#L37n_type(retvalllllllllhref="+code=kset" class" id="L371" class="line" nav  href="+code=dev=ineect"gkobj, (&(& 372       7     771de=env" class="sref"        312" id="L312" class="line" name7e"L363"> 7+code=dev" class="sref">7ev       =pin_unlockaction);
dev,  *dev, glue_cirae_ue.ase/core.c#L371list_lock 316       list_lock" nac  if (<="L312" class="line" name7e>-> | filter =      7="L375"> 775
       mutex"unlockagdp_mutex="L371" class="gdp_mutex" nac  if (;
static struct  374}
" id="L371" class="line" na  if ( 7te uevent<7a>, <77" class="sref">kset =  357     os=Lreate a new=L357"-"irectory at the par/a> "+c id *ode=i" class="sref">i = 0; (struct retval2ine" name="L37"="L371" class="l" naa  href="+code=devpeaction);
dev, (& 357     dosnot emi> an uev/a> for this =imple "glue" directory *ode=i" class="sref">i = 0;        mutex"unlockagdp_mutex="L371" class="gdp_mutex" nac  if ( 374}
"="L371" class="l" na  if ( 7(3a href="+code=dev" cla7s3"sr78_kobj if (;
         357     =ub=ystems ce="specify a "+fault root directory for their "+c ids *ode=i" class="sref">i = 0;  7" class="sref">env);7ivers786;filter =      7ss/base/c7s" class="sref">bus 7amp;&787s="sr5="+coahref="+cname="Ltion" class="sref">action);
 37+code=dev" class="sref">7evfilter =      7_debug&q7ot;de790f(&apar/a>ce *de7_name( 374}
NUL        if (! 293
 274         7stuff */
top_ass="srvoid class="string">peeanup_glue_cirsref">dev, dev, glue_cirfilter =      7_;
class<7a> &a79e=devaclass="sref">filter =      7ne_attrib7+code=dev" class="sref">7ev 357     =ee"amewe lii = 0; dev, glue_cir | );
dev, i = 0;  37(&q7ot;de79tf(& | dev, glue_cirkobj, action);
dev,  *dev, glue_cirae_ue)class="sref">filter =      7_ore.c#L37d\n",> 270    79" class="sref">retvalname="  if (__8unc__, __8uname(,  | dev, glue_cir__8u293"> 293
        
top_ass="srvoid class="string">peeanup_class="par/a>ce *filter =      8"5ction a8dss" class="sref">class<8evfilter =      8"6ction a8dcode=dev" class="sref">807" i806d="L346" claclass="string">peeanup_glue_cirsref">dev,  | action);
ce *&q8>    80 dev_12" id="L312" class="line" name8"9f="driv8r\n",> 270deviceclass="add_pe *filter =      8ne" name=8L311"> 311
filter =      8ne" name=82        return deviceerrorsref">dev, error*/* have the device type specific 8n3" name=814
dev,  dev8>ef="driv8     dev_uevent_filter" 8lass=816d="L346" claclass="string">errorsref">dev, error*action);
dev8>7ction a8   dev_uevent_name" clas8="sre817s="sr5="+coahref="+ccccccccccccccccccction" class="sref">action);
dev,  *       =ub=ys" na.ase/core.c#L371" id="L371" class="line" namice_attribute" class="sref">dev8>8f="driv8     dev_uevent" class="8ref">81tf(& ef"ing">"=ub=ystem"de=i" c)  if (dev, error* 381static  270    8  ssi820f(&, filter =      8"+code=sh8w_uevent" class="sref">s8ow_ue82t">/* respect filter */
ce * *filter =      8"3" name=824        struct dev, error*action);
action);
dev8"4ction a8+code=top_kobj" class="s8ef">t824d="L346" claaaaaaaaaaaaaaaaa"""""""""""""""""" ef"ing">"kset<8a>;
<825d="L346" claaaaaaaaaame= | dev, error*filter =      8"7ction a8re.c#L328" id="L328" cla8s="li827s="sr5="+coa312" id="L312" class="line" name8"270 8t" class="sref">count/* respect filter */
 381         357     /sy*/i = 0; 
dev,  3,> ="L371" class=",> ef=")lass="sref">i = 0; -> 38ef="+code=top_kobj" clas8="sre83_kobj if (ks83id="L346" claname="L357"> 357     spak in the L357" directory pointing to the "+c id *ode=i" class="sref">i = 0; errorsref">dev, error*action);
dev,  *       =ub=ys" na.ase/core.c#L371" id="L371" class="line" namice_attribute" class="sref">dev8as/base/c88        action);
 |  8bj" class="sref">top_kob8-83tf(& | dev, error*retvalgoto href="+code=devouo_e/core.c#L306" id="L3ouo_e/coree=en"class="sref">filter =      8a href="d8ivers/base/core.c#L341" 8d="L384a hre12" id="L312" class="line" name8a+code=sh82        /* have the device type specific 8f>-> 38f="+code=uevent_ops" cla8s="sr844d="L346" clahref="+code=dev=ysfscremoveospak 316       =ysfscremoveospakaction);
 ef"ing">";
dev8t href="d87        kzalloc=ysfscremoveospak 316       =ysfscremoveospakaction);
 ef"ing">"=ub=ystem"de=i" c)  if ( 8se/core.c#L349" id="L3498 clas84tf, deviceerrorsref">dev, error* 381        
/* respect filter */
kset *filter =      8=>->kobjec8=L315"> 38ivers/base/core.c#L355" 8d="L3854f(& | dev, i < <8 href857;ce * * 8code=sprintf" class="sre8">spr85tf(&=ysfscremoveospak 316       =ysfscremoveospakaction);
 ef"ing">"       =ysfscremoveospakaction);
 ef"ing">"=ub=ystem"de=i" c)  if (env);
/* respect filter */
 |        =ysfscdeprecat/dode=v&ion"&ion"52ine" name="L37ction);
dev,  3,> ="L371" class=",> ef=")lass="sr filter */

->static  270    8  ssi86_t" c#endif12" id="L312" class="line" name8= href="d8re_uevent" class="sref">8tore_864d="L346" clahref="+code=dev=ysfscdeleteospak 316       =ysfscdeleteospakaction);
dev,  *       =ub=ys" na.ase/core.c#L371" id="L371" class="line" namction" class="sref">action);
 | ;
,> 270       s8ze_t"865d="L312" id="L312" class="line" name8=ref="dri867        enum   357     de=i" class="sref">i = 0;  89        if ( 357   * "+c_set_nass - set a "+c id nassi = 0; ( 357   * @"+c: 3icei = 0; (& 357   * @fmt: format ef"ing for the 3icei = 0;  372       8     871de=ename="L357"> 357   *ode=i" class="sref">i = 0;  8+code=dev" class="sref">8evdevicecla_set_nassstatic int 
->kobjec8="L375"> 875
;
static struct deviceerrsref">dev, err*uevent<8a>, <877s="sr5="+coaclass="string">va_starc 316       va_starc |        vargs*deviceerrsref">dev, err*       =ineect"set_nass_vargsaction);
 |  |        vargs*       va_end |        vargs*(&deviceerrsref">dev, err*deviceEXPORT_SYMBOL_GP        if (! | ->
 8(3a href="+code=dev" cla8s3"sr88_kobjname="L357"> 357     de=i" class="sref">i = 0; ;
         357   * 3icei = 0;  8" class="sref">env);8ivers886; 357   * @"+c: 3icei = 0; bus 8amp;&887s="sname="L357"> 357    de=i" class="sref">i = 0; 8ev 357   * By "+fault we select char/ for new=/a>ries.  Setting L357"ers/be/c_ine" =i" class="sref">i = 0;  357   * to NUL  prev/a>s an=/a>ry from being Lreated.  L357"ers/be/c_" id mustd==i" class="sref">i = 0; &q8ot;de890f 357   * be set (os=Lleared) before any "+c ids arei = 0; ( 357   * otherwise 3icery() andef=i" class="sref">i = 0;  293
 357   * 3icery() will disagree about the pres/a"+ ofef=i" class="sref">i = 0; ->         357   * the spak.de=i" class="sref">i = 0;  8stuff */
 357   *ode=i" class="sref">i = 0; ;
class<8a> &a89e=devevice" evf="+code=dev" cs/baslineect="L371" class="lineecte_uevO |  *filter =      8ne_attrib8+code=dev" class="sref">8evkobjec8ns/base/c8f="drivers/base/core.c#L898" i897; 38(&q8ot;de89 dev_12" id="L312" class="line" name8_ore.c#L38d\n",> 270    899;dev, __9unc__,  | dev,  *__9uname(__9u293"> 293
 *__9u        
 374}
" id="L371" class="line" na  if (class<9ev907" i90" cla if (deviceclass="createosy*_e/c_/a>ryce *filter =      9"8f="driv9r&q9>    90 dev_ject_action" class="sref">kobjec9"9f="driv9r\n",> 270 |  * |  311
deviceerrorsref">dev, error*        return __9ivers/base/core.c#L313" 9d="L391t">/* have the device type specific 9n3" name=914
filter =      9n4ction a95static const struct9 |  | action);
 deviceerrorsref">dev, error*action);
7ction a9   dev_uevent_name" clas9="sre91" class="sref">kset = 91tf(&deviceerrorsref">dev, error* 391static  270    9  ssi92a hre12" id="L312" class="line" name9"+code=sh9w_uevent" class="sref">s9ow_ue92t">/*ass="srvoid class="string">ryce *filter =      9"2" name=9
filter =      9"3" name=924        struct  * | t924d="L346" clacharv | kset<9a>;
<92e=device_attribute" class="sref">dev9"ef="driv9v *filter =      9"7ction a9re.c#L328" id="L328" cla9s="li927s="sr5="+coahref="+code=kset" classformat_e/c_tode=S64 | action);
 9t" class="sref">count(&=ysfscremoveospak 316       =ysfscremoveospak 391        
/* respect filter */
deviceclass="plteateoinitode=S64filter =      9a>->kobjec9aL315"> 39ef="+code=top_kobj" clas9="sre934d="L346" clahref="+code=dev"+code=S64ks93id="L346" claame=! | (&deviceENOMEM       if (!        r+code=S64);
 9bj" class="sref">top_kob9-93tf(&deviceklist_initode=S64action);
, retvalp;deviceklist_children"puobj, deviceINIT_LIST_HEADbj, action);
        -> 39f="+code=uevent_ops" cla9s="sr94_kobjname="L357"> 357     de=i" class="sref">i = 0; ;
 357   * 3icei = 0;  357   * @"+c: 3icei = 0; kzalloc 357    de=i" class="sref">i = 0;  9se/core.c#L349" id="L3499 clas94tf 357   * This is parc 2 of 3icei = 0;  357   * separately _iff_ 3icei = 0;  391         357   *de=i" class="sref">i = 0; 
 357   * This adds @"+c to the lineect hierarchy via lineect_add()mcadds itd==i" class="sref">i = 0; kset 357   * to the global and sibling lists for the 3icei = 0; -> 357   * adds it to the othersnalevalas=ub=ystems of the 3>ii = 0;  39ivers/base/core.c#L355" 9d="L395_kobjname="L357"> 357   *de=i" class="sref">i = 0; ;
         357   * Dosnot call this rout i = 0;  357   * any "+c idsref="+u hr  The 3>ii = 0; i < <9 href957s="sname="L357"> 357     with "+c ids thet gko unnagistered and then sp"ing back to lif/.de=i" class="sref">i = 0;  9code=sprintf" class="sre9">spr95tf 357   * (Among othersthings, it's i = 0;  357   * to the previous incarnation of @"+c have been dropped.)  Allocateef=i" class="sref">i = 0; env);
 357   * and nagister a fresh new=ref="+c"+c idsinstead.de=i" class="sref">i = 0;  357   *de=i" class="sref">i = 0; 
 357   * NOTE: _Nei = 0; ->static  270    9  ssi96ode=ename="L357"> 357   * if it name="ed an error! Always use puo_e/core() to gii = 0; 9tore_96_kobjname="L357"> 357   * rifer/a"+sinstead.de=i" class="sref">i = 0; ;
,> 270       s9ze_t"96href=name="L357"> 357   *ode=i" class="sref">i = 0;         enum deviceclass="addode=S64filter =      9=s/base/c9> kobjec9=270 99        if ((&((& 372       9     97se/core.c#L35class="sref">deviceerrorsref">dev, error*deviceEINVA        if (!9ev/* have the device type specific 9e>-> |  975
 | filter =      9e;
static struct uevent<9a>, <977;filter =      9"a href="99static int (&errorsref">dev, error* | (struct retvalame= | dev, error*(&/* have the device type specific 9e>->
 357    de=i" class="sref">i = 0;  9(3a href="+code=dev" cla9s3"sr98_kobjname="L357"> 357  "aaaaaaaa* for ass="sally allocated "+c ids, which should all be coni = 0; ;
         357   aaaaaaaa* some day, we need to initialize the n cl. We prev/a> riading backef=i" class="sref">i = 0; env);9ivers986; 357   aaaaaaaa* the n cl, and force the use of 3ic_nass()ef=i" class="sref">i = 0; bus 9amp;&987s="sname="L357"> 357   aaaaaaaa*ode=i" class="sref">i = 0; 9ev(& | filter =      9sef="driv9f="drivers/base/core.c#L990" i98" class="sref">retval |  ef"ing">"%s"de=i" cd  class="sref">action);
&q9ot;de990f(&( 293
/* have the device type specific 9_>->         357    s=ub=ystems can specify simple "+c id enumeration *ode=i" class="sref">i = 0;  9stuff */
 | class<9a> &a995d="L346" claaaaaaaaan="sref">devicer+c_set_nassstatic int  ef"ing">"%s%u"de=i" cd  class="sref">action);
action);
9ev | filter =      9nL379"> 39(&q9ot;de99tf(&errorsref">dev, error*deviceEINVA        if (!,> 270    99" class="sref">retvalgoto href="+code=dev> 27_errorsref">dev, > 27_error" na  if (__10"srequot;,> 27010"se/core.c#L35312/pre>_d7/93/333abac9ec79cea30fdd34e6c4c9255d27b9_3/10"sr>if (__10"name(10"t">/* respect filter */
__10"293"> 293
10"2 class="line="+code=dev" clpr_debugode=S64 ef"ing">"acti_nassstatic int a__func__ode=S64__10"        10"_t" c if (__10"tuff */
10"4d="L346" clahref="+code=devpar/a>ce *ce *__10"ss" class="sref">class<10"ss>10"5d="L346" clahref="+code=dev" id="L371" class="line" nav  href="+code=devgko_e/core_par/a>ce * | ce *__10"code=dev" class="sref">10"co>10"" class="linecme= | __10"="drivers/base/core.c#L10"=">10"7s="sr5="+coahref="+code=kset" class"+code=S64ce *__10"&q10"10" dev_12" id="L312" class="line" name10"9ref">__10"\n",> 27010"9; 357    suse par/a> numa_n=de *ode=i" class="sref">i = 0; __10L311"> 311
 | ce *i = 0; __102        return 10L1s="sr5="+coahref="+code=kset" classsko_e/c_n=dece * |  * | ce *__10ivers/base/core.c#L313" 10ive>10Lt">/* have the device type specific 10L3ref">__1014
 357    sfirst, nagister with generic layer. *ode=i" class="sref">i = 0; __105static const struct10510L4de=env" clas 357    swei = 0; __10nt_ops dev, error*action);
ce *__10     dev_uevent_filter" 10   >10L" class="linecme= | dev, error*__10   dev_uevent_name" clas10   >10L7s="sr5="+coahref="+cgoto href="+code=devErrorsref">dev, Error" na  if (__10     dev_uevent" class="10   >10L dev_12" id="L312" class="line" name1019ref">__10320
 357    snotify platform of 3icery *ode=i" class="sref">i = 0; __101static  270    101101< class="linecme= |  *__10w_uevent" class="sref">s10w_u>1011s="sr5="+coahref="+code=kset" classplatform_notifyce * | __10
/* have the device type specific 1023ref">__1024        struct 101ode=env" clas | dev, error* | auev/a>_atefode=S64_atefode=)  if (__10+code=top_kobj" class="s10+co>1014d="L346" claame= | dev, error*__10kset" class="sref">kset<10kse>1015d="L346" claaaaaaaaagoto href="+code=devatefErrorsref">dev, atefError" na  if (__10v *__10re.c#L328" id="L328" cla10re.>1017;dev, MAJOR | filter =      1018ref">__10t" class="sref">count101tf(&errorsref">dev, error* | a"+ct_atefode=S64__10rs/base/core.c#L330" id=10rs/>101" class="sref">retvalame= | dev, error*__101        101(&atefErrorsref">dev, uev/a>atefError" na  if (__10
/* respect filter */
__10"+code=dev" class="sref"10"+c>1012 class="line" name="href="+code=deverrorsref">dev, error*ryce *__10href="+code=kset" class=10hre>1013 class="sref">retvalame= | dev, error*__10ef="+code=top_kobj" clas10ef=>1014d="L346" claaaaaaaaaaaaaaaaagoto href="+code=dev"+ctatefErrorsref">dev, "+ctatefError" na  if (__10f="+code=kset" class="sr10f=">101e=device_attribute" class="sref">dev1016ref">__10ivers/base/core.c#L337" 10ive>1016d="L346" cla>(& * | __108        __10bj" class="sref">top_kob10bj">101 dev_12" id="L312" class="line" name1039ref">__10=uevent_ops" class="sref10=ue>1019;dev, error* *__10ivers/base/core.c#L341" 10ive>10ivd="L346" claame= | dev, error*__102        10i1s="sr5="+coahref="+cgoto href="+code=devSymspakErrorsref">dev, SymspakError" na  if (__10/base/core.c#L343" id="L10/ba>10i2 class="line="+code=dev" clerrorsref">dev, error* *__10uevent_ops" class="sref"10uev>10i3s="sr5="+coacme= | dev, error*__10f="+code=uevent_ops" cla10f=">10i4d="L346" claaaaaaaaagoto href="+code=devAtefiErrorsref">dev, AtefiError" na  if (__10href="drivers/base/core.10hre>10i5d="L346" clahref="+code=deverrorsref">dev, error* | __107        dev, error*__10 class="sref">kzalloc10i7s="sr5="+coahref="+cgoto href="+code=devBuiErrorsref">dev, BuiError" na  if (__10se/core.c#L349" id="L34910se/>10itf(&deviceerrorsref">dev, error* | __10 href="drivers/base/core10 hr>10i9;dev, error*__101        101dev, DPMError" na  if (__10ys */
devicee/core_pm"addode=S64 | __10et" class="sref">kset101t">/* have the device type specific 1053ref">__10core.c#L298" id=354" id=10cor>101ode=env" clas 357    sNotify cli/a>s of 3icei = 0; __10ivers/base/core.c#L355" 10ive>101_kobjname="L357"> 357  "aaaaaaaa* after "pm_=ysfscadd() and before lineect"uev/a>().de=i" class="sref">i = 0; __106        101href=name="L357"> 357   aaaaaaaa*ode=i" class="sref">i = 0; __10ers/base/core.c#L357" id10ers>101" class="linecme= | );
__10lass="sref">i < <10las>1017s="sr5="+coahref="+code=kset" classblocking_notifier_call_chaince *action);
__10code=sprintf" class="sre10cod>101tf(&dev, BUS_NOTIFY_ADD_DEVICE" namcase/core.c#L371d="ode=S64__100" id="L360" class="line100" >1019">/* have the device type specific 106sref">__10lass="sref">env);
10laf(&devicelineect"uev/a>="L371" class="lineect"uev/a>action);
__10ers/base/core.c#L362" id10ers>10l1f(&devicebus"plobeoe/core.c#L306" id="L3bus"plobeoe/core | __1063
 | ce *i = 0; __104static  270    10410l3 class="sref">retvalase/core.c#L371"list_addotail="L371" class="llist_addotailaction);
__10re_uevent" class="sref">10re_>10l4d="L346" claaaaaaaaaaaaaaaaaaaaaaaation" class="sref">apar/a>ce * *__10uf,> 270       s10uf<>10le=device_attribute" class="sref">dev1066ref">__1067        enum 10l" class="linecme= | );
filter =      1067ref">__10>  <>10l7s="sr5="+coahref="+code=kset" classmutex_lockon);
action);
);
__109        if (10ltf(& 357    stie the i = 0; __10n_type(retval | action);
__10(&action);
);
__10e="L372"> 372       10e=">10/* respect filter */
__10+code=dev" class="sref">10+co>10<2 class="line" name="hame="L357"> 357    snotify any interfares thet the 3icei = 0; __10ers/base/core.c#L374" id10ers>10<3 class="sref">retvalase/core.c#L371list_for_each_/a>ryce *ry | __1075
action);
 *i = 0; __106static struct 10<5d="L346" claaaaaaaaaaaaaaaaacme= | i = 0; __10te (&retvalase/core.c#L371pe__10nt" class="sref">uevent<10nt">10<7s="sr5="+coahref="+code=kset" classmutex_unlockon);
action);
);
__109static int 10(&<312" id="L312" class="line" name1079ref">__10ttributes(struct 10<" clanclass="sref">acone.c#L306" id="L33one" na:12" id="L312" class="line" name108sref">__10s/base/core.c#L379" id="10s/b>10s/f(&devicepuo_e/coreode=S64 | __10sr5="+code=class" c5f="+10sr5>10s1de=env" clasname="L | dev, error*__10"+code=device_dd_attribu10"+c>10s2 clashref="+code=devDPMErrorsref">dev, DPMError" na:12" id="L312" class="line" name1083ref">__10er*/
 |  | __10(3a href="+code=dev" cla10(3a>10s4 clashref="+code=devBuiErrorsref">dev, BuiError" na:12" id="L312" class="line" name1085ref">__1063/a>        10s5d="L346" clahref="+code=devdlass="removeoatefice *__10" class="sref">env);10" c>10s6 clashref="+code=devAtefiErrorsref">dev, AtefiError" na:12" id="L312" class="line" name1087ref">__10s" class="sref">bus 10s" >10s7s="sr5="+coaclass="string">r+css="removeo(&_symspakice *__10+code=dev" class="sref">10+co>10s8 clashref="+code=devSymspakErrorsref">dev, SymspakError" na:12" id="L312" class="line" name1089ref">__10f="drivers/base/core.c#L10f=">10s9;dev, MAJOR | __10(&q10(10( * | __10_name( | dev, MAJOR | __10L293"> 293
ryce *__104        10(3 clashref="+code=dev"+ctatefErrorsref">dev, "+ctatefError" na:12" id="L312" class="line" name1094ref">__10stuff */
10(4d="L346" claame= | dev, MAJOR | __10ass" class="sref">class<10ass>10(5d="L346" claaaaaaaaan="sref">devicer+css="removeofile.c#L306" id="L33ice | a"+ct_atefode=S64__10+code=dev" class="sref">10+co>10(6 clashref="+code=devuev/a>atefErrorsref">dev, uev/a>atefError" na:12" id="L312" class="line" name1097ref">__10f="drivers/base/core.c#L10f=">10(7s="sr5="+coaclass="string">r+css="removeofile.c#L306" id="L33ice | auev/a>_atefode=S64_atefode=)  if (__10(&q10(10(8 clashref="+code=devatefErrorsref">dev, atefError" na:12" id="L312" class="line" name1099ref">__10d\n",> 27010(9;="L371" class="lineect"uev/a>action);
dev, KOBJ_REMOVEode=)  if (__11"srequot;,> 270110af(&devicelineect"del="L371" class="lineect"delaction);
__11"name(11"t">/* href="+code=devErrorsref">dev, Error" na:12" id="L312" class="line" name11"2ref">__11"293"> 293
11"2 class="line="+code=dev" clcleanup_"+css="par/a>ce *__11"        1103s="sr5="+coacme= | ce *i = 0; __11"tuff */
1104d="L346" claaaaaaaaas="sref">devicepuo_e/coreode=S64 | ce *__11"ss" class="sref">class<11"ss>11"5d="Lase/core.c#L371n 27_errorsref">dev, > 27_error" na:12" id="L312" class="line" name11"6ref">__11"code=dev" class="sref">11"co>11"" class="linease/core.c#L371"free="L371" class="lfree | __11"="drivers/base/core.c#L11"=">1107s="sr5="+coaclass="string">r+code=S64__11"&q11"110tf(&__11"\n",> 27011"9;__11L311"> 311
__112        return 1111de=ename="L357"> 357     de=i" class="sref">i = 0; __11ivers/base/core.c#L313" 11ive>11123" iname="L357"> 357   * 3icei = 0; __1114
 357   * @"+c: pointer to the 3icei = 0; __115static const struct115111_kobjname="L357"> 357   *de=i" class="sref">i = 0; __11nt_ops  357   * This happens in two clean=reeps - initialize the e/corei = 0; __11     dev_uevent_filter" 11   >1116; 357   * and add it to the =ystem. The two reeps can be calledef=i" class="sref">i = 0; __11   dev_uevent_name" clas11   >1117s="sname="L357"> 357     separately, but this is the easiest and most 357mon.de=i" class="sref">i = 0; __11     dev_uevent" class="11   >111tf 357   * I.e. you should only call the two help/a> separately ifde=i" class="sref">i = 0; __11320
 357   * have a clearly "+fi"ed need to use and nafcount the e/corei = 0; __111static  270    1111120f 357   * before it is added to the hierarchy.de=i" class="sref">i = 0; __11w_uevent" class="sref">s11w_u>1121de=ename="L357"> 357   *de=i" class="sref">i = 0; __11
 357   * For mLrd information, see the kerneldoc for dicei = 0; __1124        struct 112ode=ename="L357"> 357   * and 3icei = 0; __11+code=top_kobj" class="s11+co>112_kobjname="L357"> 357   *de=i" class="sref">i = 0; __11kset" class="sref">kset<11kse>112href=name="L357"> 357   * NOTE: _Nei = 0; __11v * 357   * if it name="ed an error! Always use puo_e/core() to gii = 0; __11re.c#L328" id="L328" cla11re.>1127s="sname="L357"> 357     rifer/a"+sinitialized in this functionsinstead.de=i" class="sref">i = 0; __11t" class="sref">count112tf 357   *ode=i" class="sref">i = 0; __11rs/base/core.c#L330" id=11rs/>111" claclass="sref">deviceclass="nagister.c#L306" id="L33ice | filter =      11osref">__111        111filter =      1131ref">__11
devicee/core_initialize.c#L306" id="L33ice | __11"+code=dev" class="sref"11"+c>1112 class="linename="L |  | __11href="+code=kset" class=11hre>1113 cla312" id="L312" class="line" name1134ref">__11ef="+code=top_kobj" clas11ef=>1114d="L12" id="L312" class="line" name1135ref">__11f="+code=kset" class="sr11f=">113href=name="L357"> 357     de=i" class="sref">i = 0; __11ivers/base/core.c#L337" 11ive>1136; 357   * gko_e/core - increm/a> rifer/a"+scount for dicei = 0; __118         357     @"+c: dicei = 0; __11bj" class="sref">top_kob11bj">113tf 357   *de=i" class="sref">i = 0; __11=uevent_ops" class="sref11=ue>113" claname="L357"> 357   * This simply forwards the call to lineect"gko(), thoughde=i" class="sref">i = 0; __11ivers/base/core.c#L341" 11ive>1140f 357   * we eo take carl to provide for the case thet we gko a NUL *<=i" class="sref">i = 0; __112        1141de=ename="L357"> 357   * pointer p57"ed in.de=i" class="sref">i = 0; __11/base/core.c#L343" id="L11/ba>11423" iname="L357"> 357   *ode=i" class="sref">i = 0; __11uevent_ops" class="sref"11uev>11i3s="sref="+code=dev" cs/base/core.c#L306" id="L33ice | filter =      1144ref">__11f="+code=uevent_ops" cla11f=">11i4d="Laclass="sref">filter =      1145ref">__11href="drivers/base/core.11hre>11i5d="L346" claname="L | deviceline_to_3icode=S64 | action);
__117        __11 class="sref">kzalloc11i7s="s12" id="L312" class="line" name1148ref">__11se/core.c#L349" id="L34911se/>114tf 357     de=i" class="sref">i = 0; __11 href="drivers/base/core11 hr>114" claname="L357"> 357   * puo_e/core - decrem/a> rifer/a"+scount.de=i" class="sref">i = 0; __111        1150f 357   * @"+c: dicei = 0; __11ys */
 357   *ode=i" class="sref">i = 0; __11et" class="sref">kset111t">/*voidas="sref">devicepuo_e/coreode=S64filter =      1153ref">__11core.c#L298" id=354" id=11cor>111ode=eaclass="sref">filter =      1114ref">__11ivers/base/core.c#L355" 11ive>1154de=env" clas 357    smight_sleep(); *ode=i" class="sref">i = 0; __116        1155d="L346" clacme= | );
filter =      1156ref">__11ers/base/core.c#L357" id11ers>111" class="line>(&devicelineect"puo="L371" class="lineect"puoaction);
__11lass="sref">i < <11las>1117s="s312" id="L312" class="line" name1158ref">__11code=sprintf" class="sre11cod>115 dev_12" id="L312" class="line" name1159ref">__110" id="L360" class="line110" >115" claname="L357"> 357     de=i" class="sref">i = 0; __11lass="sref">env);
1160f 357   * 3icei = 0; __11ers/base/core.c#L362" id11ers>1161de=ename="L357"> 357   * @"+c: dicei = 0; __1163
 357   *de=i" class="sref">i = 0; __114static  270    114116ode=ename="L357"> 357   * This is the first part of the 3icei = 0; __11re_uevent" class="sref">11re_>116_kobjname="L357"> 357   * sequea"+. This removes the 3icei = 0; __11uf,> 270       s11uf<>116href=name="L357"> 357   * from her/, has it namoved=from the other ">ii = 0; __1167        enum 1166; 357   * =ub=ystems it was added to in 3icei = 0; __11>  <>1167s="sname="L357"> 357     from the lineect hierarchy.de=i" class="sref">i = 0; __119        if (116tf 357   *de=i" class="sref">i = 0; __11n_type( 357   * NOTE: this should be called manually _iff_ 3icei = 0; __11(& 357   * also called manually.de=i" class="sref">i = 0; __11e="L372"> 372       11e=">1171de=ename="L357"> 357   *ode=i" class="sref">i = 0; __11+code=dev" class="sref">11+co>117t">/*voidas="sref">device3ice | filter =      1173ref">__11ers/base/core.c#L374" id11ers>117ode=eaclass="sref">filter =      1174ref">__1175
ce *__116static struct 11<5d="L346" claref="+code=dev" cs/bas>stat_interfarece * | __11te __11nt" class="sref">uevent<11nt">11<7s="sr5="+coa 357    sNotify cli/a>s of 3icei = 0; __119static int 117tf 357           * before "pm_=ysfscnamove().de=i" class="sref">i = 0; __11ttributes(struct 117" claname="L357"> 357           *ode=i" class="sref">i = 0; __11s/base/core.c#L379" id="11s/b>118vd="L346" claame= | __11sr5="+code=class" c5f="+11sr5>1181s="sr5="+coahref="+code=kset" classblocking_notifier_call_chaince *action);
__11"+code=device_dd_attribu11"+c>1182 class="line" name=""""""""""""""""""""""""""""""ase/core.c#L371BUS_NOTIFY_DEL_DEVICEsref">dev, BUS_NOTIFY_DEL_DEVICEode=mcase/core.c#L371d="ode=S64__11er*/
 |  | __11(3a href="+code=dev" cla11(3a>1184d="L346" clahref="+code=dev"pm_=ysfscnamoveode=S64__1163/a>        1185d="L346" clacme= | ce *i = 0; __11" class="sref">env);11" c>118" class="line>(&devicellist_3il="L371" class="llist_delaction);
__11s" class="sref">bus 11s" >1187;dev, MAJOR | filter =      11s8ref">__11+code=dev" class="sref">11+co>118tf(&d/ctmpfscdeleteon=dece * | __11f="drivers/base/core.c#L11f=">118" class="sref">retval | ryce *__11(&q11(11( | a"+ct_atefode=S64__11_name(__11L293"> 293
 | filter =      1193ref">__114        1193 class="sref">retvalase/core.c#L3713ice *__11stuff */
1194d="L12" id="L312" class="line" name1195ref">__11ass" class="sref">class<11ass>11(5d="L346" claaaaaaaaan="sref">devicemutex_lockon);
action);
);
__11+code=dev" class="sref">11+co>119" class="line>(& 357    snotify any interfares thet the 3icei = 0; __11f="drivers/base/core.c#L11f=">1197s="sr5="+coahref="+code=kset" classlist_for_each_/a>ryce *ry | __11(&q11(119tf(&action);
 *i = 0; __11d\n",> 270119" class="sref">retvalss="linecme= | i = 0; __12"srequot;,> 270120/d="L346" claaaaaaaaaaaaaaaaaaaaaaaalase/core.c#L371pe__12"name(1201s="sr5="+coahref="+coame="L357"> 357    sremove the 3icei = 0; __12"293"> 293
1202 class="line" name="href="+code=devllist_3il="L371" class="llist_delaction);
__12"        1203 class="sref">retvalase/core.c#L371mutex_unlockon);
action);
);
__12"tuff */
1204d="L346" cla312" id="L312" class="line" name12"5ref">__12"ss" class="sref">class<12"ss>1205d="L346" clahref="+code=devdlass="removeofile.c#L306" id="L33ice | auev/a>_atefode=S64_atefode=)  if (__12"code=dev" class="sref">12"co>12"" class="linease/core.c#L3713ice *__12"="drivers/base/core.c#L12"=">1207s="sr5="+coaclass="string">bus"removeoe/core.c#L306" id="L3bus"removeoe/core | __12"&q12"120tf(&device34-6="oe/ferred"plobeoe/l.c#L306" id="L334-6="oe/ferred"plobeoe/l | __12"\n",> 2701209">/* have the device type specific 121sref">__12L311"> 311
 357    sNotify the platform of the namoval, in case theyde=i" class="sref">i = 0; __122        return 1211de=ename="L357"> 357  f">retval* need to do anything...de=i" class="sref">i = 0; __12ivers/base/core.c#L313" 12ive>12123" iname="L357"> 357   ">retval*ode=i" class="sref">i = 0; __1214
i = 0; __125static const struct1251214d="L346" claaaaaaaaas="sref">deviceplatform"notifycnamoveode=S64 | __12nt_ops ="L371" class="lineect"uev/a>action);
dev, KOBJ_REMOVEode=)  if (__12     dev_uevent_filter" 12   >121" class="linease/core.c#L371cleanup_"+css="par/a>ce *__12   dev_uevent_name" clas12   >1217s="sr5="+coaclass="string">lineect"del="L371" class="lineect"delaction);
__12     dev_uevent" class="12   >121tf(&devicepuo_e/coreode=S64 | ce *__12320
__121static  270    1211223 cla12" id="L312" class="line" name1221ref">__12w_uevent" class="sref">s12w_u>1221de=ename="L357"> 357     de=i" class="sref">i = 0; __12
 357   * "+css="unregister - unregister dicei = 0; __1224        struct 122ode=ename="L357"> 357   * @"+c: dicei = 0; __12+code=top_kobj" class="s12+co>122_kobjname="L357"> 357   *de=i" class="sref">i = 0; __12kset" class="sref">kset<12kse>122href=name="L357"> 357   * We eo this in two parts, like we eo i = 0; __12v * 357   * wesremove it from all the =ub=ystems with 3icei = 0; __12re.c#L328" id="L328" cla12re.>1227s="sname="L357"> 357     we eecrem/a> the nafer/a"+scount via puo_e/core(). If thetde=i" class="sref">i = 0; __12t" class="sref">count122tf 357   * is the final nafer/a"+scount, the 3icei = 0; __12rs/base/core.c#L330" id=12rs/>122" claname="L357"> 357   * via i = 0; __121        1230f 357   * stick around until the final nafer/a"+sto the 3icei = 0; __12
 357   *ode=i" class="sref">i = 0; __12"+code=dev" class="sref"12"+c>123t">/*voidas="sref">device3ice *filter =      1233ref">__12href="+code=kset" class=12hre>123ode=eaclass="sref">filter =      1234ref">__12ef="+code=top_kobj" clas12ef=>1234d="L346" clahref="+code=devp"oe/bugce * refing">"3ice | __12f="+code=kset" class="sr12f=">1235d="L346" clahref="+code=devdlass="del.c#L306" id="L33ice | __12ivers/base/core.c#L337" 12ive>123" class="linease/core.c#L371puo_e/coreode=S64 | __128        __12bj" class="sref">top_kob12bj">123 dev_12" id="L312" class="line" name1239ref">__12=uevent_ops" class="sref12=ue>123" clastaticaref="+code=dev" cs/base/core.c#L306" id="L33ice |  * | filter =      124sref">__12ivers/base/core.c#L341" 12ive>124filter =      1241ref">__122        1241s="sr5="+coaref="+code=dev" cs/basllist_n=dece * | __12/base/core.c#L343" id="L12/ba>1242s="sr5="+coaref="+code=dev" cs/base/core.c#L306" id="L33ice | __12uevent_ops" class="sref"12uev>1243s="sr5="+coaref="+code=dev" cs/base/core_p4-6ate.c#L306" id="L33ice | __12f="+code=uevent_ops" cla12f=">1244d="L12" id="L312" class="line" name1245ref">__12href="drivers/base/core.12hre>1245d="L346" clacme= | filter =      1246ref">__127        devicepode=S64ce * | __12 class="sref">kzalloc1247s="sr5="+coahref="+code=kset" class"+code=S64__12se/core.c#L349" id="L34912se/>124tf(&<312" id="L312" class="line" name1249ref">__12 href="drivers/base/core12 hr>124" class="srefname="L | __121        1250f__12ys */
/* respect filter */
__12et" class="sref">kset12523" iname="L357"> 357     de=i" class="sref">i = 0; __12core.c#L298" id=354" id=12cor>125ode=ename="L357"> 357   * 3icei = 0; __12ivers/base/core.c#L355" 12ive>125_kobjname="L357"> 357   * @"+c: dicei = 0; __126        125href=name="L357"> 357   * @mode: name="ed file access modei = 0; __12ers/base/core.c#L357" id12ers>1256; 357   * @tmp: possibly allocated refingi = 0; __12lass="sref">i < <12las>1257s="sname="L357"> 357    i = 0; __12code=sprintf" class="sre12cod>125tf 357   * Rame="Lthe nalative path of a possible 3icei = 0; __120" id="L360" class="line120" >125" claname="L357"> 357   * Non-defaultss="ls may need to allocate a memory to 357posei = 0; __12lass="sref">env);
1260f 357   * a/a>);. This memory is reme="ed in tmp and needs to bei = 0; __12ers/base/core.c#L362" id12ers>1261de=ename="L357"> 357   * freed by the caller.de=i" class="sref">i = 0; __1263
 357   *ode=i" class="sref">i = 0; __124static  270    124126ode=econst 3harvO | __12re_uevent" class="sref">12re_>1264d="L346" claaaaaaaaa5="+coahref="+code=kset" classumode_>ce *e_uevO | filter =      1265ref">__12uf,> 270       s12uf<>126href=aclass="sref">filter =      1266ref">__1267        enum 126" class="line3harvO |  *__12>  <>1267s="s12" id="L312" class="line" name1268ref">__129        if (126tf(& |  *__12n_type(/* have the device type specific 127sref">__12(& 357    sthe 3icei = 0; __12e="L372"> 372       12e=">1271; * *i = 0; __12+code=dev" class="sref">12+co>1272 class="line" name="O |  * *__12ers/base/core.c#L374" id12ers>1273s="sr5="+coacme=O |  *filter =      1274ref">__1275
__126static struct 12<5d="L if (__12te  357    sthe L357" may provide a specificf="+c *ode=i" class="sref">i = 0; __12nt" class="sref">uevent<12nt">1277;)on);
)" nahtion"tion" href="+code=devr+code=S64)on);
)" naers/base/core.c#L371e/cn=de.c#L306" id="L33icn=dei = 0; __129static int 127tf(&)on);
)" naers/base/core.c#L371e/cn=de.c#L306" id="L33icn=de | __12ttributes(struct 1279s="sr5="+coacme=O |  *filter =      128sref">__12s/base/core.c#L379" id="12s/b>128/d="L346" claaaaaaaaaname="LO |  *__12sr5="+code=class" c5f="+12sr5>128t">/* respect filter */
__12"+code=device_dd_attribu12"+c>1282 class="lineoame="L357"> 357    sreme="L="+c without allocation, tmp == NUL  *ode=i" class="sref">i = 0; __12er*/
 |  refing">'!'de=i" c) == href="+code=devNUL        if (!filter =      1284ref">__12(3a href="+code=dev" cla12(3a>1284d="L346" claaaaaaaaaname="L |  | __1263/a>        1285d="L if (__12" class="sref">env);12" c>1286f(& 357    sreplai = 0; __12s" class="sref">bus 12s" >1287; * |  |  | __12+code=dev" class="sref">12+co>128tf(& |  *filter =      1289ref">__12f="drivers/base/core.c#L12f=">128" class="sref">retvalname="L | __12(&q12(12( |  * refing">'!'de=i" c)))class="sref">filter =      1291ref">__12_name( * refing">'/'de=i" c  if (__12L293"> 293
__124        1293 cla312" id="L312" class="line" name1294ref">__12stuff */
1294d="L12" id="L312" class="line" name1295ref">__12ass" class="sref">class<12ass>129href=name="L357"> 357     de=i" class="sref">i = 0; __12+code=dev" class="sref">12+co>1296; 357   * 3icei = 0; __12f="drivers/base/core.c#L12f=">1297s="sname="L357"> 357     @par/a>: par/a>aref="+cdicei = 0; __12(&q12(129tf 357   * @data: data for the callback.de=i" class="sref">i = 0; __12d\n",> 270129" claname="L357"> 357   * @fn: functionsto be called for eachcdicei = 0; __13"srequot;,> 2701300f 357   *de=i" class="sref">i = 0; __13"name(1301de=ename="L357"> 357   * Iterate o's=child dicei = 0; __13"293"> 293
13023" iname="L357"> 357   * p57"ing it @data.de=i" class="sref">i = 0; __13"        130ode=ename="L357"> 357   *de=i" class="sref">i = 0; __13"tuff */
130_kobjname="L357"> 357   * W/=checkLthe name="Lof @fn eachcti);. If it name="s anythingde=i" class="sref">i = 0; __13"ss" class="sref">class<13"ss>130href=name="L357"> 357   * other the="0, we break out and name="Lthat valu/.de=i" class="sref">i = 0; __13"code=dev" class="sref">13"co>1306; 357   *ode=i" class="sref">i = 0; __13"="drivers/base/core.c#L13"=">1307s="sclass="sref">deviceclass="for_each_child.c#L306" id="L33ice | ce * | __13"&q13"130tf(& | filter =      1309ref">__13"\n",> 2701309">/*aclass="sref">filter =      131sref">__13L311"> 311
 *__132        return 1311s="sr5="+coaref="+code=dev" cs/base/core.c#L306" id="L33ice | __13ivers/base/core.c#L313" 13ive>13">__C7s="sclass="sref">if ithref=child.c#L3if it *__1214
__125static con3t str3ct1251214d=/a>(&ce | ce *)" naers/base/core.c#L371pode=S64filter2utes" c1235ref">__12nt_ops __12     dev_uevent3filte31e11te<>117" cla if (__12   dev_uevent_n3me" c3as12   >1217s="sr5="+coaclass= *ce *)" naers/base/core.c#L371pode=S64 *__12     dev_uevent3 clas3="12   >121tf<"sr5="+coawhile (= | )" naht&ce if ithref=child.c#L3if it *filter2=      1309ref">__12320
retval if ithref=child.c#L3if it * |  | __121static  273 32012   >1217s="sr5="+coaclass= * *__12w_uevent" class3"sref32h1321311s=ef">retvalname="L if ithref=child.c#L3if it *__12
__1224        s3ruct 32/1214child__12+code=top_kobj"3class3"s12+co>122_kobjname="L357"> 357     de=i" class="sref">i = 0;3__12kset" class="sr3f">ks3t<12kse>122href=name="L357"> 3506" id="ind/"for_each_childei = 0; __12v *1226; 357     @par/a>: par/a>arefchcdicei = 0; __12re.c#L328" id="3328" 3la12re.>1227s="sname="L357"> 357  D* @dtake"sndtakmatLof   * @fnchcdicei = 0; __12t" class="sref"3count3/a12t" >122tf 35@matLo: C for th>   * @fn: fua>   *a>arefchcdicei = 0; <=      1309ref">__12rs/base/core.c#3330" 3d=12rs/>122" claname="L357"> 3chcdicei = 0; __121        1230f 357   similardnafer/a"+sto ="L33ice   * @fn:relea, butnd namoves iti = 0;3__12
1231de=ename="L357"> 3i);. If it the final nafaa>    sthd na   /a @pf* stith=&# calwa - uue. Oi = 0;3__12"+code=dev" cla3s="sr33c12
12223" iname="L357"> 357< - mina>   * fre@matLota for the callback.de=i" class="sref">i = 0;3 =      1233ref">__12href="+code=kse3" cla33s13"130ode=ename="L357"> 357   *de=i" class="sref">i = 0;  =      1234ref">__12ef="+code=top_k3bj" c33=13"tu>130_kobjname="L357"> 35Tdata for thNOTE: thlass="l0=/a>7    stdoesnith=&tkmatLofed inot-zery">i = 0;  =      1234ref">__o_et"  3> = 0; __12kset" cef="+= 0;3 ic  2"L357"> 357     @par/a>: par/a>arefchca . If thNOTE: thla the fin>i =zery"al nafer/a"+sto th 0;  =      1234ref">__o_et"  3> = 0; __12ivers/base/core.c#L337" 32ive>3326; 357    curar/a> dece__o_et"  3> = 0; __128         357  D*ery">itd calwite oi = 0;3 =      1238ref">__12bj" class="sref">top_kob32bj">332tf 35@matLo: *ode=i" class="sref">i = 0; __32=uevent_ops" class="sref32=ue>323" clasef="+code=dev" cs/base/core.c#L306" id="L33ice | __32ivers/base/core.c#L341" 32ive>340/d="L346" claaaaaaaaaaaaaaaaaaaaaaaa""clasaO | filter =      1241ref">__322        3241s="*aclass="sref">filter =      1242ref">__32/base/core.c#L343" id="L32/ba>3242s="sr5="+coaref="+code=dev" cs/basllist_iterce *__32uevent_ops" class="sref"32uev>3243s="sr5="+coaref="+code=dev" cs/base/core.c#L306" id="L33ice | __32f="+code=uevent_ops" cla32f=">3244d="L12" id="L312" class="line" name3245ref">__32href="drivers/base/core.32hre>3245d="L346" clacmevO | ce *)" n))class="sref">filter =      1236ref">__127         | __32 class="sref">kzalloc3467s="s12" id="L312" class="line" name3248ref">__32se/core.c#L349" id="L34932se/>341tf(&devicf="L33llist_iterce *ce *)" naers/base/core.c#L371pode=S64 *__32 href="drivers/base/core32 hr>324" class="sreawhile (= | )" n))class="sref">filter =      125sref">__321        350/d="L346" claaaaaaaaacme= |  | filter =      1241ref">__32ys */
__32et" class="sref">kset352tf(&devicf="L33llist_iterce *__32core.c#L298" id=354" id=32cor>3543s="sr5="+colname="L | __32ivers/base/core.c#L355" 32ive>325_koba312" id="L312" class="l3__326        3585d="L if (__32ers/base/core.c#L357" id32ers>3256;if ithref_t_iterce * *filter =      1247ref">__32lass="sref">i < <32las>3257s="*aclass="sref">filter =      1258ref">__32code=sprintf" class="sre32cod>350tf(&devicee/corstkseerce * refing">"3iceactass="uev/a>opfice *__320" id="L360" class="line320" >3579s="sr5="+coacmevO |  *filter =      126sref">__32lass="sref">env);
368/d="L346" claaaaaaaaaname="-O |  *__32ers/base/core.c#L362" id32ers>361tf(&devicee/_1" id="L371" class=ee/_1" isode=v  href=|  refing">"3in"de=i" cmcase/core.c#L37vNUL        if (!__3263
 | filter =      1253ref">__324static  270    3243603 class="sref">retvagoto;devicee/_1" i_ererce *__32re_uevent" class="sref">32re_>3264d="L346" cldevic_=ysfsf refing">"bnlocn"de=i" cmcase/core.c#L371d="1" id="L371" class=ee/_1" isode)p  if (__32uf,> 270       s32uf<>3645d="L346" clacmevO | filter =      1256ref">__3267        enum 364" class="line>(&goto;devicbnloc_1" i_ererce *__32>  <>3617s="sr5="+coaclass= * refing">"e3han"de=i" cmcase/core.c#L371d="1" id="L371" class=ee/_1" isode)p  if (__329        if (368tf(&filter =      1239ref">__32n_type(retvagoto;device3ha_1" i_ererce *__32(&__32e="L372"> 372       32e=">3711s=ef">retvalname="sp  if (__32+code=dev" class="sref">32+co>3272 cl  if (__32ers/base/core.c#L374" id32ers>3273s="sdevice3ha_1" i_ererce *__3275
devicklineectpua>="L371" class="lineectpuane_u(= | __326static struct 32<5d=";devicbnloc_1" i_ererce *__32te __32nt" class="sref">uevent<32nt">3277;devicee/_1" i_ererce *__329static int 371tf(&devicfsee_"unregisterce * |  *__32ttributes(struct 374" class="srefname="-O |  *__32s/base/core.c#L379" id="32s/b>3850f__32sr5="+code=class" c5f="+32sr5>328t">/* respect filter */
__32"+code=device_dd_attribu32"+c>3282 clO |  | __32er*/
 |  | __32(3a href="+code=dev" cla32(3a>3844d="L12" id="L312" class="line" name32s5ref">__3263/a>        3285d="O |  | __32" class="sref">env);32" c>3286f |  | __32s" class="sref">bus 32s" >3287; |  |  *__32+code=dev" class="sref">32+co>383 dev_12" id="L312" class="line" name3289ref">__32f="drivers/base/core.c#L32f=">328" clO |  | __32(&q32(32( |  |  *__32_name( |  | __32L293"> 293
__324        39d__32stuff */
3294d="O |  |  *__32ass" class="sref">class<32ass>3985d="O |  |  *__32+code=dev" class="sref">32+co>397" cla if (__32f="drivers/base/core.c#L32f=">3297s="aref="+code=dev" cs/baroouo_e/coreode=S64filter =      1298ref">__32(&q32(391tf(&aref="+code=dev" cs/base/core.c#L306" id="L33ice__32d\n",> 270399tf(&aref="+code=dev" cs/bamoduilrce * |  *__43"srequot;,> 2704300f__43_name(408t">/* respect filter */
__43"293"> 293
4082 clO | 
tf | filter =      43"3ref">__43"        403ode=eaclass="sref">filter =      43"4ref">__43"tuff */
4064d="L346" cllname="L |  * | __43"ss" class="sref">class<43"ss>430hrefa312" id="L312" class="line" name43"6ref">__43"code=dev" class="sref">43"co>407" cla if (__43"="drivers/base/core.c#L43"=">4097s="artatic*voidas="sref">devicroouo_e/cor_"releaseode=S64filter =      4308ref">__43"&q43"430tffilter =      4398ref">__43d\n",> 270409tf(&devicf frerce * |  | __43L311"> 311
__432        return 418t">/* respect filter */
__43ivers/base/core.c#L313" 43ive>41523" iname="L357"> 357     de=i" class="sref">i = 0; __4214
 357   *__roouo_e/cor_"register - allocate and negistera rooucdicei = 0; <=      43"4ref">__425static con3t str3ct425415_kobjname="L357"> 357   * t st: rooucdicei = 0; <=      43"5ref">__42nt_ops  357   * ownte: ownte moduil"LofLthe ooucdicei = 0; <=      43"6ref">__42     dev_uevent3filte31e41te<>4126; 357   .de=i" class="sref">i = 0; <=      43"7ref">__42   dev_uevent_n3me" c3as42   >4127s="sname="L357"> 357  D*Tthisrelea, bu allocatsra rooucdicei = 0;3__42     dev_uevent3 clas3="42   >412tf 35@matLo: Cu7"ing_e/cor_"registee(). n orde"+sto frekLthe name=edti = 0;3__42320
 357   *dicei = 0;3__421static  273 32042   >4200f 357   *de=i" class="sref">i = 0; __42w_uevent" class3"sref32h4324231de=ename="L357"> 3i);. If itRooucdicei = 0; __42
 357< - minasto begrouped unde"+/sys/esnithsk Useo thisrelea, but= 0;  =      1234ref">__o_et"  3> = 0; <4233ref">__4224        s3ruct 32/4214ch425ode=ename="L357"> 357   * allocate arooucdiceofne;  =      1234ref">__o_et"  3> = 0; <42"4ref">__42+code=top_kobj"3class3"s42+co>422_kobjname="L357"> 357  D*erycdice__o_et"  3> = 0; <42"5ref">__42kset" class="sr3f">ks3t<42kse>422href=name="L357"> 3506" id="ne;  =      1234ref">__o_et"  3> = 0; <42"6ref">__42v *4226; 357     thN/sys/esniths/{clas} directmory=willalsto 3ntafr ane;  =      1234ref">__o_et"  3> = 0; <42"7ref">__42re.c#L328" id="3328" 3la42re.>4227s="sname="L357"> 357  D*tLofemoduillwa - sym idkrwhit-zpoints"Loy the ownte directmorne;  =      1234ref">__o_et"  3> = 0; <4238ref">__42t" class="sref"3count3/a42t" >422tf 35@matLo: Cfr _=ysf)ti = 0;3__42rs/base/core.c#3330" 3d=42rs/>422" claname="L357"> 3chcdicei = 0; __421        4230f 357   sRthe finationarefchcdicei = 0;3__42
4231de=ename="L357"> 3i);. If iti = 0;3__42"+code=dev" cla3s="sr33c42
42223" iname="L357"> 357< - minaNott: Youy prbaiblywa/a>Loyushe oouo_e/cor_nregistee()ti = 0;3__42href="+code=kse3" cla33s43"430ode=ename="L357"> 357   *ode=i" class="sref">i = 0; __42ef="+code=top_k3bj" c33=43"tu>430_kobaref="+code=dev" cs/base/core.c#L306" id="L33ice |  |  * |  *filter =      4 href=12254ef">__12kset" cef="+= 0;34ic  2436href=aclass="sref">filter =      4 36ref">__42ivers/base/core.c#L337" 42ive>433" class="linaref="+code=dev" cs/baroouo_e/coreode=S64 | __428        if ithref=cheode=S64__42bj" class="sref">top_kob42bj">433 dev_12" id="L312" class="line" name4239ref">__42=uevent_ops" class="sref42=ue>439tf(&devicrooueode=S64 * | __42ivers/base/core.c#L341" 42ive>440/d="L346" clfilter =      4241ref">__422        4491s="sr5="+coahref="+lname="L |  * | __42/base/core.c#L343" id="L42/ba>4472 cl  if (__42uevent_ops" class="sref"42uev>4243s="sr5="+cosref">if ithref=cheode=S64rooueode=S64 refing">"lwa7;sn"de=i" cmO | __42f="+code=uevent_ops" cla42f=">4414d=/a>(&ce | filter =      4245ref">__42href="drivers/base/core.42hre>4245d="L346" cla>(&devicf frerce * | __427         |  * | __42 class="sref">kzalloc4477;__42se/core.c#L349" id="L34942se/>443 dev_12" id="L312" class="line" name4239ref">__42 href="drivers/base/core42 hr>449tf(&devicrooueode=S64devicrreleaseode=S64__421        4523 cla12" id="L312" class="line" name4241ref">__42ys */
devic=cheode=S64 *rooueode=S64__42et" class="sref">kset4592 class="linecmeO | filter =      4253ref">__42core.c#L298" id=354" id=42cor>4503 class="sref">retva= | rooueode=S64__42ivers/base/core.c#L355" 42ive>4584d="L346" claaaaaaaaaname="L |  * | __426        4557;__42ers/base/core.c#L357" id42ers>457" cla if (__42lass="sref">i < <42las>4257s="#ifdef"L |  357    gotata iry"al>"eelente>" way>Loydoo this *ode=i" class="sref">i = 0; __42code=sprintf" class="sre42cod>458tf(& |  *filter =      4239ref">__420" id="L360" class="line420" >458" class="sref">retvaaref="+code=dev" cs/bamoduil_"lineecrce * |  *ownterce *__42lass="sref">env);
4623 cla12" id="L312" class="line" name4261ref">__42ers/base/core.c#L362" id42ers>4691s="sr5="+coahref="+code=kset" clas=cheode=S64rooueode=S64devic1" id="L371" class=1" isodecmation" class="sref">mkrce * refing">"moduill"de=i" =)  if (__4263
filter =      4253ref">__424static  270    4244603 class="sref">retvaahref="+code=kset" clas1d=cor="unregisterce *rooueode=S64__42re_uevent" class="sref">42re_>4684d="L346" claaaaaaaaaaaaaaaaaname="L |  * | __42uf,> 270       s42uf<>4645d="L346" cla>(&a312" id="L312" class="line" name4256ref">__4267        enum 464" class="line>(&" class="sref">rooueode=S64 * *__42>  <>4677;__429        if (468tf__42n_type(__42(&rooueode=S64__42e="L372"> 372       42e=">4711s=ea312" id="L312" class="line" name4272ref">__42+code=dev" class="sref">42+co>4782 clO |  | __42ers/base/core.c#L374" id42ers>47d__4275
 357     de=i" class="sref">i = 0;3__426static struct 475href=name="L357"> 357   * oouo_e/cor_"unregiste - "unregiste  and freka rooucdicei = 0; <=      4256ref">__42te  357     dic:cdicei = 0; <=      4247ref">__42nt" class="sref">uevent<42nt">4727s="sname="L357"> 357  D.de=i" class="sref">i = 0; <=      4258ref">__429static int 472tf 35@matLo: CTthisrelea, bu"unregistes, and elens upthd na   /a @pfwas cbrete@mat.de=i" class="sref">i = 0; <=      4239ref">__42ttributes(struct 479" claname="L357"> 357   * oouo_e/cor_nregistee()ti = 0;3__42s/base/core.c#L379" id="42s/b>4830f 357   *ode=i" class="sref">i = 0; __42sr5="+code=class" c5f="+42sr5>428t">/*voidas="sref">devicroouo_e/cor_"unregisterce *filter =      42s2ref">__42"+code=device_dd_attribu42"+c>4282 cl*aclass="sref">filter =      4283ref">__42er*/
 |  | __42(3a href="+code=dev" cla42(3a>4844d="L12" id="L312" class="line" name42s5ref">__4263/a>        4845d="L346" clacme" class="sref">rooueode=S64 *filter =      4256ref">__42" class="sref">env);42" c>484" class="line>(&" class="sref">_=ysfs"remove idkeode=S64rooueode=S64devic1" id="L371" class=1" isodecmcaame="L357"> refing">"moduill"de=i" =)  if (__42s" class="sref">bus 42s" >4867s="s12" id="L312" class="line" name4258ref">__42+code=dev" class="sref">42+co>480tf(&devicee/cor="unregisterce *__42f="drivers/base/core.c#L42f=">428" cla312" id="L312" class="line" name429sref">__42(&q42(42( |  |  *__42_name(/* respect filter */
__42L293"> 293
__424        49ddevicffilter =      4294ref">__42stuff */
4294d="*aclass="sref">filter =      42s5ref">__42ass" class="sref">class<42ass>495tf(&devicpro_ebugeode=S64 refing">"3ice<:*tLofelwa7;snLofe:*tLo7;s\nn"de=i" cmcase/core.c#L371d="bj" e.c#L306" id="Lse/_bj" ne_u(O | __42+code=dev" class="sref">42+co>493" class="linease/core.c#L37k frerce * | __42f="drivers/base/core.c#L42f=">4297s="a312" id="L312" class="line" name4258ref">__42(&q42(493 dev_12" id="L312" class="line" name4299ref">__42d\n",> 270499" claname="L357"> 357     de=i" class="sref">i = 0;3__53"srequot;,> 2705030f 357   sfi = 0;3__53_name(5031de=ename="L357"> 3i);. If it@"L357:zpointte Loy thearef="+"L357/a @pf this na   /ss="l0=bed negistee@mt= 0;  =      1234ref">__o_et"  3> = 0; <53"2ref">__53"293"> 293
50223" iname="L357"> 357< - mina @par/a>: ointte Loy the par/a>arefchcdicei = 0; <=      53"3ref">__53"        505ode=ename="L357"> 357   * dica>:stdoesn_t uue. the hachcdicei = 0;3__53"tuff */
505_kobjname="L357"> 357   * drv@dtakestdoesndtakm beadded+sto ="L33ice< uue.OTE: thlf de=i" class="sref">i = 0;3__53ass" class="sref">class<53"ss>505href=name="L357"> 357   * fma>: refin uue. the33icei = 0; <=      53"6ref">__53"code=dev" class="sref">53"co>5026; 357     args: va_=ex3 uue. the33icei = 0; <=      5376ref">__53f="drivers/base/core.c#L53"=">5027s="sname="L357"> 357  D.de=i" class="sref">i = 0; <=      5308ref">__53"&q53"502tf 35@matLo: CTthisrelea, bu=me=be use@matL hachcdicearefchcdicei = 0; __53d\n",> 270509" claname="L357"> 357   *=willbe cbrete@mfr _=ysf,d negistee@mt=y theapecified="L357)ti = 0;3__53L311"> 311
 357   *de=i" class="sref">i = 0; __532        return 5131de=ename="L357"> 3i);. If itA >"3in"  fil*=willbe cbrete@,/ss=wfin stdoesn_t uue. thedicei = 0; __53ivers/base/core.c#L313" 53ive>51523" iname="L357"> 357 inastdoesn_t hisnot 0,0)ti = 0;3__5214
 357   *Ifularointte Loyae par/a>arefchcdicei = 0;3__525static con3t str3ct525515_kobjname="L357"> 357   *arefchcdicei = 0;3__52nt_ops  357   * thNpointte Loy thearef="+dicei = 0;3__52     dev_uevent3filte31e51te<>5126; 357    Anysrerother_=ysf  fil7/a @pfmightlbe  nquiee@m=me=be cbrete@mu7"ingLthiti = 0;3__52   dev_uevent_n3me" c3as52   >5127s="sname="L357"> 357  D*pointte)ti = 0;3__52     dev_uevent3 clas3="52   >512tf 35@matLo: ti = 0;3__52320
 357   *Rthe finationarefchcdicei = 0;3__521static  273 32052   >5200f 357   *de=i" class="sref">i = 0; __52w_uevent" class3"sref32h5325231de=ename="L357"> 3i);. If itNott:  thearef="+"L357/atLoe@mtoo thisrelea, bumux3 hav/zpriceouslt.de=i" class="sref">i = 0; <=      5312ref">__52
 357< - minabeen cbrete@mwith ae calmtoo"L357=cbretee()ti = 0;3__5224        s3ruct 32/5214ch525ode=ename="L357"> 357   *ode=i" class="sref">i = 0; __52+code=top_kobj"3class3"s52+co>520_kobaref="+code=dev" cs/base/core.c#L306" id="L33ice |  | i = 0; __52kset" class="sr3f">ks3t<52kse>5245d="L346" cla>(&;;;;;;;;;;;;;;;;;;;case/core.c#L371d="erce * * |  * |  *i = 0; __52v *524" class="line>(&;;;;;;;;;;;;;;;;;;;case/core.c#L37va_=ex3rce *filter =      52"7ref">__52re.c#L328" id="3328" 3la52re.>5257s="*aclass="sref">filter =      5238ref">__52t" class="sref"3count3/a52t" >521tf(&aref="+code=dev" cs/base/core.c#L306" id="L33ice | __52rs/base/core.c#3330" 3d=52rs/>5279s="sr5="+coas="sref">if ithref navael.c#L306" id="L navaecode ="-O | __521        5323 cla12" id="L312" class="line" name5231ref">__52
5391s="sr5="+coacme" class="sref">de=S6eode=S64 | filter =      5212ref">__52"+code=dev" cla3s="sr33c52
5392 class="linass="lingoto;devicref=ieode=S64__52href="+code=kse3" cla33s53"53d__52ef="+code=top_k3bj" c33=53"tu>5364d="L346" cldevic="+code=S64 * |  | __12kset" cef="+= 0;35ic  25345d="L346" clacmevO | filter =      5 36ref">__52ivers/base/core.c#L337" 52ive>534" class="line>(&" class="sref">rnavael.c#L306" id="L navaecode ="-O |  *__528        devicref=ieode=S64__52bj" class="sref">top_kob52bj">531tf(&a312" id="L312" class="line" name5239ref">__52=uevent_ops" class="sref52=ue>538" cl312" id="L312" class="line" name524sref">__52ivers/base/core.c#L341" 52ive>540/d="L346" clO |  * *__522        541tf(&devicee/code=S64__52/base/core.c#L343" id="L52/ba>542tf(&devicee/code=S64ce *__52uevent_ops" class="sref"52uev>5243s="sr5="+cosref">if ithrefee/code=S64__52f="+code=uevent_ops" cla52f=">5464d="L346" cldevic="+_see_=rv@dtarce * |  *__52href="drivers/base/core.52hre>5485d="L if (__527        devic1" ieectsee_bj" _vargseode=S64ee/code=S64 |  *__52 class="sref">kzalloc5477;rnavael.c#L306" id="L navaecode))class="sref">filter =      5248ref">__52se/core.c#L349" id="L34952se/>541tf(&ass="lingoto;devicref=ieode=S64__52 href="drivers/base/core52 hr>548" cl312" id="L312" class="line" name525sref">__521        550/d="L346" clO | devicse/cor=nregisterce * | __52ys */
rnavael.c#L306" id="L navaecode))class="sref">filter =      5252ref">__52et" class="sref">kset5592 class="linass="lingoto;devicref=ieode=S64__52core.c#L298" id=354" id=52cor>55d__52ivers/base/core.c#L355" 52ive>5584d="L346" claname="L | __526        5585d="L if (__52ers/base/core.c#L357" id52ers>5586f | __52lass="sref">i < <52las>5517s="sr5="+coaclass= * | __52code=sprintf" class="sre52cod>558tf(&aname="L |  * | __520" id="L360" class="line520" >558" cla312" id="L312" class="line" name526sref">__52lass="sref">env);
56( |  | __52ers/base/core.c#L362" id52ers>568t">/* respect filter */
__5263
 357     de=i" class="sref">i = 0; __524static  270    524565ode=ename="L357"> 357   *fi = 0;3__52re_uevent" class="sref">52re_>565_kobjname="L357"> 357   * "L357:zpointte Loy thearef="+"L357/a @pf this na   /ss="l0=bed negistee@mt= 0;  =      1234ref">__o_et"  3> = 0; <5255ref">__52uf,> 270       s52uf<>565href=name="L357"> 357   * @par/a>: ointte Loy the par/a>arefchcdicei = 0; <=      5256ref">__5267        enum 5626; 357     dica>:stdoesn_t uue. the hachcdicei = 0;3__52>  <>5627s="sname="L357"> 357  D* drv@dtakestdoesndtakm beadded+sto ="L33ice< uue.OTE: thlf de=i" class="sref">i = 0;3__529        if (562tf 35@matLo: C fma>: refin uue. the33icei = 0; <=      5239ref">__52n_type( 3chcdicei = 0; __52(& 357   sTthisrelea, bu=me=be use@matL hachcdicearefchcdicei = 0; __52e="L372"> 372       52e=">5731de=ename="L357"> 3i);. If it=willbe cbrete@mfr _=ysf,d negistee@mt=y theapecified="L357)ti = 0;3__52+code=dev" class="sref">52+co>57223" iname="L357"> 357< - minti = 0;3__52ers/base/core.c#L374" id52ers>575ode=ename="L357"> 357   *A >"3in"  fil*=willbe cbrete@,/ss=wfin stdoesn_t uue. thedicei = 0; __5275
 357 inastdoesn_t hisnot 0,0)ti = 0;3__526static struct 575href=name="L357"> 357   *Ifularointte Loyae par/a>arefchcdicei = 0;3__52te  357    arefchcdicei = 0;3__52nt" class="sref">uevent<52nt">5727s="sname="L357"> 357  D* thNpointte Loy thearef="+dicei = 0;3__529static int 572tf 35@matLo: CAnysrerother_=ysf  fil7/a @pfmightlbe  nquiee@m=me=be cbrete@mu7"ingLthiti = 0;3__52ttributes(struct 579" claname="L357"> 357   *pointte)ti = 0;3__52s/base/core.c#L379" id="52s/b>5830f 357   ti = 0;3__52sr5="+code=class" c5f="+52sr5>5831de=ename="L357"> 3i);. If itRthe finationarefchcdicei = 0;3__52"+code=device_dd_attribu52"+c>58223" iname="L357"> 357< - minti = 0;3__52er*/
 357   *Nott:  thearef="+"L357/atLoe@mtoo thisrelea, bumux3 hav/zpriceouslt.de=i" class="sref">i = 0; <=      5254ref">__52(3a href="+code=dev" cla52(3a>582_kobjname="L357"> 357 inabeen cbrete@mwith ae calmtoo"L357=cbretee()ti = 0;3__5263/a>        585href=name="L357"> 357   *ode=i" class="sref">i = 0; __52" class="sref">env);52" c>584" claref="+code=dev" cs/base/core.c#L306" id="L33ice |  | i = 0; __52s" class="sref">bus 52s" >5877; * |  * |  *filter =      5258ref">__52+code=dev" class="sref">52+co>580tffilter =      5239ref">__52f="drivers/base/core.c#L52f=">589tf(&devicva_=ex3rce *__52(&q52(590/d="L346" claref="+code=dev" cs/base/core.c#L306" id="L33ice | __52_name(/* respect filter */
__52L293"> 293
devicva_star3rce * |  |  *__524        5943s="sr5="+cosref">if ithrefee/code=S64 |  | ce * * |  * |  *__52stuff */
5964d="L346" cldevicva_en1e.c#L306" id="Lva_en1ne_u(= | __52ass" class="sref">class<52ass>595tf(&aname="L | __52+code=dev" class="sref">52+co>593" cla312" id="L312" class="line" name5297ref">__52f="drivers/base/core.c#L52f=">5297s="O |  | __52(&q52(593 dev_12" id="L312" class="line" name5299ref">__52d\n",> 270599" clartaticas="sref">if ithref__match_se/erce *__63"srequot;,> 2706030ffilter =      631sref">__63_name(601tf(&devicee/"erce * |  *__63"293"> 293
6072 cl  if (__63"        603tf(&aname="L |  *__63stuff */
605_koba312" id="L312" class="line" name6354ref">__63ass" class="sref">class<63"ss>6085d="L if (__63"code=dev" class="sref">63"co>6026; 357     de=i" class="sref">i = 0; __63f="drivers/base/core.c#L63"=">6027s="sname="L357"> 357  D*fi = 0; __63(&q63"602tf 35@matLo: C "L357:zpointte Loy thearef="+"L357/a @pf this na   /was  negistee@mwith de=i" class="sref">i = 0; __63d\n",> 270609" claname="L357"> 357   * dica>:stdoesn_t LofLted na   /a @pfwas priceouslt  negistee@ de=i" class="sref">i = 0; __63L311"> 311
 357   *de=i" class="sref">i = 0; __632        return 6131de=ename="L357"> 3i);. If itTthis calm"unregistes, and elens upthd na   /a @pfwas cbrete@mwith a*de=i" class="sref">i = 0; __63ivers/base/core.c#L313" 63ive>61523" iname="L357"> 357 ina calmtoofi = 0;3__6214
 357   *ode=i" class="sref">i = 0; __625static con3t str3ct625615_kob*voidas="sref">devicf |  * *__62nt_ops filter =      63"6ref">__62     dev_uevent3filte31e61te<>613" class="linaref="+code=dev" cs/base/core.c#L306" id="L33ice | __62   dev_uevent_n3me" c3as62   >6167s="s12" id="L312" class="line" name6308ref">__62     dev_uevent3 clas3="62   >610tf(&devicee/code=S64 |  | se/erce * |  *__62320
="+code=S64filter =      623sref">__621static  273 32062   >620/d="L346" clsr5="+coaclass= * | __62w_uevent" class3"sref32h6326291s="sr5="+coahref="+code=kset" clasde/cor="unregisterce *__62
__6224        s3ruct 32/6214ch625ode=a312" id="L312" class="line" name62"4ref">__62+code=top_kobj"3class3"s62+co>620_kobO |  | __62kset" class="sr3f">ks3t<62kse>6285d="L if (__62v *6226; 357     de=i" class="sref">i = 0; __62re.c#L328" id="3328" 3la62re.>6227s="sname="L357"> 357  D*fi = 0; __62t" class="sref"3count3/a62t" >622tf 35@matLo: C dic:ctthNpointte Loy thearef="+dicei = 0; __62rs/base/core.c#3330" 3d=62rs/>629" claname="L357"> 357   * new_bj" :astdonew3330" LofLted na    de=i" class="sref">i = 0; __621        6300f 357   *de=i" class="sref">i = 0; __62
6331de=ename="L357"> 3i);. If itIt hisLtedresponsibility LofLted calte Loyprovide mutuaecoe=i" class="sref">i = 0; __62"+code=dev" cla3s="sr33c62
63523" iname="L357"> 357 inaexclus, bubetween twoofiffear/a> cals Loffi = 0; __62href="+code=kse3" cla33s63"635ode=ename="L357"> 357   * bu thea30" dicei = 0; __62ef="+code=top_k3bj" c33=63"tu>632_kobjname="L357"> 357 inawonnLofet,ecoflici with ootherdicei = 0;3__12kset" cef="+= 0;36ic  2635href=name="L357"> 357   ti = 0;3__62ivers/base/core.c#L337" 62ive>6326; 357    Nott: DonnLofet,ecalmtthisrelea, b.  Curar/aly,astdonetwork"inglayher cals Lthiti = 0;3__628         357  D*relea, b, but/a @pfwwillchange.   thNfoll=wfin sext fromyKay Sieii = 0;3__62bj" class="sref">top_kob62bj">632tf 35@matLo: Cso"  hnsight:ti = 0;3__62=uevent_ops" class="sref62=ue>632" claname="L357"> 3chcdicei = 0; __62ivers/base/core.c#L341" 62ive>6430f 357   sRe328fin dicei = 0; __622        6431de=ename="L357"> 3i);. If itreplaceidatomi caly,a andyou get"al>"emovn" uei__o_et"  3> = 0; <6212ref">__62/base/core.c#L343" id="L62/ba>64523" iname="L357"> 357 ina onnectastdoei__o_et"  3> = 0; <6233ref">__62uevent_ops" class="sref"62uev>645ode=ename="L357"> 357   *cal,astdr  hinnLofet,eii = 0;3__62f="+code=uevent_ops" cla62f=">642_kobjname="L357"> 357 inti = 0;3645href=name="L357"> 357   *Ibu themeantime, duefin re328fin,dyoue. arget"bj"  mightlbe taki = 0;3__627         357    f">ii = 0;3__62 class="sref">kzalloc6427s="sname="L357"> 357  D*"r328"@dit --y thndyou get"eii = 0; __62se/core.c#L349" id="L34962se/>642tf 35@matLo: C the>"emovn" eii = 0; __62 href="drivers/base/core62 hr>649" claname="L357"> 357   *kernel/dicei = 0; __621        6530f 357   sootherotfin7/a @n (f">ii = 0;3__62ys */
 3i);. If iti = 0;3__62et" class="sref">kset65523" iname="L357"> 357 inaWe ar /curar/aly about Loychangeonetworkrre328finfibuudic Loycompletelt.de=i" class="sref">i = 0; <=      6253ref">__62core.c#L298" id=354" id=62cor>655ode=ename="L357"> 357   *fis allwrre328finfLoffi = 0; <=      6234ref">__62ivers/base/core.c#L355" 62ive>652_kobjname="L357"> 357 inabecause wed cnnLofet,solvectthNproble7s properly,ast@pfarwse with _wappfin n28"s.de=i" class="sref">i = 0; <=      62href=1225626        655href=name="L357"> 357   *Lofmultiple inttefasssfwithout rasss. Mlens,rre328finfLofeth[0-9]it=willonlt.de=i" class="sref">i = 0; <=      62"6ref">__62ers/base/core.c#L357" id62ers>6526; 357    be aallwe@mtooso"  ootherbj"  a @n eth[0-9]i, uue. theauuee7i = 0; __62lass="sref">i < <62las>6527s="sname="L357"> 357  D*"rasonf)ti = 0;3__62code=sprintf" class="sre62cod>652tf 35@matLo: ti = 0;3__620" id="L360" class="line620" >659" claname="L357"> 357   *Mak< upthdn""raln" bj"  hbu thef">ii = 0; __62lass="sref">env);
6630f 357   sso"  ootherattributes uue.userspa  /too iry. thedicei = 0; __62ers/base/core.c#L362" id62ers>6631de=ename="L357"> 3i);. If itsym/coks,--ybut/neii = 0; __6263
 357   *fonnLofet,eii = 0; __624static  270    624665ode=ename="L357"> 357   *Lted ii = 0; __62re_uevent" class="sref">62re_>665_kobjname="L357"> 357   *ode=i" class="sref">i = 0; __62uf,> 270       s62uf<>665hrefas="sref">if ithreff__6267        enum 6626;filter =      6247ref">__62>  <>6677;__629        if (6687;__62n_type( | __62(&if ithrefref=ieode=S64__62e="L372"> 372       62e=">678t">/* respect filter */
__62+code=dev" class="sref">62+co>672tf(&devicee/code=S64 | __62ers/base/core.c#L374" id62ers>673tf(&acmevO | __6275
(&aname="-O | __626static struct 6785d="L if (__62te  refing">"3ice<:*tLofelwa7;snLofe:*tLo7;s:rre328finftootLofelwa7;snLofe\nn"de=i" cmcase/core.c#L371d="bj" e.c#L306" id="Lse/_bj" ne_u(O | __62nt" class="sref">uevent<62nt">6777; | __629static int 673 dev_12" id="L312" class="line" name6239ref">__62ttributes(struct 679tf(&devicoli_f |  | __62s/base/core.c#L379" id="62s/b>680tf(&acmevO | filter =      6271ref">__62sr5="+code=class" c5f="+62sr5>6891s="sr5="+coahref="+code=kset" clasref=ieode=S64__62"+code=device_dd_attribu62"+c>6892 class="linass="lingoto;devicouerce *__62er*/
__62ttribut'ref">__62ttribut'ref">__62se/cor 6ref="6code=dee()683tf(&ref">__62ttribu6="sr37526__5263/a6     68 cef="+= 0;35ic  " id="Lse/_bj" ne_u(O | 6="sr37526__52" cl6ss="s68ore.c#L337" 52ive>534" class="line>(ef="+code=kset" clasref=ieode=S6" class="line>(matLoode=S64_357"code=kset" clasmatLoode=S64_357"#L306tsee_bj" _vargseee/code=S646="sr37526__52s" c6ass="6ref">bus 52s" >5877;ee/code=S64 | filter__52+cod6=dev"6849" id="L34952se/>541ic  " id="Lse/_bj" ef="+code=kset" clasref=ieodede=S64__52f="d6ivers6base/core.c#L5attribu62"+c>6892 class="linass="lingoto;devicouerce *__52(&q5tee()683tf(&ref">__62ttrib-6="sr375262utes" c5271ref">__52_nam6(6a href="+code52_na>598t">/* respect fi6ter */
__52L2936> 2936/a>
if ithreffif#L306tsee_bj" _vargseee/code=S64__524__52stuf6 */6762 class="linass="lingoto;devicouerce *__52ass"6class69struct 6785d="L if (__52+cod6=dev"69e.c#L357" id52ers>55goto;devicouerc=S64__52f="d6ivers69i < <52las>5517s="sr5="+coaclass= * | __52(&q52(593 dev_12" id="L316" class="l6ne" name5299ref">__52d\n&6uot;<69>(struct 679tf(kfref ithreff | __63"sre7uot;<70 550/d="L34kfref ithreff | __52_nam7(7a href="+code63"na>601tf(kfref ithreff | __52L2937> 2937/a>
6072 cl  if (__63"603tf(&anlas="sref">if ithrefref=ieode=S64__63stuf7 */
605_koba312" id="L317" class="l7ne" name6354ref">__63ass"7class7"sref" | if ithreff__52+cod7=dev"7class==S64__52f="d7ivers7base/c> 270599" clartatie328"eo5@ma" code=357"> ithreff__52( | __52d\n&7uot;<70ase/core.c#L5attribu62"+c>68911111111111eff | __63L3117> 31171pan>,> 2706030f = 0;7__632if ithrefref=ieode=S60e=S64__63iver7/base71a>
6072 cl  if ( = 0;7__6214
 | __625676" class="line>(matLoode5@ma"357"code=kset" clasmatLoode5@ma"357"#L306tsee_bj" _vargseee/code=S64ootLofelwa7;sfe=S64__62nt_o7s71 cef="+= 0;35ic  " id="Lse/_bj" =bj"e_u,aO | __62    7dev_u71ore.c#L337" 52ive>534" class="line>(ef="+code=kset" clasref=ieode=S6" class="line>(matLoode=S64<357"code=kset" clasmatLoode=S64<357"#L306tsee_bj" _vargseee/code=S64 | __62   d7v_uev71ef">bus 52s" >5877;534"a href=ro_ebugne_u(=ootLofelwa7;sfe=S64__62    7dev_u71" class="sre52cod>558tf(&anlas="sref">if ithrefref=ieode=S64__62320<7a>
558" cla312" id="L317>filter__6215323 cla12" id="L317-6="sr375272utes" c6311ref">__62w_ue7ent" 72e.c#L362" id62ers>6631de=ename="L357"> 357     de=i" class="sref"7-6="sr375272utes" c6312ref">__62
66523" iname=328"eo5@ma - *f  aemee_u,aOeoL357"> 357     de=i" class="sref"7- = 0;7ne" name6233ref">__6224    72 270    624665ode=ename="L357"> 35@matLo: C dic:ctthNpointte Loy the*f__62+cod7=top_72lass="sref">52re_>565_kobjname==bj"e_u,aO357    *Ifula  * dica>:stdo(pfmigy a=NUef">i__62kset7 clas72       s52uf<>565href=name=dpm_order: howLoy reorder* dicapm_x3rce<>i__62v6226; 357   *ode=i" class="sref"7i = 0;7__62re.c7L328"7id="3352d\n>599" clartatie328"eo5@ma ithreff | __62t" c7ass="7249" id="L34952se/>541enumss=re328"co_u(arepm_orderode=dev" cs/basepm_order9" ids=re328"co_u(arepm_orderode=dev" cs/basepm_order9" ide=S64__62rs/b7se/co7e.c#33> 2706030f = 0;7__621if ithrefref=ieode=S64 = 0;7__62
 | __62"+co7e=dev732 = 0;7__62href7"+cod73 id=354" id=52cor>55d = 0;7__62ef="7code=73ent_ops" cla52f=">5464d="L346" evO |  |  = 0;7_712kse73 cef="+= 0;35ic  >673tf(&acmevO |  = 0;7__62iver7/base73ore.c#L337" 52ive>5344d="L346" cla>(&aname="-O |  = 0;7__6286167s="s12" id="L317i = 0;7__62bj" 7lass=73ent3 clas3="62   >610tf(&am8"eopm_xoc"code=kset" clas&am8"eopm_xoc"S64__62=uev7nt_op73>(struct 679tf(=bj"e_u,aO |  | __62iver7/base74 550/d="L34=bj"e_u,aO_aers/base/core.c#L3=bj"e_u,aO_aers"+code=S64 | __622/* respect fi7>__o_et"  7> = 0; <6212ref">__62/bas7/core74a>
 refing">"3ice<:*tLofel5@mnLofe:*tLo7;s:rre328finftootLofelwa7;snLofe\nn"de=i" cmcase/core.c#L371d="bj" e.c#L306" id="Lse/_bj" ne_u(O | __o_et"  7> = 0; <6233ref">__62ueve7t_ops743re.c#L337" 52ive>5347; |  | __62f="+7ode=u74ent_ops" cla52f=">5464d="L34ef="+code=kset" clasref=ieode=S6" class="line>(vargseod5@ma ithreffee/code=S64 = 0;7__627534" class="line>(calm"up_glue_di+code=kset" clascalm"up_glue_di+S64 | __62 cla7s="sr74ef">bus 52s" >5872las>5517s="sr5="+coaclass= * | __62se/c7re.c#7449" id="L34952se/>5412 class="linass="lingoto;devicouerce * = 0;7__62 hre7="dri74>(struct 558" cla312" id="L317i = 0;7__621550/d="L34=bj"e_u,aO | ee/code=S64__62ys *7601tf(&amon" class="sref">ee/code=S64 |  *__62et" 7lass=752cef="+= 0;35ic  " id="Lse/_bj" =bj"e_u,aO | __62core7c#L29753re.c#L337" 52ive>5344ee/code=S64 | __62iver7/base754cef="+= 0;35ic  " id="Lse/_bj" e_uce_u,aO |  = 0;7<=      62href=12256265344ee/code=S64 | __62ers/7ase/c75ore.c#L337" 52ive>534444444444444444tsee_bj" _vargse | __62lass7"sref75ef">bus 52s" >5872las>5517s="sr5se ="co_snewcode=kset" clasme ="co_snewS64 |  | __62code7sprin758(struct 558" cla312" id="L317i = 0;7__620" i7="L367" clas="line520" >558" cla312" id="L317i = 0;7__62lass7"sref76c#L379" id="62s/bbj" _vargseee/code=S64 = 0;7__62ers/7ase/c76lass" c5f="+62sr5>6891s="sr5="+coahref="+code=kset" clasref=ieode=S6n>599" clartatie328"eo5@ma" code=357"> ithreff |  |  | __6263
689ic  " id="Lse/_bj" ef="+code=kset" clasref=ieodedoli_f = 0;7__6245347sr5>689162" id62ers>6631de=enam357 357   *ode=i" class="sref"7i = 0;7__62re_u7vent"76ef="drivers/6275<>6762sr5>6891s="sr5="+coahre328"eo5@ma" code=357"> ithreff |  |  | __62uf,> 2765re.c#L337" 52ive>5342"+c>689ic  >673tf(&vargseod5@ma ithreffee/code=S64 |  = 0;7ne" name6256ref">__6267    76ore.c#L337" 52ive>5344444444444444445ic  " id="Lse/_bj" =bj"e_u,aO | __62> bus 52s" >5877;54ee/code=S64 | __629601tf(&amon" class="sref">ee/code=S64 | __62n_ty7e76ase/core.c#L5attribu62"+c>68911111111ic  " id="Lse/_bj" =bj"e_u,aO | __627&77 273 32062   >6207;54ee/code=S64 | __62e="L772"> 77lass" c5f="+62sr5>689999999999999999999999999999999999999999tsee_bj" _vargse | __62+cod7=dev"77e_dd_attribu62"+c>6897;54 | __62ers/7ase/c773re.c#L337" 52ive>5347sr5>68999999999s="line520" >558" cla312" id="L317-6="sr375272utes" c6254ref">__6275
558" cla312" id="L317- = 0;72utes" c6255ref">__6265342"+c>689" class="line>(calm"up_glue_di+code=kset" clascalm"up_glue_di+S64 | __62te 534444444442las>5517s="sr5="+coaclass= * | __62nt" 7lass=7sref">uevent<62nt">677777777772 class="linass="lingoto;devicouerce *__629558" cla312" id="L317-6="sr37527ne" name6239ref">__62ttri7utes<77>(struct 558" cla312" id="L317-6="sr375272utes" c628sref">__62s/ba7e/cor7.c#L379" id="6switch/bbj" _vargsefilter__62sr5=7+code7class" c5f="+6c*acass="linass="linDPM_ORDER_NONEode=dev" cs/basDPM_ORDER_NONEass"=S64__62"+co7e=dev7ce_dd_attribu62"+c>689breake *__62er*/7/span7
__62se/cor 7ref="78ef="drivers/6275<>676" class="line>(&am8"eopm_5@ma"  his ithreff |  | __5263/a7     785re.c#L337" 52ive>534breake *__52" cl7ss="s78ore.c#L337" 5c*acass="linass="linDPM_ORDER_PARENT_BEFORE_DEVode=dev" cs/basDPM_ORDER_PARENT_BEFORE_DEVass"=S64__52s" c7ass="7ref">bus 52s" >587" class="line>(&am8"eopm_5@ma"bbj"   ithreff |  | __52+cod7=dev"7849" id="L34952se/>541breake *__52f="d7ivers7base/core.c#L5c*acass="linass="linDPM_ORDER_DEV_LASTode=dev" cs/basDPM_ORDER_DEV_LASTass"=S64__52( 32062   >620/d="L346" clsr5e328"eopm_5@ma"" con" class="sref">se8"eopm_5@ma"" co | __52_nam7(79lass" c5f="+62sr5>689breake *
__52L2937> 2937/a>
558" cla312" id="L317-6="sr375272utes" c5283ref">__52455d__52stuf7 */5517s="sr5="+coaclass= * | __52ass"7class79sref"devicouerc=S64__52+cod7=dev"79ef="+code=ue62te<>673" class>se8"eopm_unxoc"code=kset" clas&am8"eopm_unxoc"S64__52f="d7ivers79i < <52las>5517s="sr5="+coaclass= * | __52(if ithrefref=ieode=S64__52d\n&7uot;<79 class="line520" >558" cla312" id="L318" class="l8ne" name63"sref">__63"sre8uot;<80 (&ans_kobO | __52_nam8(80 href="+code52_na>598t">/* respect fi8"2class="l8n>
__52L2938> 29380ef="drivers/6263<>66523" iname="L357"> 357     de=i" class="sref"8-6="sr375282a href=63"3ref">__63"655ode=ename=328"eoshutdown ->    Nde=S6shutdown()e="Leach/intte Loy shutdown> 357  D*"rasonf)t__63stuf8 */62re_>665_kobjname="L357"> 357   *ode=i" class="sref"8" class="l8ne" name6354ref">__63ass"8class8"sref"void62te<>673" class>se8"eoshutdown ithreff__52+cod8=dev"80  enum 6626;__52f="d8ivers80i < <5eff__52(&q52(593 dev_12" id="L318"9class="l8ne" name5299ref">__52d\n&8uot;<80>(struct 679tf(spin_xoc"code=kset" classpin_xoc"#L306tsee_bj" _vargsese8"e"_kseoeodede=S64__63L3118> 31181 66523" inam="L357"> 357   *ode=i" class="sref"8i = 0;8__6326631de=enaaaaaaaaa* Walk* dica>:stds x3rc backward, shut down each/oothd>5> 357  D*"rasonf)t = 0;8__63iver8/base81ef="drivers/6263<>66523" inaaaaaaaaa* Bewaea30" diintte Lunplug@dit --ymay alsy start pul2reg 357  D*"rasonf)t__6214
655ode=enaaaaaaaaa* a>:stds off3ref,357 down> 357  D*"rasonf)t__62562re_>665_kobjnaaaaaaaaa*e="L357"> 357   *ode=i" class="sref"8" class="l8ne" name63"5ref">__62nt_o8s81 cef="+= 0;35while  >673tf(&x3rcoemptycode=kset" clasx3rcoempty#L306tsee_bj" _vargsese8"e"_kseoeodede=S64__62    8dev_u81ore.c#L337" 52ive>534" class="line>(6" evO | se8"e"_kseoeodede=S64 | __62   d8v_uev81ef">bus 52s" >5877;__62    8dev_u81="string">&q52(593 dev_12" id="L318-6="sr375282utes" c6398ref">__62320<8a>
66523" inam="L357"> 357   *ode=i" class="sref"8>filter__621);
6630f 357   *ode=i" class="sref"8> = 0;82utes" c6311ref">__62w_ue8ent" 82e.c#L362" id62ers>6631de=enaaaaaaaaaaaaaaaaa* pr" fulait from be/a> frefde="L357"> *Ifulel/dic="L357"> 357   *ode=i" class="sref"8> = 0;82utes" c6312ref">__62
66523" inaaaaaaaaaaaaaaaaa* xoc"cis. y thehel/, ue.useuudic Loyad@ de=i" class="sref"8- = 0;8ne" name6233ref">__6224    82 270    624665ode=enaaaaaaaaaaaaaaaaa*e="L357"> 357   *ode=i" class="sref"8" class="l8ne" name62"4ref">__62+cod8=top_82ef="drivers/6275<>676" class="line>(de ="code=dev" cs/bageuo_e/coreode=S64 |  | ce__62kset8 clas825re.c#L337" 52ive>5344 | __62v534"ivers/6263<>66523" inam="L357"> 357   *ode=i" class="sref"8>7class="l8__62re.c8L328"82i < <62las>6527s="snaaaaaaaaaaaaaaaaa* ="L35sure* dica>:stdois offthea30seo x3rc,zoother="L357"> 357   *ode=i" class="sref"8>8class="l8__62t" c8ass="82" class="sre62cod>652tf 3de5@maait> 357  D*"rasonf)t = 0;8__62rs/b8se/co82 class="line620" >659" clanaaaaaaaaaaaaaaaaa*e="L357"> 357   *ode=i" class="sref"8i = 0;8__621 32062   >620/d="L346" clsr5x3rcodel_iniccode=kset" clasx3rcodel_inic#L306tsee_bj" _vargseee/code=S64__62
se8"e"_kseoeodede=S64__62"+co8e=dev83a>
6072 cl  if ( = 0;8__62href8"+cod833re.c#L337" 52ive>534462" id62ers>6631de=enam3hn ecxoc"c a> void6 intfmult probe/rele*aca*e="L357"> 357   *ode=i" class="sref"8i class="l8__62ef="8code=83ef="drivers/6275<>6762s/bbj" _vargseee/code=S64_812kse835re.c#L337" 52ive>5342"+c>689" class="line>(e328"eoxoc"code=kset" clas&am8"eoxoc"#L306 hrefgeuo_e/corr |  | ce__62iver8/base83ore.c#L337" 52ive>534" class="line>(e328"eoxoc"code=kset" clas&am8"eoxoc"#L306 hrefgeuo_e/corr | __6286167s="s12" id="L318i = 0;8__62bj" 8lass=8349" id="L34952se/>541462" id62ers>6631de=enam3D"L357"> 3alloweany mo ixruulim35suspendsa*e="L357"> 357   *ode=i" class="sref"8i = 0;8__62=uev8nt_op83ase/core.c#L5attribu62__62iver8/base84 273 32062   >620/d="L346" clsr5em_ruulim3_barriis ithreff |  = 0;8__622/* respect fi8>__o_et"  8> = 0; <6212ref">__62/bas8/core84e_dd_attribu62"+c>689ic  " id="Lse/_bj" r |  ithreff_dd_atsee_tsee_13"na>601tf(&amon" class="sref">ee/code=S64__o_et"  8> = 0; <6233ref">__62ueve8t_ops843re.c#L337" 52ive>5347ive>534" class="line>(e32_dbse/core.c#L37proe32_dbs | __62f="+8ode=u84ef="drivers/6275<>676999999993"na>601tf(&amon" class="sref">ee/code=S64 | 534} elacaic  " id="Lse/_bj" r | 601tf(&amon" class="sref">ee/code=S64 |  = 0;8__6275347ive>534" class="line>(e32_dbse/core.c#L37proe32_dbs | __62 cla8s="sr84ef">bus 52s" >587999999993"na>601tf(&amon" class="sref">ee/code=S64 |  |  = 0;8__62se/c8re.c#8449" id="L34952se/>541s="line520" >558" cla312" id="L318i = 0;8__62 hre8="dri84 clas="line520" >558" cla312" id="L318i = 0;8__621 32062   >620/d="L346" clsr5e328"eounxoc"code=kset" clas&am8"eounxoc"#L306 hrefgeuo_e/corr |  = 0;8__62ys *8ee/code=S64__62et" 8lass=85e_dd_attribu62"+c>6897; |  | ce__62core8c#L2985 id=354" id=52cor>55d = 0;8<=      6234ref">__62iver8/base85ef="drivers/6275<>676" class="line>(="+coaclass= * |  = 0;8<=      62href=12256265344 |  | ce__62ers/8ase/c85lass==S64__62lass8"sref85ef">bus 52s" >5872las>5517s="sr5spin_xoc"code=kset" classpin_xoc"#L306tsee_bj" _vargsese8"e"_kseoeodede=S64__62code8sprin858(struct 558" cla312" id="L318i = 0;8__620" i8="L3685>(struct 679tf(spin_unxoc"code=kset" classpin_unxoc"#L306tsee_bj" _vargsese8"e"_kseoeodede=S64__62lass8"sref86 550/d="L34async_synchronize_full/base/core.c#L3async_synchronize_full#L306de=S64__62ers/8ase/c86lass"s="line520" >558" cla312" id="L318i = 0;8__6263

6072 cl  if ( = 0;8__624    624665ode=enam="L357"> 357   *ode=i" class="sref"8i = 0;8__62re_u8vent"86lass="sref">52re_>565_kobjnameD>:stdologg/a> functionc="L357"> 357   *ode=i" class="sref"8i = 0;8__62uf,> 286       s52uf<>565href=name="L357"> 357   *ode=i" class="sref"8i = 0;8ne" name6256ref">__6267    86lass==S64__62> b#ifdef521550/d="L34CONFIG_PRINTK/base/core.c#L3CONFIG_PRINTKass==S64__629 270 = 0;82utes" c6239ref">__62n_ty8e86ase/c21550/d="L34ce=S64679tf(size_on" class="sref"size_o.c#L36" id="L33ice 357   *ode=i" class="sref"8-6="sr375282utes" c627sref">__628&87pan>,> 2706030f__62e="L872"> 87lass" c5f="+6conct5char306" id="L33ice__62+cod8=dev"87a>
__62ers/8ase/c87 id=354" id=52cor>55d__6275
ee/code=S6455d = 0;82utes" c6255ref">__6265346" id="L33iceee/code=S64__62te  |  ithreff_dd_f54" id=52cor>55d__62nt" 8lass=8sref">uevent<62nt">6776" id="L33iceee/code=S64__629 = 0;8ne" name6239ref">__62ttri8utes<87ase/core.c#L5attribu62cod>550e=S64__62s/ba8e/cor88 5323 cla12" id="L318>filter__62sr5=8+code88 href="+code63"na>601tf(posn" class="sref"pos.c#L3+S6" class="line>(mnpr52dfn" class="sref"snpr52dfS64601tf(posn" class="sref"pos.c#LL37ttr>679tf(hdrl,a/base/core.c#L3hdrl,ace601tf(posn" class="sref"pos.c#LL37a href=ro_ebugne_u(=__62"+co8e=dev88a>
6072 cl  if (__62er*/8/span8
 357   *ode=i" class="sref"8-6="sr375282ttribut'ref">__62se/cor 8ref="88lass="sref">62re_>665_kobjnaaaaaaaaa* Addca>:stdoidkobifier DEVICE=:="L357"> 357   *ode=i" class="sref"8- = 0;8__5263/a8     88       s52uf<>565href=naaaaaaaaa*   b12:8aaaaaaaaabxoc"ce32_ce<>i__52" cl8ss="s88ef=3+code3en62v6226;__52s" c8ass="88i < <62las>6527s="snaaaaaaaaa*   n8aaaaaaaaa   nete32aicindexe<>i = 0;8 =      5258ref">__52+cod8=dev"88" class="sre62cod>652tfi = 0;8 =      5239ref">__52f="d8ivers88 class="line620" >659" clanaaaaaaaaame="L357"> 357   *ode=i" class="sref"8-6="sr375282utes" c529sref">__52( | secid=")doli_f__52_nam8(89lass" c5f="+62sr5>689char34__52L2938> 29389a>
6072 cl  if (__5245342s/bbj" _vargse55d__52stuf8 */676999999993"na>601tf("code=kset" clascass"de=Sa href=ro_ebugne_u(=<57">b<57">elwa7;se=S64__52ass"8class895re.c#L337" 52ive>534elac=S64__52+cod8=dev"89ore.c#L337" 52ive>5347ive>534" class="line>("code=kset" clascass"de=Sa href=ro_ebugne_u(=<57">c<57">elwa7;se=S64__52f="d8ivers89ef">bus 52s" >5872las>5517s="sr5=osn" class="sref"pos.c#L++e=S64__52(601tf(posn" class="sref"pos.c#L3+S6" class="line>(mnpr52dfn" class="sref"snpr52dfS64601tf(posn" class="sref"pos.c#LL37ttr>679tf(hdrl,a/base/core.c#L3hdrl,ace601tf(posn" class="sref"pos.c#LL=S64__52d\n&8uot;<89ase/core.c#L5attribu62"+c>689111111117a href=ro_ebugne_u(=__63"sre9uot;<90 273 32062   >6207;679tf(MAJORn" class="sref"MAJORS64 | secid=")L37ttr>679tf(MINORn" class="sref"MINORS64 | secid=")de=S64__52_nam9(90lass" c5f="+6} elacaic  " id="Lse/_bj" ugncmae/core.c#L37prougncmaS64
__52L2939> 29390e_dd_attribu62"+c>689eff |  | __63"55d__63stuf9 */676" class="line>(=osn" class="sref"pos.c#L++e=S64__63ass"9class905re.c#L337" 52ive>5344601tf(posn" class="sref"pos.c#LL37ttr>679tf(hdrl,a/base/core.c#L3hdrl,ace601tf(posn" class="sref"pos.c#LL=S64__52+cod9=dev"90ore.c#L337" 52ive>53444444444444444457a href=ro_ebugne_u(= | ce__52f="d9ivers90i < <5} elacali_f__52(601tf(posn" class="sref"pos.c#L++e=S64__52d\n&9uot;<90ase/core.c#L5attribu62601tf(posn" class="sref"pos.c#LL37ttr>679tf(hdrl,a/base/core.c#L3hdrl,ace601tf(posn" class="sref"pos.c#LL=S64__63L3119> 31191 273 32062   >6207; |  = 0;9__632__63iver9/base91a>
6072 cl  if (__6214
558tf(&anposn" class="sref"pos.c#Le=S64__625__62nt_o9s91sref"__62    9dev_u91lass==S64__62   d9v_uev91ef">b52dLofe\nn"de=i" cvpr52dk_emiccode=kset" clasi" cvpr52dk_emic#L30652dLofe\nn"de=level/base/core.c#L3level"+co, conct5eff__62    9dev_u9149" id="L34952se/>54111111conct5char306" id="L33ice55d__62320<9a>
filter__621 3206char34__62w_ue9ent" 92 href="+code63"na>601tf(size_on" class="sref"size_o.c#L36" id="L33ice__62
6072 cl  if ( = 0;9ne" name6233ref">__6224    923href="+code63"na>601tf(hdrl,a/base/core.c#L3hdrl,ace(ce=S64__62+cod9=top_92ef="d=S64__62kset9 clas925re.c#L337" 52cod>558tf(&anvpr52dk_emiccode=kset" clasvpr52dk_emic#L3060,34601tf(hdrl,a/base/core.c#L3hdrl,ace601tf(hdrl,a/base/core.c#L3hdrl,ace601tf(fmccode=kset" clasfmcass"nLofe\nn"de=argsn" class="sref"args_dd_fe=S64__62v__62re.c9L328"92i a hrefereoed__62t" c9ass="92="string">&q52(593 dev_12" id="L319i = 0;9__62rs/b9se/co92 clas52dLofe\nn"de=i" cpr52dk_emiccode=kset" clasi" cpr52dk_emic#L30652dLofe\nn"de=level/base/core.c#L3level"+co, conct5eff55d = 0;9__621,> 2706030f = 0;9__62
601tf(va_x3rccode=kset" clasva_x3rc.c#L36" id="L33ice__62"+co9e=dev93e_dd_attribu652dLofe\nn"de=rode=dev" cs/basieode=S64 = 0;9__62href9"+cod93 id=354" id=52cor>55d__62ef="9code=93ef="drivers/63"na>601tf(va_startcode=kset" clasva_start#L306" id="Lse/_bj" argsn" class="sref"args_dd_, 3"na>601tf(fmccode=kset" clasfmcass"fe=S64_912kse935re.c=S64__62iver9/base93ore.c#L337" 5ofe\nn"de=rode=dev" cs/basieodede=S64601tf(e_uevO | __6286167s="s12" id="L319i = 0;9__62bj" 9lass=9349" id="L34953"na>601tf(va_endcode=kset" clasva_end#L306" id="Lse/_bj" argsn" class="sref"args_dd_fe=S64__62=uev9nt_op93 clas="line520" >558" cla312" id="L319i = 0;9__62iver9/base94 273 32062cod>558tf(&anrode=dev" cs/basieode=S64 = 0;9__622558" cla312" id="L319>__o_et"  9> = 0; <6212ref">__62/bas9/core94e_dd_ a hrefereoed = 0; <6233ref">__62ueve9t_ops94 id=354" id=52cor>55d__62f="+9ode=u94ef="d> 270(&an__i" cpr52dkcode=kset" clas__i" cpr52dk#L306conct5char306" id="L33ice55d53444444444eff55d = 0;9__6276626;__62 cla9s="sr94ef">bus 5ic  >673tf(&ne_u(O |  = 0;9__62se/c9re.c#9449" id="L34952se/>5412cod>558tf(&anpr52dkcode=kset" claspr52dk#L306"a href=ro_ebugne_u(=:stdo*): s:rrepV2otLofelwa7;snLofe\nn"de=level/base/core.c#L3level"+co, 3"na>601tf(vafn" class="sref"vaf_dd_fe=S64__62 hre9="dri94 clas="line520" >558" cla312" id="L319i = 0;9__621 32062cod>558tf(&ani" cpr52dk_emiccode=kset" clasi" cpr52dk_emic#L306ofe\nn"de=level/base/core.c#L3level"+co[1] -63a href=ro_ebugne_u(=<57">0<57">elwa7;s, 3"na>601tf(e_uevO | 558" cla312" id="L319i = 0;9__62ys *9558" cla312" id="L319i__o_et"  9__62et" 9lass=95e_dd_attribu62"+c>6897;601tf(e32_d>558"_ugne_u(ode=kset" clasi" cd>558"_ugne_u#L306" id="Lse/_bj" ne_u(O |  | 601tf(vafn" class="sref"vaf_dd_fe=S64__62core9c#L2995 id=3s="line520" >558" cla312" id="L319i = 0;9<=      6234ref">__62iver9/base95ef="d=S6455d = 0;9<=      62"6ref">__62ers/9ase/c95ore.c#L337" 52ive>53conct5char306" id="L33ice55d = 0;9__62lass9"sref95ef">bm 6626; = 0;9__62code9sprin958(struct 601tf(vafn" class="sref"vaf_dd_e=S64__620" i9="L3695>(struct 679tf(va_x3rccode=kset" clasva_x3rc.c#L36" id="L33ice__62lass9"sref96  = 0;9__62ers/9ase/c96 href="+code52_na>598t">/* respect fi9i = 0;9__6263

601tf(fmccode=kset" clasfmcass"fe=S64__62455d = 0;9__62re_u9vent"96ef="drivers/63"na>601tf(vafn" class="sref"vaf_dd_.i_f__62uf,> 2965f="drivers/63"na>601tf(vafn" class="sref"vaf_dd_.i_f__6267    96lass==S64__62>  < <52las>5517s="sr5rode=dev" cs/basieodede=S64601tf(e_uevO | __629&q52(593 dev_12" id="L319> = 0;92utes" c6239ref">__62n_ty9e96>(struct 679tf(va_endcode=kset" clasva_end#L306" id="Lse/_bj" argsn" class="sref"args_dd_fe=S64__629&97 5323 cla12" id="L319-6="sr375292utes" c6271ref">__62e="L972"> 97lass" c5f="+62cod>558tf(&anrode=dev" cs/basieode=S64
__62+cod9=dev"97a>
558" cla312" id="L319t = 0;92utes" c6253ref">__62ers/9ase/c97 id=3 a hrefereoed__6275
 = 0;92utes" c6255ref">__626601tf(e_fref_i" cpr52dk_level/base/core.c#L3e_fref_i" cpr52dk_level#L306" id="Lse/_bj" funccode=kset" clasfunc"+co, 3"na>601tf(kern_level/base/core.c#L3kern_level#L30f#L337" 52ive>53\=S64__62te 53\=S64__62nt" 9lass=9sref">{attribu62"+c>6897; = 0;92utes" c6258ref">__629601tf(vafn" class="sref"vaf_dd_e49555555555555555555555555555555555\=S64__62ttri9utes<97>(struct 679tf(va_x3rccode=kset" clasva_x3rc.c#L36" id="L33ice__62s/ba9e/cor98 __62sr5=9+code98lass" c5f="+62sr5>689999999999999999555555555555555555555555555555555\=S64__62"+co9e=dev98a>
601tf(fmccode=kset" clasfmcass"fe999555555555555555555555555555555555\=S64__62er*/9/span9
 = 0;92ttribut'ref">__62se/cor 9ref="98ef="drivers/63"na>601tf(vafn" class="sref"vaf_dd_.i_f__5263/a9     985f="drivers/63"na>601tf(vafn" class="sref"vaf_dd_.i_f__52" cl9ss="s98ore.c#L337" 52ive>534444444444444444555555555555555555555555555555555\=S64__52s" c9ass="98i < <52las>5517s="sr5rode=dev" cs/basieodede=S64601tf(e_uevO | __52+cod9=dev"9849" id="L34952se/>541111114444444444555555555555555555555555555555555\=S64__52f="d9ivers98>(struct 679tf(va_endcode=kset" clasva_end#L306" id="Lse/_bj" argsn" class="sref"args_dd_fe4444444444555555555555555555555555555555555\=S64__52( 32062   >6207;__52_nam9(99lass" c5f="+62cod>558tf(&anrode=dev" cs/basieode=;__52L2939> 29399a>
 32062   >6207;__524__52stuf9 */ = 0;92utes" c52s5ref">__52ass"9class99sref"601tf(KERN_EMERG(ode=kset" clasKERN_EMERG"+cofe=S64__52+cod9=dev"99ore.c601tf(KERN_ALERT(ode=kset" clasKERN_ALERT"+cofe=S64__52f="d9ivers99i a hrefereoed601tf(KERN_CRIT(ode=kset" clasKERN_CRIT"+cofe=S64__52( | 601tf(KERN_ERRn" class="sref"KERN_ERR"+cofe=S64__52d\n&9uot;<99ase/c21550/d="L34e_fref_i" cpr52dk_level/base/core.c#L3e_fref_i" cpr52dk_level#L306" id="Lse/_bj" i" cwara/base/core.c#L3i" cwara#L30, 3"na>601tf(KERN_WARNING(ode=kset" clasKERN_WARNING"+cofe=S64__52d\n20" c>20" se/c21550/d="L34e_fref_i" cpr52dk_level/base/core.c#L3e_fref_i" cpr52dk_level#L306" id="Lse/_bj" i" cnot"+code=dev" cs/base/ccnot"+c#L30, 3"na>601tf(KERN_NOTICE(ode=kset" clasKERN_NOTICE"+cofe=S/pre>ass=d7/93/333abac9ec79cea30fdd34e6c4c9255d27b9_3/20" c>S64__52_na20"ut>20"1se/c21550/d="L34e_fref_i" cpr52dk_level/base/core.c#L3e_fref_i" cpr52dk_level#L306" id="Lse/_bj" _i" cinfocode=kset" clas_i" cinfo#L30, 3"na>601tf(KERN_INFO(ode=kset" clasKERN_INFO"+cofe=S64
__52L2920">
>20"a>
6072 cl  if (__52420" id=3#endif href="63"29>6072 cl  if (__52stu20"ut>20"lass="/pre>
The original LXR software by thf 3"na>601thttp://sourceforge.net/projects/lxr">LXR 659"unity#L30, this experi" clal 6072ion by 3"na>601tmailto:lxr@4reux.no">lxr@4reux.no_dd_. lxr.4reux.no kindly hosted by 3"na>601thttp://www.redpill-4repro.no">Redpill Lrepro AS#L30, provider of Lreux concult/a> and operationc sere8"e" since s99s.