NOTE: this page is for archival only, see the note at the end of the page.

Using sparse

Sparse is a semantic parser and static analyzer utility we use for Linux kernel development. We highly recommend to use spare for the wireless subsystem. Below are some quick instructions how to get this set up and how to use it.

Get sparse

You can get sparse from:

git://git.kernel.org/pub/scm/devel/sparse/sparse.git

Version of sparse to use

We recommend to use the latest stable release of sparse. As of now this is v0.4.4, so you can do something as follows:

git checkout -b rel4 v0.4.4

Install sparse

To install:

make
make install

Using sparse

To use sparse for kernel development simply pass on the C=1 argument onto your make command. For example to enable sparse for mac80211 development you would use:

make C=1 M=net/mac80211/

Endian checks

Endian checks are encouraged. Most endian complaints are typically valid and reflect design issues. These should be reviewed carefully. Some drivers force-enable endian checks with sparse by forcing it through their own driver makefiles upstream. If drivers do not have these you can enable sparse checks yourself by appending to your make command:

CF="-D__CHECK_ENDIAN__" 

To enforce endian checks on your driver you can use something as follows on your driver Makefile:

ccflags-y += -D__CHECK_ENDIAN__

This is a static dump of the wiki, taken after locking it in January 2015. The new wiki is at https://wireless.wiki.kernel.org/.
versions of this page: last, v2, v1