Update to kernel headers v4.7.2.

Modify the kernel header update script to rename C++ keyword
struct members to something else. This fixes problems when including
these kernel files in C++ code.

Also, make a manual change to linux/fib_rules.h and comment out the
value FRA_PAD since it conflicts with a special android kernel value
FRA_UID_START that has not been upstreamed yet.

Test: Built aosp_angler, aosp_x86_64, aosp_mips (bionic only)
Test: Booted on angler and ran bionic unit tests
Test: Built these changes in internal master

Change-Id: Ia22b7e3ca409404696dba76311f49157f4a9ceed
diff --git a/libc/kernel/uapi/linux/lightnvm.h b/libc/kernel/uapi/linux/lightnvm.h
index a3430f3..9238113 100644
--- a/libc/kernel/uapi/linux/lightnvm.h
+++ b/libc/kernel/uapi/linux/lightnvm.h
@@ -27,68 +27,88 @@
 #define NVM_TTYPE_NAME_MAX 48
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NVM_TTYPE_MAX 63
+#define NVM_MMTYPE_LEN 8
 #define NVM_CTRL_FILE "/dev/lightnvm/control"
 struct nvm_ioctl_info_tgt {
-  __u32 version[3];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 version[3];
   __u32 reserved;
   char tgtname[NVM_TTYPE_NAME_MAX];
 };
-struct nvm_ioctl_info {
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+struct nvm_ioctl_info {
   __u32 version[3];
   __u16 tgtsize;
   __u16 reserved16;
-  __u32 reserved[12];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 reserved[12];
   struct nvm_ioctl_info_tgt tgts[NVM_TTYPE_MAX];
 };
 enum {
-  NVM_DEVICE_ACTIVE = 1 << 0,
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NVM_DEVICE_ACTIVE = 1 << 0,
 };
 struct nvm_ioctl_device_info {
   char devname[DISK_NAME_LEN];
-  char bmname[NVM_TTYPE_NAME_MAX];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  char bmname[NVM_TTYPE_NAME_MAX];
   __u32 bmversion[3];
   __u32 flags;
   __u32 reserved[8];
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct nvm_ioctl_get_devices {
   __u32 nr_devices;
   __u32 reserved[31];
-  struct nvm_ioctl_device_info info[31];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct nvm_ioctl_device_info info[31];
 };
 struct nvm_ioctl_create_simple {
   __u32 lun_begin;
-  __u32 lun_end;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 lun_end;
 };
 enum {
   NVM_CONFIG_TYPE_SIMPLE = 0,
-};
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
 struct nvm_ioctl_create_conf {
   __u32 type;
   union {
-    struct nvm_ioctl_create_simple s;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+    struct nvm_ioctl_create_simple s;
   };
 };
 struct nvm_ioctl_create {
-  char dev[DISK_NAME_LEN];
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  char dev[DISK_NAME_LEN];
   char tgttype[NVM_TTYPE_NAME_MAX];
   char tgtname[DISK_NAME_LEN];
   __u32 flags;
-  struct nvm_ioctl_create_conf conf;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  struct nvm_ioctl_create_conf conf;
 };
 struct nvm_ioctl_remove {
   char tgtname[DISK_NAME_LEN];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  __u32 flags;
+};
+struct nvm_ioctl_dev_init {
+  char dev[DISK_NAME_LEN];
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  char mmtype[NVM_MMTYPE_LEN];
+  __u32 flags;
+};
+enum {
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+  NVM_FACTORY_ERASE_ONLY_USER = 1 << 0,
+  NVM_FACTORY_RESET_HOST_BLKS = 1 << 1,
+  NVM_FACTORY_RESET_GRWN_BBLKS = 1 << 2,
+  NVM_FACTORY_NR_BITS = 1 << 3,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
+};
+struct nvm_ioctl_dev_factory {
+  char dev[DISK_NAME_LEN];
   __u32 flags;
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
@@ -98,13 +118,18 @@
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
   NVM_DEV_CREATE_CMD,
   NVM_DEV_REMOVE_CMD,
+  NVM_DEV_INIT_CMD,
+  NVM_DEV_FACTORY_CMD,
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 };
 #define NVM_IOCTL 'L'
-/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NVM_INFO _IOWR(NVM_IOCTL, NVM_INFO_CMD, struct nvm_ioctl_info)
 #define NVM_GET_DEVICES _IOR(NVM_IOCTL, NVM_GET_DEVICES_CMD, struct nvm_ioctl_get_devices)
+/* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NVM_DEV_CREATE _IOW(NVM_IOCTL, NVM_DEV_CREATE_CMD, struct nvm_ioctl_create)
 #define NVM_DEV_REMOVE _IOW(NVM_IOCTL, NVM_DEV_REMOVE_CMD, struct nvm_ioctl_remove)
+#define NVM_DEV_INIT _IOW(NVM_IOCTL, NVM_DEV_INIT_CMD, struct nvm_ioctl_dev_init)
+#define NVM_DEV_FACTORY _IOW(NVM_IOCTL, NVM_DEV_FACTORY_CMD, struct nvm_ioctl_dev_factory)
 /* WARNING: DO NOT EDIT, AUTO-GENERATED CODE - SEE TOP FOR INSTRUCTIONS */
 #define NVM_VERSION_MAJOR 1
 #define NVM_VERSION_MINOR 0