aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/include
diff options
context:
space:
mode:
authorDiego Ismirlian <dismirlian (at) google's mail.com>2017-07-16 20:01:50 -0300
committerDiego Ismirlian <dismirlian (at) google's mail.com>2017-07-16 20:01:50 -0300
commitdee22cee18dd98502b19e41e45503f8c20f447d6 (patch)
treed077ac7d6e50dad2fc7ca3909f1d2c9451031e99 /os/hal/include
parentce8f18291fb45048685be52bcff5088b14a6823c (diff)
downloadChibiOS-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.h20
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);