Duane Sand a69eaec4d4 [MIPS64] Adjust kernel/tools for mips32,mips64 headers
Define CONFIG_32BIT as _ABIO32 rather than as 1;
it needs to be undefined for calls from mips64.
We need  defined(CONFIG_32BIT) == !defined(CONFIG_64BIT),
and get that via  defined(_ABIO32) == !defined(__LP64__).

Define CONFIG_CPU_LITTLE_ENDIAN to get correctly-placed
struct msqid64_ds fillers on ipc calls from mips32.
Without this, big-endian fillers were erroneously used.
This bug exists in prior mips32 Android releases.

Define __SANE_USERSPACE_TYPES__ to use int_ll64.h
rather than int_ll64.h on mips64.
This depends on external/kernel-headers patch
 https://android-review.googlesource.com/#/c/98915/
 http://patchwork.linux-mips.org/patch/6890/

Change-Id: If65fa80746533723cdf46eebe95733bea7ce24ba
2014-06-20 10:46:28 -07:00
..
2014-05-15 12:01:11 -07:00

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.