1c18f6365SGreg Kroah-HartmanThis directory attempts to document the ABI between the Linux kernel and 2c18f6365SGreg Kroah-Hartmanuserspace, and the relative stability of these interfaces. Due to the 3c18f6365SGreg Kroah-Hartmaneverchanging nature of Linux, and the differing maturity levels, these 4c18f6365SGreg Kroah-Hartmaninterfaces should be used by userspace programs in different ways. 5c18f6365SGreg Kroah-Hartman 6c18f6365SGreg Kroah-HartmanWe have four different levels of ABI stability, as shown by the four 7c18f6365SGreg Kroah-Hartmandifferent subdirectories in this location. Interfaces may change levels 8c18f6365SGreg Kroah-Hartmanof stability according to the rules described below. 9c18f6365SGreg Kroah-Hartman 10c18f6365SGreg Kroah-HartmanThe different levels of stability are: 11c18f6365SGreg Kroah-Hartman 12c18f6365SGreg Kroah-Hartman stable/ 13c18f6365SGreg Kroah-Hartman This directory documents the interfaces that the developer has 14c18f6365SGreg Kroah-Hartman defined to be stable. Userspace programs are free to use these 15c18f6365SGreg Kroah-Hartman interfaces with no restrictions, and backward compatibility for 16c18f6365SGreg Kroah-Hartman them will be guaranteed for at least 2 years. Most interfaces 17c18f6365SGreg Kroah-Hartman (like syscalls) are expected to never change and always be 18c18f6365SGreg Kroah-Hartman available. 19c18f6365SGreg Kroah-Hartman 20c18f6365SGreg Kroah-Hartman testing/ 21c18f6365SGreg Kroah-Hartman This directory documents interfaces that are felt to be stable, 22c18f6365SGreg Kroah-Hartman as the main development of this interface has been completed. 23c18f6365SGreg Kroah-Hartman The interface can be changed to add new features, but the 24c18f6365SGreg Kroah-Hartman current interface will not break by doing this, unless grave 25c18f6365SGreg Kroah-Hartman errors or security problems are found in them. Userspace 26c18f6365SGreg Kroah-Hartman programs can start to rely on these interfaces, but they must be 27c18f6365SGreg Kroah-Hartman aware of changes that can occur before these interfaces move to 28c18f6365SGreg Kroah-Hartman be marked stable. Programs that use these interfaces are 29c18f6365SGreg Kroah-Hartman strongly encouraged to add their name to the description of 30c18f6365SGreg Kroah-Hartman these interfaces, so that the kernel developers can easily 31c18f6365SGreg Kroah-Hartman notify them if any changes occur (see the description of the 32c18f6365SGreg Kroah-Hartman layout of the files below for details on how to do this.) 33c18f6365SGreg Kroah-Hartman 34c18f6365SGreg Kroah-Hartman obsolete/ 35c18f6365SGreg Kroah-Hartman This directory documents interfaces that are still remaining in 36c18f6365SGreg Kroah-Hartman the kernel, but are marked to be removed at some later point in 37c18f6365SGreg Kroah-Hartman time. The description of the interface will document the reason 38c18f6365SGreg Kroah-Hartman why it is obsolete and when it can be expected to be removed. 39c18f6365SGreg Kroah-Hartman The file Documentation/feature-removal-schedule.txt may describe 40c18f6365SGreg Kroah-Hartman some of these interfaces, giving a schedule for when they will 41c18f6365SGreg Kroah-Hartman be removed. 42c18f6365SGreg Kroah-Hartman 43c18f6365SGreg Kroah-Hartman removed/ 44c18f6365SGreg Kroah-Hartman This directory contains a list of the old interfaces that have 45c18f6365SGreg Kroah-Hartman been removed from the kernel. 46c18f6365SGreg Kroah-Hartman 47c18f6365SGreg Kroah-HartmanEvery file in these directories will contain the following information: 48c18f6365SGreg Kroah-Hartman 49c18f6365SGreg Kroah-HartmanWhat: Short description of the interface 50c18f6365SGreg Kroah-HartmanDate: Date created 51c18f6365SGreg Kroah-HartmanKernelVersion: Kernel version this feature first showed up in. 52c18f6365SGreg Kroah-HartmanContact: Primary contact for this interface (may be a mailing list) 53c18f6365SGreg Kroah-HartmanDescription: Long description of the interface and how to use it. 54c18f6365SGreg Kroah-HartmanUsers: All users of this interface who wish to be notified when 55c18f6365SGreg Kroah-Hartman it changes. This is very important for interfaces in 56c18f6365SGreg Kroah-Hartman the "testing" stage, so that kernel developers can work 57c18f6365SGreg Kroah-Hartman with userspace developers to ensure that things do not 58c18f6365SGreg Kroah-Hartman break in ways that are unacceptable. It is also 59c18f6365SGreg Kroah-Hartman important to get feedback for these interfaces to make 60c18f6365SGreg Kroah-Hartman sure they are working in a proper way and do not need to 61c18f6365SGreg Kroah-Hartman be changed further. 62c18f6365SGreg Kroah-Hartman 63c18f6365SGreg Kroah-Hartman 64c18f6365SGreg Kroah-HartmanHow things move between levels: 65c18f6365SGreg Kroah-Hartman 66c18f6365SGreg Kroah-HartmanInterfaces in stable may move to obsolete, as long as the proper 67c18f6365SGreg Kroah-Hartmannotification is given. 68c18f6365SGreg Kroah-Hartman 69c18f6365SGreg Kroah-HartmanInterfaces may be removed from obsolete and the kernel as long as the 70c18f6365SGreg Kroah-Hartmandocumented amount of time has gone by. 71c18f6365SGreg Kroah-Hartman 72c18f6365SGreg Kroah-HartmanInterfaces in the testing state can move to the stable state when the 73c18f6365SGreg Kroah-Hartmandevelopers feel they are finished. They cannot be removed from the 74c18f6365SGreg Kroah-Hartmankernel tree without going through the obsolete state first. 75c18f6365SGreg Kroah-Hartman 76c18f6365SGreg Kroah-HartmanIt's up to the developer to place their interfaces in the category they 77c18f6365SGreg Kroah-Hartmanwish for it to start out in. 78