LWN.net Logo

Advertisement

E-Commerce & credit card processing - the Open Source way!

Advertise here

A summary of 2.6.16 API changes

2.6.16 should be sufficiently stable, at this point, that it is safe to make a list of API changes. As usual, this list will be folded into the LWN 2.6 API changes page as well.

  • The mutex code has been merged. The use of semaphores for mutual exclusion is now deprecated, and the current semaphore API may go away altogether.

  • The high-resolution kernel timer code has been merged. The new API allows for greater precision in timer values, though the underlying implementation is still limited by the timer interrupt resolution.

  • A new list function, list_for_each_entry_safe_reverse(), does just what one would expect.

  • A 64-bit atomic type, atomic_long_t, has been added. Supported functions are:
    • long atomic_long_read(atomic_long_t *l);
    • void atomic_long_set(atomic_long_t *l, long i);
    • void atomic_long_inc(atomic_long_t *l);
    • void atomic_long_dec(atomic_long_t *l);
    • void atomic_long_add(long i, atomic_long_t *l);
    • void atomic_long_sub(long i, atomic_long_t *l);

  • The "SLOB" memory allocator has been merged. SLOB is a drop-in replacement for the slab allocator, intended for very low-memory systems.

  • The dentry structure has been changed: the d_child and d_rcu fields are now overlaid in a union. This change shrinks this heavily-used structure and improves its cache behavior.

  • The usb_driver structure has a new field (no_dynamic_id) which lets a driver disable the addition of dynamic device IDs. The owner field has also been removed from this structure.

  • The device probe() and remove() methods have been moved from struct device_driver to struct bus_type. The bus-level methods will override any remaining driver methods.

  • Some significant changes to the SCSI subsystem aimed at eliminating the use of the old scsi_request structure. The SCSI software IRQ is no longer used; postprocessing happens via the generic block software IRQ instead.

  • Much of the core device model code has been reeducated to use the term "uevent" instead of "hotplug." Some changes which are visible outside of the core code include:
    • kobject_hotplug() becomes kobject_uevent()
    • struct kset_hotplug_ops becomes struct kset_uevent_ops, and its hotplug() member is now uevent()
    • add_hotplug_env_var() becomes add_uevent_var()

  • The block I/O barrier code has been rewritten. This patch changes the barrier API and also adds a new parameter to end_that_request_last().

  • The block_device_operations structure has a new method getgeo(); its job is to fill in an hd_geometry structure with information about the drive. With this operation in place, many block drivers will not need an ioctl() function at all.

  • Linas Vepstas's PCI error recovery patch has been merged.

  • Compilers prior to gcc 3.2 can no longer be used to build kernels.

  • The venerable "make bzImage" command no longer works; just type "make" instead.

  • When the kernel is configured to be optimized for size, gcc (if it's version 4.x) is given the freedom to decide whether inline functions should really be inlined. The __always_inline attribute now truly forces inlining in all cases. This is an outcome from the discussion on inline functions held at the beginning of the year.

(Log in to post comments)

A summary of 2.6.16 API changes

Posted Mar 16, 2006 19:45 UTC (Thu) by ehovland (subscriber, #2284) [Link]

  • Compilers prior to gcc 3.2 will can no longer be used to build kernels.

Perhaps you should pick either will or can.

There is a clock api in the kernel which changed between 2.6.15 and 2.6.16. It had a clk_use()/clk_unuse() set of functions to help with reference counting of clocks used. Both functions have disappeared and the refcounting has been put into the clk_enable()/clk_disable() calls. The header file for the clock system has moved from include/asm-*platform* to include/linux/clk.h.

Not sure if this change qualifies for your API doc. But I thought I would mention it.

bzImage target seems to be still here

Posted Mar 17, 2006 23:36 UTC (Fri) by kenmoffat (subscriber, #4807) [Link]

<quote> The venerable "make bzImage" command no longer works; just type "make" instead. </quote>

Umm, I'm just building a new linuxfromscratch system on x86 - I haven't conciously used 'make bzImage' for some time, but I thought I'd try it now (2.6.16-rc6) and there is no indication that it no longer works, first it told me
Kernel: arch/i386/boot/bzImage is ready (#1)

and sure enough, there it is.
I have no name! in chroot /usr/src/linux-2.6.16-rc6# ls -l arch/i386/boot/bzImage
-rw-r--r-- 1 root root 1766690 Mar 17 23:26 arch/i386/boot/bzImage

bzImage target seems to be still here

Posted Mar 24, 2006 15:08 UTC (Fri) by rvfh (subscriber, #31018) [Link]

...and that's fortunate, as 'make' makes both kernel and modules, which is not always what you want!

Copyright © 2006, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds
Powered by Rackspace Managed Hosting.