Prefacing a series of 196 patches, Greg KH noted, "due to the low level nature of these patches, and because they touch so many different parts of the kernel, a number of the subsystem maintainers have asked me to get them in first to make merging other trees easier." Linus Torvalds agreed and quickly merged the patches into his tree. Greg summarized the many changes:
"They can be broken down into these major areas: Documentation updates (language translations and fixes, as well as kobject and kset documentation updates.); major kset/kobject/ktype rework and fixes; struct bus_type has been reworked to now handle the lifetime rules properly, as the kobject is properly dynamic; struct driver has also been reworked, and now the lifetime issues are resolved; the block subsystem has been converted to use struct device now, and not 'raw' kobjects; nozomi driver is added; lots of class_device conversions to use struct device instead."
From: Greg KH Subject: [GIT PATCH] driver core patches against 2.6.24 Date: Jan 25, 12:11 am 2008 Due to the low level nature of these patches, and because they touch so many different parts of the kernel, a number of the subsystem maintainers have asked me to get them in first to make merging other trees easier. Here are a pretty large number of kobject, documentation, and driver core patches against your 2.6.24 git tree. They can be broken down into these major areas: - Documentation updates (language translations and fixes, as well as kobject and kset documenatation updates.) - major kset/kobject/ktype rework and fixes. This cleans up the kset and kobject and ktype relationship and architecture, making sense of things now, and good documenation and samples are provided for others to use. Also the attributes for kobjects are much easier to handle now. This cleaned up a LOT of code all through the kernel, making kobjects easier to use if you want to. - struct bus_type has been reworked to now handle the lifetime rules properly, as the kobject is properly dynamic. - struct driver has also been reworked, and now the lifetime issues are resolved. - the block subsystem has been converted to use struct device now, and not "raw" kobjects. This patch has been in the -mm tree for over a year now, and finally all the issues are worked out with it. Older distros now properly work with new kernels, and no userspace updates are needed at all. - nozomi driver is added. This has also been in -mm for a long time, and many people have asked for it to go in. It is now in good enough shape to do so. - lots of class_device conversions to use struct device instead. The tree is almost all cleaned up now, only SCSI and IB is the remaining code to fix up... Please pull from: master.kernel.org:/pub/scm/linux/kernel/git/gregkh/driver-2.6.git/ All of these patches have been in the -mm tree for a number of months. Patches will be sent as a follow-on to this message to lkml for people to see. thanks, greg k-h ------------ Documentation/kobject.txt | 489 +++-- Documentation/pnp.txt | 4 +- Documentation/s390/cds.txt | 2 +- Documentation/vm/slabinfo.c | 2 +- Documentation/vm/slub.txt | 2 +- Documentation/zh_CN/CodingStyle | 701 +++++++ Documentation/zh_CN/HOWTO | 10 +- Documentation/zh_CN/SubmittingDrivers | 168 ++ Documentation/zh_CN/SubmittingPatches | 416 ++++ Documentation/zh_CN/oops-tracing.txt | 212 +++ Documentation/zh_CN/sparse.txt | 100 + Documentation/zh_CN/stable_kernel_rules.txt | 66 + .../zh_CN/volatile-considered-harmful.txt | 113 ++ arch/arm/kernel/time.c | 4 +- arch/arm/mach-integrator/integrator_ap.c | 2 +- arch/arm/mach-omap1/pm.c | 23 +- arch/arm/mach-pxa/cm-x270.c | 2 +- arch/arm/mach-pxa/lpd270.c | 2 +- arch/arm/mach-pxa/lubbock.c | 2 +- arch/arm/mach-pxa/mainstone.c | 2 +- arch/arm/mach-s3c2410/s3c2410.c | 2 +- arch/arm/mach-s3c2412/s3c2412.c | 2 +- arch/arm/mach-s3c2440/mach-osiris.c | 2 +- arch/arm/mach-s3c2443/s3c2443.c | 2 +- arch/arm/mach-sa1100/irq.c | 2 +- arch/arm/oprofile/common.c | 2 +- arch/arm/plat-omap/gpio.c | 2 +- arch/arm/plat-s3c24xx/dma.c | 2 +- arch/arm/plat-s3c24xx/s3c244x.c | 4 +- arch/avr32/kernel/time.c | 2 +- arch/cris/arch-v32/drivers/iop_fw_load.c | 11 + arch/ia64/kernel/topology.c | 26 +- arch/mips/kernel/i8259.c | 2 +- arch/powerpc/platforms/cell/spu_base.c | 2 +- arch/powerpc/platforms/powermac/pic.c | 2 +- arch/powerpc/platforms/pseries/power.c | 32 +- arch/powerpc/sysdev/ipic.c | 2 +- arch/powerpc/sysdev/mpic.c | 2 +- arch/powerpc/sysdev/qe_lib/qe_ic.c | 2 +- arch/ppc/syslib/ipic.c | 2 +- arch/ppc/syslib/open_pic.c | 2 +- arch/ppc/syslib/open_pic2.c | 2 +- arch/s390/hypfs/inode.c | 13 +- arch/s390/kernel/ipl.c | 147 +- arch/s390/kernel/time.c | 2 +- arch/sh/drivers/dma/dma-sysfs.c | 2 +- arch/sh/kernel/cpu/sh4/sq.c | 13 +- arch/sh/kernel/time.c | 2 +- arch/x86/kernel/apic_32.c | 2 +- arch/x86/kernel/apic_64.c | 2 +- arch/x86/kernel/cpu/intel_cacheinfo.c | 24 +- arch/x86/kernel/cpu/mcheck/mce_64.c | 2 +- arch/x86/kernel/cpu/mcheck/mce_amd_64.c | 30 +- arch/x86/kernel/cpuid.c | 6 +- arch/x86/kernel/i8237.c | 2 +- arch/x86/kernel/i8259_32.c | 2 +- arch/x86/kernel/i8259_64.c | 2 +- arch/x86/kernel/io_apic_32.c | 2 +- arch/x86/kernel/io_apic_64.c | 2 +- arch/x86/kernel/msr.c | 6 +- arch/x86/kernel/nmi_32.c | 2 +- arch/x86/kernel/nmi_64.c | 2 +- arch/x86/oprofile/nmi_int.c | 2 +- block/elevator.c | 8 +- block/genhd.c | 419 ++--- block/ll_rw_blk.c | 11 +- drivers/acpi/bus.c | 11 +- drivers/acpi/pci_link.c | 2 +- drivers/acpi/system.c | 13 +- drivers/base/Makefile | 3 + drivers/base/attribute_container.c | 9 +- drivers/base/base.h | 64 +- drivers/base/bus.c | 501 +++--- drivers/base/class.c | 319 +++- drivers/base/core.c | 582 +++--- drivers/base/cpu.c | 2 +- drivers/base/dd.c | 164 +- drivers/base/driver.c | 216 ++- drivers/base/firmware.c | 26 +- drivers/base/hypervisor.c | 12 +- drivers/base/init.c | 10 +- drivers/base/memory.c | 2 +- drivers/base/module.c | 94 + drivers/base/node.c | 2 +- drivers/base/platform.c | 239 ++-- drivers/base/power/Makefile | 1 - drivers/base/power/main.c | 502 ++++-- drivers/base/power/power.h | 19 +- drivers/base/power/shutdown.c | 48 - drivers/base/sys.c | 49 +- drivers/block/aoe/aoeblk.c | 51 +- drivers/block/aoe/aoechr.c | 7 +- drivers/block/nbd.c | 15 +- drivers/block/paride/pg.c | 6 +- drivers/block/paride/pt.c | 12 +- drivers/block/pktcdvd.c | 27 +- drivers/char/Kconfig | 10 + drivers/char/Makefile | 1 + drivers/char/hvc_console.c | 80 +- drivers/char/hvcs.c | 78 +- drivers/char/nozomi.c | 1993 ++++++++++++++++++++ drivers/cpufreq/cpufreq.c | 12 +- drivers/cpuidle/sysfs.c | 21 +- drivers/dma/dmaengine.c | 43 +- drivers/edac/edac_device_sysfs.c | 49 +- drivers/edac/edac_mc_sysfs.c | 40 +- drivers/edac/edac_module.c | 2 +- drivers/edac/edac_pci_sysfs.c | 35 +- drivers/firmware/edd.c | 25 +- drivers/firmware/efivars.c | 130 +- drivers/i2c/chips/isp1301_omap.c | 6 - drivers/ide/ide-probe.c | 2 +- drivers/ide/ide-tape.c | 14 +- drivers/ieee1394/nodemgr.c | 314 ++-- drivers/infiniband/core/sysfs.c | 39 +- drivers/infiniband/hw/ehca/ehca_main.c | 13 +- drivers/infiniband/hw/ipath/ipath_driver.c | 17 +- drivers/infiniband/hw/ipath/ipath_kernel.h | 3 +- drivers/infiniband/hw/ipath/ipath_sysfs.c | 30 +- drivers/isdn/capi/capi.c | 6 +- drivers/isdn/gigaset/gigaset.h | 6 - drivers/kvm/kvm_main.c | 2 +- drivers/macintosh/adb.c | 2 +- drivers/macintosh/via-pmu.c | 2 +- drivers/md/dm.c | 4 +- drivers/md/md.c | 31 +- drivers/mfd/ucb1x00-assabet.c | 17 +- drivers/mfd/ucb1x00-core.c | 14 +- drivers/mfd/ucb1x00.h | 4 +- drivers/misc/ibmasm/command.c | 12 +- drivers/misc/ibmasm/ibmasm.h | 10 +- drivers/misc/tifm_7xx1.c | 4 +- drivers/misc/tifm_core.c | 24 +- drivers/mtd/mtdchar.c | 12 +- drivers/net/ibmveth.c | 12 +- drivers/net/iseries_veth.c | 19 +- drivers/net/wan/cosa.c | 5 +- drivers/parisc/pdc_stable.c | 194 +- drivers/pci/hotplug/acpiphp_ibm.c | 4 +- drivers/pci/hotplug/pci_hotplug_core.c | 39 +- drivers/pci/hotplug/rpadlpar_sysfs.c | 113 +- drivers/pci/pci-driver.c | 59 +- drivers/pci/probe.c | 11 +- drivers/pcmcia/ds.c | 3 +- drivers/power/apm_power.c | 116 +- drivers/power/power_supply_core.c | 74 +- drivers/rtc/interface.c | 22 +- drivers/s390/net/netiucv.c | 16 +- drivers/s390/scsi/zfcp_ccw.c | 14 +- drivers/s390/scsi/zfcp_ext.h | 3 +- drivers/s390/scsi/zfcp_sysfs_driver.c | 27 +- drivers/scsi/hosts.c | 24 +- drivers/scsi/libsas/sas_scsi_host.c | 2 +- drivers/serial/icom.c | 24 +- drivers/serial/icom.h | 2 +- drivers/spi/spi.c | 26 +- drivers/uio/uio.c | 95 +- drivers/usb/core/driver.c | 8 +- fs/block_dev.c | 8 +- fs/char_dev.c | 6 +- fs/coda/psdev.c | 8 +- fs/configfs/mount.c | 13 +- fs/debugfs/inode.c | 13 +- fs/dlm/lockspace.c | 50 +- fs/ecryptfs/main.c | 129 +-- fs/fuse/inode.c | 26 +- fs/gfs2/locking/dlm/sysfs.c | 38 +- fs/gfs2/sys.c | 29 +- fs/namespace.c | 11 +- fs/ocfs2/cluster/masklog.c | 4 +- fs/ocfs2/cluster/sys.c | 83 +- fs/partitions/check.c | 327 ++--- fs/sysfs/dir.c | 2 +- fs/sysfs/file.c | 67 +- fs/sysfs/symlink.c | 88 +- include/acpi/acpi_bus.h | 2 +- include/linux/device.h | 360 ++-- include/linux/dmaengine.h | 3 +- include/linux/fs.h | 2 +- include/linux/genhd.h | 37 +- include/linux/kobject.h | 184 +-- include/linux/kref.h | 1 + include/linux/module.h | 19 +- include/linux/pci_hotplug.h | 2 +- include/linux/pktcdvd.h | 2 +- include/linux/platform_device.h | 2 +- include/linux/sched.h | 9 +- include/linux/sysdev.h | 1 + include/linux/tifm.h | 2 +- include/linux/uio_driver.h | 6 +- include/rdma/ib_verbs.h | 2 +- init/Kconfig | 1 + init/do_mounts.c | 108 +- kernel/ksysfs.c | 82 +- kernel/module.c | 128 +-- kernel/params.c | 44 +- kernel/power/disk.c | 20 +- kernel/power/main.c | 23 +- kernel/power/power.h | 4 +- kernel/rtmutex-tester.c | 2 +- kernel/time/clocksource.c | 2 +- kernel/time/timekeeping.c | 2 +- kernel/user.c | 107 +- lib/kobject.c | 734 +++++--- lib/kobject_uevent.c | 38 +- lib/kref.c | 15 +- mm/slub.c | 23 +- net/bridge/br_if.c | 12 +- net/bridge/br_private.h | 2 +- net/bridge/br_sysfs_br.c | 14 +- net/bridge/br_sysfs_if.c | 2 +- samples/Kconfig | 10 + samples/Makefile | 2 +- samples/kobject/Makefile | 1 + samples/kobject/kobject-example.c | 137 ++ samples/kobject/kset-example.c | 278 +++ security/inode.c | 11 +- 217 files changed, 8870 insertions(+), 4631 deletions(-) create mode 100644 Documentation/zh_CN/CodingStyle create mode 100644 Documentation/zh_CN/SubmittingDrivers create mode 100644 Documentation/zh_CN/SubmittingPatches create mode 100644 Documentation/zh_CN/oops-tracing.txt create mode 100644 Documentation/zh_CN/sparse.txt create mode 100644 Documentation/zh_CN/stable_kernel_rules.txt create mode 100644 Documentation/zh_CN/volatile-considered-harmful.txt create mode 100644 drivers/base/module.c delete mode 100644 drivers/base/power/shutdown.c create mode 100644 drivers/char/nozomi.c create mode 100644 samples/kobject/Makefile create mode 100644 samples/kobject/kobject-example.c create mode 100644 samples/kobject/kset-example.c --------------- Alan Stern (2): Driver core: fix race in __device_release_driver Kobject: drop child->parent ref at unregistration Bryan Wu (1): Chinese: add translation of volatile-considered-harmful.txt Cornelia Huck (4): driver core: Introduce default attribute groups. netiucv: Use device_driver default attribute groups. zfcp: Use device_driver default attribute groups. Driver core: Cleanup get_device_parent() in device_add() and device_move() Dave Young (7): Chinese: add translation of oops-tracing.txt Driver Core: add class iteration api ieee1394: use class iteration api power supply : use class iteration api rtc: use class iteration api scsi: use class iteration api spi: use class iteration api Denis Cheng (1): Driver core: use LIST_HEAD instead of call to INIT_LIST_HEAD in __init Emil Medve (1): driver core: Make the dev_*() family of macros in device.h complete Evgeniy Polyakov (1): kref: add kref_set() Frank Seidel (1): nozomi driver Greg Kroah-Hartman (140): kobject: remove incorrect comment in kobject_rename ecryptfs: clean up attribute mess kobject: convert ibmasm to use kref, not kobject kobject: convert hvc_console to use kref, not kobject kobject: convert hvcs to use kref, not kobject kobject: convert icom to use kref, not kobject kobject: fix up kobject_set_name to use kvasprintf kobject: make kobject_cleanup be static kobject: add kobject_init_ng function kobject: add kobject_add_ng function kobject: add kobject_init_and_add function kobject: remove struct kobj_type from struct kset kobject: remove kobj_set_kset_s as no one is using it anymore kset: add kset_create_and_add function kobject: add kobject_create_and_add function kobject: get rid of kobject_add_dir kobject: get rid of kobject_kset_add_dir kobject: convert fuse to use kobject_create kobject: convert securityfs to use kobject_create kobject: convert debugfs to use kobject_create kobject: convert configfs to use kobject_create kset: convert ecryptfs to use kset_create kobject: convert main fs kobject to use kobject_create kset: convert gfs2 to use kset_create kset: convert gfs2 dlm to use kset_create kset: convert dlm to use kset_create kset: convert pci hotplug to use kset_create_and_add kset: remove decl_subsys_name kset: convert kernel_subsys to use kset_create kset: convert drivers/base/bus.c to use kset_create kset: convert drivers/base/class.c to use kset_create kset: convert drivers/base/firmware.c to use kset_create kset: convert /sys/devices to use kset_create kobject: convert /sys/hypervisor to use kobject_create kobject: convert s390 hypervisor to use kobject_create kset: convert /sys/devices/system to use kset_create kset: convert slub to use kset_create kset: move /sys/slab to /sys/kernel/slab kset: convert /sys/module to use kset_create kset: convert /sys/power to use kset_create kset: convert struct bus_device->devices to use kset_create kset: convert struct bus_device->drivers to use kset_create ecryptfs: remove version_str file from sysfs efivars: make new_var and del_var binary sysfs files kobject: convert efivars to kobj_attr interface firmware: export firmware_kset so that people can use that instead of the braindead firmware_register interface kset: convert efivars to use kset_create for the efi subsystem. kset: convert efivars to use kset_create for the vars sub-subsystem. kobject: convert arm/mach-omap1/pm.c to kobj_attr interface kobject: convert pseries/power.c to kobj_attr interface kobject: convert s390 ipl.c to kobj_attr interface kset: convert s390 ipl.c to use kset_create kobject: convert parisc/pdc_stable to kobj_attr interface kset: convert parisc/pdc_stable.c to use kset_create kset: convert edd to use kset_create kobject: convert /sys/firmware/acpi/ to use kobject_create firmware: remove firmware_(un)register() firmware: change firmware_kset to firmware_kobj kset: convert ocfs2 to use kset_create kset: convert block_subsys to use kset_create kset: remove decl_subsys macro kobject: convert kernel_kset to be a kobject kobject: remove subsystem_(un)register functions kobject: clean up rpadlpar horrid sysfs abuse kobject: convert ecryptfs to use kobject_create kobject: convert efivars to use kobject_create kobject: convert parisc/pdc_stable to use kobject_create driver core: clean up shutdown.c driver core: clean up device_shutdown driver core: make /sys/power a kobject kobject: grab the kset reference in kobject_add, not kobject_init kobject: clean up debugging messages UIO: fix kobject usage Kobject: change net/bridge to use kobject_create_and_add Kobject: change GFS2 to use kobject_init_and_add Kobject: change drivers/infiniband to use kobject_init_and_add Kobject: change drivers/firmware/edd.c to use kobject_init_and_add Kobject: change drivers/firmware/efivars.c to use kobject_init_and_add Kobject: change drivers/cpufreq/cpufreq.c to use kobject_init_and_add Kobject: change drivers/edac to use kobject_init_and_add Kobject: change drivers/cpuidle/sysfs.c to use kobject_init_and_add Kobject: change drivers/pci/hotplug/pci_hotplug_core.c to use kobject_init_and_add Kobject: change drivers/base/sys.c to use kobject_init_and_add Kobject: change arch/x86/kernel/cpu/intel_cacheinfo.c to use kobject_init_and_add Kobject: change drivers/acpi/system.c to use kobject_create_and_add Kobject: change drivers/block/pktcdvd.c to use kobject_init_and_add Kobject: change arch/sh/kernel/cpu/sh4/sq.c to use kobject_init_and_add Kobject: change drivers/net/ibmveth.c to use kobject_init_and_add Kobject: change drivers/parisc/pdc_stable.c to use kobject_init_and_add Kobject: change arch/ia64/kernel/topology.c to use kobject_init_and_add Kobject: change drivers/md/md.c to use kobject_init_and_add Kobject: change arch/x86/kernel/cpu/mcheck/mce_amd_64.c to use kobject_create_and_add Kobject: change arch/x86/kernel/cpu/mcheck/mce_amd_64.c to use kobject_init_and_add Kobject: the cris iop_fw_load.c code is broken Kobject: convert drivers/base/class.c to use kobject_init/add_ng() Kobject: convert drivers/base/core.c to use kobject_init/add_ng() Kobject: convert drivers/net/iseries_veth.c to use kobject_init/add_ng() Kobject: convert fs/char_dev.c to use kobject_init/add_ng() Kobject: convert kernel/params.c to use kobject_init/add_ng() Kobject: convert kernel/user.c to use kobject_init/add_ng() Kobject: convert mm/slub.c to use kobject_init/add_ng() Kobject: convert net/bridge/br_if.c to use kobject_init/add_ng() driver core: remove owner field from struct bus_type driver core: add way to get to bus kset driver core: add way to get to bus device klist driver core: remove fields from struct bus_type USB: use proper call to driver_create_file PCMCIA: use proper call to driver_create_file PCI: use proper call to driver_create_file PCI: remove foolish code from pci-driver.c Infiniband: make ipath driver use default driver groups. Driver: add driver_add_kobj for looney iseries_veth driver Driver core: move the driver specific module code into the driver core Driver core: move the static kobject out of struct driver Driver core: clean up debugging messages Kobject: change drivers/base/bus to use kobject_init_and_add Kobject: convert block/elevator.c to use kobject_init/add_ng() Kobject: convert block/ll_rw_blk.c to use kobject_init/add_ng() Kobject: convert drivers/md/md.c to use kobject_init/add_ng() Kobject: convert kernel/module.c to use kobject_init/add_ng() Kobject: remove kobject_add() as no one uses it anymore Kobject: rename kobject_add_ng() to kobject_add() Kobject: remove kobject_init() as no one uses it anymore Kobject: rename kobject_init_ng() to kobject_init() Kobject: remove kobject_register() Kset: remove kset_add function Modules: remove unneeded release function Kobject: convert arch/* from kobject_unregister() to kobject_put() Kobject: convert drivers/* from kobject_unregister() to kobject_put() Kobject: convert fs/* from kobject_unregister() to kobject_put() Kobject: convert remaining kobject_unregister() to kobject_put() Kobject: remove kobject_unregister() as no one uses it anymore kobject: remove old, outdated documentation. kobject: update the kobject/kset documentation kobject: add sample code for how to use kobjects in a simple manner. kobject: add sample code for how to use ksets/ktypes/kobjects Driver core: fix coding style issues in device.h Kobject: fix coding style issues in kobject.h Kobject: fix coding style issues in kobject c files Driver core: coding style fixes Jan Engelhardt (1): UIO: constify function pointer tables Jean Delvare (1): sysfs: Fix a copy-n-paste typo in comment Jiri Slaby (1): sysfs: remove SPIN_LOCK_UNLOCKED Kay Sievers (11): coda: convert struct class_device to struct device sysfs: create optimal relative symlink targets Driver Core: add kobj_attribute handling Driver Core: switch all dynamic ksets to kobj_sysfs_ops fix struct user_info export's sysfs interaction Driver Core: kill subsys_attribute and default sysfs ops Driver core: fix class glue dir cleanup logic sysfs: fix /sys/module/*/holders after sysfs logic change Driver core: convert block from raw kobjects to core devices Kobject: auto-cleanup on final unref Driver core: change sysdev classes to use dynamic kobject names Li Yang (5): Chinese: Add the known_regression URI to the HOWTO Chinese: rephrase English introduction in HOWTO Chinese: Change man-pages maintainer address in HOWOTO Chinese: add translation of SubmittingDrivers Chinese: add translation of sparse.txt Rafael J. Wysocki (1): PM: Acquire device locks on suspend Randy Dunlap (2): sysfs: make SYSFS_DEPRECATED depend on SYSFS driver core: fix build with SYSFS=n Robert P. J. Day (1): Documentation: Replace obsolete "driverfs" with "sysfs". Stephen Rothwell (1): Driver Core: constify the name passed to platform_device_register_simple Tony Jones (11): aoechr: Convert from class_device to device DMA: Convert from class_device to device for DMA engine IDE: Convert from class_device to device for ide-tape ISDN: Convert from class_device to device for ISDN capi adb: Convert from class_device to device MCP_UCB1200: Convert from class_device to device mtd: Convert from class_device to device for MTD/mtdchar paride: Convert from class_device to device for block/paride pktcdvd: Convert from class_device to device for block/pktcdvd tifm: Convert from class_device to device for TI flash media cosa: Convert from class_device to device for cosa sync driver TripleX Chung (2): Chinese: add translation of SubmittingPatches Chinese: add translation of stable_kernel_rules.txt Zhang Le (1): Chinese: add translation of Codingstyle --


And to a noob?
How exactly is good?
In laymen terms, please briefly explain to a noob what this is good for.
Groundwork
AFAICS, it's mainly improving the groundwork. It makes the developers' lives easier, which will be good for the users in the long run.
Ah, okay thanks
Ah, okay thanks for your reply.
Hmm, but in laymen terms please explain to a noob how it makes the lives of developers' easier.
Does it make stuff easier to maintain or port?
Does it make developers have to use less code, or specify less parameters, etc?
Does it allow developers to re-use code?
> Does it make stuff easier
> Does it make stuff easier to maintain
Yes, the code that uses kobjects and ksets is now smaller and easier to understand, hence, easier to maintain.
> or port?
Nothing outside of the kernel tree uses these core interfaces, so nothing needs to be ported.
> Does it make developers have to use less code, or specify less parameters, etc?
Yes, the interfaces are now simpler, easier to understand, but, in order to do that, we had to add a few new parameters, which is easier in the end than having to remember to make a separate function call.
> Does it allow developers to re-use code?
There is now example code in the kernel samples/ directory for developers to be free to cut-and-paste from if they need to interact with the kobject core at this level.
There is no real "re-use" with the exception that we took code out of all of the different parts of the kernel that were doing the same thing, and moved it into the kobject core, so that everyone shares the code now, fixing lots of bugs and error conditions at the same time.
samples/
Oh, how nice with a samples/ directory.
Will make it much easier and faster for developers to jump in and be able to start doing something what they like.
It will probably make the
It will probably make the driver interface more consistent and easier to program for. It will improve the quality of the drivers and, in the long run even the quality of the closed source ones, even if they will be incompatible in the short run, untill the nvidia/amd& co fix them. I think it's a good side of linux that technical excelence is more important than compatibility, it's one of the reasons it's progress is so fast.
Truly amazing...
I find it truly fascinating to watch the Linux kernel mature and progress.
I think its amazing that that developers can ship a kernel once a month or so with a huge number of significant upgrades and they are more or less totally reliable.
Kudos for doing such a great job.