2002-01-21 04:06:34

by Andreas Bombe

[permalink] [raw]
Subject: 2.5.2 API change summary

A bit late, but here it is. No guarantees for correctness of the
explanations, it's what I've gathered from context and reading a bit of
source code. Corrections welcome.

These are just the actual changes in the 2.5.2 patch, if you want the
bigger picture visit Randy Dunlap's page where he collects pointers to
mailing list threads of relevance for driver writers:
http://www.osdl.org/archive/rddunlap/linux-port-25x.html

And here it goes:


GENERAL CHANGES:

include/linux/list.h:

- New typedef of list_t to struct list_head.


include/linux/crc32.h (new):

- Central implementation of CRC32, which was previously implemented in 5
places in the kernel.


include/linux/devfs_fs_kernel.h:

- devfs_put() exported (put (release) reference to a devfs entry).

- New function devfs_get_handle() to get the devfs handle corresponding
to a name or major/minor combination.


include/linux/kdev_t.h:

- kdev_t changed from basic type (unsigned short) to opaque struct type
to prepare for future expansion to larger major/minor numbers.

- New macros major() and minor() to replace MAJOR() and MINOR() for
extracting those from a kdev_t. MAJOR()/MINOR() are for the user
level dev_t only now.

- New functions kdev_val() and val_to_kdev() to convert a kdev_t to/from
an unsigned int cookie.

- New macro mk_kdev() to convert a major/minor combination into a
kdev_t.


include/linux/namespace.h (new):
include/linux/sched.h:

- Added task namespace functions.

- New CLONE_NEWNS cloning flag for namespaces.


include/linux/mm.h:
include/linux/gfp.h (new):

- All GFP macros and page allocation functions moved to new gfp.h from
mm.h.

- New function get_user_pages().


BLOCK DEVICES / FILE SYSTEMS:

include/linux/bio.h:

- New #define BIO_MAX_SIZE to accompany BIO_MAX_SECTORS, defined as
(BIO_MAX_SECTORS << 9).


include/linux/acct.h:

- acct_auto_close() now takes a struct super_block* instead of kdev_t as
argument.


include/linux/fs.h:

- create_empty_buffers() does not have a kdev_t parameter anymore.

- fsync_no_super() and brw_page() now take a struct super_block* where
they took a kdev_t as argument.

- The following functions are now wrappers mapping kdev_t to struct
super_block* of the real function:

get_hash_table() => __get_hash_table()
getblk() => __getblk()
bread() => __bread()

- New functions sb_set_blocksize() and sb_min_blocksize() (to set
super_block block size) and map_bh().


SCSI:

drivers/scsi/hosts.h:

- Field host_lock in struct Scsi_Host changed from spinlock_t to
spinlock_t*, which defaults to point to the new field default_lock.
Function scsi_assign_lock() to set that field added.

- Fully dynamic host and device handling: scsi_(un)register_module()
removed, scsi_unregister_device() and scsi_(un)register_host()
added.


USB:

drivers/usb/hcd.h (new):

- New host controller driver framework. "Plugs into usbcore (usb_bus)
and lets HCDs share code, minimizing HCD-specific behaviors/bugs."


include/linux/usb.h:

- typedef devrequest is now struct usb_ctrlrequest.


--
Andreas Bombe <[email protected]> DSA key 0x04880A44