Also move the description of the cleanup data to the cleanup script. Bug: 15433575 Change-Id: I21e2cbbfab55da483af1bbe36bbe59126b518e3c
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
Bionic comes with a processed set of all of the uapi Linux kernel headers that
 | 
						|
can safely be included by userland applications and libraries.
 | 
						|
 | 
						|
These clean headers are automatically generated by several scripts located
 | 
						|
in the 'bionic/kernel/tools' directory. The tools process the original
 | 
						|
unmodified kernel headers in order to get rid of many annoying
 | 
						|
declarations and constructs that usually result in compilation failure.
 | 
						|
 | 
						|
The 'clean headers' only contain type and macro definitions, with the
 | 
						|
exception of a couple static inline functions used for performance
 | 
						|
reason (e.g. optimized CPU-specific byte-swapping routines).
 | 
						|
 | 
						|
They can be included from C++, or when compiling code in strict ANSI mode.
 | 
						|
They can be also included before or after any Bionic C library header.
 | 
						|
 | 
						|
Description of the directories involved in generating the parsed kernel headers:
 | 
						|
 | 
						|
  * 'external/kernel-headers/original/'
 | 
						|
    Contains the uapi kernel headers found in the android kernel. Note this
 | 
						|
    also includes the header files that are generated by building the kernel
 | 
						|
    sources.
 | 
						|
 | 
						|
  * 'bionic/libc/kernel/uapi'
 | 
						|
    Contains the cleaned kernel headers and mirrors the directory structure
 | 
						|
    in 'external/kernel-headers/original/uapi/'.
 | 
						|
 | 
						|
  * 'bionic/libc/kernel/tools'
 | 
						|
    Contains various Python and shell scripts used to get and re-generate
 | 
						|
    the headers.
 | 
						|
 | 
						|
The tools to get/parse the headers:
 | 
						|
 | 
						|
  * tools/generate_uapi_headers.sh
 | 
						|
    Checks out the android kernel and generates all uapi header files.
 | 
						|
    copies all the changed files into external/kernel-headers.
 | 
						|
 | 
						|
  * tools/clean_header.py
 | 
						|
    Prints the clean version of a given kernel header. With the -u option,
 | 
						|
    this will also update the corresponding clean header file if its
 | 
						|
    content has changed. You can also process more than one file with -u.
 | 
						|
 | 
						|
  * tools/update_all.py
 | 
						|
    Automatically update all clean headers from the content of
 | 
						|
    'external/kernel-headers/original'.
 | 
						|
 | 
						|
 | 
						|
HOW TO UPDATE THE HEADERS WHEN NEEDED:
 | 
						|
======================================
 | 
						|
 | 
						|
IMPORTANT IMPORTANT:
 | 
						|
 | 
						|
  WHEN UPDATING THE HEADERS, ALWAYS CHECK THAT THE NEW CLEAN HEADERS DO
 | 
						|
  NOT BREAK THE KERNEL <-> USER ABI, FOR EXAMPLE BY CHANGING THE SIZE
 | 
						|
  OF A GIVEN TYPE. THIS TASK CANNOT BE EASILY AUTOMATED AT THE MOMENT
 | 
						|
 | 
						|
Grab the latest headers from the android kernel by running this command:
 | 
						|
 | 
						|
  bionic/kernel/tools/generate_uapi_headers.sh --download-kernel
 | 
						|
 | 
						|
Next, run this command to copy the parsed files to bionic/libc/kernel/uapi:
 | 
						|
 | 
						|
  bionic/kernel/tools/update_all.py
 | 
						|
 | 
						|
After this, you will need to build/test the tree to make sure that these
 | 
						|
changes do not introduce any errors.
 |