diff --git a/android/abi_gki_aarch64.stg b/android/abi_gki_aarch64.stg index ddb15937378d..6c85162d6f01 100644 --- a/android/abi_gki_aarch64.stg +++ b/android/abi_gki_aarch64.stg @@ -1108,6 +1108,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x3a432334 } +pointer_reference { + id: 0x0400f624 + kind: POINTER + pointee_type_id: 0x3a433e0e +} pointer_reference { id: 0x0407035c kind: POINTER @@ -1608,6 +1613,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x3cd7d077 } +pointer_reference { + id: 0x05ad89df + kind: POINTER + pointee_type_id: 0x3cf6c1e1 +} pointer_reference { id: 0x05b572ab kind: POINTER @@ -2413,6 +2423,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0x0942f1ca } +pointer_reference { + id: 0x08c17d81 + kind: POINTER + pointee_type_id: 0x09451098 +} pointer_reference { id: 0x08c420f1 kind: POINTER @@ -23303,6 +23318,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xec0943ba } +pointer_reference { + id: 0x31a08325 + kind: POINTER + pointee_type_id: 0xecc2ea0b +} pointer_reference { id: 0x31a2d17a kind: POINTER @@ -24973,6 +24993,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xfe66bdb7 } +pointer_reference { + id: 0x350a2844 + kind: POINTER + pointee_type_id: 0xfe68478f +} pointer_reference { id: 0x350dc3e7 kind: POINTER @@ -26178,6 +26203,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xf7e2e2fa } +pointer_reference { + id: 0x376c23c8 + kind: POINTER + pointee_type_id: 0xf7f069bd +} pointer_reference { id: 0x376c8705 kind: POINTER @@ -28363,6 +28393,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdb7fbc17 } +pointer_reference { + id: 0x3c5162c0 + kind: POINTER + pointee_type_id: 0xdb056d9e +} pointer_reference { id: 0x3c5315c3 kind: POINTER @@ -29083,6 +29118,11 @@ pointer_reference { kind: POINTER pointee_type_id: 0xdd9f6a40 } +pointer_reference { + id: 0x3df8f8c1 + kind: POINTER + pointee_type_id: 0xdda3059a +} pointer_reference { id: 0x3df9bbb6 kind: POINTER @@ -33733,6 +33773,11 @@ qualified { qualifier: CONST qualified_type_id: 0x1b3398cc } +qualified { + id: 0xdb056d9e + qualifier: CONST + qualified_type_id: 0x1c5200f3 +} qualified { id: 0xdb0cb193 qualifier: CONST @@ -34793,6 +34838,11 @@ qualified { qualifier: CONST qualified_type_id: 0xc2d2c0ac } +qualified { + id: 0xecc2ea0b + qualifier: CONST + qualified_type_id: 0xc34c1ea7 +} qualified { id: 0xeccba377 qualifier: CONST @@ -35333,6 +35383,11 @@ qualified { qualifier: CONST qualified_type_id: 0xae5a9933 } +qualified { + id: 0xf7f069bd + qualifier: CONST + qualified_type_id: 0xaf86107e +} qualified { id: 0xf7f2fa8a qualifier: CONST @@ -35723,6 +35778,11 @@ qualified { qualifier: CONST qualified_type_id: 0x89c605e5 } +qualified { + id: 0xfe68478f + qualifier: CONST + qualified_type_id: 0x89e6a8b6 +} qualified { id: 0xfe9b2205 qualifier: CONST @@ -60501,6 +60561,12 @@ member { type_id: 0xb3e7bac9 offset: 48 } +member { + id: 0xb12bacce + name: "cell_align" + type_id: 0xb0312d5a + offset: 32 +} member { id: 0xb12baf4b name: "cell_align" @@ -116199,6 +116265,11 @@ member { type_id: 0x92233392 offset: 832 } +member { + id: 0xc458e799 + name: "last_expires" + type_id: 0x92233392 +} member { id: 0x5e91924a name: "last_fifo_depth" @@ -119008,6 +119079,18 @@ member { type_id: 0x4585663f offset: 64 } +member { + id: 0x3860f036 + name: "linklayer" + type_id: 0x295c7202 + offset: 128 +} +member { + id: 0x38fa49da + name: "linklayer" + type_id: 0xb3e7bac9 + offset: 8 +} member { id: 0x3459027f name: "links" @@ -131074,6 +131157,18 @@ member { type_id: 0x4585663f offset: 96 } +member { + id: 0x62aaf19a + name: "mpu" + type_id: 0xc93e017b + offset: 48 +} +member { + id: 0x62f28228 + name: "mpu" + type_id: 0x914dbfdc + offset: 112 +} member { id: 0x31ca3c6f name: "mq_ctx" @@ -131961,6 +132056,12 @@ member { offset: 416 bitsize: 2 } +member { + id: 0x662d72be + name: "mult" + type_id: 0xc9082b19 + offset: 64 +} member { id: 0x662d77cd name: "mult" @@ -145141,6 +145242,18 @@ member { type_id: 0x18bd6530 offset: 8000 } +member { + id: 0x4c21e36f + name: "overhead" + type_id: 0xc93e017b + offset: 16 +} +member { + id: 0x4c7997ec + name: "overhead" + type_id: 0x914dbfdc + offset: 96 +} member { id: 0x4c799d4b name: "overhead" @@ -158774,6 +158887,12 @@ member { type_id: 0x2e8d5f05 offset: 64 } +member { + id: 0x3d7cfa6f + name: "qdisc" + type_id: 0x2e8d5f05 + offset: 640 +} member { id: 0x9cb0c470 name: "qdisc_hash" @@ -160250,6 +160369,12 @@ member { type_id: 0xc9082b19 offset: 64 } +member { + id: 0x5f3478a0 + name: "rate" + type_id: 0xe62ebf07 + offset: 64 +} member { id: 0x5f61bea2 name: "rate" @@ -160310,6 +160435,11 @@ member { type_id: 0x92233392 offset: 64 } +member { + id: 0x945697e1 + name: "rate_bytes_ps" + type_id: 0x92233392 +} member { id: 0x8d8ea53b name: "rate_clk_single" @@ -179200,6 +179330,12 @@ member { type_id: 0xb3e7bac9 offset: 64 } +member { + id: 0x3218941b + name: "shift" + type_id: 0x295c7202 + offset: 136 +} member { id: 0x32189a75 name: "shift" @@ -194218,6 +194354,12 @@ member { type_id: 0xcd7704bf offset: 2240 } +member { + id: 0x1dce6a6f + name: "timer" + type_id: 0xcd7704bf + offset: 64 +} member { id: 0x1dce6e25 name: "timer" @@ -252596,6 +252738,20 @@ struct_union { member_id: 0x95daceb0 } } +struct_union { + id: 0x3cf6c1e1 + kind: STRUCT + name: "psched_ratecfg" + definition { + bytesize: 24 + member_id: 0x945697e1 + member_id: 0x662d72be + member_id: 0x4c7997ec + member_id: 0x62f28228 + member_id: 0x3860f036 + member_id: 0x3218941b + } +} struct_union { id: 0x9972ab36 kind: STRUCT @@ -253226,6 +253382,17 @@ struct_union { member_id: 0xf7b8ccd5 } } +struct_union { + id: 0xdda3059a + kind: STRUCT + name: "qdisc_watchdog" + definition { + bytesize: 88 + member_id: 0xc458e799 + member_id: 0x1dce6a6f + member_id: 0x3d7cfa6f + } +} struct_union { id: 0xed946547 kind: STRUCT @@ -262868,6 +263035,20 @@ struct_union { member_id: 0x95dac0b5 } } +struct_union { + id: 0x89e6a8b6 + kind: STRUCT + name: "tc_ratespec" + definition { + bytesize: 12 + member_id: 0x60842ca1 + member_id: 0x38fa49da + member_id: 0x4c21e36f + member_id: 0xb12bacce + member_id: 0x62aaf19a + member_id: 0x5f3478a0 + } +} struct_union { id: 0xd78aa293 kind: STRUCT @@ -293916,6 +294097,13 @@ function { parameter_id: 0x4585663f parameter_id: 0x6d7f5ff6 } +function { + id: 0x11039389 + return_type_id: 0x48b5725f + parameter_id: 0x05ad89df + parameter_id: 0x350a2844 + parameter_id: 0x92233392 +} function { id: 0x1103b2cc return_type_id: 0x48b5725f @@ -293967,6 +294155,12 @@ function { parameter_id: 0x391f15ea parameter_id: 0xf435685e } +function { + id: 0x11163b5a + return_type_id: 0x48b5725f + parameter_id: 0x054f691a + parameter_id: 0x376c23c8 +} function { id: 0x111b6c97 return_type_id: 0x48b5725f @@ -295436,6 +295630,13 @@ function { return_type_id: 0x48b5725f parameter_id: 0x0e7d50ff } +function { + id: 0x13072e26 + return_type_id: 0x48b5725f + parameter_id: 0x0d84b99b + parameter_id: 0x3c5162c0 + parameter_id: 0x3c5162c0 +} function { id: 0x130de2cb return_type_id: 0x48b5725f @@ -300162,6 +300363,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x2859d899 } +function { + id: 0x1a8efb2d + return_type_id: 0x48b5725f + parameter_id: 0x2e8d5f05 + parameter_id: 0x6d7f5ff6 +} function { id: 0x1a8f9ccc return_type_id: 0x48b5725f @@ -300281,6 +300488,13 @@ function { parameter_id: 0x2efe8065 parameter_id: 0x6720d32f } +function { + id: 0x1abe4d2a + return_type_id: 0x48b5725f + parameter_id: 0x2e8d5f05 + parameter_id: 0x6720d32f + parameter_id: 0x6720d32f +} function { id: 0x1abe6e05 return_type_id: 0x48b5725f @@ -302286,6 +302500,13 @@ function { parameter_id: 0x3e10b518 parameter_id: 0xa52a0930 } +function { + id: 0x1d8a6ba1 + return_type_id: 0x48b5725f + parameter_id: 0x3df8f8c1 + parameter_id: 0x92233392 + parameter_id: 0x92233392 +} function { id: 0x1d8c491d return_type_id: 0x1b8590a8 @@ -302566,6 +302787,11 @@ function { parameter_id: 0x36f998d3 parameter_id: 0xc9082b19 } +function { + id: 0x1e089e10 + return_type_id: 0x48b5725f + parameter_id: 0x3a433e0e +} function { id: 0x1e091eac return_type_id: 0x48b5725f @@ -303970,6 +304196,12 @@ function { return_type_id: 0x48b5725f parameter_id: 0x3f0ff1b1 } +function { + id: 0x1f5c5adf + return_type_id: 0x48b5725f + parameter_id: 0x3df8f8c1 + parameter_id: 0x2e8d5f05 +} function { id: 0x1f5d7673 return_type_id: 0xd5cc9c9a @@ -304398,6 +304630,11 @@ function { return_type_id: 0x48b5725f parameter_id: 0x3df0a7d3 } +function { + id: 0x1fe66fa3 + return_type_id: 0x48b5725f + parameter_id: 0x3df8f8c1 +} function { id: 0x1fe91863 return_type_id: 0x48b5725f @@ -311616,6 +311853,14 @@ function { parameter_id: 0x347303b4 parameter_id: 0x18cdf247 } +function { + id: 0x91009915 + return_type_id: 0x6720d32f + parameter_id: 0x32da4522 + parameter_id: 0x0d84b99b + parameter_id: 0x0d84b99b + parameter_id: 0xe62ebf07 +} function { id: 0x9100a08e return_type_id: 0x6720d32f @@ -311934,6 +312179,14 @@ function { return_type_id: 0x6720d32f parameter_id: 0x32c23ae3 } +function { + id: 0x9130c8a4 + return_type_id: 0x6720d32f + parameter_id: 0x32da4522 + parameter_id: 0x01de2d7a + parameter_id: 0x01de2d7a + parameter_id: 0x6d7f5ff6 +} function { id: 0x913248e6 return_type_id: 0x6720d32f @@ -327478,6 +327731,15 @@ function { parameter_id: 0x30da8694 parameter_id: 0x29b2544e } +function { + id: 0x9c1a5eb1 + return_type_id: 0x6720d32f + parameter_id: 0x054f691a + parameter_id: 0x31a08325 + parameter_id: 0x3d610880 + parameter_id: 0x29b2544e + parameter_id: 0x6d7f5ff6 +} function { id: 0x9c1c39d4 return_type_id: 0x6720d32f @@ -328305,6 +328567,14 @@ function { parameter_id: 0x04f7a60d parameter_id: 0x054f691a } +function { + id: 0x9ca86774 + return_type_id: 0x6720d32f + parameter_id: 0x0400f624 + parameter_id: 0x08c17d81 + parameter_id: 0x2e8d5f05 + parameter_id: 0x07dcdbe1 +} function { id: 0x9cab723c return_type_id: 0x6720d32f @@ -336848,6 +337118,14 @@ function { parameter_id: 0x2b7be833 parameter_id: 0xf1a6dfed } +function { + id: 0xef5d0a73 + return_type_id: 0x2e8d5f05 + parameter_id: 0x1a7122b5 + parameter_id: 0x30cae1c6 + parameter_id: 0x4585663f + parameter_id: 0x07dcdbe1 +} function { id: 0xefaef687 return_type_id: 0x3ada60b4 @@ -341023,6 +341301,15 @@ elf_symbol { type_id: 0x9cd33969 full_name: "__netif_rx" } +elf_symbol { + id: 0x6a2324da + name: "__netif_schedule" + is_defined: true + symbol_type: FUNCTION + crc: 0xd72f3ec4 + type_id: 0x1b3b0652 + full_name: "__netif_schedule" +} elf_symbol { id: 0x6337b091 name: "__netif_set_xps_queue" @@ -341401,6 +341688,15 @@ elf_symbol { type_id: 0x17de3be6 full_name: "__put_task_struct" } +elf_symbol { + id: 0x1f2378cf + name: "__qdisc_calculate_pkt_len" + is_defined: true + symbol_type: FUNCTION + crc: 0x8a450fad + type_id: 0x11163b5a + full_name: "__qdisc_calculate_pkt_len" +} elf_symbol { id: 0xf29639bc name: "__rb_erase_color" @@ -371240,6 +371536,33 @@ elf_symbol { type_id: 0xf1d83496 full_name: "glob_match" } +elf_symbol { + id: 0x7990bc50 + name: "gnet_stats_add_queue" + is_defined: true + symbol_type: FUNCTION + crc: 0x61b840f6 + type_id: 0x13072e26 + full_name: "gnet_stats_add_queue" +} +elf_symbol { + id: 0x8a6e138f + name: "gnet_stats_copy_basic" + is_defined: true + symbol_type: FUNCTION + crc: 0x0c808b5e + type_id: 0x9130c8a4 + full_name: "gnet_stats_copy_basic" +} +elf_symbol { + id: 0x0ace9404 + name: "gnet_stats_copy_queue" + is_defined: true + symbol_type: FUNCTION + crc: 0x2eeb875b + type_id: 0x91009915 + full_name: "gnet_stats_copy_queue" +} elf_symbol { id: 0x64b49555 name: "gov_attr_set_get" @@ -382145,6 +382468,15 @@ elf_symbol { type_id: 0x2d64ae3e full_name: "noop_llseek" } +elf_symbol { + id: 0x20409f45 + name: "noop_qdisc" + is_defined: true + symbol_type: OBJECT + crc: 0x7b25c4b9 + type_id: 0x90759a8b + full_name: "noop_qdisc" +} elf_symbol { id: 0x16059afd name: "notify_change" @@ -385748,6 +386080,15 @@ elf_symbol { type_id: 0x1732fd5e full_name: "perf_trace_run_bpf_submit" } +elf_symbol { + id: 0x1e700c22 + name: "pfifo_qdisc_ops" + is_defined: true + symbol_type: OBJECT + crc: 0x471b8e88 + type_id: 0xd5ea309d + full_name: "pfifo_qdisc_ops" +} elf_symbol { id: 0xba681a1a name: "pfn_is_map_memory" @@ -388583,6 +388924,15 @@ elf_symbol { type_id: 0x9936d341 full_name: "ps2_sliced_command" } +elf_symbol { + id: 0x8df36ef2 + name: "psched_ratecfg_precompute" + is_defined: true + symbol_type: FUNCTION + crc: 0xb6e36ce2 + type_id: 0x11039389 + full_name: "psched_ratecfg_precompute" +} elf_symbol { id: 0x9dc0e748 name: "pskb_expand_head" @@ -389015,6 +389365,78 @@ elf_symbol { type_id: 0x9ea02907 full_name: "qcom_smem_state_update_bits" } +elf_symbol { + id: 0xce0252f1 + name: "qdisc_create_dflt" + is_defined: true + symbol_type: FUNCTION + crc: 0x5e36ab08 + type_id: 0xef5d0a73 + full_name: "qdisc_create_dflt" +} +elf_symbol { + id: 0xa637f7b7 + name: "qdisc_hash_add" + is_defined: true + symbol_type: FUNCTION + crc: 0xc691be8d + type_id: 0x1a8efb2d + full_name: "qdisc_hash_add" +} +elf_symbol { + id: 0x78f8d020 + name: "qdisc_put" + is_defined: true + symbol_type: FUNCTION + crc: 0xe0dbcc3b + type_id: 0x1b3b0652 + full_name: "qdisc_put" +} +elf_symbol { + id: 0xae1b45d2 + name: "qdisc_reset" + is_defined: true + symbol_type: FUNCTION + crc: 0xf6d26a5f + type_id: 0x1b3b0652 + full_name: "qdisc_reset" +} +elf_symbol { + id: 0x788eb5c1 + name: "qdisc_tree_reduce_backlog" + is_defined: true + symbol_type: FUNCTION + crc: 0x31ef7b2e + type_id: 0x1abe4d2a + full_name: "qdisc_tree_reduce_backlog" +} +elf_symbol { + id: 0xdc29efa5 + name: "qdisc_watchdog_cancel" + is_defined: true + symbol_type: FUNCTION + crc: 0x5a1b49a4 + type_id: 0x1fe66fa3 + full_name: "qdisc_watchdog_cancel" +} +elf_symbol { + id: 0x9928a695 + name: "qdisc_watchdog_init" + is_defined: true + symbol_type: FUNCTION + crc: 0x2400ca2d + type_id: 0x1f5c5adf + full_name: "qdisc_watchdog_init" +} +elf_symbol { + id: 0x7d9c9dda + name: "qdisc_watchdog_schedule_range_ns" + is_defined: true + symbol_type: FUNCTION + crc: 0x075fc620 + type_id: 0x1d8a6ba1 + full_name: "qdisc_watchdog_schedule_range_ns" +} elf_symbol { id: 0x2721b297 name: "queue_delayed_work_on" @@ -399387,6 +399809,24 @@ elf_symbol { type_id: 0x1d1ccc70 full_name: "tcf_action_update_stats" } +elf_symbol { + id: 0x5c71ae40 + name: "tcf_block_get" + is_defined: true + symbol_type: FUNCTION + crc: 0x43573c5b + type_id: 0x9ca86774 + full_name: "tcf_block_get" +} +elf_symbol { + id: 0x71532d43 + name: "tcf_block_put" + is_defined: true + symbol_type: FUNCTION + crc: 0xc8e17cf6 + type_id: 0x1e089e10 + full_name: "tcf_block_put" +} elf_symbol { id: 0xcda1c9b0 name: "tcf_chain_put_by_act" @@ -399396,6 +399836,15 @@ elf_symbol { type_id: 0x163a90aa full_name: "tcf_chain_put_by_act" } +elf_symbol { + id: 0xef103e2f + name: "tcf_classify" + is_defined: true + symbol_type: FUNCTION + crc: 0xba35414b + type_id: 0x9c1a5eb1 + full_name: "tcf_classify" +} elf_symbol { id: 0xc924b9c3 name: "tcf_exts_destroy" @@ -409786,6 +410235,7 @@ interface { symbol_id: 0x6793e03f symbol_id: 0x17112d4d symbol_id: 0xe6b5218e + symbol_id: 0x6a2324da symbol_id: 0x6337b091 symbol_id: 0x4fc5d8fb symbol_id: 0x45dc2e90 @@ -409828,6 +410278,7 @@ interface { symbol_id: 0xf00cbe99 symbol_id: 0x36fb0a8e symbol_id: 0x45993ba3 + symbol_id: 0x1f2378cf symbol_id: 0xf29639bc symbol_id: 0x431cc4ee symbol_id: 0x56eb7c27 @@ -413142,6 +413593,9 @@ interface { symbol_id: 0x390427e4 symbol_id: 0x53ba530f symbol_id: 0x365c2930 + symbol_id: 0x7990bc50 + symbol_id: 0x8a6e138f + symbol_id: 0x0ace9404 symbol_id: 0x64b49555 symbol_id: 0xbfc46f3e symbol_id: 0x53579c80 @@ -414354,6 +414808,7 @@ interface { symbol_id: 0x39787440 symbol_id: 0x7f258c4e symbol_id: 0x64e6aa0b + symbol_id: 0x20409f45 symbol_id: 0x16059afd symbol_id: 0x1560f116 symbol_id: 0x1cfcf940 @@ -414754,6 +415209,7 @@ interface { symbol_id: 0xc2bb86d6 symbol_id: 0x1dad348b symbol_id: 0xd50beffc + symbol_id: 0x1e700c22 symbol_id: 0xba681a1a symbol_id: 0x5fa10488 symbol_id: 0x9db95d0c @@ -415069,6 +415525,7 @@ interface { symbol_id: 0xafb47c9f symbol_id: 0x408f4567 symbol_id: 0x7fc27c29 + symbol_id: 0x8df36ef2 symbol_id: 0x9dc0e748 symbol_id: 0x2251af59 symbol_id: 0x3758c51f @@ -415117,6 +415574,14 @@ interface { symbol_id: 0x6a663d57 symbol_id: 0xbed674f6 symbol_id: 0x0ca915af + symbol_id: 0xce0252f1 + symbol_id: 0xa637f7b7 + symbol_id: 0x78f8d020 + symbol_id: 0xae1b45d2 + symbol_id: 0x788eb5c1 + symbol_id: 0xdc29efa5 + symbol_id: 0x9928a695 + symbol_id: 0x7d9c9dda symbol_id: 0x2721b297 symbol_id: 0xf60ed3ec symbol_id: 0x1f556538 @@ -416270,7 +416735,10 @@ interface { symbol_id: 0x2d797653 symbol_id: 0xd4d51230 symbol_id: 0x2fba8b59 + symbol_id: 0x5c71ae40 + symbol_id: 0x71532d43 symbol_id: 0xcda1c9b0 + symbol_id: 0xef103e2f symbol_id: 0xc924b9c3 symbol_id: 0x2c53af12 symbol_id: 0xa4bb7174 diff --git a/android/abi_gki_aarch64_oplus b/android/abi_gki_aarch64_oplus index 610e9fcf22f7..7d87ba364e9f 100644 --- a/android/abi_gki_aarch64_oplus +++ b/android/abi_gki_aarch64_oplus @@ -27,6 +27,9 @@ freq_qos_add_notifier freq_qos_remove_notifier get_wchan + gnet_stats_add_queue + gnet_stats_copy_basic + gnet_stats_copy_queue gov_attr_set_get gpiod_to_chip have_governor_per_policy @@ -55,24 +58,37 @@ __mod_zone_page_state neigh_xmit netif_receive_skb_core + __netif_schedule nf_ct_attach nf_ct_delete nf_register_net_hook nf_register_net_hooks nf_unregister_net_hook nf_unregister_net_hooks + noop_qdisc nr_running of_css osq_lock osq_unlock __page_file_index __page_mapcount + pfifo_qdisc_ops pm_get_active_wakeup_sources __printk_ratelimit prepare_to_wait_exclusive proc_symlink + psched_ratecfg_precompute public_key_verify_signature put_pages_list + __qdisc_calculate_pkt_len + qdisc_create_dflt + qdisc_hash_add + qdisc_put + qdisc_reset + qdisc_tree_reduce_backlog + qdisc_watchdog_cancel + qdisc_watchdog_init + qdisc_watchdog_schedule_range_ns radix_tree_lookup_slot radix_tree_replace_slot _raw_write_trylock @@ -102,6 +118,9 @@ stpcpy task_rq_lock tcf_action_exec + tcf_block_get + tcf_block_put + tcf_classify tcf_exts_destroy tcf_exts_dump tcf_exts_dump_stats