BF527, vdsp++ 5.10
I am develping an application under vdsp++/vdk/lwip which needs to be able to suspend thread scheduling for a while.
a) normal execution
b) threadX suspends all threads but itself <what is most efficient way to do that ?>
c) threadX initiates activity and waits on semaphore <It will make non-eligible for dispatch>
d) isr based processing or guard timer posts a semaphore
e) normal thread scheduling is resumed
d) extra bonus portion - regular scheduling would be disabled for relatively long time(< 1minute) it would be nice to be notified of media insertion , such as usb/ethernet/sdcard, which happened during that time.
Looking at VDK manual the only legitimate way to stop thread scheduling is to Push/PopUnscheduledRegion().
- Can thread in fact block while in critical region - I acknowledge that it is a poor practice, at the same time if there are no alternatives can system block (will ISR be able to post a semaphore/mutex/whatever) or I can expect a crash?
- can I expect the unscheduled region to be uninterrupted by vdk itself. Preferably I would like to selectively disable some of the interrupts as well as round-robin.
Also I have noticed specific notes that unscheuled regions can be nested. at the same time I do not see any api allowing to directly schedule threads from user level - is nesting allowed for convenience ?
Can thread temporary increase its own or other threads timeslice quota for round-robin? Ideally I would like to temporary give some of the threads more recovery capability from scheduling jitter.
Thank you, Michael
Feel free to comment on additional negative side-effects I may be overlooking