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/genhd.h> 22 #include <linux/kallsyms.h> 23 #include <linux/mutex.h> 24 #include <linux/async.h> 25 26 #include "base.h" 27 #include "power/power.h" 28 29 #ifdef CONFIG_SYSFS_DEPRECATED 30 #ifdef CONFIG_SYSFS_DEPRECATED_V2 31 long sysfs_deprecated = 1; 32 #else 33 long sysfs_deprecated = 0; 34 #endif 35 static __init int sysfs_deprecated_setup(char *arg) 36 { 37 return strict_strtol(arg, 10, &sysfs_deprecated); 38 } 39 early_param("sysfs.deprecated", sysfs_deprecated_setup); 40 #endif 41 42 int (*platform_notify)(struct device *dev) = NULL; 43 int (*platform_notify_remove)(struct device *dev) = NULL; 44 static struct kobject *dev_kobj; 45 struct kobject *sysfs_dev_char_kobj; 46 struct kobject *sysfs_dev_block_kobj; 47 48 #ifdef CONFIG_BLOCK 49 static inline int device_is_not_partition(struct device *dev) 50 { 51 return !(dev->type == &part_type); 52 } 53 #else 54 static inline int device_is_not_partition(struct device *dev) 55 { 56 return 1; 57 } 58 #endif 59 60 /** 61 * dev_driver_string - Return a device's driver name, if at all possible 62 * @dev: struct device to get the name of 63 * 64 * Will return the device's driver's name if it is bound to a device. If 65 * the device is not bound to a device, it will return the name of the bus 66 * it is attached to. If it is not attached to a bus either, an empty 67 * string will be returned. 68 */ 69 const char *dev_driver_string(const struct device *dev) 70 { 71 struct device_driver *drv; 72 73 /* dev->driver can change to NULL underneath us because of unbinding, 74 * so be careful about accessing it. dev->bus and dev->class should 75 * never change once they are set, so they don't need special care. 76 */ 77 drv = ACCESS_ONCE(dev->driver); 78 return drv ? drv->name : 79 (dev->bus ? dev->bus->name : 80 (dev->class ? dev->class->name : "")); 81 } 82 EXPORT_SYMBOL(dev_driver_string); 83 84 #define to_dev(obj) container_of(obj, struct device, kobj) 85 #define to_dev_attr(_attr) container_of(_attr, struct device_attribute, attr) 86 87 static ssize_t dev_attr_show(struct kobject *kobj, struct attribute *attr, 88 char *buf) 89 { 90 struct device_attribute *dev_attr = to_dev_attr(attr); 91 struct device *dev = to_dev(kobj); 92 ssize_t ret = -EIO; 93 94 if (dev_attr->show) 95 ret = dev_attr->show(dev, dev_attr, buf); 96 if (ret >= (ssize_t)PAGE_SIZE) { 97 print_symbol("dev_attr_show: %s returned bad count\n", 98 (unsigned long)dev_attr->show); 99 } 100 return ret; 101 } 102 103 static ssize_t dev_attr_store(struct kobject *kobj, struct attribute *attr, 104 const char *buf, size_t count) 105 { 106 struct device_attribute *dev_attr = to_dev_attr(attr); 107 struct device *dev = to_dev(kobj); 108 ssize_t ret = -EIO; 109 110 if (dev_attr->store) 111 ret = dev_attr->store(dev, dev_attr, buf, count); 112 return ret; 113 } 114 115 static const struct sysfs_ops dev_sysfs_ops = { 116 .show = dev_attr_show, 117 .store = dev_attr_store, 118 }; 119 120 #define to_ext_attr(x) container_of(x, struct dev_ext_attribute, attr) 121 122 ssize_t device_store_ulong(struct device *dev, 123 struct device_attribute *attr, 124 const char *buf, size_t size) 125 { 126 struct dev_ext_attribute *ea = to_ext_attr(attr); 127 char *end; 128 unsigned long new = simple_strtoul(buf, &end, 0); 129 if (end == buf) 130 return -EINVAL; 131 *(unsigned long *)(ea->var) = new; 132 /* Always return full write size even if we didn't consume all */ 133 return size; 134 } 135 EXPORT_SYMBOL_GPL(device_store_ulong); 136 137 ssize_t device_show_ulong(struct device *dev, 138 struct device_attribute *attr, 139 char *buf) 140 { 141 struct dev_ext_attribute *ea = to_ext_attr(attr); 142 return snprintf(buf, PAGE_SIZE, "%lx\n", *(unsigned long *)(ea->var)); 143 } 144 EXPORT_SYMBOL_GPL(device_show_ulong); 145 146 ssize_t device_store_int(struct device *dev, 147 struct device_attribute *attr, 148 const char *buf, size_t size) 149 { 150 struct dev_ext_attribute *ea = to_ext_attr(attr); 151 char *end; 152 long new = simple_strtol(buf, &end, 0); 153 if (end == buf || new > INT_MAX || new < INT_MIN) 154 return -EINVAL; 155 *(int *)(ea->var) = new; 156 /* Always return full write size even if we didn't consume all */ 157 return size; 158 } 159 EXPORT_SYMBOL_GPL(device_store_int); 160 161 ssize_t device_show_int(struct device *dev, 162 struct device_attribute *attr, 163 char *buf) 164 { 165 struct dev_ext_attribute *ea = to_ext_attr(attr); 166 167 return snprintf(buf, PAGE_SIZE, "%d\n", *(int *)(ea->var)); 168 } 169 EXPORT_SYMBOL_GPL(device_show_int); 170 171 /** 172 * device_release - free device structure. 173 * @kobj: device's kobject. 174 * 175 * This is called once the reference count for the object 176 * reaches 0. We forward the call to the device's release 177 * method, which should handle actually freeing the structure. 178 */ 179 static void device_release(struct kobject *kobj) 180 { 181 struct device *dev = to_dev(kobj); 182 struct device_private *p = dev->p; 183 184 if (dev->release) 185 dev->release(dev); 186 else if (dev->type && dev->type->release) 187 dev->type->release(dev); 188 else if (dev->class && dev->class->dev_release) 189 dev->class->dev_release(dev); 190 else 191 WARN(1, KERN_ERR "Device '%s' does not have a release() " 192 "function, it is broken and must be fixed.\n", 193 dev_name(dev)); 194 kfree(p); 195 } 196 197 static const void *device_namespace(struct kobject *kobj) 198 { 199 struct device *dev = to_dev(kobj); 200 const void *ns = NULL; 201 202 if (dev->class && dev->class->ns_type) 203 ns = dev->class->namespace(dev); 204 205 return ns; 206 } 207 208 static struct kobj_type device_ktype = { 209 .release = device_release, 210 .sysfs_ops = &dev_sysfs_ops, 211 .namespace = device_namespace, 212 }; 213 214 215 static int dev_uevent_filter(struct kset *kset, struct kobject *kobj) 216 { 217 struct kobj_type *ktype = get_ktype(kobj); 218 219 if (ktype == &device_ktype) { 220 struct device *dev = to_dev(kobj); 221 if (dev->bus) 222 return 1; 223 if (dev->class) 224 return 1; 225 } 226 return 0; 227 } 228 229 static const char *dev_uevent_name(struct kset *kset, struct kobject *kobj) 230 { 231 struct device *dev = to_dev(kobj); 232 233 if (dev->bus) 234 return dev->bus->name; 235 if (dev->class) 236 return dev->class->name; 237 return NULL; 238 } 239 240 static int dev_uevent(struct kset *kset, struct kobject *kobj, 241 struct kobj_uevent_env *env) 242 { 243 struct device *dev = to_dev(kobj); 244 int retval = 0; 245 246 /* add device node properties if present */ 247 if (MAJOR(dev->devt)) { 248 const char *tmp; 249 const char *name; 250 mode_t mode = 0; 251 252 add_uevent_var(env, "MAJOR=%u", MAJOR(dev->devt)); 253 add_uevent_var(env, "MINOR=%u", MINOR(dev->devt)); 254 name = device_get_devnode(dev, &mode, &tmp); 255 if (name) { 256 add_uevent_var(env, "DEVNAME=%s", name); 257 kfree(tmp); 258 if (mode) 259 add_uevent_var(env, "DEVMODE=%#o", mode & 0777); 260 } 261 } 262 263 if (dev->type && dev->type->name) 264 add_uevent_var(env, "DEVTYPE=%s", dev->type->name); 265 266 if (dev->driver) 267 add_uevent_var(env, "DRIVER=%s", dev->driver->name); 268 269 /* have the bus specific function add its stuff */ 270 if (dev->bus && dev->bus->uevent) { 271 retval = dev->bus->uevent(dev, env); 272 if (retval) 273 pr_debug("device: '%s': %s: bus uevent() returned %d\n", 274 dev_name(dev), __func__, retval); 275 } 276 277 /* have the class specific function add its stuff */ 278 if (dev->class && dev->class->dev_uevent) { 279 retval = dev->class->dev_uevent(dev, env); 280 if (retval) 281 pr_debug("device: '%s': %s: class uevent() " 282 "returned %d\n", dev_name(dev), 283 __func__, retval); 284 } 285 286 /* have the device type specific function add its stuff */ 287 if (dev->type && dev->type->uevent) { 288 retval = dev->type->uevent(dev, env); 289 if (retval) 290 pr_debug("device: '%s': %s: dev_type uevent() " 291 "returned %d\n", dev_name(dev), 292 __func__, retval); 293 } 294 295 return retval; 296 } 297 298 static const struct kset_uevent_ops device_uevent_ops = { 299 .filter = dev_uevent_filter, 300 .name = dev_uevent_name, 301 .uevent = dev_uevent, 302 }; 303 304 static ssize_t show_uevent(struct device *dev, struct device_attribute *attr, 305 char *buf) 306 { 307 struct kobject *top_kobj; 308 struct kset *kset; 309 struct kobj_uevent_env *env = NULL; 310 int i; 311 size_t count = 0; 312 int retval; 313 314 /* search the kset, the device belongs to */ 315 top_kobj = &dev->kobj; 316 while (!top_kobj->kset && top_kobj->parent) 317 top_kobj = top_kobj->parent; 318 if (!top_kobj->kset) 319 goto out; 320 321 kset = top_kobj->kset; 322 if (!kset->uevent_ops || !kset->uevent_ops->uevent) 323 goto out; 324 325 /* respect filter */ 326 if (kset->uevent_ops && kset->uevent_ops->filter) 327 if (!kset->uevent_ops->filter(kset, &dev->kobj)) 328 goto out; 329 330 env = kzalloc(sizeof(struct kobj_uevent_env), GFP_KERNEL); 331 if (!env) 332 return -ENOMEM; 333 334 /* let the kset specific function add its keys */ 335 retval = kset->uevent_ops->uevent(kset, &dev->kobj, env); 336 if (retval) 337 goto out; 338 339 /* copy keys to file */ 340 for (i = 0; i < env->envp_idx; i++) 341 count += sprintf(&buf[count], "%s\n", env->envp[i]); 342 out: 343 kfree(env); 344 return count; 345 } 346 347 static ssize_t store_uevent(struct device *dev, struct device_attribute *attr, 348 const char *buf, size_t count) 349 { 350 enum kobject_action action; 351 352 if (kobject_action_type(buf, count, &action) == 0) 353 kobject_uevent(&dev->kobj, action); 354 else 355 dev_err(dev, "uevent: unknown action-string\n"); 356 return count; 357 } 358 359 static struct device_attribute uevent_attr = 360 __ATTR(uevent, S_IRUGO | S_IWUSR, show_uevent, store_uevent); 361 362 static int device_add_attributes(struct device *dev, 363 struct device_attribute *attrs) 364 { 365 int error = 0; 366 int i; 367 368 if (attrs) { 369 for (i = 0; attr_name(attrs[i]); i++) { 370 error = device_create_file(dev, &attrs[i]); 371 if (error) 372 break; 373 } 374 if (error) 375 while (--i >= 0) 376 device_remove_file(dev, &attrs[i]); 377 } 378 return error; 379 } 380 381 static void device_remove_attributes(struct device *dev, 382 struct device_attribute *attrs) 383 { 384 int i; 385 386 if (attrs) 387 for (i = 0; attr_name(attrs[i]); i++) 388 device_remove_file(dev, &attrs[i]); 389 } 390 391 static int device_add_bin_attributes(struct device *dev, 392 struct bin_attribute *attrs) 393 { 394 int error = 0; 395 int i; 396 397 if (attrs) { 398 for (i = 0; attr_name(attrs[i]); i++) { 399 error = device_create_bin_file(dev, &attrs[i]); 400 if (error) 401 break; 402 } 403 if (error) 404 while (--i >= 0) 405 device_remove_bin_file(dev, &attrs[i]); 406 } 407 return error; 408 } 409 410 static void device_remove_bin_attributes(struct device *dev, 411 struct bin_attribute *attrs) 412 { 413 int i; 414 415 if (attrs) 416 for (i = 0; attr_name(attrs[i]); i++) 417 device_remove_bin_file(dev, &attrs[i]); 418 } 419 420 static int device_add_groups(struct device *dev, 421 const struct attribute_group **groups) 422 { 423 int error = 0; 424 int i; 425 426 if (groups) { 427 for (i = 0; groups[i]; i++) { 428 error = sysfs_create_group(&dev->kobj, groups[i]); 429 if (error) { 430 while (--i >= 0) 431 sysfs_remove_group(&dev->kobj, 432 groups[i]); 433 break; 434 } 435 } 436 } 437 return error; 438 } 439 440 static void device_remove_groups(struct device *dev, 441 const struct attribute_group **groups) 442 { 443 int i; 444 445 if (groups) 446 for (i = 0; groups[i]; i++) 447 sysfs_remove_group(&dev->kobj, groups[i]); 448 } 449 450 static int device_add_attrs(struct device *dev) 451 { 452 struct class *class = dev->class; 453 const struct device_type *type = dev->type; 454 int error; 455 456 if (class) { 457 error = device_add_attributes(dev, class->dev_attrs); 458 if (error) 459 return error; 460 error = device_add_bin_attributes(dev, class->dev_bin_attrs); 461 if (error) 462 goto err_remove_class_attrs; 463 } 464 465 if (type) { 466 error = device_add_groups(dev, type->groups); 467 if (error) 468 goto err_remove_class_bin_attrs; 469 } 470 471 error = device_add_groups(dev, dev->groups); 472 if (error) 473 goto err_remove_type_groups; 474 475 return 0; 476 477 err_remove_type_groups: 478 if (type) 479 device_remove_groups(dev, type->groups); 480 err_remove_class_bin_attrs: 481 if (class) 482 device_remove_bin_attributes(dev, class->dev_bin_attrs); 483 err_remove_class_attrs: 484 if (class) 485 device_remove_attributes(dev, class->dev_attrs); 486 487 return error; 488 } 489 490 static void device_remove_attrs(struct device *dev) 491 { 492 struct class *class = dev->class; 493 const struct device_type *type = dev->type; 494 495 device_remove_groups(dev, dev->groups); 496 497 if (type) 498 device_remove_groups(dev, type->groups); 499 500 if (class) { 501 device_remove_attributes(dev, class->dev_attrs); 502 device_remove_bin_attributes(dev, class->dev_bin_attrs); 503 } 504 } 505 506 507 static ssize_t show_dev(struct device *dev, struct device_attribute *attr, 508 char *buf) 509 { 510 return print_dev_t(buf, dev->devt); 511 } 512 513 static struct device_attribute devt_attr = 514 __ATTR(dev, S_IRUGO, show_dev, NULL); 515 516 /* /sys/devices/ */ 517 struct kset *devices_kset; 518 519 /** 520 * device_create_file - create sysfs attribute file for device. 521 * @dev: device. 522 * @attr: device attribute descriptor. 523 */ 524 int device_create_file(struct device *dev, 525 const struct device_attribute *attr) 526 { 527 int error = 0; 528 if (dev) 529 error = sysfs_create_file(&dev->kobj, &attr->attr); 530 return error; 531 } 532 533 /** 534 * device_remove_file - remove sysfs attribute file. 535 * @dev: device. 536 * @attr: device attribute descriptor. 537 */ 538 void device_remove_file(struct device *dev, 539 const struct device_attribute *attr) 540 { 541 if (dev) 542 sysfs_remove_file(&dev->kobj, &attr->attr); 543 } 544 545 /** 546 * device_create_bin_file - create sysfs binary attribute file for device. 547 * @dev: device. 548 * @attr: device binary attribute descriptor. 549 */ 550 int device_create_bin_file(struct device *dev, 551 const struct bin_attribute *attr) 552 { 553 int error = -EINVAL; 554 if (dev) 555 error = sysfs_create_bin_file(&dev->kobj, attr); 556 return error; 557 } 558 EXPORT_SYMBOL_GPL(device_create_bin_file); 559 560 /** 561 * device_remove_bin_file - remove sysfs binary attribute file 562 * @dev: device. 563 * @attr: device binary attribute descriptor. 564 */ 565 void device_remove_bin_file(struct device *dev, 566 const struct bin_attribute *attr) 567 { 568 if (dev) 569 sysfs_remove_bin_file(&dev->kobj, attr); 570 } 571 EXPORT_SYMBOL_GPL(device_remove_bin_file); 572 573 /** 574 * device_schedule_callback_owner - helper to schedule a callback for a device 575 * @dev: device. 576 * @func: callback function to invoke later. 577 * @owner: module owning the callback routine 578 * 579 * Attribute methods must not unregister themselves or their parent device 580 * (which would amount to the same thing). Attempts to do so will deadlock, 581 * since unregistration is mutually exclusive with driver callbacks. 582 * 583 * Instead methods can call this routine, which will attempt to allocate 584 * and schedule a workqueue request to call back @func with @dev as its 585 * argument in the workqueue's process context. @dev will be pinned until 586 * @func returns. 587 * 588 * This routine is usually called via the inline device_schedule_callback(), 589 * which automatically sets @owner to THIS_MODULE. 590 * 591 * Returns 0 if the request was submitted, -ENOMEM if storage could not 592 * be allocated, -ENODEV if a reference to @owner isn't available. 593 * 594 * NOTE: This routine won't work if CONFIG_SYSFS isn't set! It uses an 595 * underlying sysfs routine (since it is intended for use by attribute 596 * methods), and if sysfs isn't available you'll get nothing but -ENOSYS. 597 */ 598 int device_schedule_callback_owner(struct device *dev, 599 void (*func)(struct device *), struct module *owner) 600 { 601 return sysfs_schedule_callback(&dev->kobj, 602 (void (*)(void *)) func, dev, owner); 603 } 604 EXPORT_SYMBOL_GPL(device_schedule_callback_owner); 605 606 static void klist_children_get(struct klist_node *n) 607 { 608 struct device_private *p = to_device_private_parent(n); 609 struct device *dev = p->device; 610 611 get_device(dev); 612 } 613 614 static void klist_children_put(struct klist_node *n) 615 { 616 struct device_private *p = to_device_private_parent(n); 617 struct device *dev = p->device; 618 619 put_device(dev); 620 } 621 622 /** 623 * device_initialize - init device structure. 624 * @dev: device. 625 * 626 * This prepares the device for use by other layers by initializing 627 * its fields. 628 * It is the first half of device_register(), if called by 629 * that function, though it can also be called separately, so one 630 * may use @dev's fields. In particular, get_device()/put_device() 631 * may be used for reference counting of @dev after calling this 632 * function. 633 * 634 * NOTE: Use put_device() to give up your reference instead of freeing 635 * @dev directly once you have called this function. 636 */ 637 void device_initialize(struct device *dev) 638 { 639 dev->kobj.kset = devices_kset; 640 kobject_init(&dev->kobj, &device_ktype); 641 INIT_LIST_HEAD(&dev->dma_pools); 642 mutex_init(&dev->mutex); 643 lockdep_set_novalidate_class(&dev->mutex); 644 spin_lock_init(&dev->devres_lock); 645 INIT_LIST_HEAD(&dev->devres_head); 646 device_pm_init(dev); 647 set_dev_node(dev, -1); 648 } 649 650 static struct kobject *virtual_device_parent(struct device *dev) 651 { 652 static struct kobject *virtual_dir = NULL; 653 654 if (!virtual_dir) 655 virtual_dir = kobject_create_and_add("virtual", 656 &devices_kset->kobj); 657 658 return virtual_dir; 659 } 660 661 struct class_dir { 662 struct kobject kobj; 663 struct class *class; 664 }; 665 666 #define to_class_dir(obj) container_of(obj, struct class_dir, kobj) 667 668 static void class_dir_release(struct kobject *kobj) 669 { 670 struct class_dir *dir = to_class_dir(kobj); 671 kfree(dir); 672 } 673 674 static const 675 struct kobj_ns_type_operations *class_dir_child_ns_type(struct kobject *kobj) 676 { 677 struct class_dir *dir = to_class_dir(kobj); 678 return dir->class->ns_type; 679 } 680 681 static struct kobj_type class_dir_ktype = { 682 .release = class_dir_release, 683 .sysfs_ops = &kobj_sysfs_ops, 684 .child_ns_type = class_dir_child_ns_type 685 }; 686 687 static struct kobject * 688 class_dir_create_and_add(struct class *class, struct kobject *parent_kobj) 689 { 690 struct class_dir *dir; 691 int retval; 692 693 dir = kzalloc(sizeof(*dir), GFP_KERNEL); 694 if (!dir) 695 return NULL; 696 697 dir->class = class; 698 kobject_init(&dir->kobj, &class_dir_ktype); 699 700 dir->kobj.kset = &class->p->glue_dirs; 701 702 retval = kobject_add(&dir->kobj, parent_kobj, "%s", class->name); 703 if (retval < 0) { 704 kobject_put(&dir->kobj); 705 return NULL; 706 } 707 return &dir->kobj; 708 } 709 710 711 static struct kobject *get_device_parent(struct device *dev, 712 struct device *parent) 713 { 714 if (dev->class) { 715 static DEFINE_MUTEX(gdp_mutex); 716 struct kobject *kobj = NULL; 717 struct kobject *parent_kobj; 718 struct kobject *k; 719 720 #ifdef CONFIG_BLOCK 721 /* block disks show up in /sys/block */ 722 if (sysfs_deprecated && dev->class == &block_class) { 723 if (parent && parent->class == &block_class) 724 return &parent->kobj; 725 return &block_class.p->subsys.kobj; 726 } 727 #endif 728 729 /* 730 * If we have no parent, we live in "virtual". 731 * Class-devices with a non class-device as parent, live 732 * in a "glue" directory to prevent namespace collisions. 733 */ 734 if (parent == NULL) 735 parent_kobj = virtual_device_parent(dev); 736 else if (parent->class && !dev->class->ns_type) 737 return &parent->kobj; 738 else 739 parent_kobj = &parent->kobj; 740 741 mutex_lock(&gdp_mutex); 742 743 /* find our class-directory at the parent and reference it */ 744 spin_lock(&dev->class->p->glue_dirs.list_lock); 745 list_for_each_entry(k, &dev->class->p->glue_dirs.list, entry) 746 if (k->parent == parent_kobj) { 747 kobj = kobject_get(k); 748 break; 749 } 750 spin_unlock(&dev->class->p->glue_dirs.list_lock); 751 if (kobj) { 752 mutex_unlock(&gdp_mutex); 753 return kobj; 754 } 755 756 /* or create a new class-directory at the parent device */ 757 k = class_dir_create_and_add(dev->class, parent_kobj); 758 /* do not emit an uevent for this simple "glue" directory */ 759 mutex_unlock(&gdp_mutex); 760 return k; 761 } 762 763 /* subsystems can specify a default root directory for their devices */ 764 if (!parent && dev->bus && dev->bus->dev_root) 765 return &dev->bus->dev_root->kobj; 766 767 if (parent) 768 return &parent->kobj; 769 return NULL; 770 } 771 772 static void cleanup_glue_dir(struct device *dev, struct kobject *glue_dir) 773 { 774 /* see if we live in a "glue" directory */ 775 if (!glue_dir || !dev->class || 776 glue_dir->kset != &dev->class->p->glue_dirs) 777 return; 778 779 kobject_put(glue_dir); 780 } 781 782 static void cleanup_device_parent(struct device *dev) 783 { 784 cleanup_glue_dir(dev, dev->kobj.parent); 785 } 786 787 static int device_add_class_symlinks(struct device *dev) 788 { 789 int error; 790 791 if (!dev->class) 792 return 0; 793 794 error = sysfs_create_link(&dev->kobj, 795 &dev->class->p->subsys.kobj, 796 "subsystem"); 797 if (error) 798 goto out; 799 800 if (dev->parent && device_is_not_partition(dev)) { 801 error = sysfs_create_link(&dev->kobj, &dev->parent->kobj, 802 "device"); 803 if (error) 804 goto out_subsys; 805 } 806 807 #ifdef CONFIG_BLOCK 808 /* /sys/block has directories and does not need symlinks */ 809 if (sysfs_deprecated && dev->class == &block_class) 810 return 0; 811 #endif 812 813 /* link in the class directory pointing to the device */ 814 error = sysfs_create_link(&dev->class->p->subsys.kobj, 815 &dev->kobj, dev_name(dev)); 816 if (error) 817 goto out_device; 818 819 return 0; 820 821 out_device: 822 sysfs_remove_link(&dev->kobj, "device"); 823 824 out_subsys: 825 sysfs_remove_link(&dev->kobj, "subsystem"); 826 out: 827 return error; 828 } 829 830 static void device_remove_class_symlinks(struct device *dev) 831 { 832 if (!dev->class) 833 return; 834 835 if (dev->parent && device_is_not_partition(dev)) 836 sysfs_remove_link(&dev->kobj, "device"); 837 sysfs_remove_link(&dev->kobj, "subsystem"); 838 #ifdef CONFIG_BLOCK 839 if (sysfs_deprecated && dev->class == &block_class) 840 return; 841 #endif 842 sysfs_delete_link(&dev->class->p->subsys.kobj, &dev->kobj, dev_name(dev)); 843 } 844 845 /** 846 * dev_set_name - set a device name 847 * @dev: device 848 * @fmt: format string for the device's name 849 */ 850 int dev_set_name(struct device *dev, const char *fmt, ...) 851 { 852 va_list vargs; 853 int err; 854 855 va_start(vargs, fmt); 856 err = kobject_set_name_vargs(&dev->kobj, fmt, vargs); 857 va_end(vargs); 858 return err; 859 } 860 EXPORT_SYMBOL_GPL(dev_set_name); 861 862 /** 863 * device_to_dev_kobj - select a /sys/dev/ directory for the device 864 * @dev: device 865 * 866 * By default we select char/ for new entries. Setting class->dev_obj 867 * to NULL prevents an entry from being created. class->dev_kobj must 868 * be set (or cleared) before any devices are registered to the class 869 * otherwise device_create_sys_dev_entry() and 870 * device_remove_sys_dev_entry() will disagree about the the presence 871 * of the link. 872 */ 873 static struct kobject *device_to_dev_kobj(struct device *dev) 874 { 875 struct kobject *kobj; 876 877 if (dev->class) 878 kobj = dev->class->dev_kobj; 879 else 880 kobj = sysfs_dev_char_kobj; 881 882 return kobj; 883 } 884 885 static int device_create_sys_dev_entry(struct device *dev) 886 { 887 struct kobject *kobj = device_to_dev_kobj(dev); 888 int error = 0; 889 char devt_str[15]; 890 891 if (kobj) { 892 format_dev_t(devt_str, dev->devt); 893 error = sysfs_create_link(kobj, &dev->kobj, devt_str); 894 } 895 896 return error; 897 } 898 899 static void device_remove_sys_dev_entry(struct device *dev) 900 { 901 struct kobject *kobj = device_to_dev_kobj(dev); 902 char devt_str[15]; 903 904 if (kobj) { 905 format_dev_t(devt_str, dev->devt); 906 sysfs_remove_link(kobj, devt_str); 907 } 908 } 909 910 int device_private_init(struct device *dev) 911 { 912 dev->p = kzalloc(sizeof(*dev->p), GFP_KERNEL); 913 if (!dev->p) 914 return -ENOMEM; 915 dev->p->device = dev; 916 klist_init(&dev->p->klist_children, klist_children_get, 917 klist_children_put); 918 return 0; 919 } 920 921 /** 922 * device_add - add device to device hierarchy. 923 * @dev: device. 924 * 925 * This is part 2 of device_register(), though may be called 926 * separately _iff_ device_initialize() has been called separately. 927 * 928 * This adds @dev to the kobject hierarchy via kobject_add(), adds it 929 * to the global and sibling lists for the device, then 930 * adds it to the other relevant subsystems of the driver model. 931 * 932 * NOTE: _Never_ directly free @dev after calling this function, even 933 * if it returned an error! Always use put_device() to give up your 934 * reference instead. 935 */ 936 int device_add(struct device *dev) 937 { 938 struct device *parent = NULL; 939 struct kobject *kobj; 940 struct class_interface *class_intf; 941 int error = -EINVAL; 942 943 dev = get_device(dev); 944 if (!dev) 945 goto done; 946 947 if (!dev->p) { 948 error = device_private_init(dev); 949 if (error) 950 goto done; 951 } 952 953 /* 954 * for statically allocated devices, which should all be converted 955 * some day, we need to initialize the name. We prevent reading back 956 * the name, and force the use of dev_name() 957 */ 958 if (dev->init_name) { 959 dev_set_name(dev, "%s", dev->init_name); 960 dev->init_name = NULL; 961 } 962 963 /* subsystems can specify simple device enumeration */ 964 if (!dev_name(dev) && dev->bus && dev->bus->dev_name) 965 dev_set_name(dev, "%s%u", dev->bus->dev_name, dev->id); 966 967 if (!dev_name(dev)) { 968 error = -EINVAL; 969 goto name_error; 970 } 971 972 pr_debug("device: '%s': %s\n", dev_name(dev), __func__); 973 974 parent = get_device(dev->parent); 975 kobj = get_device_parent(dev, parent); 976 if (kobj) 977 dev->kobj.parent = kobj; 978 979 /* use parent numa_node */ 980 if (parent) 981 set_dev_node(dev, dev_to_node(parent)); 982 983 /* first, register with generic layer. */ 984 /* we require the name to be set before, and pass NULL */ 985 error = kobject_add(&dev->kobj, dev->kobj.parent, NULL); 986 if (error) 987 goto Error; 988 989 /* notify platform of device entry */ 990 if (platform_notify) 991 platform_notify(dev); 992 993 error = device_create_file(dev, &uevent_attr); 994 if (error) 995 goto attrError; 996 997 if (MAJOR(dev->devt)) { 998 error = device_create_file(dev, &devt_attr); 999 if (error) 1000 goto ueventattrError; 1001 1002 error = device_create_sys_dev_entry(dev); 1003 if (error) 1004 goto devtattrError; 1005 1006 devtmpfs_create_node(dev); 1007 } 1008 1009 error = device_add_class_symlinks(dev); 1010 if (error) 1011 goto SymlinkError; 1012 error = device_add_attrs(dev); 1013 if (error) 1014 goto AttrsError; 1015 error = bus_add_device(dev); 1016 if (error) 1017 goto BusError; 1018 error = dpm_sysfs_add(dev); 1019 if (error) 1020 goto DPMError; 1021 device_pm_add(dev); 1022 1023 /* Notify clients of device addition. This call must come 1024 * after dpm_sysf_add() and before kobject_uevent(). 1025 */ 1026 if (dev->bus) 1027 blocking_notifier_call_chain(&dev->bus->p->bus_notifier, 1028 BUS_NOTIFY_ADD_DEVICE, dev); 1029 1030 kobject_uevent(&dev->kobj, KOBJ_ADD); 1031 bus_probe_device(dev); 1032 if (parent) 1033 klist_add_tail(&dev->p->knode_parent, 1034 &parent->p->klist_children); 1035 1036 if (dev->class) { 1037 mutex_lock(&dev->class->p->mutex); 1038 /* tie the class to the device */ 1039 klist_add_tail(&dev->knode_class, 1040 &dev->class->p->klist_devices); 1041 1042 /* notify any interfaces that the device is here */ 1043 list_for_each_entry(class_intf, 1044 &dev->class->p->interfaces, node) 1045 if (class_intf->add_dev) 1046 class_intf->add_dev(dev, class_intf); 1047 mutex_unlock(&dev->class->p->mutex); 1048 } 1049 done: 1050 put_device(dev); 1051 return error; 1052 DPMError: 1053 bus_remove_device(dev); 1054 BusError: 1055 device_remove_attrs(dev); 1056 AttrsError: 1057 device_remove_class_symlinks(dev); 1058 SymlinkError: 1059 if (MAJOR(dev->devt)) 1060 devtmpfs_delete_node(dev); 1061 if (MAJOR(dev->devt)) 1062 device_remove_sys_dev_entry(dev); 1063 devtattrError: 1064 if (MAJOR(dev->devt)) 1065 device_remove_file(dev, &devt_attr); 1066 ueventattrError: 1067 device_remove_file(dev, &uevent_attr); 1068 attrError: 1069 kobject_uevent(&dev->kobj, KOBJ_REMOVE); 1070 kobject_del(&dev->kobj); 1071 Error: 1072 cleanup_device_parent(dev); 1073 if (parent) 1074 put_device(parent); 1075 name_error: 1076 kfree(dev->p); 1077 dev->p = NULL; 1078 goto done; 1079 } 1080 1081 /** 1082 * device_register - register a device with the system. 1083 * @dev: pointer to the device structure 1084 * 1085 * This happens in two clean steps - initialize the device 1086 * and add it to the system. The two steps can be called 1087 * separately, but this is the easiest and most common. 1088 * I.e. you should only call the two helpers separately if 1089 * have a clearly defined need to use and refcount the device 1090 * before it is added to the hierarchy. 1091 * 1092 * NOTE: _Never_ directly free @dev after calling this function, even 1093 * if it returned an error! Always use put_device() to give up the 1094 * reference initialized in this function instead. 1095 */ 1096 int device_register(struct device *dev) 1097 { 1098 device_initialize(dev); 1099 return device_add(dev); 1100 } 1101 1102 /** 1103 * get_device - increment reference count for device. 1104 * @dev: device. 1105 * 1106 * This simply forwards the call to kobject_get(), though 1107 * we do take care to provide for the case that we get a NULL 1108 * pointer passed in. 1109 */ 1110 struct device *get_device(struct device *dev) 1111 { 1112 return dev ? to_dev(kobject_get(&dev->kobj)) : NULL; 1113 } 1114 1115 /** 1116 * put_device - decrement reference count. 1117 * @dev: device in question. 1118 */ 1119 void put_device(struct device *dev) 1120 { 1121 /* might_sleep(); */ 1122 if (dev) 1123 kobject_put(&dev->kobj); 1124 } 1125 1126 /** 1127 * device_del - delete device from system. 1128 * @dev: device. 1129 * 1130 * This is the first part of the device unregistration 1131 * sequence. This removes the device from the lists we control 1132 * from here, has it removed from the other driver model 1133 * subsystems it was added to in device_add(), and removes it 1134 * from the kobject hierarchy. 1135 * 1136 * NOTE: this should be called manually _iff_ device_add() was 1137 * also called manually. 1138 */ 1139 void device_del(struct device *dev) 1140 { 1141 struct device *parent = dev->parent; 1142 struct class_interface *class_intf; 1143 1144 /* Notify clients of device removal. This call must come 1145 * before dpm_sysfs_remove(). 1146 */ 1147 if (dev->bus) 1148 blocking_notifier_call_chain(&dev->bus->p->bus_notifier, 1149 BUS_NOTIFY_DEL_DEVICE, dev); 1150 device_pm_remove(dev); 1151 dpm_sysfs_remove(dev); 1152 if (parent) 1153 klist_del(&dev->p->knode_parent); 1154 if (MAJOR(dev->devt)) { 1155 devtmpfs_delete_node(dev); 1156 device_remove_sys_dev_entry(dev); 1157 device_remove_file(dev, &devt_attr); 1158 } 1159 if (dev->class) { 1160 device_remove_class_symlinks(dev); 1161 1162 mutex_lock(&dev->class->p->mutex); 1163 /* notify any interfaces that the device is now gone */ 1164 list_for_each_entry(class_intf, 1165 &dev->class->p->interfaces, node) 1166 if (class_intf->remove_dev) 1167 class_intf->remove_dev(dev, class_intf); 1168 /* remove the device from the class list */ 1169 klist_del(&dev->knode_class); 1170 mutex_unlock(&dev->class->p->mutex); 1171 } 1172 device_remove_file(dev, &uevent_attr); 1173 device_remove_attrs(dev); 1174 bus_remove_device(dev); 1175 1176 /* 1177 * Some platform devices are driven without driver attached 1178 * and managed resources may have been acquired. Make sure 1179 * all resources are released. 1180 */ 1181 devres_release_all(dev); 1182 1183 /* Notify the platform of the removal, in case they 1184 * need to do anything... 1185 */ 1186 if (platform_notify_remove) 1187 platform_notify_remove(dev); 1188 kobject_uevent(&dev->kobj, KOBJ_REMOVE); 1189 cleanup_device_parent(dev); 1190 kobject_del(&dev->kobj); 1191 put_device(parent); 1192 } 1193 1194 /** 1195 * device_unregister - unregister device from system. 1196 * @dev: device going away. 1197 * 1198 * We do this in two parts, like we do device_register(). First, 1199 * we remove it from all the subsystems with device_del(), then 1200 * we decrement the reference count via put_device(). If that 1201 * is the final reference count, the device will be cleaned up 1202 * via device_release() above. Otherwise, the structure will 1203 * stick around until the final reference to the device is dropped. 1204 */ 1205 void device_unregister(struct device *dev) 1206 { 1207 pr_debug("device: '%s': %s\n", dev_name(dev), __func__); 1208 device_del(dev); 1209 put_device(dev); 1210 } 1211 1212 static struct device *next_device(struct klist_iter *i) 1213 { 1214 struct klist_node *n = klist_next(i); 1215 struct device *dev = NULL; 1216 struct device_private *p; 1217 1218 if (n) { 1219 p = to_device_private_parent(n); 1220 dev = p->device; 1221 } 1222 return dev; 1223 } 1224 1225 /** 1226 * device_get_devnode - path of device node file 1227 * @dev: device 1228 * @mode: returned file access mode 1229 * @tmp: possibly allocated string 1230 * 1231 * Return the relative path of a possible device node. 1232 * Non-default names may need to allocate a memory to compose 1233 * a name. This memory is returned in tmp and needs to be 1234 * freed by the caller. 1235 */ 1236 const char *device_get_devnode(struct device *dev, 1237 mode_t *mode, const char **tmp) 1238 { 1239 char *s; 1240 1241 *tmp = NULL; 1242 1243 /* the device type may provide a specific name */ 1244 if (dev->type && dev->type->devnode) 1245 *tmp = dev->type->devnode(dev, mode); 1246 if (*tmp) 1247 return *tmp; 1248 1249 /* the class may provide a specific name */ 1250 if (dev->class && dev->class->devnode) 1251 *tmp = dev->class->devnode(dev, mode); 1252 if (*tmp) 1253 return *tmp; 1254 1255 /* return name without allocation, tmp == NULL */ 1256 if (strchr(dev_name(dev), '!') == NULL) 1257 return dev_name(dev); 1258 1259 /* replace '!' in the name with '/' */ 1260 *tmp = kstrdup(dev_name(dev), GFP_KERNEL); 1261 if (!*tmp) 1262 return NULL; 1263 while ((s = strchr(*tmp, '!'))) 1264 s[0] = '/'; 1265 return *tmp; 1266 } 1267 1268 /** 1269 * device_for_each_child - device child iterator. 1270 * @parent: parent struct device. 1271 * @data: data for the callback. 1272 * @fn: function to be called for each device. 1273 * 1274 * Iterate over @parent's child devices, and call @fn for each, 1275 * passing it @data. 1276 * 1277 * We check the return of @fn each time. If it returns anything 1278 * other than 0, we break out and return that value. 1279 */ 1280 int device_for_each_child(struct device *parent, void *data, 1281 int (*fn)(struct device *dev, void *data)) 1282 { 1283 struct klist_iter i; 1284 struct device *child; 1285 int error = 0; 1286 1287 if (!parent->p) 1288 return 0; 1289 1290 klist_iter_init(&parent->p->klist_children, &i); 1291 while ((child = next_device(&i)) && !error) 1292 error = fn(child, data); 1293 klist_iter_exit(&i); 1294 return error; 1295 } 1296 1297 /** 1298 * device_find_child - device iterator for locating a particular device. 1299 * @parent: parent struct device 1300 * @data: Data to pass to match function 1301 * @match: Callback function to check device 1302 * 1303 * This is similar to the device_for_each_child() function above, but it 1304 * returns a reference to a device that is 'found' for later use, as 1305 * determined by the @match callback. 1306 * 1307 * The callback should return 0 if the device doesn't match and non-zero 1308 * if it does. If the callback returns non-zero and a reference to the 1309 * current device can be obtained, this function will return to the caller 1310 * and not iterate over any more devices. 1311 */ 1312 struct device *device_find_child(struct device *parent, void *data, 1313 int (*match)(struct device *dev, void *data)) 1314 { 1315 struct klist_iter i; 1316 struct device *child; 1317 1318 if (!parent) 1319 return NULL; 1320 1321 klist_iter_init(&parent->p->klist_children, &i); 1322 while ((child = next_device(&i))) 1323 if (match(child, data) && get_device(child)) 1324 break; 1325 klist_iter_exit(&i); 1326 return child; 1327 } 1328 1329 int __init devices_init(void) 1330 { 1331 devices_kset = kset_create_and_add("devices", &device_uevent_ops, NULL); 1332 if (!devices_kset) 1333 return -ENOMEM; 1334 dev_kobj = kobject_create_and_add("dev", NULL); 1335 if (!dev_kobj) 1336 goto dev_kobj_err; 1337 sysfs_dev_block_kobj = kobject_create_and_add("block", dev_kobj); 1338 if (!sysfs_dev_block_kobj) 1339 goto block_kobj_err; 1340 sysfs_dev_char_kobj = kobject_create_and_add("char", dev_kobj); 1341 if (!sysfs_dev_char_kobj) 1342 goto char_kobj_err; 1343 1344 return 0; 1345 1346 char_kobj_err: 1347 kobject_put(sysfs_dev_block_kobj); 1348 block_kobj_err: 1349 kobject_put(dev_kobj); 1350 dev_kobj_err: 1351 kset_unregister(devices_kset); 1352 return -ENOMEM; 1353 } 1354 1355 EXPORT_SYMBOL_GPL(device_for_each_child); 1356 EXPORT_SYMBOL_GPL(device_find_child); 1357 1358 EXPORT_SYMBOL_GPL(device_initialize); 1359 EXPORT_SYMBOL_GPL(device_add); 1360 EXPORT_SYMBOL_GPL(device_register); 1361 1362 EXPORT_SYMBOL_GPL(device_del); 1363 EXPORT_SYMBOL_GPL(device_unregister); 1364 EXPORT_SYMBOL_GPL(get_device); 1365 EXPORT_SYMBOL_GPL(put_device); 1366 1367 EXPORT_SYMBOL_GPL(device_create_file); 1368 EXPORT_SYMBOL_GPL(device_remove_file); 1369 1370 struct root_device { 1371 struct device dev; 1372 struct module *owner; 1373 }; 1374 1375 inline struct root_device *to_root_device(struct device *d) 1376 { 1377 return container_of(d, struct root_device, dev); 1378 } 1379 1380 static void root_device_release(struct device *dev) 1381 { 1382 kfree(to_root_device(dev)); 1383 } 1384 1385 /** 1386 * __root_device_register - allocate and register a root device 1387 * @name: root device name 1388 * @owner: owner module of the root device, usually THIS_MODULE 1389 * 1390 * This function allocates a root device and registers it 1391 * using device_register(). In order to free the returned 1392 * device, use root_device_unregister(). 1393 * 1394 * Root devices are dummy devices which allow other devices 1395 * to be grouped under /sys/devices. Use this function to 1396 * allocate a root device and then use it as the parent of 1397 * any device which should appear under /sys/devices/{name} 1398 * 1399 * The /sys/devices/{name} directory will also contain a 1400 * 'module' symlink which points to the @owner directory 1401 * in sysfs. 1402 * 1403 * Returns &struct device pointer on success, or ERR_PTR() on error. 1404 * 1405 * Note: You probably want to use root_device_register(). 1406 */ 1407 struct device *__root_device_register(const char *name, struct module *owner) 1408 { 1409 struct root_device *root; 1410 int err = -ENOMEM; 1411 1412 root = kzalloc(sizeof(struct root_device), GFP_KERNEL); 1413 if (!root) 1414 return ERR_PTR(err); 1415 1416 err = dev_set_name(&root->dev, "%s", name); 1417 if (err) { 1418 kfree(root); 1419 return ERR_PTR(err); 1420 } 1421 1422 root->dev.release = root_device_release; 1423 1424 err = device_register(&root->dev); 1425 if (err) { 1426 put_device(&root->dev); 1427 return ERR_PTR(err); 1428 } 1429 1430 #ifdef CONFIG_MODULES /* gotta find a "cleaner" way to do this */ 1431 if (owner) { 1432 struct module_kobject *mk = &owner->mkobj; 1433 1434 err = sysfs_create_link(&root->dev.kobj, &mk->kobj, "module"); 1435 if (err) { 1436 device_unregister(&root->dev); 1437 return ERR_PTR(err); 1438 } 1439 root->owner = owner; 1440 } 1441 #endif 1442 1443 return &root->dev; 1444 } 1445 EXPORT_SYMBOL_GPL(__root_device_register); 1446 1447 /** 1448 * root_device_unregister - unregister and free a root device 1449 * @dev: device going away 1450 * 1451 * This function unregisters and cleans up a device that was created by 1452 * root_device_register(). 1453 */ 1454 void root_device_unregister(struct device *dev) 1455 { 1456 struct root_device *root = to_root_device(dev); 1457 1458 if (root->owner) 1459 sysfs_remove_link(&root->dev.kobj, "module"); 1460 1461 device_unregister(dev); 1462 } 1463 EXPORT_SYMBOL_GPL(root_device_unregister); 1464 1465 1466 static void device_create_release(struct device *dev) 1467 { 1468 pr_debug("device: '%s': %s\n", dev_name(dev), __func__); 1469 kfree(dev); 1470 } 1471 1472 /** 1473 * device_create_vargs - creates a device and registers it with sysfs 1474 * @class: pointer to the struct class that this device should be registered to 1475 * @parent: pointer to the parent struct device of this new device, if any 1476 * @devt: the dev_t for the char device to be added 1477 * @drvdata: the data to be added to the device for callbacks 1478 * @fmt: string for the device's name 1479 * @args: va_list for the device's name 1480 * 1481 * This function can be used by char device classes. A struct device 1482 * will be created in sysfs, registered to the specified class. 1483 * 1484 * A "dev" file will be created, showing the dev_t for the device, if 1485 * the dev_t is not 0,0. 1486 * If a pointer to a parent struct device is passed in, the newly created 1487 * struct device will be a child of that device in sysfs. 1488 * The pointer to the struct device will be returned from the call. 1489 * Any further sysfs files that might be required can be created using this 1490 * pointer. 1491 * 1492 * Returns &struct device pointer on success, or ERR_PTR() on error. 1493 * 1494 * Note: the struct class passed to this function must have previously 1495 * been created with a call to class_create(). 1496 */ 1497 struct device *device_create_vargs(struct class *class, struct device *parent, 1498 dev_t devt, void *drvdata, const char *fmt, 1499 va_list args) 1500 { 1501 struct device *dev = NULL; 1502 int retval = -ENODEV; 1503 1504 if (class == NULL || IS_ERR(class)) 1505 goto error; 1506 1507 dev = kzalloc(sizeof(*dev), GFP_KERNEL); 1508 if (!dev) { 1509 retval = -ENOMEM; 1510 goto error; 1511 } 1512 1513 dev->devt = devt; 1514 dev->class = class; 1515 dev->parent = parent; 1516 dev->release = device_create_release; 1517 dev_set_drvdata(dev, drvdata); 1518 1519 retval = kobject_set_name_vargs(&dev->kobj, fmt, args); 1520 if (retval) 1521 goto error; 1522 1523 retval = device_register(dev); 1524 if (retval) 1525 goto error; 1526 1527 return dev; 1528 1529 error: 1530 put_device(dev); 1531 return ERR_PTR(retval); 1532 } 1533 EXPORT_SYMBOL_GPL(device_create_vargs); 1534 1535 /** 1536 * device_create - creates a device and registers it with sysfs 1537 * @class: pointer to the struct class that this device should be registered to 1538 * @parent: pointer to the parent struct device of this new device, if any 1539 * @devt: the dev_t for the char device to be added 1540 * @drvdata: the data to be added to the device for callbacks 1541 * @fmt: string for the device's name 1542 * 1543 * This function can be used by char device classes. A struct device 1544 * will be created in sysfs, registered to the specified class. 1545 * 1546 * A "dev" file will be created, showing the dev_t for the device, if 1547 * the dev_t is not 0,0. 1548 * If a pointer to a parent struct device is passed in, the newly created 1549 * struct device will be a child of that device in sysfs. 1550 * The pointer to the struct device will be returned from the call. 1551 * Any further sysfs files that might be required can be created using this 1552 * pointer. 1553 * 1554 * Returns &struct device pointer on success, or ERR_PTR() on error. 1555 * 1556 * Note: the struct class passed to this function must have previously 1557 * been created with a call to class_create(). 1558 */ 1559 struct device *device_create(struct class *class, struct device *parent, 1560 dev_t devt, void *drvdata, const char *fmt, ...) 1561 { 1562 va_list vargs; 1563 struct device *dev; 1564 1565 va_start(vargs, fmt); 1566 dev = device_create_vargs(class, parent, devt, drvdata, fmt, vargs); 1567 va_end(vargs); 1568 return dev; 1569 } 1570 EXPORT_SYMBOL_GPL(device_create); 1571 1572 static int __match_devt(struct device *dev, void *data) 1573 { 1574 dev_t *devt = data; 1575 1576 return dev->devt == *devt; 1577 } 1578 1579 /** 1580 * device_destroy - removes a device that was created with device_create() 1581 * @class: pointer to the struct class that this device was registered with 1582 * @devt: the dev_t of the device that was previously registered 1583 * 1584 * This call unregisters and cleans up a device that was created with a 1585 * call to device_create(). 1586 */ 1587 void device_destroy(struct class *class, dev_t devt) 1588 { 1589 struct device *dev; 1590 1591 dev = class_find_device(class, NULL, &devt, __match_devt); 1592 if (dev) { 1593 put_device(dev); 1594 device_unregister(dev); 1595 } 1596 } 1597 EXPORT_SYMBOL_GPL(device_destroy); 1598 1599 /** 1600 * device_rename - renames a device 1601 * @dev: the pointer to the struct device to be renamed 1602 * @new_name: the new name of the device 1603 * 1604 * It is the responsibility of the caller to provide mutual 1605 * exclusion between two different calls of device_rename 1606 * on the same device to ensure that new_name is valid and 1607 * won't conflict with other devices. 1608 * 1609 * Note: Don't call this function. Currently, the networking layer calls this 1610 * function, but that will change. The following text from Kay Sievers offers 1611 * some insight: 1612 * 1613 * Renaming devices is racy at many levels, symlinks and other stuff are not 1614 * replaced atomically, and you get a "move" uevent, but it's not easy to 1615 * connect the event to the old and new device. Device nodes are not renamed at 1616 * all, there isn't even support for that in the kernel now. 1617 * 1618 * In the meantime, during renaming, your target name might be taken by another 1619 * driver, creating conflicts. Or the old name is taken directly after you 1620 * renamed it -- then you get events for the same DEVPATH, before you even see 1621 * the "move" event. It's just a mess, and nothing new should ever rely on 1622 * kernel device renaming. Besides that, it's not even implemented now for 1623 * other things than (driver-core wise very simple) network devices. 1624 * 1625 * We are currently about to change network renaming in udev to completely 1626 * disallow renaming of devices in the same namespace as the kernel uses, 1627 * because we can't solve the problems properly, that arise with swapping names 1628 * of multiple interfaces without races. Means, renaming of eth[0-9]* will only 1629 * be allowed to some other name than eth[0-9]*, for the aforementioned 1630 * reasons. 1631 * 1632 * Make up a "real" name in the driver before you register anything, or add 1633 * some other attributes for userspace to find the device, or use udev to add 1634 * symlinks -- but never rename kernel devices later, it's a complete mess. We 1635 * don't even want to get into that and try to implement the missing pieces in 1636 * the core. We really have other pieces to fix in the driver core mess. :) 1637 */ 1638 int device_rename(struct device *dev, const char *new_name) 1639 { 1640 char *old_class_name = NULL; 1641 char *new_class_name = NULL; 1642 char *old_device_name = NULL; 1643 int error; 1644 1645 dev = get_device(dev); 1646 if (!dev) 1647 return -EINVAL; 1648 1649 pr_debug("device: '%s': %s: renaming to '%s'\n", dev_name(dev), 1650 __func__, new_name); 1651 1652 old_device_name = kstrdup(dev_name(dev), GFP_KERNEL); 1653 if (!old_device_name) { 1654 error = -ENOMEM; 1655 goto out; 1656 } 1657 1658 if (dev->class) { 1659 error = sysfs_rename_link(&dev->class->p->subsys.kobj, 1660 &dev->kobj, old_device_name, new_name); 1661 if (error) 1662 goto out; 1663 } 1664 1665 error = kobject_rename(&dev->kobj, new_name); 1666 if (error) 1667 goto out; 1668 1669 out: 1670 put_device(dev); 1671 1672 kfree(new_class_name); 1673 kfree(old_class_name); 1674 kfree(old_device_name); 1675 1676 return error; 1677 } 1678 EXPORT_SYMBOL_GPL(device_rename); 1679 1680 static int device_move_class_links(struct device *dev, 1681 struct device *old_parent, 1682 struct device *new_parent) 1683 { 1684 int error = 0; 1685 1686 if (old_parent) 1687 sysfs_remove_link(&dev->kobj, "device"); 1688 if (new_parent) 1689 error = sysfs_create_link(&dev->kobj, &new_parent->kobj, 1690 "device"); 1691 return error; 1692 } 1693 1694 /** 1695 * device_move - moves a device to a new parent 1696 * @dev: the pointer to the struct device to be moved 1697 * @new_parent: the new parent of the device (can by NULL) 1698 * @dpm_order: how to reorder the dpm_list 1699 */ 1700 int device_move(struct device *dev, struct device *new_parent, 1701 enum dpm_order dpm_order) 1702 { 1703 int error; 1704 struct device *old_parent; 1705 struct kobject *new_parent_kobj; 1706 1707 dev = get_device(dev); 1708 if (!dev) 1709 return -EINVAL; 1710 1711 device_pm_lock(); 1712 new_parent = get_device(new_parent); 1713 new_parent_kobj = get_device_parent(dev, new_parent); 1714 1715 pr_debug("device: '%s': %s: moving to '%s'\n", dev_name(dev), 1716 __func__, new_parent ? dev_name(new_parent) : "<NULL>"); 1717 error = kobject_move(&dev->kobj, new_parent_kobj); 1718 if (error) { 1719 cleanup_glue_dir(dev, new_parent_kobj); 1720 put_device(new_parent); 1721 goto out; 1722 } 1723 old_parent = dev->parent; 1724 dev->parent = new_parent; 1725 if (old_parent) 1726 klist_remove(&dev->p->knode_parent); 1727 if (new_parent) { 1728 klist_add_tail(&dev->p->knode_parent, 1729 &new_parent->p->klist_children); 1730 set_dev_node(dev, dev_to_node(new_parent)); 1731 } 1732 1733 if (!dev->class) 1734 goto out_put; 1735 error = device_move_class_links(dev, old_parent, new_parent); 1736 if (error) { 1737 /* We ignore errors on cleanup since we're hosed anyway... */ 1738 device_move_class_links(dev, new_parent, old_parent); 1739 if (!kobject_move(&dev->kobj, &old_parent->kobj)) { 1740 if (new_parent) 1741 klist_remove(&dev->p->knode_parent); 1742 dev->parent = old_parent; 1743 if (old_parent) { 1744 klist_add_tail(&dev->p->knode_parent, 1745 &old_parent->p->klist_children); 1746 set_dev_node(dev, dev_to_node(old_parent)); 1747 } 1748 } 1749 cleanup_glue_dir(dev, new_parent_kobj); 1750 put_device(new_parent); 1751 goto out; 1752 } 1753 switch (dpm_order) { 1754 case DPM_ORDER_NONE: 1755 break; 1756 case DPM_ORDER_DEV_AFTER_PARENT: 1757 device_pm_move_after(dev, new_parent); 1758 break; 1759 case DPM_ORDER_PARENT_BEFORE_DEV: 1760 device_pm_move_before(new_parent, dev); 1761 break; 1762 case DPM_ORDER_DEV_LAST: 1763 device_pm_move_last(dev); 1764 break; 1765 } 1766 out_put: 1767 put_device(old_parent); 1768 out: 1769 device_pm_unlock(); 1770 put_device(dev); 1771 return error; 1772 } 1773 EXPORT_SYMBOL_GPL(device_move); 1774 1775 /** 1776 * device_shutdown - call ->shutdown() on each device to shutdown. 1777 */ 1778 void device_shutdown(void) 1779 { 1780 struct device *dev; 1781 1782 spin_lock(&devices_kset->list_lock); 1783 /* 1784 * Walk the devices list backward, shutting down each in turn. 1785 * Beware that device unplug events may also start pulling 1786 * devices offline, even as the system is shutting down. 1787 */ 1788 while (!list_empty(&devices_kset->list)) { 1789 dev = list_entry(devices_kset->list.prev, struct device, 1790 kobj.entry); 1791 get_device(dev); 1792 /* 1793 * Make sure the device is off the kset list, in the 1794 * event that dev->*->shutdown() doesn't remove it. 1795 */ 1796 list_del_init(&dev->kobj.entry); 1797 spin_unlock(&devices_kset->list_lock); 1798 1799 if (dev->bus && dev->bus->shutdown) { 1800 dev_dbg(dev, "shutdown\n"); 1801 dev->bus->shutdown(dev); 1802 } else if (dev->driver && dev->driver->shutdown) { 1803 dev_dbg(dev, "shutdown\n"); 1804 dev->driver->shutdown(dev); 1805 } 1806 put_device(dev); 1807 1808 spin_lock(&devices_kset->list_lock); 1809 } 1810 spin_unlock(&devices_kset->list_lock); 1811 async_synchronize_full(); 1812 } 1813 1814 /* 1815 * Device logging functions 1816 */ 1817 1818 #ifdef CONFIG_PRINTK 1819 1820 int __dev_printk(const char *level, const struct device *dev, 1821 struct va_format *vaf) 1822 { 1823 if (!dev) 1824 return printk("%s(NULL device *): %pV", level, vaf); 1825 1826 return printk("%s%s %s: %pV", 1827 level, dev_driver_string(dev), dev_name(dev), vaf); 1828 } 1829 EXPORT_SYMBOL(__dev_printk); 1830 1831 int dev_printk(const char *level, const struct device *dev, 1832 const char *fmt, ...) 1833 { 1834 struct va_format vaf; 1835 va_list args; 1836 int r; 1837 1838 va_start(args, fmt); 1839 1840 vaf.fmt = fmt; 1841 vaf.va = &args; 1842 1843 r = __dev_printk(level, dev, &vaf); 1844 va_end(args); 1845 1846 return r; 1847 } 1848 EXPORT_SYMBOL(dev_printk); 1849 1850 #define define_dev_printk_level(func, kern_level) \ 1851 int func(const struct device *dev, const char *fmt, ...) \ 1852 { \ 1853 struct va_format vaf; \ 1854 va_list args; \ 1855 int r; \ 1856 \ 1857 va_start(args, fmt); \ 1858 \ 1859 vaf.fmt = fmt; \ 1860 vaf.va = &args; \ 1861 \ 1862 r = __dev_printk(kern_level, dev, &vaf); \ 1863 va_end(args); \ 1864 \ 1865 return r; \ 1866 } \ 1867 EXPORT_SYMBOL(func); 1868 1869 define_dev_printk_level(dev_emerg, KERN_EMERG); 1870 define_dev_printk_level(dev_alert, KERN_ALERT); 1871 define_dev_printk_level(dev_crit, KERN_CRIT); 1872 define_dev_printk_level(dev_err, KERN_ERR); 1873 define_dev_printk_level(dev_warn, KERN_WARNING); 1874 define_dev_printk_level(dev_notice, KERN_NOTICE); 1875 define_dev_printk_level(_dev_info, KERN_INFO); 1876 1877 #endif 1878