diff options
author | Anton Moberg <anton.moberg@arm.com> | 2021-02-02 11:26:48 +0100 |
---|---|---|
committer | Anton Moberg <anton.moberg@arm.com> | 2021-02-19 10:53:57 +0100 |
commit | df386e00295e32e05b9a76758ca5767b4d021848 (patch) | |
tree | 94416af2d1bf1141a96ff13f715ebd6436c8059c /include | |
parent | 61da4d35575ddf7f62d4f5c687356f65a7246aed (diff) | |
download | ethos-u-core-driver-df386e00295e32e05b9a76758ca5767b4d021848.tar.gz |
MLBEDSW-3868 - Driver multiNPU locking
Added: Weak linked symbols for locking if RTOS overrides
Added: Semaphore Producer (release a reserved driver)
Added: Semaphore Consumer (all drivers reserved and waiting for returned driver)
Added: Mutex protect thread sensitive driver access
Added: Weak linked symbols for yielding & resuming thread/task while waiting for IRQ
Added: static inline function of ethosu_invoke_v2(...) for backwards compatibility
Change-Id: If415a73b01b2357b31bb6da86f3038344c4245c6
Diffstat (limited to 'include')
-rw-r--r-- | include/ethosu_driver.h | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/include/ethosu_driver.h b/include/ethosu_driver.h index 70e3110..2ce59c2 100644 --- a/include/ethosu_driver.h +++ b/include/ethosu_driver.h @@ -124,8 +124,6 @@ int ethosu_invoke_v3(struct ethosu_driver *drv, #define ethosu_invoke(custom_data_ptr, custom_data_size, base_addr, num_base_addr) \ ethosu_invoke_v2(custom_data_ptr, custom_data_size, base_addr, NULL, num_base_addr) -#define ethosu_invoke_v2(custom_data_ptr, custom_data_size, base_addr, base_addr_size, num_base_addr) \ - ethosu_invoke_v3(ðosu_drv, custom_data_ptr, custom_data_size, base_addr, base_addr_size, num_base_addr) /** * Abort Ethos-U inference. @@ -159,7 +157,7 @@ int ethosu_register_driver(struct ethosu_driver *drv); int ethosu_deregister_driver(struct ethosu_driver *drv); /** - * Find, reserve, and return the first available driver + * Reserves a driver to execute inference with */ struct ethosu_driver *ethosu_reserve_driver(void); @@ -168,6 +166,21 @@ struct ethosu_driver *ethosu_reserve_driver(void); */ void ethosu_release_driver(struct ethosu_driver *drv); +/** + * Static inline for backwards-compatibility + */ +static inline int ethosu_invoke_v2(const void *custom_data_ptr, + const int custom_data_size, + const uint64_t *base_addr, + const size_t *base_addr_size, + const int num_base_addr) +{ + struct ethosu_driver *drv = ethosu_reserve_driver(); + int result = ethosu_invoke_v3(drv, custom_data_ptr, custom_data_size, base_addr, base_addr_size, num_base_addr); + ethosu_release_driver(drv); + return result; +} + #ifdef __cplusplus } #endif |