esp-idf/components
Pieter du Preez b8dc48ab18 gpio/driver: Sped the gpio_intr_service ISR up by 1.5 uSeconds (+-50% faster).
Removed as much branching (if statements) from the
gpio_intr_service ISR, as possible and split the while loop into
two. Also forced writing the two status*_w1tc variables only once,
instead of every time after calling the external function hooks.

The measurements below, was done using the following tools:

Toolchain version: crosstool-ng-1.22.0-80-g6c4433a
Compiler version: 5.2.0

Here follows a comparison of the gpio_intr_service ISR's
execution time, using a DS1054 oscilloscope. All the time spent
calling external functions, via the function pointers
gpio_isr_func[gpio_num].fn, were disregarded.

With OPTIMIZATION_FLAGS = -Og, 1.34 uSeconds faster:

3.22 uSec (with this patch)
4.56 uSec (with commit 71c90ac4)

100 - (100 * 4.56 / 3.22) = 42% faster

With OPTIMIZATION_FLAGS = -Os, 1.65 uSeconds faster:

2.89 uSec (with this patch)
4.54 uSec (with commit 71c90ac4)

100 - (100 * 4.54 / 2.89) = 57% faster

Signed-off-by: Konstantin Kondrashov <konstantin@espressif.com>

Merges https://github.com/espressif/esp-idf/pull/2861
2019-03-13 13:50:43 +00:00
..
app_trace
app_update
asio
aws_iot
bootloader bootloader: Add support efuse component 2019-02-28 07:31:29 +00:00
bootloader_support efuse: Fix to pass CI tests 2019-02-28 07:31:29 +00:00
bt Component/bt: add BLE adv report flow control 2019-03-12 11:10:26 +08:00
coap
console
cxx
driver gpio/driver: Sped the gpio_intr_service ISR up by 1.5 uSeconds (+-50% faster). 2019-03-13 13:50:43 +00:00
efuse efuse: When Virtual eFuses are enabled, seed the virtual values as part of startup code 2019-03-11 15:20:40 +11:00
esp-tls
esp32 Merge branch 'bugfix/ssid_passwords_null_terminated' into 'master' 2019-03-13 13:29:09 +08:00
esp_adc_cal
esp_event
esp_http_client esp_http_client: add support for using certs from global ca store 2019-02-27 14:19:06 +05:30
esp_http_server esp_http_server: Provide apps an option to let http_server ignore sess_ctx changes 2019-03-05 00:21:03 +05:30
esp_https_ota esp_http_client: add support for using certs from global ca store 2019-02-27 14:19:06 +05:30
esp_https_server
esp_ringbuf
espcoredump esp32: coredump header (fix linker.lf) 2019-03-08 09:49:37 +00:00
esptool_py cmake: Fix for Python files executed directly, not via PYTHON variable 2019-03-12 13:31:44 +08:00
ethernet
expat
fatfs
freemodbus freemodbus: change critical sections to semaphore mutex 2019-03-07 09:59:40 +01:00
freertos freertos: check that mutex is released by owner task 2019-03-11 14:40:54 +00:00
heap esp32: Remove trialing semicolon from function-like macros 2019-02-28 21:58:47 +08:00
idf_test
jsmn
json
libsodium
log
lwip modify the behavior for dhcpserver and tcpip_adapter: 2019-03-11 12:11:05 +08:00
mbedtls
mdns mdns: use binary semaphore instead of mutex when searching 2019-03-12 09:33:06 +01:00
micro-ecc
mqtt
newlib
nghttp
nvs_flash
openssl
partition_table
protobuf-c
protocomm
pthread pthread: Transform the units of the stack size to the FreeRTOS domain 2019-02-27 12:21:23 +01:00
sdmmc
smartconfig_ack
soc efuse: Fix make/cmake build systems and docs 2019-02-28 07:31:29 +00:00
spi_flash Merge branch 'bugfix/spi_flash_exclude_encrypted' into 'master' 2019-03-13 13:15:24 +08:00
spiffs
tcp_transport esp_http_client: add support for using certs from global ca store 2019-02-27 14:19:06 +05:30
tcpip_adapter modify the behavior for dhcpserver and tcpip_adapter: 2019-03-11 12:11:05 +08:00
ulp cmake: Fix for Python files executed directly, not via PYTHON variable 2019-03-12 13:31:44 +08:00
unity
vfs
wear_levelling
wifi_provisioning
wpa_supplicant
xtensa-debug-module