diff options
author | Diego Ismirlian <dismirlian (at) google's mail.com> | 2017-07-16 20:01:50 -0300 |
---|---|---|
committer | Diego Ismirlian <dismirlian (at) google's mail.com> | 2017-07-16 20:01:50 -0300 |
commit | dee22cee18dd98502b19e41e45503f8c20f447d6 (patch) | |
tree | d077ac7d6e50dad2fc7ca3909f1d2c9451031e99 /os/hal/include | |
parent | ce8f18291fb45048685be52bcff5088b14a6823c (diff) | |
download | ChibiOS-Contrib-dee22cee18dd98502b19e41e45503f8c20f447d6.tar.gz ChibiOS-Contrib-dee22cee18dd98502b19e41e45503f8c20f447d6.tar.bz2 ChibiOS-Contrib-dee22cee18dd98502b19e41e45503f8c20f447d6.zip |
USBH: remove unnecessary reschedules and add necessary ones
Diffstat (limited to 'os/hal/include')
-rw-r--r-- | os/hal/include/hal_usbh.h | 20 |
1 files changed, 17 insertions, 3 deletions
diff --git a/os/hal/include/hal_usbh.h b/os/hal/include/hal_usbh.h index 634520c..3e69607 100644 --- a/os/hal/include/hal_usbh.h +++ b/os/hal/include/hal_usbh.h @@ -358,10 +358,8 @@ extern "C" { osalDbgCheck(ep != 0); osalDbgCheckClassS(); osalDbgAssert(ep->status != USBH_EPSTATUS_UNINITIALIZED, "invalid state"); - if (ep->status == USBH_EPSTATUS_CLOSED) { - osalOsRescheduleS(); + if (ep->status == USBH_EPSTATUS_CLOSED) return; - } usbh_lld_ep_close(ep); } static inline void usbhEPClose(usbh_ep_t *ep) { @@ -392,6 +390,22 @@ extern "C" { void usbhURBCancelAndWaitS(usbh_urb_t *urb); msg_t usbhURBWaitTimeoutS(usbh_urb_t *urb, systime_t timeout); + static inline void usbhURBSubmit(usbh_urb_t *urb) { + osalSysLock(); + usbhURBSubmitI(urb); + osalOsRescheduleS(); + osalSysUnlock(); + } + + static inline bool usbhURBCancel(usbh_urb_t *urb) { + bool ret; + osalSysLock(); + ret = usbhURBCancelI(urb); + osalOsRescheduleS(); + osalSysUnlock(); + return ret; + } + /* Main loop */ void usbhMainLoop(USBHDriver *usbh); |